From d5269307a901debefdbc0cf3a6793924442e5ff7 Mon Sep 17 00:00:00 2001 From: "wangzelin.wzl" Date: Fri, 12 Aug 2022 19:29:16 +0800 Subject: [PATCH] move test folder --- deps/logmessage | 2 +- test/mysql_test/include/check_all_idx_ok.inc | 31 - test/mysql_test/include/check_ob_or_mysql.inc | 9 - test/mysql_test/include/check_schema_sync.inc | 22 - test/mysql_test/include/check_stat.inc | 25 - test/mysql_test/include/check_tenant_sync.inc | 24 - .../include/drop_and_flashback_table.inc | 0 test/mysql_test/include/get_tenant_server.inc | 32 - test/mysql_test/include/index_quick_major.inc | 6 - test/mysql_test/include/majorfreeze.inc | 5 - test/mysql_test/include/not_embedded.inc | 5 - test/mysql_test/include/proxy_route_to_c.inc | 9 - .../include/show_create_table_old_version.inc | 1 - ...show_create_table_old_version_replica2.inc | 1 - test/mysql_test/include/wait_daily_merge.inc | 45 - test/mysql_test/r/not_embedded.require | 2 - .../test_suite/executor/include/cleanup.inc | 37 - .../test_suite/executor/include/load_data.inc | 355 - .../executor/r/mysql/full_join.result | 1203 - .../expr/r/mysql/expr_convert_tz.result | 361 - .../test_suite/expr/t/expr_convert_tz.test | 66 - .../r/mysql/global_index_select.result | 562 - .../r/mysql/table_constraints.result | 15 - .../join/r/mysql/anti_semi_join.result | 1624 - .../mysql/nested_loop_join_right_null.result | 27 - .../nested_loop_join_right_null_joinon.result | 28 - ...d_loop_join_right_null_joinon_where.result | 28 - .../r/mysql/bushy_leading_hint.result | 373 - .../optimizer/r/mysql/union_sort_opt.result | 550 - .../r/mysql/plan_cache_select_list.result | Bin 5013 -> 0 bytes .../test_suite/px/include/exam_data.inc | 106 - .../test_suite/px/r/mysql/sql_audit.result | 98 - .../r/mysql/explicit_cast.result | 261 - .../static_engine/r/mysql/expr_and_or.result | 314 - .../static_engine/r/mysql/expr_assign.result | 183 - .../static_engine/r/mysql/expr_bool.result | 3922 - .../r/mysql/expr_char_length.result | 43 - .../r/mysql/expr_collation.result | 138 - .../static_engine/r/mysql/expr_concat.result | 85 - .../static_engine/r/mysql/expr_conv.result | 25 - .../static_engine/r/mysql/expr_date.result | 18 - .../r/mysql/expr_datediff.result | 34 - .../r/mysql/expr_des_hex_str.result | 25 - .../r/mysql/expr_empty_arg.result | 123 - .../static_engine/r/mysql/expr_field.result | 29 - .../r/mysql/expr_get_sys_var.result | 30 - .../r/mysql/expr_get_user_var.result | 31 - .../static_engine/r/mysql/expr_is.result | 388 - .../r/mysql/expr_is_serving_tenant.result | 23 - .../static_engine/r/mysql/expr_length.result | 143 - .../static_engine/r/mysql/expr_lnnvl.result | 20 - .../r/mysql/expr_location.result | 64 - .../r/mysql/expr_lower_upper.result | 143 - .../static_engine/r/mysql/expr_not.result | 172 - .../r/mysql/expr_nullif_ifnull.result | 4044 - .../static_engine/r/mysql/expr_nvl.result | 3917 - .../static_engine/r/mysql/expr_pad.result | 3267 - .../r/mysql/expr_part_hash.result | 25 - .../r/mysql/expr_part_key.result | 76 - .../static_engine/r/mysql/expr_regexp.result | 42 - .../r/mysql/expr_regexp_func.result | 165 - .../static_engine/r/mysql/expr_repeat.result | 44 - .../static_engine/r/mysql/expr_replace.result | 33 - .../static_engine/r/mysql/expr_sign.result | 746 - .../static_engine/r/mysql/expr_str.result | 6061 -- .../static_engine/r/mysql/expr_substr.result | 96 - .../r/mysql/expr_substring_index.result | 88 - .../r/mysql/expr_sys_privilege_check.result | 29 - .../r/mysql/expr_timestampadd.result | 4665 - .../static_engine/r/mysql/expr_todays.result | 2128 - .../static_engine/r/mysql/expr_trim.result | 75 - .../static_engine/r/mysql/expr_trunc.result | 12663 --- .../static_engine/r/mysql/expr_unhex.result | 16 - .../r/mysql/expr_unix_timestamp.result | 83 - .../r/mysql/hash_distinct.result | 103 - .../static_engine/r/mysql/hash_set.result | 128 - .../static_engine/r/mysql/material.result | 69 - .../static_engine/r/mysql/px_basic.result | 128 - .../r/mysql/static_engine_case.result | 128 - .../r/mysql/static_engine_cmp_null.result | 288 - .../r/mysql/static_engine_hash.result | 46 - .../r/mysql/subplan_filter.result | 258 - .../static_engine/r/mysql/table_scan.result | 86 - .../static_engine/t/expr_unhex.test | 22 - ...ansformer_outer_join_simplification.result | 8849 -- .../mysql/transformer_predicate_deduce.result | 505 - .../r/mysql/transformer_simplify.result | 2842 - .../with_clause/r/mysql/basic_mysql.result | 2787 - .../r/mysql/dis_recursive_mysql.result | 4739 - .../r/mysql/recursive_bug_mysql.result | 14 - .../r/mysql/recursive_optimize_mysql.result | 102 - .../with_clause/t/recursive_bug_mysql.test | 8 - tools/deploy/.gitignore | 6 + .../r/mysql/alter_log_archive_option.result | 2 - .../alter/t/alter_log_archive_option.test | 3 + .../executor/r/mysql/full_join.result | 2452 + .../test_suite/executor/t/full_join.test | 7 +- .../expr/r/mysql/collation_expr.result | 2 +- .../test_suite/expr/r/mysql/expr_ceil.result | 0 .../expr/r/mysql/expr_convert_tz.result | 287 + .../expr/r/mysql/expr_export_set.result | 0 .../test_suite/expr/r/mysql/expr_floor.result | 0 .../test_suite/expr/r/mysql/expr_instr.result | 0 .../expr/r/mysql/expr_locate.result | 0 .../test_suite/expr/r/mysql/expr_nseq.result | 0 .../expr/r/mysql/expr_position.result | 0 .../test_suite/expr/r/mysql/func_equal.result | 0 .../expr/r/mysql/func_length.result | 0 .../expr/r/mysql/func_regexp.result | 882 + .../test_suite/expr/t/collation_expr.test | 5 + .../test_suite/expr/t/expr_ceil.test | 3 + .../test_suite/expr/t/expr_convert_tz.test | 155 + .../test_suite/expr/t/expr_export_set.test | 10 + .../test_suite/expr/t/expr_floor.test | 3 + .../test_suite/expr/t/expr_instr.test | 3 + .../test_suite/expr/t/expr_locate.test | 4 + .../test_suite/expr/t/expr_nseq.test | 3 + .../test_suite/expr/t/expr_position.test | 3 + .../test_suite/expr/t/func_equal.test | 3 + .../test_suite/expr/t/func_length.test | 2 + .../test_suite/expr/t/func_regexp.test | 24 + .../r/mysql/global_index_select.result | 786 + .../global_index/t/global_index_select.test | 7 +- .../groupby/r/mysql/group_by_basic.result | 38 +- .../test_suite/groupby/t/group_by_basic.test | 43 +- .../r/mysql/hierarchical_basic_mysql.result | 0 .../t/hierarchical_basic_mysql.test | 2 + .../r/mysql/information_schema-big.result | 20 - .../r/mysql/information_schema_desc.result | 21 +- .../t/information_schema-big.test | 3 + .../t/information_schema_desc.test | 4 + .../r/mysql/all_virtual_data_type.result | 2 +- .../mysql/all_virtual_data_type_class.result | 2 +- .../r/mysql/all_virtual_engine.result | 2 +- .../r/mysql/all_virtual_interm_result.result | 0 .../all_virtual_pg_partition_info.result | 1 - .../all_virtual_sys_parameter_stat.result | 14 +- .../all_virtual_upgrade_inspection.result | 1 - .../inner_table/r/mysql/character_sets.result | 0 ...llation_character_set_applicability.result | 0 .../inner_table/r/mysql/collations.result | 0 .../inner_table/r/mysql/global_status.result | 2 +- .../r/mysql/global_variables.result | 0 .../r/mysql/inner_table_overall.result | 38 +- .../inner_table/r/mysql/partitions.result | 6 +- .../inner_table/r/mysql/schemata.result | 0 .../inner_table/r/mysql/session_status.result | 2 +- .../r/mysql/session_variables.result | 2 +- .../r/mysql/table_constraints.result | 19 + .../r/mysql/table_privileges.result | 2 +- .../r/mysql/tenant_virtual_event_name.result | 0 .../tenant_virtual_partition_stat.result | 1 - .../r/mysql/tenant_virtual_statname.result | 0 .../r/mysql/user_privileges.result | 2 +- .../inner_table/r/mysql/views.result | 4 - .../inner_table/t/all_virtual_data_type.test | 3 + .../t/all_virtual_data_type_class.test | 3 + .../inner_table/t/all_virtual_engine.test | 3 + .../t/all_virtual_interm_result.test | 3 + .../t/all_virtual_pg_partition_info.test | 4 + .../t/all_virtual_sys_parameter_stat.test | 4 + .../t/all_virtual_upgrade_inspection.test | 3 + .../inner_table/t/character_sets.test | 3 + ...collation_character_set_applicability.test | 3 + .../test_suite/inner_table/t/collations.test | 3 + .../inner_table/t/global_status.test | 3 + .../inner_table/t/global_variables.test | 3 + .../inner_table/t/inner_table_overall.test | 9 + .../test_suite/inner_table/t/partitions.test | 3 + .../test_suite/inner_table/t/schemata.test | 3 + .../inner_table/t/session_status.test | 3 + .../inner_table/t/session_variables.test | 3 + .../inner_table/t/table_constraints.test | 7 +- .../inner_table/t/table_privileges.test | 3 + .../t/tenant_virtual_event_name.test | 3 + .../t/tenant_virtual_partition_stat.test | 3 + .../t/tenant_virtual_statname.test | 3 + .../inner_table/t/user_privileges.test | 3 + .../test_suite/inner_table/t/views.test | 3 + .../join/r/mysql/anti_semi_join.result | 4214 + .../test_suite/join/r/mysql/join_merge.result | 0 .../mysql/nested_loop_join_right_null.result | 120 + .../nested_loop_join_right_null_joinon.result | 121 + ...d_loop_join_right_null_joinon_where.result | 121 + .../test_suite/join/t/anti_semi_join.test | 10 +- .../test_suite/join/t/join_merge.test | 3 + .../join/t/nested_loop_join_right_null.test | 8 +- .../t/nested_loop_join_right_null_joinon.test | 8 +- ...ted_loop_join_right_null_joinon_where.test | 8 +- .../r/mysql/meta_build_in_func_test.result | 2435 +- .../meta_info/r/mysql/meta_const.result | 3 - .../meta_info/r/mysql/meta_func.result | 3 - .../meta_info/r/mysql/meta_func_ceil.result | 3 - .../meta_info/r/mysql/meta_func_floor.result | 3 - .../r/mysql/meta_test_func_return_type.result | 3 - .../meta_info/t/meta_build_in_func_test.test | 6 +- .../test_suite/meta_info/t/meta_const.test | 2 + .../test_suite/meta_info/t/meta_func.test | 2 + .../meta_info/t/meta_func_ceil.test | 3 + .../meta_info/t/meta_func_floor.test | 3 + .../t/meta_test_func_return_type.test | 6 + .../r/mysql/bushy_leading_hint.result | 2584 + .../r/mysql/default_statistic.result | 0 .../optimizer/r/mysql/equal_set_mysql.result | 0 .../optimizer/r/mysql/estimate_cost.result | 0 .../optimizer/r/mysql/union_sort_opt.result | 1801 + .../optimizer/t/bushy_leading_hint.test | 8 +- .../optimizer/t/default_statistic.test | 5 +- .../optimizer/t/equal_set_mysql.test | 3 + .../test_suite/optimizer/t/estimate_cost.test | 16 + .../optimizer/t/union_sort_opt.test | 9 +- .../r/mysql/plan_cache_multi_query.result | 5 +- .../r/mysql/plan_cache_select_list.result | 362 + .../plan_cache/t/plan_cache_multi_query.test | 4 + .../plan_cache/t/plan_cache_select_list.test | 6 +- .../test_suite/px/r/mysql/add_material.result | 0 ...for_producer_consumer_schedule_mode.result | 0 .../px/r/mysql/default_open_px.result | 13 +- .../test_suite/px/r/mysql/dml_use_px.result | 577 +- .../test_suite/px/r/mysql/join_mj.result | 0 .../test_suite/px/r/mysql/join_nlj.result | 0 .../test_suite/px/r/mysql/join_pwj.result | 0 .../test_suite/px/r/mysql/sql_audit.result | 123 + .../test_suite/px/t/add_material.test | 3 + ...l_for_producer_consumer_schedule_mode.test | 3 + .../test_suite/px/t/default_open_px.test | 5 +- .../test_suite/px/t/dml_use_px.test | 7 +- .../mysql_test/test_suite/px/t/join_mj.test | 3 + .../mysql_test/test_suite/px/t/join_nlj.test | 3 + .../mysql_test/test_suite/px/t/join_pwj.test | 3 + .../mysql_test/test_suite/px/t/sql_audit.test | 5 +- .../r/mysql/skyline_basic_mysql.result | 0 .../r/mysql/skyline_complicate_mysql.result | 0 .../skyline/t/skyline_basic_mysql.test | 3 + .../skyline/t/skyline_complicate_mysql.test | 3 + .../r/mysql/explicit_cast.result | 343 + .../static_engine/r/mysql/expr_abs.result | 445 +- .../static_engine/r/mysql/expr_and_or.result | 1439 + .../static_engine/r/mysql/expr_assign.result | 342 + .../static_engine/r/mysql/expr_bool.result | 23304 +++++ .../r/mysql/expr_char_length.result | 93 + .../r/mysql/expr_collation.result | 215 + .../static_engine/r/mysql/expr_concat.result | 129 + .../static_engine/r/mysql/expr_conv.result | 47 + .../static_engine/r/mysql/expr_date.result | 27 + .../r/mysql/expr_datediff.result | 55 + .../r/mysql/expr_des_hex_str.result | 45 + .../static_engine/r/mysql/expr_dump.result | 24 +- .../r/mysql/expr_empty_arg.result | 194 + .../static_engine/r/mysql/expr_field.result | 52 + .../r/mysql/expr_get_sys_var.result | 54 + .../r/mysql/expr_get_user_var.result | 57 + .../static_engine/r/mysql/expr_is.result | 552 + .../r/mysql/expr_is_serving_tenant.result | 43 + .../static_engine/r/mysql/expr_length.result | 195 + .../static_engine/r/mysql/expr_lnnvl.result | 37 + .../r/mysql/expr_location.result | 110 + .../r/mysql/expr_lower_upper.result | 195 + .../static_engine/r/mysql/expr_nextval.result | 123 +- .../static_engine/r/mysql/expr_not.result | 277 + .../r/mysql/expr_nullif_ifnull.result | 7603 ++ .../static_engine/r/mysql/expr_nvl.result | 19935 ++++ .../static_engine/r/mysql/expr_pad.result | 6285 ++ .../r/mysql/expr_part_hash.result | 39 + .../r/mysql/expr_part_key.result | 145 + .../static_engine/r/mysql/expr_regexp.result | 70 + .../r/mysql/expr_regexp_func.result | 285 + .../static_engine/r/mysql/expr_repeat.result | 88 + .../static_engine/r/mysql/expr_replace.result | 58 + .../static_engine/r/mysql/expr_sign.result | 1702 + .../static_engine/r/mysql/expr_str.result | 11073 +++ .../static_engine/r/mysql/expr_substr.result | 177 + .../r/mysql/expr_substring_index.result | 135 + .../r/mysql/expr_sys_privilege_check.result | 43 + .../r/mysql/expr_time_diff.result | 6 - .../r/mysql/expr_timestampadd.result | 29816 ++++++ .../static_engine/r/mysql/expr_todays.result | 4787 + .../static_engine/r/mysql/expr_trim.result | 140 + .../static_engine/r/mysql/expr_trunc.result | 28206 ++++++ .../static_engine/r/mysql/expr_unhex.result | 56 + .../r/mysql/expr_unix_timestamp.result | 99 + .../static_engine/r/mysql/expr_xor.result | 8201 +- .../r/mysql/hash_distinct.result | 301 + .../static_engine/r/mysql/hash_set.result | 430 + .../static_engine/r/mysql/material.result | 99 + .../static_engine/r/mysql/merge_set.result | 6 - .../r/mysql/partition_split.result | 21 +- .../static_engine/r/mysql/px_basic.result | 423 + .../r/mysql/static_engine_case.result | 479 + .../r/mysql/static_engine_cmp_null.result | 1684 + .../r/mysql/static_engine_hash.result | 59 + .../r/mysql/subplan_filter.result | 667 + .../static_engine/r/mysql/subplan_scan.result | 58 +- .../static_engine/r/mysql/table_insert.result | 122 +- .../static_engine/r/mysql/table_scan.result | 309 + .../static_engine/t/explicit_cast.test | 4 +- .../test_suite/static_engine/t/expr_abs.test | 3 +- .../static_engine/t/expr_and_or.test | 12 +- .../static_engine/t/expr_assign.test | 6 +- .../test_suite/static_engine/t/expr_bool.test | 12 +- .../static_engine/t/expr_char_length.test | 17 +- .../static_engine/t/expr_collation.test | 8 +- .../static_engine/t/expr_concat.test | 4 +- .../test_suite/static_engine/t/expr_conv.test | 4 +- .../test_suite/static_engine/t/expr_date.test | 4 +- .../static_engine/t/expr_datediff.test | 4 +- .../static_engine/t/expr_des_hex_str.test | 4 +- .../test_suite/static_engine/t/expr_dump.test | 4 +- .../static_engine/t/expr_empty_arg.test | 6 +- .../static_engine/t/expr_field.test | 4 +- .../static_engine/t/expr_get_sys_var.test | 6 +- .../static_engine/t/expr_get_user_var.test | 4 +- .../test_suite/static_engine/t/expr_is.test | 4 +- .../t/expr_is_serving_tenant.test | 4 +- .../static_engine/t/expr_length.test | 4 +- .../static_engine/t/expr_lnnvl.test | 4 +- .../static_engine/t/expr_location.test | 7 +- .../static_engine/t/expr_lower_upper.test | 4 +- .../static_engine/t/expr_nextval.test | 4 +- .../test_suite/static_engine/t/expr_not.test | 3 +- .../static_engine/t/expr_nullif_ifnull.test | 40 +- .../test_suite/static_engine/t/expr_nvl.test | 25 +- .../test_suite/static_engine/t/expr_pad.test | 5 +- .../static_engine/t/expr_part_hash.test | 4 +- .../static_engine/t/expr_part_key.test | 4 +- .../static_engine/t/expr_regexp.test | 4 +- .../static_engine/t/expr_regexp_func.test | 4 +- .../static_engine/t/expr_repeat.test | 4 +- .../static_engine/t/expr_replace.test | 4 +- .../test_suite/static_engine/t/expr_sign.test | 8 +- .../test_suite/static_engine/t/expr_str.test | 9 +- .../static_engine/t/expr_substr.test | 4 +- .../static_engine/t/expr_substring_index.test | 4 +- .../t/expr_sys_privilege_check.test | 4 +- .../static_engine/t/expr_time_diff.test | 3 + .../static_engine/t/expr_timestampadd.test | 14 +- .../static_engine/t/expr_todays.test | 5 +- .../test_suite/static_engine/t/expr_trim.test | 4 +- .../static_engine/t/expr_trunc.test | 8 +- .../static_engine/t/expr_unhex.test | 40 + .../static_engine/t/expr_unix_timestamp.test | 4 +- .../test_suite/static_engine/t/expr_xor.test | 3 +- .../static_engine/t/hash_distinct.test | 6 +- .../test_suite/static_engine/t/hash_set.test | 11 +- .../test_suite/static_engine/t/material.test | 8 +- .../test_suite/static_engine/t/merge_set.test | 5 + .../static_engine/t/partition_split.test | 4 +- .../test_suite/static_engine/t/px_basic.test | 6 +- .../static_engine/t/static_engine_case.test | 18 +- .../t/static_engine_cmp_null.test | 5 +- .../static_engine/t/static_engine_hash.test | 4 +- .../static_engine/t/subplan_filter.test | 6 +- .../static_engine/t/subplan_scan.test | 4 +- .../static_engine/t/table_insert.test | 8 +- .../static_engine/t/table_scan.test | 10 +- .../subquery/r/mysql/order_by_subquery.result | 0 .../r/mysql/subquery_sj_innodb.result | 0 .../subquery/t/order_by_subquery.test | 5 + .../subquery/t/subquery_sj_innodb.test | 5 + .../transformer_add_limit_for_union.result | 10 +- ...ansformer_outer_join_simplification.result | 78050 ++++++++++++++++ .../mysql/transformer_predicate_deduce.result | 3570 + .../r/mysql/transformer_simplify.result | 18462 ++++ .../t/transformer_add_limit_for_union.test | 4 + ...transformer_outer_join_simplification.test | 10 +- .../t/transformer_predicate_deduce.test | 7 +- .../transformer/t/transformer_simplify.test | 50 +- .../test_suite/trx/r/mysql/pg_trans.result | 5 - .../r/mysql/serializable_constrains.result | 17 - .../trx/r/mysql/trans_consistency_type.result | 2 - .../test_suite/trx/r/mysql/ts_source.result | 13 - .../mysql_test/test_suite/trx/t/pg_trans.test | 4 + .../trx/t/serializable_constrains.test | 9 + .../trx/t/trans_consistency_type.test | 12 + .../test_suite/trx/t/ts_source.test | 3 + .../r/mysql/add_timestamp_column.result | 0 .../type_date/r/mysql/datetime_java.result | 0 .../r/mysql/daylight_saving_time.result | 0 .../r/mysql/expr_date_add_sub.result | 0 .../r/mysql/test_select_usec_to_time.result | 0 .../type_date/r/mysql/timefuncnull.result | 0 .../type_date/r/mysql/type_create_time.result | 0 .../type_date/r/mysql/type_modify_time.result | 0 .../r/mysql/updaterowkeymoditime.result | 0 .../type_date/t/add_timestamp_column.test | 4 + .../test_suite/type_date/t/datetime_java.test | 3 + .../type_date/t/daylight_saving_time.test | 3 + .../type_date/t/expr_date_add_sub.test | 4 + .../type_date/t/test_select_usec_to_time.test | 3 + .../test_suite/type_date/t/timefuncnull.test | 3 + .../type_date/t/type_create_time.test | 3 + .../type_date/t/type_modify_time.test | 2 + .../type_date/t/updaterowkeymoditime.test | 4 + .../test_suite/version/r/mysql/version.result | 4 +- .../test_suite/version/t/version.test | 0 .../window_function/r/mysql/farm.result | 0 .../test_suite/window_function/t/farm.test | 4 +- .../r/mysql/basic_mysql.result | 2613 + .../r/mysql/cte_errno_mysql.result | 44 +- .../r/mysql/cte_mysql_official.result | 44 +- .../mysql/cte_without_explain_2_mysql.result | 417 +- .../r/mysql/cte_without_explain_mysql.result | 865 +- .../r/mysql/dis_recursive_mysql.result | 4590 + .../r/mysql/recursive_bug_mysql.result | 110 + .../r/mysql/recursive_cycle_mysql.result | 82 +- .../r/mysql/recursive_join_mysql.result | 150 +- .../r/mysql/recursive_mysql.result | 414 +- .../r/mysql/recursive_optimize_mysql.result | 71 + .../with_clause_mysql}/t/basic_mysql.test | 299 +- .../with_clause_mysql}/t/cte_errno_mysql.test | 36 +- .../t/cte_mysql_official.test | 13 + .../t/cte_without_explain_2_mysql.test | 257 +- .../t/cte_without_explain_mysql.test | 678 +- .../t/dis_recursive_mysql.test | 322 +- .../t/recursive_bug_mysql.test | 84 + .../t/recursive_cycle_mysql.test | 41 +- .../t/recursive_join_mysql.test | 81 +- .../with_clause_mysql}/t/recursive_mysql.test | 194 +- .../t/recursive_optimize_mysql.test | 19 +- 419 files changed, 275972 insertions(+), 77007 deletions(-) delete mode 100644 test/mysql_test/include/check_all_idx_ok.inc delete mode 100644 test/mysql_test/include/check_ob_or_mysql.inc delete mode 100644 test/mysql_test/include/check_schema_sync.inc delete mode 100644 test/mysql_test/include/check_stat.inc delete mode 100644 test/mysql_test/include/check_tenant_sync.inc delete mode 100644 test/mysql_test/include/drop_and_flashback_table.inc delete mode 100644 test/mysql_test/include/get_tenant_server.inc delete mode 100644 test/mysql_test/include/index_quick_major.inc delete mode 100644 test/mysql_test/include/majorfreeze.inc delete mode 100644 test/mysql_test/include/not_embedded.inc delete mode 100644 test/mysql_test/include/proxy_route_to_c.inc delete mode 100644 test/mysql_test/include/show_create_table_old_version.inc delete mode 100644 test/mysql_test/include/show_create_table_old_version_replica2.inc delete mode 100644 test/mysql_test/include/wait_daily_merge.inc delete mode 100644 test/mysql_test/r/not_embedded.require delete mode 100644 test/mysql_test/test_suite/executor/include/cleanup.inc delete mode 100644 test/mysql_test/test_suite/executor/include/load_data.inc delete mode 100644 test/mysql_test/test_suite/executor/r/mysql/full_join.result delete mode 100644 test/mysql_test/test_suite/expr/r/mysql/expr_convert_tz.result delete mode 100644 test/mysql_test/test_suite/expr/t/expr_convert_tz.test delete mode 100644 test/mysql_test/test_suite/global_index/r/mysql/global_index_select.result delete mode 100644 test/mysql_test/test_suite/inner_table/r/mysql/table_constraints.result delete mode 100644 test/mysql_test/test_suite/join/r/mysql/anti_semi_join.result delete mode 100644 test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null.result delete mode 100644 test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon.result delete mode 100644 test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon_where.result delete mode 100644 test/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result delete mode 100644 test/mysql_test/test_suite/optimizer/r/mysql/union_sort_opt.result delete mode 100644 test/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_select_list.result delete mode 100644 test/mysql_test/test_suite/px/include/exam_data.inc delete mode 100644 test/mysql_test/test_suite/px/r/mysql/sql_audit.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/explicit_cast.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_and_or.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_assign.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_bool.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_char_length.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_collation.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_concat.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_conv.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_date.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_datediff.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_des_hex_str.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_empty_arg.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_field.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_get_sys_var.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_get_user_var.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_is.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_is_serving_tenant.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_length.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_lnnvl.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_location.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_lower_upper.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_not.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_nullif_ifnull.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_nvl.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_pad.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_part_hash.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_part_key.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_regexp.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_regexp_func.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_repeat.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_replace.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_sign.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_str.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_substr.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_substring_index.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_sys_privilege_check.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_timestampadd.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_todays.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_trim.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_trunc.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_unhex.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/expr_unix_timestamp.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/hash_distinct.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/hash_set.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/material.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/px_basic.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/static_engine_case.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/static_engine_cmp_null.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/static_engine_hash.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/subplan_filter.result delete mode 100644 test/mysql_test/test_suite/static_engine/r/mysql/table_scan.result delete mode 100644 test/mysql_test/test_suite/static_engine/t/expr_unhex.test delete mode 100644 test/mysql_test/test_suite/transformer/r/mysql/transformer_outer_join_simplification.result delete mode 100644 test/mysql_test/test_suite/transformer/r/mysql/transformer_predicate_deduce.result delete mode 100644 test/mysql_test/test_suite/transformer/r/mysql/transformer_simplify.result delete mode 100644 test/mysql_test/test_suite/with_clause/r/mysql/basic_mysql.result delete mode 100644 test/mysql_test/test_suite/with_clause/r/mysql/dis_recursive_mysql.result delete mode 100644 test/mysql_test/test_suite/with_clause/r/mysql/recursive_bug_mysql.result delete mode 100644 test/mysql_test/test_suite/with_clause/r/mysql/recursive_optimize_mysql.result delete mode 100644 test/mysql_test/test_suite/with_clause/t/recursive_bug_mysql.test create mode 100644 tools/deploy/.gitignore rename {test => tools/deploy}/mysql_test/test_suite/alter/r/mysql/alter_log_archive_option.result (95%) rename {test => tools/deploy}/mysql_test/test_suite/alter/t/alter_log_archive_option.test (96%) create mode 100644 tools/deploy/mysql_test/test_suite/executor/r/mysql/full_join.result rename {test => tools/deploy}/mysql_test/test_suite/executor/t/full_join.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/collation_expr.result (98%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/expr_ceil.result (100%) create mode 100644 tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_convert_tz.result rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/expr_export_set.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/expr_floor.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/expr_instr.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/expr_locate.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/expr_nseq.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/expr_position.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/func_equal.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/func_length.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/expr/r/mysql/func_regexp.result (87%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/collation_expr.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/expr_ceil.test (97%) create mode 100644 tools/deploy/mysql_test/test_suite/expr/t/expr_convert_tz.test rename {test => tools/deploy}/mysql_test/test_suite/expr/t/expr_export_set.test (93%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/expr_floor.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/expr_instr.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/expr_locate.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/expr_nseq.test (93%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/expr_position.test (95%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/func_equal.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/func_length.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/expr/t/func_regexp.test (92%) create mode 100644 tools/deploy/mysql_test/test_suite/global_index/r/mysql/global_index_select.result rename {test => tools/deploy}/mysql_test/test_suite/global_index/t/global_index_select.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/groupby/r/mysql/group_by_basic.result (58%) rename {test => tools/deploy}/mysql_test/test_suite/groupby/t/group_by_basic.test (50%) rename {test => tools/deploy}/mysql_test/test_suite/hierarchical_query/r/mysql/hierarchical_basic_mysql.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/hierarchical_query/t/hierarchical_basic_mysql.test (59%) rename {test => tools/deploy}/mysql_test/test_suite/information_schema/r/mysql/information_schema-big.result (89%) rename {test => tools/deploy}/mysql_test/test_suite/information_schema/r/mysql/information_schema_desc.result (93%) rename {test => tools/deploy}/mysql_test/test_suite/information_schema/t/information_schema-big.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/information_schema/t/information_schema_desc.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type.result (94%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type_class.result (91%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/all_virtual_engine.result (82%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/all_virtual_interm_result.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/all_virtual_pg_partition_info.result (97%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result (97%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/all_virtual_upgrade_inspection.result (84%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/character_sets.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/collation_character_set_applicability.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/collations.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/global_status.result (66%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/global_variables.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result (99%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/partitions.result (84%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/schemata.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/session_status.result (66%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/session_variables.result (81%) create mode 100644 tools/deploy/mysql_test/test_suite/inner_table/r/mysql/table_constraints.result rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/table_privileges.result (89%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_event_name.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_partition_stat.result (77%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_statname.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/user_privileges.result (94%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/r/mysql/views.result (99%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/all_virtual_data_type.test (87%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/all_virtual_data_type_class.test (86%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/all_virtual_engine.test (80%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/all_virtual_interm_result.test (92%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/all_virtual_pg_partition_info.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/all_virtual_sys_parameter_stat.test (84%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/all_virtual_upgrade_inspection.test (77%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/character_sets.test (83%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/collation_character_set_applicability.test (84%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/collations.test (82%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/global_status.test (74%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/global_variables.test (91%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/inner_table_overall.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/partitions.test (83%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/schemata.test (79%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/session_status.test (74%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/session_variables.test (91%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/table_constraints.test (82%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/table_privileges.test (92%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/tenant_virtual_event_name.test (83%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/tenant_virtual_partition_stat.test (80%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/tenant_virtual_statname.test (83%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/user_privileges.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/inner_table/t/views.test (84%) create mode 100644 tools/deploy/mysql_test/test_suite/join/r/mysql/anti_semi_join.result rename {test => tools/deploy}/mysql_test/test_suite/join/r/mysql/join_merge.result (100%) create mode 100644 tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null.result create mode 100644 tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon.result create mode 100644 tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon_where.result rename {test => tools/deploy}/mysql_test/test_suite/join/t/anti_semi_join.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/join/t/join_merge.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/join/t/nested_loop_join_right_null.test (87%) rename {test => tools/deploy}/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon.test (87%) rename {test => tools/deploy}/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon_where.test (87%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/r/mysql/meta_build_in_func_test.result (58%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/r/mysql/meta_const.result (98%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/r/mysql/meta_func.result (98%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/r/mysql/meta_func_ceil.result (98%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/r/mysql/meta_func_floor.result (99%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/r/mysql/meta_test_func_return_type.result (99%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/t/meta_build_in_func_test.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/t/meta_const.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/t/meta_func.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/t/meta_func_ceil.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/t/meta_func_floor.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/meta_info/t/meta_test_func_return_type.test (97%) create mode 100644 tools/deploy/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result rename {test => tools/deploy}/mysql_test/test_suite/optimizer/r/mysql/default_statistic.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/optimizer/r/mysql/equal_set_mysql.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/optimizer/r/mysql/estimate_cost.result (100%) create mode 100644 tools/deploy/mysql_test/test_suite/optimizer/r/mysql/union_sort_opt.result rename {test => tools/deploy}/mysql_test/test_suite/optimizer/t/bushy_leading_hint.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/optimizer/t/default_statistic.test (95%) rename {test => tools/deploy}/mysql_test/test_suite/optimizer/t/equal_set_mysql.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/optimizer/t/estimate_cost.test (92%) rename {test => tools/deploy}/mysql_test/test_suite/optimizer/t/union_sort_opt.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_multi_query.result (74%) create mode 100644 tools/deploy/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_select_list.result rename {test => tools/deploy}/mysql_test/test_suite/plan_cache/t/plan_cache_multi_query.test (93%) rename {test => tools/deploy}/mysql_test/test_suite/plan_cache/t/plan_cache_select_list.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/px/r/mysql/add_material.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/px/r/mysql/alloc_material_for_producer_consumer_schedule_mode.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/px/r/mysql/default_open_px.result (94%) rename {test => tools/deploy}/mysql_test/test_suite/px/r/mysql/dml_use_px.result (91%) rename {test => tools/deploy}/mysql_test/test_suite/px/r/mysql/join_mj.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/px/r/mysql/join_nlj.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/px/r/mysql/join_pwj.result (100%) create mode 100644 tools/deploy/mysql_test/test_suite/px/r/mysql/sql_audit.result rename {test => tools/deploy}/mysql_test/test_suite/px/t/add_material.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/px/t/alloc_material_for_producer_consumer_schedule_mode.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/px/t/default_open_px.test (93%) rename {test => tools/deploy}/mysql_test/test_suite/px/t/dml_use_px.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/px/t/join_mj.test (82%) rename {test => tools/deploy}/mysql_test/test_suite/px/t/join_nlj.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/px/t/join_pwj.test (82%) rename {test => tools/deploy}/mysql_test/test_suite/px/t/sql_audit.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/skyline/r/mysql/skyline_basic_mysql.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/skyline/r/mysql/skyline_complicate_mysql.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/skyline/t/skyline_basic_mysql.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/skyline/t/skyline_complicate_mysql.test (99%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/explicit_cast.result rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/expr_abs.result (75%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_and_or.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_assign.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_bool.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_char_length.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_collation.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_concat.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_conv.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_date.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_datediff.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_des_hex_str.result rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/expr_dump.result (54%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_empty_arg.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_field.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_get_sys_var.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_get_user_var.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_is.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_is_serving_tenant.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_length.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_lnnvl.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_location.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_lower_upper.result rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/expr_nextval.result (70%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_not.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nullif_ifnull.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nvl.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_pad.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_part_hash.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_part_key.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_regexp.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_regexp_func.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_repeat.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_replace.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_sign.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_str.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_substr.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_substring_index.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_sys_privilege_check.result rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/expr_time_diff.result (95%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_timestampadd.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_todays.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_trim.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_trunc.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_unhex.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_unix_timestamp.result rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/expr_xor.result (75%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/hash_distinct.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/hash_set.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/material.result rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/merge_set.result (90%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/partition_split.result (84%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/px_basic.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_case.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_cmp_null.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_hash.result create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/subplan_filter.result rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/subplan_scan.result (87%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/r/mysql/table_insert.result (53%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/r/mysql/table_scan.result rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/explicit_cast.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_abs.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_and_or.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_assign.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_bool.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_char_length.test (75%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_collation.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_concat.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_conv.test (88%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_date.test (88%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_datediff.test (93%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_des_hex_str.test (90%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_dump.test (87%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_empty_arg.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_field.test (89%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_get_sys_var.test (89%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_get_user_var.test (91%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_is.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_is_serving_tenant.test (91%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_length.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_lnnvl.test (86%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_location.test (91%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_lower_upper.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_nextval.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_not.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_nullif_ifnull.test (84%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_nvl.test (74%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_pad.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_part_hash.test (92%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_part_key.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_regexp.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_regexp_func.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_repeat.test (91%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_replace.test (91%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_sign.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_str.test (93%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_substr.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_substring_index.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_sys_privilege_check.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_time_diff.test (95%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_timestampadd.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_todays.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_trim.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_trunc.test (95%) create mode 100644 tools/deploy/mysql_test/test_suite/static_engine/t/expr_unhex.test rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_unix_timestamp.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/expr_xor.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/hash_distinct.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/hash_set.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/material.test (89%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/merge_set.test (92%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/partition_split.test (92%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/px_basic.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/static_engine_case.test (93%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/static_engine_cmp_null.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/static_engine_hash.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/subplan_filter.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/subplan_scan.test (95%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/table_insert.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/static_engine/t/table_scan.test (89%) rename {test => tools/deploy}/mysql_test/test_suite/subquery/r/mysql/order_by_subquery.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/subquery/t/order_by_subquery.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/subquery/t/subquery_sj_innodb.test (95%) rename {test => tools/deploy}/mysql_test/test_suite/transformer/r/mysql/transformer_add_limit_for_union.result (99%) create mode 100644 tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_outer_join_simplification.result create mode 100644 tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_predicate_deduce.result create mode 100644 tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_simplify.result rename {test => tools/deploy}/mysql_test/test_suite/transformer/t/transformer_add_limit_for_union.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/transformer/t/transformer_outer_join_simplification.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/transformer/t/transformer_predicate_deduce.test (99%) rename {test => tools/deploy}/mysql_test/test_suite/transformer/t/transformer_simplify.test (98%) rename {test => tools/deploy}/mysql_test/test_suite/trx/r/mysql/pg_trans.result (96%) rename {test => tools/deploy}/mysql_test/test_suite/trx/r/mysql/serializable_constrains.result (89%) rename {test => tools/deploy}/mysql_test/test_suite/trx/r/mysql/trans_consistency_type.result (96%) rename {test => tools/deploy}/mysql_test/test_suite/trx/r/mysql/ts_source.result (64%) rename {test => tools/deploy}/mysql_test/test_suite/trx/t/pg_trans.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/trx/t/serializable_constrains.test (90%) rename {test => tools/deploy}/mysql_test/test_suite/trx/t/trans_consistency_type.test (87%) rename {test => tools/deploy}/mysql_test/test_suite/trx/t/ts_source.test (95%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/add_timestamp_column.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/datetime_java.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/daylight_saving_time.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/expr_date_add_sub.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/test_select_usec_to_time.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/timefuncnull.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/type_create_time.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/type_modify_time.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/r/mysql/updaterowkeymoditime.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/add_timestamp_column.test (85%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/datetime_java.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/daylight_saving_time.test (91%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/expr_date_add_sub.test (97%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/test_select_usec_to_time.test (96%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/timefuncnull.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/type_create_time.test (92%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/type_modify_time.test (94%) rename {test => tools/deploy}/mysql_test/test_suite/type_date/t/updaterowkeymoditime.test (92%) rename {test => tools/deploy}/mysql_test/test_suite/version/r/mysql/version.result (63%) rename {test => tools/deploy}/mysql_test/test_suite/version/t/version.test (100%) rename {test => tools/deploy}/mysql_test/test_suite/window_function/r/mysql/farm.result (100%) rename {test => tools/deploy}/mysql_test/test_suite/window_function/t/farm.test (99%) create mode 100644 tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/basic_mysql.result rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/r/mysql/cte_errno_mysql.result (56%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/r/mysql/cte_mysql_official.result (97%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/r/mysql/cte_without_explain_2_mysql.result (87%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/r/mysql/cte_without_explain_mysql.result (78%) create mode 100644 tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/dis_recursive_mysql.result create mode 100644 tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_bug_mysql.result rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/r/mysql/recursive_cycle_mysql.result (94%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/r/mysql/recursive_join_mysql.result (91%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/r/mysql/recursive_mysql.result (79%) create mode 100644 tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_optimize_mysql.result rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/basic_mysql.test (74%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/cte_errno_mysql.test (78%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/cte_mysql_official.test (98%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/cte_without_explain_2_mysql.test (64%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/cte_without_explain_mysql.test (72%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/dis_recursive_mysql.test (87%) create mode 100644 tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_bug_mysql.test rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/recursive_cycle_mysql.test (95%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/recursive_join_mysql.test (86%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/recursive_mysql.test (68%) rename {test/mysql_test/test_suite/with_clause => tools/deploy/mysql_test/test_suite/with_clause_mysql}/t/recursive_optimize_mysql.test (92%) diff --git a/deps/logmessage b/deps/logmessage index 4f9e63f63..509d86f9e 160000 --- a/deps/logmessage +++ b/deps/logmessage @@ -1 +1 @@ -Subproject commit 4f9e63f635e841e457cd1d6f28d80ef2e196ebea +Subproject commit 509d86f9ea7afa6a5e6a577e95d20633f6c584b7 diff --git a/test/mysql_test/include/check_all_idx_ok.inc b/test/mysql_test/include/check_all_idx_ok.inc deleted file mode 100644 index 8deda9cf2..000000000 --- a/test/mysql_test/include/check_all_idx_ok.inc +++ /dev/null @@ -1,31 +0,0 @@ -#--disable_query_log -#--disable_result_log -# -#let $index_status_expect = 2; -#let $result = 2; -# -#connect (obsys_caio,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); -#connection obsys_caio; -#let $i=210; -#while($i>0) -#{ -# sleep 1; -# #--echo $index_name -# ## let $result = query_get_value(select count(*) from oceanbase.__all_virtual_table where table_name like '__idx_%' and index_status!=2,count(*),1); -# let $result = query_get_value(select count(*) from oceanbase.__all_virtual_table as t join oceanbase.__all_virtual_database as d where t.tenant_id = d.tenant_id and t.database_id = d.database_id and d.in_recyclebin = false and d.database_name != "__recyclebin" and t.table_name like '__idx_%' and t.index_status!=2,count(*),1); -# if($result == 0) -# { -# let $i = -4; -# } -# dec $i; -#} -#sleep 2; -#if($i != -5) -#{ -# let $table_id = query_get_value(select table_id from oceanbase.__all_virtual_table as t join oceanbase.__all_virtual_database as d where t.tenant_id = d.tenant_id and t.database_id = d.database_id and d.in_recyclebin = false and d.database_name != "__recyclebin" and t.table_name like '__idx_%' and t.index_status!=2 limit 1,table_id,1); -# --echo $result idx is build failed, first table id is $table_id -#} -#disconnect obsys_caio; -#connection default; -#--enable_query_log -#--enable_result_log diff --git a/test/mysql_test/include/check_ob_or_mysql.inc b/test/mysql_test/include/check_ob_or_mysql.inc deleted file mode 100644 index 78149c2ed..000000000 --- a/test/mysql_test/include/check_ob_or_mysql.inc +++ /dev/null @@ -1,9 +0,0 @@ - -let $cluster_is_ob = 1; -let $cluster_is_mysql = 0; -let $collation_count = query_get_value(select count(1) as cnt from information_schema.COLLATIONS, cnt, 1); -if ($collation_count > 100) { - let $cluster_is_ob = 0; - let $cluster_is_mysql = 1; -} - diff --git a/test/mysql_test/include/check_schema_sync.inc b/test/mysql_test/include/check_schema_sync.inc deleted file mode 100644 index 433f676ff..000000000 --- a/test/mysql_test/include/check_schema_sync.inc +++ /dev/null @@ -1,22 +0,0 @@ - -connect (ob_sys_check_schema,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); -connection ob_sys_check_schema; - -let $i = 10; -while($i > 0) -{ - sleep 1; - let $cnt = query_get_value(select count(*) as cnt from oceanbase.__all_virtual_server_schema_info as a join oceanbase.__all_virtual_server_schema_info as b on a.tenant_id = b.tenant_id where a.refreshed_schema_version != b.refreshed_schema_version, cnt, 1); - dec $i; - if ($cnt == 0) - { - let $i = -4; - } -} - -if ($i != -4) -{ - --echo check schema sync timeout - eval select * from oceanbase.__all_virtual_server_schema_info; -} -disconnect ob_sys_check_schema; diff --git a/test/mysql_test/include/check_stat.inc b/test/mysql_test/include/check_stat.inc deleted file mode 100644 index b169b34bb..000000000 --- a/test/mysql_test/include/check_stat.inc +++ /dev/null @@ -1,25 +0,0 @@ ---disable_query_log ---disable_result_log -connection default; -let $tenant_id = query_get_value(select effective_tenant_id() as ID from dual, ID, 1); -connect (obsys_ydm,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); -connection obsys_ydm; -let $__i__= 100; -while($__i__ > 0) -{ - sleep 1; - dec $__i__; - -## 检查有没有分区的列级统计信息还没有汇报上来 - let $__num__ = query_get_value(select count(*) as num from oceanbase.__all_virtual_meta_table a where a.tenant_id = $tenant_id and not exists (select 1 from oceanbase.__all_virtual_column_statistic b where a.table_id = b.table_id and a.partition_id = b.partition_id and b.tenant_id = $tenant_id), num, 1); - if($__num__ == 0) - { - let $__i__ = -5; - } -} - -connection default; -disconnect obsys_ydm; - ---enable_query_log ---enable_result_log diff --git a/test/mysql_test/include/check_tenant_sync.inc b/test/mysql_test/include/check_tenant_sync.inc deleted file mode 100644 index 61f543ae8..000000000 --- a/test/mysql_test/include/check_tenant_sync.inc +++ /dev/null @@ -1,24 +0,0 @@ - -let $server_cnt = query_get_value(select count(*) as cnt from oceanbase.__all_server, cnt, 1); - -let $schema_version = query_get_value(select max(schema_version) as max_schema_version from oceanbase.__all_tenant_history, max_schema_version, 1); - -let $sync_cnt = 0; - -let $i = 10; -while($i > 0) -{ - sleep 1; - dec $i; - let $sync_cnt = query_get_value(select count(*) as cnt from oceanbase.__all_virtual_server_schema_info where refreshed_schema_version >= $schema_version and tenant_id = 1, cnt, 1); - if ($sync_cnt == $server_cnt) - { - let $i = -4; - } -} - -if ($i != -4) -{ - --echo check tenant sync timeout, sync_cnt:$sync_cnt, server_cnt:$server_cnt - eval select * from oceanbase.__all_virtual_server_schema_info where refreshed_schema_version >= $schema_version and tenant_id = 1; -} diff --git a/test/mysql_test/include/drop_and_flashback_table.inc b/test/mysql_test/include/drop_and_flashback_table.inc deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/mysql_test/include/get_tenant_server.inc b/test/mysql_test/include/get_tenant_server.inc deleted file mode 100644 index 3a42bb8d0..000000000 --- a/test/mysql_test/include/get_tenant_server.inc +++ /dev/null @@ -1,32 +0,0 @@ -## 功能: 获取指定租户的ip&port -# 1.最好使用前sleep下,否则tenant_schema有可能还未刷到server上导致连接不上 -# 2.如果分布于多个server,取unit_id最小的 -## 用法: -# 1.设置待连接的tenant_name -# 2.source本文件 -# 3.connect -## 模板: -# sleep 3; -# let $__tenant_name__ = 'tt1'; -# --source mysql_test/include/get_tenant_server.inc -# connect (conn1,$TE_SERVER_IP,root@tt1,,*NO-ONE*,$TE_SERVER_PORT); - - ---disable_query_log ---disable_result_log -connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); -connection obsys; -let $__tenant_id__ = `select tenant_id from oceanbase.__all_tenant where tenant_name = $__tenant_name__ limit 1`; -let $__resource_pool_id__ = `select resource_pool_id from oceanbase.__all_resource_pool where tenant_id = $__tenant_id__ limit 1`; - -let $__svr_ip__ = `select svr_ip from oceanbase.__all_unit where resource_pool_id = $__resource_pool_id__ limit 1`; -let $__svr_port__ = `select svr_port from oceanbase.__all_unit where resource_pool_id = $__resource_pool_id__ limit 1`; - -let $__inner_port__ = `select inner_port from oceanbase.__all_server where svr_ip = '$__svr_ip__' and svr_port = $__svr_port__ limit 1`; - -let $TE_SERVER_IP = $__svr_ip__; -let $TE_SERVER_PORT = $__inner_port__; -disconnect obsys; -connection default; ---enable_query_log ---enable_result_log diff --git a/test/mysql_test/include/index_quick_major.inc b/test/mysql_test/include/index_quick_major.inc deleted file mode 100644 index a500dac98..000000000 --- a/test/mysql_test/include/index_quick_major.inc +++ /dev/null @@ -1,6 +0,0 @@ -connect (obsys_idm,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); -connection obsys_idm; -set ob_enable_index_direct_select=1; -alter system set merger_check_interval = '10s'; -disconnect obsys_idm; -connection default; diff --git a/test/mysql_test/include/majorfreeze.inc b/test/mysql_test/include/majorfreeze.inc deleted file mode 100644 index c4c29f77d..000000000 --- a/test/mysql_test/include/majorfreeze.inc +++ /dev/null @@ -1,5 +0,0 @@ -connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); -connection obsys; -alter system major freeze; -disconnect obsys; -connection default; diff --git a/test/mysql_test/include/not_embedded.inc b/test/mysql_test/include/not_embedded.inc deleted file mode 100644 index 7bc9b9551..000000000 --- a/test/mysql_test/include/not_embedded.inc +++ /dev/null @@ -1,5 +0,0 @@ --- require mysql_test/r/not_embedded.require -disable_query_log; -select version() like '%embedded%' as 'have_embedded'; -enable_query_log; - diff --git a/test/mysql_test/include/proxy_route_to_c.inc b/test/mysql_test/include/proxy_route_to_c.inc deleted file mode 100644 index 3db3ac156..000000000 --- a/test/mysql_test/include/proxy_route_to_c.inc +++ /dev/null @@ -1,9 +0,0 @@ - -connection default; - ---disable_query_log ---disable_result_log -select * from proxy_mock_table_for_pc; ---enable_query_log ---enable_result_log - diff --git a/test/mysql_test/include/show_create_table_old_version.inc b/test/mysql_test/include/show_create_table_old_version.inc deleted file mode 100644 index e1782cd5e..000000000 --- a/test/mysql_test/include/show_create_table_old_version.inc +++ /dev/null @@ -1 +0,0 @@ ---replace_regex /REPLICA_NUM = [0-9]*/REPLICA_NUM = 1/g /ROW_FORMAT = (DYNAMIC|COMPRESSED|COMPACT|REDUNDANT)[ ]*//g /(NOCOMPRESS|COMPRESS) (FOR)*[ ]*(BASIC|OLTP|QUERY|ARCHIVE)*[ ]*//g /zstd_1\.3\.8/lz4_1.0/g /OBFK_[0-9]*/OBFK_1234/g /OBPK_[0-9]*/OBPK_1234/g /OBUNIQUE_[0-9]*/OBUNIQUE_1234/g /RECYCLE_\$_[0-9]*_[0-9]*_OBCHECK_[0-9]*/RECYCLE_$_1_2_OBCHECK_3/g /PCTFREE = [0-9]*/PCTFREE = 10/g diff --git a/test/mysql_test/include/show_create_table_old_version_replica2.inc b/test/mysql_test/include/show_create_table_old_version_replica2.inc deleted file mode 100644 index 5e08e5a5e..000000000 --- a/test/mysql_test/include/show_create_table_old_version_replica2.inc +++ /dev/null @@ -1 +0,0 @@ ---replace_regex /REPLICA_NUM = [0-9]*/REPLICA_NUM = NUM/g /ROW_FORMAT = (DYNAMIC|COMPRESSED|COMPACT|REDUNDANT)[ ]*//g /(NOCOMPRESS|COMPRESS) (FOR)*[ ]*(BASIC|OLTP|QUERY|ARCHIVE)*[ ]*//g /zstd_1\.3\.8/lz4_1.0/g /OBFK_[0-9]*/OBFK_1234/g /OBIDX_[0-9]*/OBIDX_1234/g /OBCHECK_[0-9]*/OBCHECK_1234/g /OBPK_[0-9]*/OBPK_1234/g /OBUNIQUE_[0-9]*/OBUNIQUE_1234/g /zone1;zone2/zone1/g /BLOCK_SIZE = [0-9]*/BLOCK_SIZE = SIZE/g /TABLET_SIZE = [0-9]*/TABLET_SIZE = SIZE/g /ZONE_LIST = \(.*\)/ZONE_LIST = (test)/g /PRIMARY_ZONE = .*/PRIMARY_ZONE = /g /PCTFREE = [0-9]*/PCTFREE = 10/g diff --git a/test/mysql_test/include/wait_daily_merge.inc b/test/mysql_test/include/wait_daily_merge.inc deleted file mode 100644 index 3eb0b111d..000000000 --- a/test/mysql_test/include/wait_daily_merge.inc +++ /dev/null @@ -1,45 +0,0 @@ -#--disable_query_log -#--disable_result_log -connect (obsys_ydm,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); -connection obsys_ydm; -let $__i__= 600; -while($__i__ > 0) -{ - sleep 1; - dec $__i__; - let $__forzen_version__ = query_get_value(select value from oceanbase.__all_zone where name = 'frozen_version', value, 1); - let $__merged_version__ = query_get_value(select value from oceanbase.__all_zone where name = 'last_merged_version' and zone = '', value, 1); - if($__forzen_version__ == $__merged_version__) - { - let $__i__ = -5; - } -} - -###判断集群状态,先注释掉 -#let $__j__= 180; -#while($__j__ > 0) -#{ -# sleep 1; -# dec $__j__; -# let $__global_stat__ = query_get_value(select comment from oceanbase.__all_cluster_stat where name='global_stat',comment, 1); -# if($__global_stat__ == NORMAL) -# { -# let $__j__ = -5; -# } -#} - -#if($__j__ != -5) -#{ -# --echo major freeze failed -#} - -if($__i__ != -5) -{ - --echo major freeze failed -} -sleep 2; - -disconnect obsys_ydm; -connection default; ---enable_query_log ---enable_result_log diff --git a/test/mysql_test/r/not_embedded.require b/test/mysql_test/r/not_embedded.require deleted file mode 100644 index b2ea98bcd..000000000 --- a/test/mysql_test/r/not_embedded.require +++ /dev/null @@ -1,2 +0,0 @@ -have_embedded -0 diff --git a/test/mysql_test/test_suite/executor/include/cleanup.inc b/test/mysql_test/test_suite/executor/include/cleanup.inc deleted file mode 100644 index c58cf1a18..000000000 --- a/test/mysql_test/test_suite/executor/include/cleanup.inc +++ /dev/null @@ -1,37 +0,0 @@ - ---disable_warnings -drop table if exists t_h3_01_20; -drop table if exists t_h3_05_24; -drop table if exists t_h3_09_28; -drop table if exists t_h5_01_20; -drop table if exists t_h5_05_24; -drop table if exists t_h5_09_28; -drop table if exists t_r4_01_20; -drop table if exists t_r4_05_24; -drop table if exists t_r4_09_28; -drop table if exists t_r5_01_20; -drop table if exists t_r5_05_24; -drop table if exists t_r5_09_28; -drop table if exists t_h3_r4_01_20; -drop table if exists t_h3_r5_09_28; -drop table if exists t_h5_r4_01_20; -drop table if exists t_h5_r5_09_28; - -drop table if exists t_refered; -drop table if exists t_h5_int; -drop table if exists t_r4_int; -drop table if exists t_r4_date; -drop table if exists t_r4_datetime; -drop table if exists t_r4_timestamp; -drop table if exists t_h5_r4_int_int; -drop table if exists t_h5_r4_int_int_datetime; - - -drop table if exists t_r4_h2_date_int; -drop table if exists t_r4_h3_date_int; -drop table if exists t_r4_h3_date_bigint; -drop table if exists tt; - -drop table if exists t_many_range_part; - ---enable_warnings diff --git a/test/mysql_test/test_suite/executor/include/load_data.inc b/test/mysql_test/test_suite/executor/include/load_data.inc deleted file mode 100644 index 930424cee..000000000 --- a/test/mysql_test/test_suite/executor/include/load_data.inc +++ /dev/null @@ -1,355 +0,0 @@ - ---source mysql_test/include/check_ob_or_mysql.inc - -create table t_h3_01_20(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; -create table t_h3_05_24(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; -create table t_h3_09_28(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; -create table t_h5_01_20(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; -create table t_h5_05_24(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; -create table t_h5_09_28(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; -create table t_r4_01_20(a int, b int, c datetime, primary key (a,b)) -partition by range columns(a) -( - partition p6 values less than (6), - partition p11 values less than (11), - partition p16 values less than (16), - partition pm values less than (MAXVALUE) -); -create table t_r4_05_24(a int, b int, c datetime, primary key (a)) -partition by range columns(a) -( - partition p10 values less than (10), - partition p15 values less than (15), - partition p20 values less than (20), - partition pm values less than (MAXVALUE) -); -create table t_r4_09_28(a int, b int, c datetime, primary key (a)) -partition by range columns(a) -( - partition p14 values less than (14), - partition p19 values less than (19), - partition p24 values less than (24), - partition pm values less than (MAXVALUE) -); -create table t_r5_01_20(a int, b int, c datetime, primary key (a)) -partition by range columns(a) -( - partition p5 values less than (5), - partition p9 values less than (9), - partition p13 values less than (13), - partition p17 values less than (17), - partition pm values less than (MAXVALUE) -); -create table t_r5_05_24(a int, b int, c datetime, primary key (a)) -partition by range columns(a) -( - partition p9 values less than (9), - partition p13 values less than (13), - partition p17 values less than (17), - partition p21 values less than (21), - partition pm values less than (MAXVALUE) -); -create table t_r5_09_28(a int, b int, c datetime, primary key (a,b)) -partition by range columns(a) -( - partition p13 values less than (13), - partition p17 values less than (17), - partition p21 values less than (21), - partition p25 values less than (25), - partition pm values less than (MAXVALUE) -); -#--disable_query_log -if ($cluster_is_ob == 1) { - create table t_h3_r4_01_20(a int, b int, c int, d int, e datetime, primary key (a, b, c)) - partition by hash(a) - subpartition by range(b) - subpartition template ( - subpartition p6 values less than (6), - subpartition p11 values less than (11), - subpartition p16 values less than (16), - subpartition pm values less than (MAXVALUE) - ) - partitions 3; - create table t_h3_r5_09_28(a int, b int, c int, d int, e datetime, primary key (a, b)) - partition by hash(a) - subpartition by range(b) - subpartition template ( - subpartition p13 values less than (13), - subpartition p17 values less than (17), - subpartition p21 values less than (21), - subpartition p25 values less than (25), - subpartition pm values less than (MAXVALUE) - ) - partitions 3; - create table t_h5_r4_01_20(a int, b int, c int, d int, e datetime, primary key (a, b)) - partition by hash(a) - subpartition by range(b) - subpartition template ( - subpartition p6 values less than (6), - subpartition p11 values less than (11), - subpartition p16 values less than (16), - subpartition pm values less than (MAXVALUE) - ) - partitions 5; - create table t_h5_r5_09_28(a int, b int, c int, d int, e datetime, primary key (a, b, c)) - partition by hash(a) - subpartition by range(b) - subpartition template ( - subpartition p13 values less than (13), - subpartition p17 values less than (17), - subpartition p21 values less than (21), - subpartition p25 values less than (25), - subpartition pm values less than (MAXVALUE) - ) - partitions 5; -} -if ($cluster_is_mysql == 1) { - create table t_h3_r4_01_20(a int, b int, c int, d int, e datetime, primary key (a, b, c)); - create table t_h3_r5_09_28(a int, b int, c int, d int, e datetime, primary key (a, b)); - create table t_h5_r4_01_20(a int, b int, c int, d int, e datetime, primary key (a, b)); - create table t_h5_r5_09_28(a int, b int, c int, d int, e datetime, primary key (a, b, c)); -} - -create table t_refered(a int, aa bigint, b int unsigned, bb bigint unsigned, c datetime, d date, e timestamp, primary key (a)) partition by hash(a) partitions 3; - -create table t_h5_int(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; - -create table t_r4_int(a int, b int, c date, primary key (a,b)) -partition by range columns(a) -( - partition p6 values less than (6), - partition p11 values less than (11), - partition p16 values less than (16), - partition pm values less than (MAXVALUE) -); - -create table t_r4_date(a int, b int, c date, primary key (b,c)) -partition by range columns(c) -( - partition p11 values less than ("20161101"), - partition p12 values less than ("20161201"), - partition p171 values less than ("20170101"), - partition pm values less than (MAXVALUE) -); - -create table t_r4_datetime(a int, b int, c datetime, primary key (b,c)) -partition by range columns(c) -( - partition p11 values less than ("20161101"), - partition p12 values less than ("20161201"), - partition p171 values less than ("20170101"), - partition pm values less than (MAXVALUE) -); - -create table t_r4_timestamp(a int, b int, c timestamp, primary key (a)) -partition by range columns(a) -( - partition p11 values less than (10), - partition p12 values less than (100), - partition p171 values less than (1000), - partition pm values less than (MAXVALUE) -); - -create table t_h5_r4_int_int(a int, b int, c datetime, primary key (a, b)) -partition by hash(a) -subpartition by range columns(b) -subpartition template ( - subpartition p6 values less than (6), - subpartition p11 values less than (11), - subpartition p16 values less than (16), - subpartition pm values less than (MAXVALUE) -); - -create table t_r4_h3_date_int(a date, b int, c int, primary key (a, b)) -partition by range columns(a) subpartition by hash(b) subpartitions 3 -( - partition p11 values less than ("20161101"), - partition p12 values less than ("20161201"), - partition p171 values less than ("20170101"), - partition pm values less than (MAXVALUE) -); - -create table t_r4_h2_date_int(a date, b int, c int, primary key (a, b)) -partition by range columns(a) subpartition by hash(b) subpartitions 2 -( - partition p11 values less than ("20161101"), - partition p12 values less than ("20161201"), - partition p171 values less than ("20170101"), - partition pm values less than (MAXVALUE) -); - -create table t_r4_h3_date_bigint(a date, b bigint, c int, primary key (a, b)) -partition by range columns(a) subpartition by hash(b) subpartitions 3 -( - partition p11 values less than ("20161101"), - partition p12 values less than ("20161201"), - partition p171 values less than ("20170101"), - partition pm values less than (MAXVALUE) -); - - -create table t_h5_r4_int_int_datetime(a int, b int, c datetime, primary key (a, b, c)) -partition by hash(a) -subpartition by range columns(b, c) -subpartition template ( - subpartition p6 values less than (6, "20170510"), - subpartition p11 values less than (11, "20170510"), - subpartition p16 values less than (16, "20170510"), - subpartition pm values less than (MAXVALUE, MAXVALUE) -); - -create table tt (a int, b int, c date, primary key(a, b)); - - - -#--enable_query_log - -insert into t_h3_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), - ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); -insert into t_h3_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_h3_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), - (25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); -insert into t_h5_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), - ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); -insert into t_h5_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_h5_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), - (25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); -insert into t_r4_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), - ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); -insert into t_r4_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_r4_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), - (25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); -insert into t_r5_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), - ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); -insert into t_r5_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_r5_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), - (25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); -insert into t_h3_r4_01_20 values ( 1, 1, 1, 1, 20161101), ( 2, 2, 2, 2, 20161102), ( 3, 3, 3, 3, 20161103), ( 4, 4, 4, 4, 20161104), - ( 5, 5, 5, 5, 20161105), ( 6, 6, 6, 6, 20161106), ( 7, 7, 7, 7, 20161107), ( 8, 8, 8, 8, 20161108), - ( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), - (13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), - (17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120); -insert into t_h3_r5_09_28 values ( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), - (13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), - (17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120), - (21, 21, 21, 21, 20161121), (22, 22, 22, 22, 20161122), (23, 23, 23, 23, 20161123), (24, 24, 24, 24, 20161124), - (25, 25, 25, 25, 20161125), (26, 26, 26, 26, 20161126), (27, 27, 27, 27, 20161127), (28, 28, 28, 28, 20161128); -insert into t_h5_r4_01_20 values ( 1, 1, 1, 1, 20161101), ( 2, 2, 2, 2, 20161102), ( 3, 3, 3, 3, 20161103), ( 4, 4, 4, 4, 20161104), - ( 5, 5, 5, 5, 20161105), ( 6, 6, 6, 6, 20161106), ( 7, 7, 7, 7, 20161107), ( 8, 8, 8, 8, 20161108), - ( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), - (13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), - (17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120); -insert into t_h5_r5_09_28 values ( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), - (13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), - (17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120), - (21, 21, 21, 21, 20161121), (22, 22, 22, 22, 20161122), (23, 23, 23, 23, 20161123), (24, 24, 24, 24, 20161124), - (25, 25, 25, 25, 20161125), (26, 26, 26, 26, 20161126), (27, 27, 27, 27, 20161127), (28, 28, 28, 28, 20161128); - -insert into t_refered values ( 1, 1, 1, 1, 20161101, 20161101, 20161101), ( 2, 2, 2, 2, 20161101, 20161102, 20161102), ( 3, 3, 3, 3, 20161103, 20161101, 20161103), ( 4, 4, 4, 4, 20161104, 20161101, 20161104); -insert into t_h5_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), ( 5, 5, 20161105); -insert into t_r4_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), ( 5, 5, 20161105); -insert into t_r4_date values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into t_r4_datetime values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into t_r4_timestamp values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into t_h5_r4_int_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into t_h5_r4_int_int_datetime values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); - -insert into tt values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), - (5, 6, 20161105), ( 6, 7, 20161106), ( 7, 8, 20161107), ( 8, 9, 20161108), - (9, 10, 20161109), (10, 11, 20161110), (11, 12, 20161111), (12, 13, 20161112), - (13, 14, 20161113), (14, 15, 20161114), (15, 16, 20161115), (16, 17, 20161116), - (17, 18, 20161117), (18, 19, 20161118), (19, 20, 20161119), (20, 21, 20161120), - (21, 22, 20161121), (22, 23, 20161122), (23, 24, 20161123), (24, 25, 20161124); - -insert into t_r4_h2_date_int(b, c, a) values (5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); - -insert into t_r4_h3_date_int(b, c, a) values ( 7, 7, 20161107), ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123); - -insert into t_r4_h3_date_bigint(b, c, a) values ( 8, 8, 20161108), - ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), - (13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), - (17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), - (21, 21, 20161121), (22, 22, 20161122); - -create table t_many_range_part(a int, b int, primary key (a)) -partition by range columns(a) -( - partition p05 values less than (5), - partition p10 values less than (10), - partition p15 values less than (15), - partition p20 values less than (20), - partition p25 values less than (25), - partition p30 values less than (30), - partition p35 values less than (35), - partition p40 values less than (40), - partition p45 values less than (45), - partition p50 values less than (50), - partition p55 values less than (55), - partition p60 values less than (60), - partition p65 values less than (65), - partition p70 values less than (70), - partition p75 values less than (75), - partition p80 values less than (80), - partition p85 values less than (85), - partition pm values less than (MAXVALUE) -); -insert into t_many_range_part values (01, 01), (02, 02), (03, 03), (04, 04), (05, 05), (06, 06), (07, 07), (08, 08), (09, 09), (10, 10), - (11, 11), (12, 12), (13, 13), (14, 14), (15, 15), (16, 16), (17, 17), (18, 18), (19, 19), (20, 20), - (21, 21), (22, 22), (23, 23), (24, 24), (25, 25), (26, 26), (27, 27), (28, 28), (29, 29), (30, 30), - (31, 31), (32, 32), (33, 33), (34, 34), (35, 35), (36, 36), (37, 37), (38, 38), (39, 39), (40, 40), - (41, 41), (42, 42), (43, 43), (44, 44), (45, 45), (46, 46), (47, 47), (48, 48), (49, 49), (50, 50); - - - diff --git a/test/mysql_test/test_suite/executor/r/mysql/full_join.result b/test/mysql_test/test_suite/executor/r/mysql/full_join.result deleted file mode 100644 index 5287be5bc..000000000 --- a/test/mysql_test/test_suite/executor/r/mysql/full_join.result +++ /dev/null @@ -1,1203 +0,0 @@ -drop table if exists t_h3_01_20; -drop table if exists t_h3_05_24; -drop table if exists t_h3_09_28; -drop table if exists t_h5_01_20; -drop table if exists t_h5_05_24; -drop table if exists t_h5_09_28; -drop table if exists t_r4_01_20; -drop table if exists t_r4_05_24; -drop table if exists t_r4_09_28; -drop table if exists t_r5_01_20; -drop table if exists t_r5_05_24; -drop table if exists t_r5_09_28; -drop table if exists t_h3_r4_01_20; -drop table if exists t_h3_r5_09_28; -drop table if exists t_h5_r4_01_20; -drop table if exists t_h5_r5_09_28; -drop table if exists t_refered; -drop table if exists t_h5_int; -drop table if exists t_r4_int; -drop table if exists t_r4_date; -drop table if exists t_r4_datetime; -drop table if exists t_r4_timestamp; -drop table if exists t_h5_r4_int_int; -drop table if exists t_h5_r4_int_int_datetime; -drop table if exists t_r4_h2_date_int; -drop table if exists t_r4_h3_date_int; -drop table if exists t_r4_h3_date_bigint; -drop table if exists tt; -drop table if exists t_many_range_part; -create table t_h3_01_20(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; -create table t_h3_05_24(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; -create table t_h3_09_28(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; -create table t_h5_01_20(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; -create table t_h5_05_24(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; -create table t_h5_09_28(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; -create table t_r4_01_20(a int, b int, c datetime, primary key (a,b)) -partition by range columns(a) -( -partition p6 values less than (6), -partition p11 values less than (11), -partition p16 values less than (16), -partition pm values less than (MAXVALUE) -); -create table t_r4_05_24(a int, b int, c datetime, primary key (a)) -partition by range columns(a) -( -partition p10 values less than (10), -partition p15 values less than (15), -partition p20 values less than (20), -partition pm values less than (MAXVALUE) -); -create table t_r4_09_28(a int, b int, c datetime, primary key (a)) -partition by range columns(a) -( -partition p14 values less than (14), -partition p19 values less than (19), -partition p24 values less than (24), -partition pm values less than (MAXVALUE) -); -create table t_r5_01_20(a int, b int, c datetime, primary key (a)) -partition by range columns(a) -( -partition p5 values less than (5), -partition p9 values less than (9), -partition p13 values less than (13), -partition p17 values less than (17), -partition pm values less than (MAXVALUE) -); -create table t_r5_05_24(a int, b int, c datetime, primary key (a)) -partition by range columns(a) -( -partition p9 values less than (9), -partition p13 values less than (13), -partition p17 values less than (17), -partition p21 values less than (21), -partition pm values less than (MAXVALUE) -); -create table t_r5_09_28(a int, b int, c datetime, primary key (a,b)) -partition by range columns(a) -( -partition p13 values less than (13), -partition p17 values less than (17), -partition p21 values less than (21), -partition p25 values less than (25), -partition pm values less than (MAXVALUE) -); -create table t_h3_r4_01_20(a int, b int, c int, d int, e datetime, primary key (a, b, c)) -partition by hash(a) -subpartition by range(b) -subpartition template ( -subpartition p6 values less than (6), -subpartition p11 values less than (11), -subpartition p16 values less than (16), -subpartition pm values less than (MAXVALUE) -) -partitions 3; -create table t_h3_r5_09_28(a int, b int, c int, d int, e datetime, primary key (a, b)) -partition by hash(a) -subpartition by range(b) -subpartition template ( -subpartition p13 values less than (13), -subpartition p17 values less than (17), -subpartition p21 values less than (21), -subpartition p25 values less than (25), -subpartition pm values less than (MAXVALUE) -) -partitions 3; -create table t_h5_r4_01_20(a int, b int, c int, d int, e datetime, primary key (a, b)) -partition by hash(a) -subpartition by range(b) -subpartition template ( -subpartition p6 values less than (6), -subpartition p11 values less than (11), -subpartition p16 values less than (16), -subpartition pm values less than (MAXVALUE) -) -partitions 5; -create table t_h5_r5_09_28(a int, b int, c int, d int, e datetime, primary key (a, b, c)) -partition by hash(a) -subpartition by range(b) -subpartition template ( -subpartition p13 values less than (13), -subpartition p17 values less than (17), -subpartition p21 values less than (21), -subpartition p25 values less than (25), -subpartition pm values less than (MAXVALUE) -) -partitions 5; -create table t_refered(a int, aa bigint, b int unsigned, bb bigint unsigned, c datetime, d date, e timestamp, primary key (a)) partition by hash(a) partitions 3; -create table t_h5_int(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; -create table t_r4_int(a int, b int, c date, primary key (a,b)) -partition by range columns(a) -( -partition p6 values less than (6), -partition p11 values less than (11), -partition p16 values less than (16), -partition pm values less than (MAXVALUE) -); -create table t_r4_date(a int, b int, c date, primary key (b,c)) -partition by range columns(c) -( -partition p11 values less than ("20161101"), -partition p12 values less than ("20161201"), -partition p171 values less than ("20170101"), -partition pm values less than (MAXVALUE) -); -create table t_r4_datetime(a int, b int, c datetime, primary key (b,c)) -partition by range columns(c) -( -partition p11 values less than ("20161101"), -partition p12 values less than ("20161201"), -partition p171 values less than ("20170101"), -partition pm values less than (MAXVALUE) -); -create table t_r4_timestamp(a int, b int, c timestamp, primary key (a)) -partition by range columns(a) -( -partition p11 values less than (10), -partition p12 values less than (100), -partition p171 values less than (1000), -partition pm values less than (MAXVALUE) -); -create table t_h5_r4_int_int(a int, b int, c datetime, primary key (a, b)) -partition by hash(a) -subpartition by range columns(b) -subpartition template ( -subpartition p6 values less than (6), -subpartition p11 values less than (11), -subpartition p16 values less than (16), -subpartition pm values less than (MAXVALUE) -); -create table t_r4_h3_date_int(a date, b int, c int, primary key (a, b)) -partition by range columns(a) subpartition by hash(b) subpartitions 3 -( -partition p11 values less than ("20161101"), -partition p12 values less than ("20161201"), -partition p171 values less than ("20170101"), -partition pm values less than (MAXVALUE) -); -create table t_r4_h2_date_int(a date, b int, c int, primary key (a, b)) -partition by range columns(a) subpartition by hash(b) subpartitions 2 -( -partition p11 values less than ("20161101"), -partition p12 values less than ("20161201"), -partition p171 values less than ("20170101"), -partition pm values less than (MAXVALUE) -); -create table t_r4_h3_date_bigint(a date, b bigint, c int, primary key (a, b)) -partition by range columns(a) subpartition by hash(b) subpartitions 3 -( -partition p11 values less than ("20161101"), -partition p12 values less than ("20161201"), -partition p171 values less than ("20170101"), -partition pm values less than (MAXVALUE) -); -create table t_h5_r4_int_int_datetime(a int, b int, c datetime, primary key (a, b, c)) -partition by hash(a) -subpartition by range columns(b, c) -subpartition template ( -subpartition p6 values less than (6, "20170510"), -subpartition p11 values less than (11, "20170510"), -subpartition p16 values less than (16, "20170510"), -subpartition pm values less than (MAXVALUE, MAXVALUE) -); -create table tt (a int, b int, c date, primary key(a, b)); -insert into t_h3_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), -( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); -insert into t_h3_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_h3_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), -(25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); -insert into t_h5_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), -( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); -insert into t_h5_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_h5_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), -(25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); -insert into t_r4_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), -( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); -insert into t_r4_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_r4_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), -(25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); -insert into t_r5_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), -( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); -insert into t_r5_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_r5_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), -(25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); -insert into t_h3_r4_01_20 values ( 1, 1, 1, 1, 20161101), ( 2, 2, 2, 2, 20161102), ( 3, 3, 3, 3, 20161103), ( 4, 4, 4, 4, 20161104), -( 5, 5, 5, 5, 20161105), ( 6, 6, 6, 6, 20161106), ( 7, 7, 7, 7, 20161107), ( 8, 8, 8, 8, 20161108), -( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), -(13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), -(17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120); -insert into t_h3_r5_09_28 values ( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), -(13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), -(17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120), -(21, 21, 21, 21, 20161121), (22, 22, 22, 22, 20161122), (23, 23, 23, 23, 20161123), (24, 24, 24, 24, 20161124), -(25, 25, 25, 25, 20161125), (26, 26, 26, 26, 20161126), (27, 27, 27, 27, 20161127), (28, 28, 28, 28, 20161128); -insert into t_h5_r4_01_20 values ( 1, 1, 1, 1, 20161101), ( 2, 2, 2, 2, 20161102), ( 3, 3, 3, 3, 20161103), ( 4, 4, 4, 4, 20161104), -( 5, 5, 5, 5, 20161105), ( 6, 6, 6, 6, 20161106), ( 7, 7, 7, 7, 20161107), ( 8, 8, 8, 8, 20161108), -( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), -(13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), -(17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120); -insert into t_h5_r5_09_28 values ( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), -(13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), -(17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120), -(21, 21, 21, 21, 20161121), (22, 22, 22, 22, 20161122), (23, 23, 23, 23, 20161123), (24, 24, 24, 24, 20161124), -(25, 25, 25, 25, 20161125), (26, 26, 26, 26, 20161126), (27, 27, 27, 27, 20161127), (28, 28, 28, 28, 20161128); -insert into t_refered values ( 1, 1, 1, 1, 20161101, 20161101, 20161101), ( 2, 2, 2, 2, 20161101, 20161102, 20161102), ( 3, 3, 3, 3, 20161103, 20161101, 20161103), ( 4, 4, 4, 4, 20161104, 20161101, 20161104); -insert into t_h5_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), ( 5, 5, 20161105); -insert into t_r4_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), ( 5, 5, 20161105); -insert into t_r4_date values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into t_r4_datetime values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into t_r4_timestamp values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into t_h5_r4_int_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into t_h5_r4_int_int_datetime values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); -insert into tt values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), -(5, 6, 20161105), ( 6, 7, 20161106), ( 7, 8, 20161107), ( 8, 9, 20161108), -(9, 10, 20161109), (10, 11, 20161110), (11, 12, 20161111), (12, 13, 20161112), -(13, 14, 20161113), (14, 15, 20161114), (15, 16, 20161115), (16, 17, 20161116), -(17, 18, 20161117), (18, 19, 20161118), (19, 20, 20161119), (20, 21, 20161120), -(21, 22, 20161121), (22, 23, 20161122), (23, 24, 20161123), (24, 25, 20161124); -insert into t_r4_h2_date_int(b, c, a) values (5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); -insert into t_r4_h3_date_int(b, c, a) values ( 7, 7, 20161107), ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123); -insert into t_r4_h3_date_bigint(b, c, a) values ( 8, 8, 20161108), -( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), -(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), -(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), -(21, 21, 20161121), (22, 22, 20161122); -create table t_many_range_part(a int, b int, primary key (a)) -partition by range columns(a) -( -partition p05 values less than (5), -partition p10 values less than (10), -partition p15 values less than (15), -partition p20 values less than (20), -partition p25 values less than (25), -partition p30 values less than (30), -partition p35 values less than (35), -partition p40 values less than (40), -partition p45 values less than (45), -partition p50 values less than (50), -partition p55 values less than (55), -partition p60 values less than (60), -partition p65 values less than (65), -partition p70 values less than (70), -partition p75 values less than (75), -partition p80 values less than (80), -partition p85 values less than (85), -partition pm values less than (MAXVALUE) -); -insert into t_many_range_part values (01, 01), (02, 02), (03, 03), (04, 04), (05, 05), (06, 06), (07, 07), (08, 08), (09, 09), (10, 10), -(11, 11), (12, 12), (13, 13), (14, 14), (15, 15), (16, 16), (17, 17), (18, 18), (19, 19), (20, 20), -(21, 21), (22, 22), (23, 23), (24, 24), (25, 25), (26, 26), (27, 27), (28, 28), (29, 29), (30, 30), -(31, 31), (32, 32), (33, 33), (34, 34), (35, 35), (36, 36), (37, 37), (38, 38), (39, 39), (40, 40), -(41, 41), (42, 42), (43, 43), (44, 44), (45, 45), (46, 46), (47, 47), (48, 48), (49, 49), (50, 50); -set @@ob_enable_transformation=0; -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -7 7 -8 8 -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; -a a -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -21 21 -22 22 -23 23 -24 24 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -7 7 -8 8 -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; -a a -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -21 21 -22 22 -23 23 -24 24 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -7 7 -8 8 -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; -a a -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -21 21 -22 22 -23 23 -24 24 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; -a a -NULL 21 -NULL 22 -NULL 23 -NULL 24 -NULL 25 -NULL 26 -NULL 27 -NULL 28 -1 NULL -2 NULL -3 NULL -4 NULL -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; -a a -5 NULL -6 NULL -7 NULL -8 NULL -9 9 -10 10 -11 11 -12 12 -13 13 -14 14 -15 15 -16 16 -17 17 -18 18 -19 19 -20 20 -drop table if exists t_h3_01_20; -drop table if exists t_h3_05_24; -drop table if exists t_h3_09_28; -drop table if exists t_h5_01_20; -drop table if exists t_h5_05_24; -drop table if exists t_h5_09_28; -drop table if exists t_r4_01_20; -drop table if exists t_r4_05_24; -drop table if exists t_r4_09_28; -drop table if exists t_r5_01_20; -drop table if exists t_r5_05_24; -drop table if exists t_r5_09_28; -drop table if exists t_h3_r4_01_20; -drop table if exists t_h3_r5_09_28; -drop table if exists t_h5_r4_01_20; -drop table if exists t_h5_r5_09_28; -drop table if exists t_refered; -drop table if exists t_h5_int; -drop table if exists t_r4_int; -drop table if exists t_r4_date; -drop table if exists t_r4_datetime; -drop table if exists t_r4_timestamp; -drop table if exists t_h5_r4_int_int; -drop table if exists t_h5_r4_int_int_datetime; -drop table if exists t_r4_h2_date_int; -drop table if exists t_r4_h3_date_int; -drop table if exists t_r4_h3_date_bigint; -drop table if exists tt; -drop table if exists t_many_range_part; diff --git a/test/mysql_test/test_suite/expr/r/mysql/expr_convert_tz.result b/test/mysql_test/test_suite/expr/r/mysql/expr_convert_tz.result deleted file mode 100644 index db5dfef96..000000000 --- a/test/mysql_test/test_suite/expr/r/mysql/expr_convert_tz.result +++ /dev/null @@ -1,361 +0,0 @@ -================ expression convert_tz ================ -SELECT CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00') | -+-----------------------------------------------------+ -| 2021-01-01 20:00:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00') | -+-----------------------------------------------------+ -| 2021-01-01 19:00:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30') | -+-----------------------------------------------------+ -| 2021-01-01 17:30:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10') | -+-----------------------------------------------------+ -| 2021-01-01 21:10:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00') | -+-----------------------------------------------------+ -| 2021-01-01 23:30:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00') | -+-----------------------------------------------------+ -| 2021-01-02 12:30:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00') | -+-----------------------------------------------------+ -| 2021-01-02 13:00:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00') | -+-----------------------------------------------------+ -| 2021-01-02 01:00:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00') | -+-----------------------------------------------------+ -| 2021-01-03 00:59:59 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12') | -+-----------------------------------------------------+ -| 2021-01-02 10:09:38 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11') | -+-----------------------------------------------------+ -| 2021-01-01 10:35:35 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00') | -+-----------------------------------------------------+ -| 2020-12-31 03:01:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00') | -+-----------------------------------------------------+ -| 2020-12-31 13:11:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00') | -+-----------------------------------------------------+ -| 2021-02-28 13:11:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00') | -+-----------------------------------------------------+ -| 2021-05-31 13:11:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00') | -+-----------------------------------------------------+ -| 2020-02-29 13:11:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00') | -+-----------------------------------------------------+ -| 2020-02-29 10:11:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00'); -+-----------------------------------------------------+ -| CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00') | -+-----------------------------------------------------+ -| 2021-01-01 15:11:00 | -+-----------------------------------------------------+ - - - -SELECT CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00'); -+-------------------------------------------------+ -| CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00') | -+-------------------------------------------------+ -| NULL | -+-------------------------------------------------+ - -SELECT CONVERT_TZ('2020-12-31 23:11:00','+11:00', null); -+--------------------------------------------------+ -| CONVERT_TZ('2020-12-31 23:11:00','+11:00', null) | -+--------------------------------------------------+ -| NULL | -+--------------------------------------------------+ - -SELECT CONVERT_TZ(null,'-13:00','+11:00'); -+------------------------------------+ -| CONVERT_TZ(null,'-13:00','+11:00') | -+------------------------------------+ -| NULL | -+------------------------------------+ - -SELECT CONVERT_TZ(null, null,'+11:00'); -+---------------------------------+ -| CONVERT_TZ(null, null,'+11:00') | -+---------------------------------+ -| NULL | -+---------------------------------+ - -SELECT CONVERT_TZ(null, null, null); -+------------------------------+ -| CONVERT_TZ(null, null, null) | -+------------------------------+ -| NULL | -+------------------------------+ - -SELECT CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo'); -+-----------------------------------------------------------------+ -| CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo') | -+-----------------------------------------------------------------+ -| 2021-01-01 14:11:00 | -+-----------------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin'); -+-----------------------------------------------------------------------+ -| CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin') | -+-----------------------------------------------------------------------+ -| 2021-01-01 15:41:00 | -+-----------------------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam'); -+-----------------------------------------------------------------------+ -| CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam') | -+-----------------------------------------------------------------------+ -| 2021-01-01 07:11:00 | -+-----------------------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida'); -+-----------------------------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida') | -+-----------------------------------------------------------------------+ -| 2021-01-01 00:11:00 | -+-----------------------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','Libya'); -+--------------------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','Libya') | -+--------------------------------------------------------------+ -| 2021-01-01 08:11:00 | -+--------------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','Libya'); -+-------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','MET','Libya') | -+-------------------------------------------------+ -| 2021-01-01 08:11:00 | -+-------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','MST'); -+-----------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','MET','MST') | -+-----------------------------------------------+ -| 2020-12-31 23:11:00 | -+-----------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','MST'); -+-----------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','PRC','MST') | -+-----------------------------------------------+ -| 2020-12-31 16:11:00 | -+-----------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC'); -+-----------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC') | -+-----------------------------------------------+ -| 2021-01-01 07:11:00 | -+-----------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC'); -+-----------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC') | -+-----------------------------------------------+ -| 2021-01-01 15:11:00 | -+-----------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC'); -+-----------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC') | -+-----------------------------------------------------+ -| 2021-01-01 15:11:00 | -+-----------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC'); -+-------------------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC') | -+-------------------------------------------------------------+ -| 2021-01-02 00:41:00 | -+-------------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC'); -+-------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC') | -+-------------------------------------------------+ -| 2021-03-01 01:11:00 | -+-------------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore'); -+-------------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore') | -+-------------------------------------------------------+ -| 2021-03-01 01:11:00 | -+-------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC'); -+-------------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC') | -+-------------------------------------------------------+ -| 2021-03-01 06:11:00 | -+-------------------------------------------------------+ - - - -SELECT CONVERT_TZ('2021-02-28 17:11:00', null,'ROC'); -+-----------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00', null,'ROC') | -+-----------------------------------------------+ -| NULL | -+-----------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null); -+-------------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null) | -+-------------------------------------------------------+ -| NULL | -+-------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00', null, null); -+-----------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00', null, null) | -+-----------------------------------------------+ -| NULL | -+-----------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC'); -+---------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC') | -+---------------------------------------------------+ -| 2021-03-01 01:11:00 | -+---------------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan'); -+-----------------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan') | -+-----------------------------------------------------------+ -| 2021-02-28 12:11:00 | -+-----------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00'); -+---------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00') | -+---------------------------------------------------+ -| 2021-02-28 09:11:00 | -+---------------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', '+00:00'); -+-----------------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', '+00:00') | -+-----------------------------------------------------------+ -| 2021-02-28 22:11:00 | -+-----------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58'); -+---------------------------------------------------+ -| CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58') | -+---------------------------------------------------+ -| 2021-02-28 22:09:00 | -+---------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT'); -+---------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT') | -+---------------------------------------------------+ -| 2021-01-01 20:09:00 | -+---------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan'); -+-----------------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan') | -+-----------------------------------------------------------+ -| 2021-01-01 15:09:00 | -+-----------------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET'); -+---------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET') | -+---------------------------------------------------+ -| 2021-01-01 02:59:00 | -+---------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC'); -+---------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC') | -+---------------------------------------------------+ -| 2021-01-01 11:39:00 | -+---------------------------------------------------+ - -SELECT CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC'); -+---------------------------------------------------+ -| CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC') | -+---------------------------------------------------+ -| 2021-01-01 03:39:00 | -+---------------------------------------------------+ \ No newline at end of file diff --git a/test/mysql_test/test_suite/expr/t/expr_convert_tz.test b/test/mysql_test/test_suite/expr/t/expr_convert_tz.test deleted file mode 100644 index 97b6190d7..000000000 --- a/test/mysql_test/test_suite/expr/t/expr_convert_tz.test +++ /dev/null @@ -1,66 +0,0 @@ ---disable_query_log -set @@session.explicit_defaults_for_timestamp=off; ---enable_query_log ---enable_abort_on_error ---echo ================ expression convert_tz ================ - -# 直接时刻类型 -SELECT CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00'); -SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00'); -SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30'); -SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10'); -SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00'); -SELECT CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00'); -SELECT CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00'); -SELECT CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00'); -SELECT CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00'); -SELECT CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12'); -SELECT CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11'); -SELECT CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00'); -SELECT CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00'); -SELECT CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00'); -SELECT CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00'); -SELECT CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00'); -SELECT CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00'); -SELECT CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00'); - -#直接时刻类型异常 -SELECT CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00'); -SELECT CONVERT_TZ('2020-12-31 23:11:00','+11:00', null); -SELECT CONVERT_TZ(null,'-13:00','+11:00'); -SELECT CONVERT_TZ(null, null,'+11:00'); -SELECT CONVERT_TZ(null, null, null); - -#时区类型 -SELECT CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo'); -SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin'); -SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam'); -SELECT CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida'); -SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','Libya'); -SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','MST'); -SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','MST'); -SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC'); -SELECT CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC'); -SELECT CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC'); -SELECT CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC'); -SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC'); -SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore'); -SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC'); - -#时区类型异常 -SELECT CONVERT_TZ('2021-02-28 17:11:00', null,'ROC'); -SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null); -SELECT CONVERT_TZ('2021-02-28 17:11:00', null, null); - -#混合类型 -SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC'); -SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan'); -SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00'); -SELECT CONVERT_TZ('2021-02-28 17:11:00', 'US/Michigan', '+00:00'); -SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58'); -SELECT CONVERT_TZ('2021-01-01 07:11:00', 'UCT','-12:58'); -SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT'); -SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan'); -SELECT CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET'); -SELECT CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC'); -SELECT CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC'); \ No newline at end of file diff --git a/test/mysql_test/test_suite/global_index/r/mysql/global_index_select.result b/test/mysql_test/test_suite/global_index/r/mysql/global_index_select.result deleted file mode 100644 index 52bca7da0..000000000 --- a/test/mysql_test/test_suite/global_index/r/mysql/global_index_select.result +++ /dev/null @@ -1,562 +0,0 @@ -drop table if exists t1; -create table t1 (c1 int, c2 int, c3 int, c4 int, primary key (c1, c2)) partition by hash(c1) partitions 4; -create index gkey1 on t1(c2,c3) global; -create index gkey2 on t1(c2,c3) global partition by hash(c3) partitions 2; -select /*+index(t1 primary)*/ c2, c3 from t1 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -select /*+index(t1 gkey1)*/ c2, c3 from t1 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -select /*+index(t1 gkey2)*/ c2, c3 from t1 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -select /*+index(t1 primary)*/ * from t1 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 gkey1)*/ * from t1 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 gkey2)*/ * from t1 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 primary)*/ c2, c3 from t1 where c2 < 10 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey1)*/ c2, c3 from t1 where c2 < 10 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey2)*/ c2, c3 from t1 where c2 < 10 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 primary)*/ * from t1 where c2 < 10 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -select /*+index(t1 gkey1)*/ * from t1 where c2 < 10 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -select /*+index(t1 gkey2)*/ * from t1 where c2 < 10 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -select /*+index(t1 primary)*/ * from t1 where c4 < 6 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 gkey1)*/ * from t1 where c4 < 6 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 gkey2)*/ * from t1 where c4 < 6 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 primary)*/ * from t1 where c2 < 10 and c4 < 6 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 gkey1)*/ * from t1 where c2 < 10 and c4 < 6 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 gkey2)*/ * from t1 where c2 < 10 and c4 < 6 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 primary)*/ * from t1 where c2 < 10 and c4 < 6 and c3 + c4 < 10 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 gkey1)*/ * from t1 where c2 < 10 and c4 < 6 and c3 + c4 < 10 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 gkey2)*/ * from t1 where c2 < 10 and c4 < 6 and c3 + c4 < 10 order by c1; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -select /*+index(t1 primary)*/ c2, sum(c3) from t1 where c2 < 10 group by c1; -c2 sum(c3) -5 6 -9 10 -2 3 -6 7 -3 4 -7 8 -4 5 -8 9 -select /*+index(t1 gkey1)*/ c2, sum(c3) from t1 where c2 < 10 group by c1; -c2 sum(c3) -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey2)*/ c2, sum(c3) from t1 where c2 < 10 group by c1; -c2 sum(c3) -3 4 -5 6 -7 8 -9 10 -2 3 -4 5 -6 7 -8 9 -select /*+index(t1 primary)*/ c2, sum(c3) from t1 where c2 < 10 group by c2 having sum(c3) > 5 order by c2; -c2 sum(c3) -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey1)*/ c2, sum(c3) from t1 where c2 < 10 group by c2 having sum(c3) > 5 order by c2; -c2 sum(c3) -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey2)*/ c2, sum(c3) from t1 where c2 < 10 group by c2 having sum(c3) > 5 order by c2; -c2 sum(c3) -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 primary)*/ c2, sum(c3) from t1 where c2 < 10 group by c4 having sum(c4) > 6 order by c4; -c2 sum(c3) -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey1)*/ c2, sum(c3) from t1 where c2 < 10 group by c4 having sum(c4) > 6 order by c4; -c2 sum(c3) -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey2)*/ c2, sum(c3) from t1 where c2 < 10 group by c4 having sum(c4) > 6 order by c4; -c2 sum(c3) -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 primary)*/ distinct c2, c3 from t1 where c2 < 10 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey1)*/ distinct c2, c3 from t1 where c2 < 10 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey2)*/ distinct c2, c3 from t1 where c2 < 10 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 primary)*/ distinct c2, c3 from t1 where c2 < 10 order by c1; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey1)*/ distinct c2, c3 from t1 where c2 < 10 order by c1; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 gkey2)*/ distinct c2, c3 from t1 where c2 < 10 order by c1; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -select /*+index(t1 primary)*/ distinct c2, c3, c4 from t1 where c2 < 10 order by c1; -c2 c3 c4 -2 3 4 -3 4 5 -4 5 6 -5 6 7 -6 7 8 -7 8 9 -8 9 10 -9 10 11 -select /*+index(t1 gkey1)*/ distinct c2, c3, c4 from t1 where c2 < 10 order by c1; -c2 c3 c4 -2 3 4 -3 4 5 -4 5 6 -5 6 7 -6 7 8 -7 8 9 -8 9 10 -9 10 11 -select /*+index(t1 gkey2)*/ distinct c2, c3, c4 from t1 where c2 < 10 order by c1; -c2 c3 c4 -2 3 4 -3 4 5 -4 5 6 -5 6 7 -6 7 8 -7 8 9 -8 9 10 -9 10 11 -select /*+index(t1 primary)*/ c2, c3 from t1 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -select /*+index(t1 gkey1)*/ c2, c3 from t1 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -select /*+index(t1 gkey2)*/ c2, c3 from t1 order by c2; -c2 c3 -2 3 -3 4 -4 5 -5 6 -6 7 -7 8 -8 9 -9 10 -10 11 -11 12 -select /*+index(t1 primary)*/ * from t1 order by c2; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 gkey1)*/ * from t1 order by c2; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 gkey2)*/ * from t1 order by c2; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 primary)*/ * from t1 order by c2, c3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 gkey1)*/ * from t1 order by c2, c3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 gkey2)*/ * from t1 order by c2, c3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 primary)*/ * from t1 order by c3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 gkey1)*/ * from t1 order by c3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 gkey2)*/ * from t1 order by c3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -4 5 6 7 -5 6 7 8 -6 7 8 9 -7 8 9 10 -8 9 10 11 -9 10 11 12 -10 11 12 13 -select /*+index(t1 primary)*/ c2, c3 from t1 order by c2 limit 3; -c2 c3 -2 3 -3 4 -4 5 -select /*+index(t1 gkey1)*/ c2, c3 from t1 order by c2 limit 3; -c2 c3 -2 3 -3 4 -4 5 -select /*+index(t1 gkey2)*/ c2, c3 from t1 order by c2 limit 3; -c2 c3 -2 3 -3 4 -4 5 -select /*+index(t1 primary)*/ * from t1 order by c2 limit 3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -select /*+index(t1 gkey1)*/ * from t1 order by c2 limit 3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -select /*+index(t1 gkey2)*/ * from t1 order by c2 limit 3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -select /*+index(t1 primary)*/ * from t1 order by c2, c3 limit 3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -select /*+index(t1 gkey1)*/ * from t1 order by c2, c3 limit 3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -select /*+index(t1 gkey2)*/ * from t1 order by c2, c3 limit 3; -c1 c2 c3 c4 -1 2 3 4 -2 3 4 5 -3 4 5 6 -select /*+index(t1 primary)*/ count(*) from t1; -count(*) -10 -select /*+index(t1 gkey1)*/ count(*) from t1; -count(*) -10 -select /*+index(t1 gkey2)*/ count(*) from t1; -count(*) -10 -drop table if exists t1; -drop table if exists t1; -create table t1(a int, b int, c int, d int, primary key(a,b)) partition by hash(a) partitions 3; -create unique index idx on t1(c) partition by hash(c) partitions 5; -insert into t1 values (1,1,1,1),(2,2,2,2),(3,3,3,3); -update t1 set d=d+1 where (a,b)>=(1,1) and c=1; -drop table if exists t1; -drop table if exists obright_part; -create table obright_part(grp_id bigint, row_id bigint, row_hex varchar(2048), trx_grp bigint, -v1 varchar(65536), v1_check bigint, v2 varchar(65536), v2_check bigint, r1 int, r2 int, glike varchar(4096), -c1 bigint, c2 bigint, c3 bigint, c4 bigint, c5 bigint, c6 tinyint, c7 bigint, c8 bigint, c9 bigint, c10 bigint, v3 varchar(1024), -ts timestamp(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), t1 timestamp(6) null, t2 datetime(6), -dec1 decimal(16,4), dec2 decimal(16,4), dec3 decimal(16,6), -b1 boolean, d1 bigint default 0, ac1 bigint auto_increment, gmt_create timestamp(6) default now(6), gmt_modified timestamp(6) default now(6), -gen_v1 varchar(10) GENERATED ALWAYS AS (substr(v1,1,10)) virtual, -gen_v2 varchar(10) GENERATED ALWAYS AS (substr(v1,1,10)) stored, -primary key(grp_id, row_id, row_hex), -index obright_part2(trx_grp,row_id, ac1) LOCAL, -index obright_part3(glike) LOCAL, -index obright_part4(t1,ts,dec1,dec2) storing(v1,v1_check,r1,r2) LOCAL, -index obright_part5(v1_check,v2_check) LOCAL, -index obright_part6(row_hex,v1_check) storing(glike,t1,r1) LOCAL, -unique index obright_part1_uniq(t1,grp_id,row_id,row_hex) LOCAL, -unique index obright_part2_uniq(trx_grp,r1,row_hex,row_id,grp_id) LOCAL, -unique index obright_part3_uniq(row_hex,grp_id,row_id) LOCAL) -partition by key (grp_id) partitions 2; -create index obright_part1 on obright_part(row_id) global partition by HASH(row_id) partitions 2; -select grp_id, max(row_id), max(row_hex), max(trx_grp), abs(row_id)%2 as row_id_mod from obright_part where grp_id=6447+length('a')-1 group by row_id_mod order by row_id_mod desc limit 1; -grp_id max(row_id) max(row_hex) max(trx_grp) row_id_mod -drop table if exists obright_part; diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/table_constraints.result b/test/mysql_test/test_suite/inner_table/r/mysql/table_constraints.result deleted file mode 100644 index 1501f4111..000000000 --- a/test/mysql_test/test_suite/inner_table/r/mysql/table_constraints.result +++ /dev/null @@ -1,15 +0,0 @@ -drop database if exists xiaofeng_db; -create database xiaofeng_db; -use xiaofeng_db; -create table t1(c1 int primary key); -create table t2(c1 int unique, c2 int, c3 varchar(10), c4 varchar(10), constraint test_for_table_constraints_check_name check(c3 = substr(c4, 1, 1)), -constraint test_for_table_constraints_fk_name_1 foreign key (c1) references t1(c1), -constraint test_for_table_constraints_fk_name_2 foreign key (c2) references t2(c1)); -select * from information_schema.table_constraints where CONSTRAINT_SCHEMA = 'xiaofeng_db'; -CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_SCHEMA TABLE_NAME CONSTRAINT_TYPE -def xiaofeng_db PRIMARY xiaofeng_db t1 PRIMARY KEY -def xiaofeng_db c1 xiaofeng_db t2 UNIQUE -def xiaofeng_db test_for_table_constraints_check_name xiaofeng_db t2 CHECK -def xiaofeng_db test_for_table_constraints_fk_name_2 xiaofeng_db t2 FOREIGN KEY -def xiaofeng_db test_for_table_constraints_fk_name_1 xiaofeng_db t2 FOREIGN KEY -drop database xiaofeng_db; diff --git a/test/mysql_test/test_suite/join/r/mysql/anti_semi_join.result b/test/mysql_test/test_suite/join/r/mysql/anti_semi_join.result deleted file mode 100644 index 326b5c525..000000000 --- a/test/mysql_test/test_suite/join/r/mysql/anti_semi_join.result +++ /dev/null @@ -1,1624 +0,0 @@ -drop table if exists xy_t1, xy_t2; -create table xy_t1(c1 int, c2 int); -create table xy_t2(c1 int, c2 int); -insert/*insert trace*/ into xy_t1 values(0, 0), (1,1), (2,2), (5,5), (5,5), (6,7), (6,6), (7,7); -insert/*insert trace*/ into xy_t2 values(1,1), (3,3), (5,5), (5,5), (6,6); - -# ************** 测试anti仅含equal condition的情况 ******* -select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); -c1 c2 -0 0 -2 2 -7 7 - -select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); -c1 c2 -0 0 -2 2 -7 7 - -select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); -c1 c2 -0 0 -2 2 -7 7 -# ************* end ******************* - -# ************** 测试anti含other condition的情况 ******* -select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 -0 0 -1 1 -2 2 -5 5 -5 5 -6 6 -7 7 - -select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 -0 0 -1 1 -2 2 -5 5 -5 5 -6 6 -7 7 - -select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 -0 0 -1 1 -2 2 -5 5 -5 5 -6 6 -7 7 -# ************** end ********* - -# ************** 测试semi仅含equal condition的情况 ******* -select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); -c1 c2 -1 1 -5 5 -5 5 -6 7 -6 6 - -select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); -c1 c2 -1 1 -5 5 -5 5 -6 7 -6 6 - -select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); -c1 c2 -1 1 -5 5 -5 5 -6 7 -6 6 -# ************* end ******************* - -# ************** 测试semi join含other condition的情况 ******* -select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 -6 7 - -select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 -6 7 - -select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 -6 7 -# ************** end ********* - -# ************** 测试上层算子需要投影的情况 ******** -select /*+ USE_NL(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 c1 c2 -0 0 0 0 -1 1 1 1 -2 2 2 2 -5 5 5 5 -5 5 5 5 -6 6 6 6 -7 7 7 7 - -select /*+ USE_MERGE(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 c1 c2 -0 0 0 0 -1 1 1 1 -2 2 2 2 -5 5 5 5 -5 5 5 5 -6 6 6 6 -7 7 7 7 - -select /*+ USE_HASH(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 c1 c2 -0 0 0 0 -1 1 1 1 -2 2 2 2 -5 5 5 5 -5 5 5 5 -6 6 6 6 -7 7 7 7 - -select /*+ USE_NL(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 c1 c2 -6 7 6 7 - -select /*+ USE_MERGE(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 c1 c2 -6 7 6 7 - -select /*+ USE_HASH(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); -c1 c2 c1 c2 -6 7 6 7 -# ************** end ******** -drop table xy_t1, xy_t2; -drop table if exists xy_x_t, xy_y_t; -create table xy_x_t(x1 int, x2 varchar(100)); -create table xy_y_t(y1 int, y2 varchar(100)); -insert/*insert trace*/ into xy_x_t values(NULL,"VECPQ"),(NULL,"bdarkyzh"),(NULL,"it"),(NULL,"tgn"),(NULL,"had"),(NULL,"b"),(NULL,"g"),(NULL,"it's"),(NULL,"r"),(NULL,"KSZCK"),(NULL,"s"),(NULL,"UJRXI"),(NULL,"HLKDP"),(NULL,"about"),(NULL,"ROITX"),(NULL,"OEJAP"),(NULL,"u"),(NULL,"egisjnib"),(NULL,"ozkegisjn"),(NULL,"oh"),(NULL,"lrlmds"),(NULL,"r"),(NULL,"a"),(NULL,"here"),(NULL,"ihrad"),(NULL,"good"),(-2139029504,"eyqjoq"),(-2061369344,"GSUGA"),(-1882128384,"there"),(-1552613376,"d"),(-1511981056,"and"),(-1504706560,"and"),(-1259929600,"o"),(-973340672,"at"),(-918945792,"DNMFW"),(-778960896,"r"),(-753336320,"PKGAE"),(-593821696,"UGSPN"),(-457179136,"got"),(-314638336,"will"),(-233701376,"o"),(-104202240,"SUEUH"),(0,"yzh"),(0,"i"),(1,"TQOYB"),(1,"FFHTJ"),(2,"it's"),(2,"ezcuilyxac"),(2,"VZLUW"),(2,"want"),(2,"think"),(3,"prsazev"),(3,"get"),(3,"out"),(4,"a"),(4,"PVYPZ"),(4,"k"),(4,"bpqswbeyqj"),(4,"isjn"),(4,"that's"),(4,"well"),(5,"arkyz"),(5,"w"),(5,"with"),(5,"just"),(5,"PFBCU"),(6,"uyslpcybda"),(6,"co"),(6,"u"),(6,"j"),(6,"g"),(7,"cybdark"),(7,"BKWPE"),(8,"lmdsl"),(8,"NNIGT"),(8,"of"),(9,"etu"),(9,"TBMEI"),(9,"QPPLC"),(9,"mdsl"),(27262976,"n"),(162267136,"to"),(199884800,"y"),(334364672,"h"),(597295104,"did"),(748814336,"rhljip"),(769916928,"OQKEV"),(839778304,"USTRY"),(947585024,"hey"),(1210777600,"want"),(1232601088,"azev"),(1250689024,"a"),(1329463296,"QAMOL"),(1573126144,"zcuilyx"),(1594753024,"yeah"),(1730215936,"PMUMX"),(1925709824,"g"),(2048262144,"b"),(2082275328,"k"),(2131492864,"was"); -insert/*insert trace*/ into xy_y_t values(NULL,"mmkfu"),(NULL,"c"),(NULL,"know"),(NULL,"ZYTQH"),(NULL,"j"),(NULL,"y"),(NULL,"what"),(NULL,"SXXNL"),(NULL,"b"),(NULL,"NFZFZ"),(-1992359936,"not"),(-1711210496,"uoorvy"),(-1150287872,"BKNFS"),(-926613504,"was"),(-858128384,"y"),(-549126144,"v"),(-537198592,"now"),(-491651072,"t"),(-66125824,"here"),(0,"XCYGJ"),(1,"YGHBI"),(2,"g"),(6,"kfuoorvyvn"),(7,"EGBLS"),(9,"jsnsdfm"),(1584463872,"face"); - -select /*+use_hash(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); -x1 x2 -0 yzh -2 it's -2 VZLUW -2 want -2 think -6 uyslpcybda -6 u -9 TBMEI -9 QPPLC -9 mdsl -select /*+use_merge(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); -x1 x2 -0 yzh -2 think -2 want -2 VZLUW -2 it's -6 uyslpcybda -6 u -9 TBMEI -9 QPPLC -9 mdsl -select /*+use_nl(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); -x1 x2 -0 yzh -2 it's -2 VZLUW -2 want -2 think -6 uyslpcybda -6 u -9 TBMEI -9 QPPLC -9 mdsl - -drop table xy_x_t, xy_y_t; -create table xy_x_t(x1 int not null, x2 varchar(100) not null); -create table xy_y_t(y1 int not null, y2 varchar(100) not null); -insert/*insert trace*/ into xy_x_t values(-2139029504,"eyqjoq"),(-2061369344,"GSUGA"),(-1882128384,"there"),(-1552613376,"d"),(-1511981056,"and"),(-1504706560,"and"),(-1259929600,"o"),(-973340672,"at"),(-918945792,"DNMFW"),(-778960896,"r"),(-753336320,"PKGAE"),(-593821696,"UGSPN"),(-457179136,"got"),(-314638336,"will"),(-233701376,"o"),(-104202240,"SUEUH"),(0,"yzh"),(0,"i"),(1,"TQOYB"),(1,"FFHTJ"),(2,"it's"),(2,"ezcuilyxac"),(2,"VZLUW"),(2,"want"),(2,"think"),(3,"prsazev"),(3,"get"),(3,"out"),(4,"a"),(4,"PVYPZ"),(4,"k"),(4,"bpqswbeyqj"),(4,"isjn"),(4,"that's"),(4,"well"),(5,"arkyz"),(5,"w"),(5,"with"),(5,"just"),(5,"PFBCU"),(6,"uyslpcybda"),(6,"co"),(6,"u"),(6,"j"),(6,"g"),(7,"cybdark"),(7,"BKWPE"),(8,"lmdsl"),(8,"NNIGT"),(8,"of"),(9,"etu"),(9,"TBMEI"),(9,"QPPLC"),(9,"mdsl"),(27262976,"n"),(162267136,"to"),(199884800,"y"),(334364672,"h"),(597295104,"did"),(748814336,"rhljip"),(769916928,"OQKEV"),(839778304,"USTRY"),(947585024,"hey"),(1210777600,"want"),(1232601088,"azev"),(1250689024,"a"),(1329463296,"QAMOL"),(1573126144,"zcuilyx"),(1594753024,"yeah"),(1730215936,"PMUMX"),(1925709824,"g"),(2048262144,"b"),(2082275328,"k"),(2131492864,"was"); -insert/*insert trace*/ into xy_y_t values(-1992359936,"not"),(-1711210496,"uoorvy"),(-1150287872,"BKNFS"),(-926613504,"was"),(-858128384,"y"),(-549126144,"v"),(-537198592,"now"),(-491651072,"t"),(-66125824,"here"),(0,"XCYGJ"),(1,"YGHBI"),(2,"g"),(6,"kfuoorvyvn"),(7,"EGBLS"),(9,"jsnsdfm"),(1584463872,"face"); -select /*+use_hash(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); -x1 x2 --2139029504 eyqjoq --2061369344 GSUGA --1882128384 there --1552613376 d --1511981056 and --1504706560 and --1259929600 o --973340672 at --918945792 DNMFW --778960896 r --753336320 PKGAE --593821696 UGSPN --457179136 got --314638336 will --233701376 o --104202240 SUEUH -0 i -1 TQOYB -1 FFHTJ -2 ezcuilyxac -3 prsazev -3 get -3 out -4 a -4 PVYPZ -4 k -4 bpqswbeyqj -4 isjn -4 that's -4 well -5 arkyz -5 w -5 with -5 just -5 PFBCU -6 co -6 j -6 g -7 cybdark -7 BKWPE -8 lmdsl -8 NNIGT -8 of -9 etu -27262976 n -162267136 to -199884800 y -334364672 h -597295104 did -748814336 rhljip -769916928 OQKEV -839778304 USTRY -947585024 hey -1210777600 want -1232601088 azev -1250689024 a -1329463296 QAMOL -1573126144 zcuilyx -1594753024 yeah -1730215936 PMUMX -1925709824 g -2048262144 b -2082275328 k -2131492864 was -select /*+use_merge(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); -x1 x2 --2139029504 eyqjoq --2061369344 GSUGA --1882128384 there --1552613376 d --1511981056 and --1504706560 and --1259929600 o --973340672 at --918945792 DNMFW --778960896 r --753336320 PKGAE --593821696 UGSPN --457179136 got --314638336 will --233701376 o --104202240 SUEUH -0 i -1 TQOYB -1 FFHTJ -2 ezcuilyxac -3 prsazev -3 get -3 out -4 a -4 PVYPZ -4 k -4 bpqswbeyqj -4 isjn -4 that's -4 well -5 PFBCU -5 just -5 with -5 arkyz -5 w -6 co -6 j -6 g -7 cybdark -7 BKWPE -8 NNIGT -8 of -8 lmdsl -9 etu -27262976 n -162267136 to -199884800 y -334364672 h -597295104 did -748814336 rhljip -769916928 OQKEV -839778304 USTRY -947585024 hey -1210777600 want -1232601088 azev -1250689024 a -1329463296 QAMOL -1573126144 zcuilyx -1594753024 yeah -1730215936 PMUMX -1925709824 g -2048262144 b -2082275328 k -2131492864 was -select /*+use_nl(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); -x1 x2 --2139029504 eyqjoq --2061369344 GSUGA --1882128384 there --1552613376 d --1511981056 and --1504706560 and --1259929600 o --973340672 at --918945792 DNMFW --778960896 r --753336320 PKGAE --593821696 UGSPN --457179136 got --314638336 will --233701376 o --104202240 SUEUH -0 i -1 TQOYB -1 FFHTJ -2 ezcuilyxac -3 prsazev -3 get -3 out -4 a -4 PVYPZ -4 k -4 bpqswbeyqj -4 isjn -4 that's -4 well -5 arkyz -5 w -5 with -5 just -5 PFBCU -6 co -6 j -6 g -7 cybdark -7 BKWPE -8 lmdsl -8 NNIGT -8 of -9 etu -27262976 n -162267136 to -199884800 y -334364672 h -597295104 did -748814336 rhljip -769916928 OQKEV -839778304 USTRY -947585024 hey -1210777600 want -1232601088 azev -1250689024 a -1329463296 QAMOL -1573126144 zcuilyx -1594753024 yeah -1730215936 PMUMX -1925709824 g -2048262144 b -2082275328 k -2131492864 was -drop table xy_x_t, xy_y_t; -drop table if exists xy_t1, xy_t2, xy_t3, xy_t4; -create table xy_t1(c1 int, c2 int, key idx_c2(c2, c1)); -create table xy_t2(c1 int, c2 int, key idx_c2(c2, c1)); -create table xy_t3(c1 int, c2 int, key idx_c2(c2, c1)); -create table xy_t4(c1 int, c2 int, key idx_c2(c2, c1)); -insert/*insert trace*/ into xy_t1 values(0, 0), (1,1), (2, null),(2,2), (5,5), (5,5), (5,7),(6,7), (6,6), (6, null),(7,7), (7, 0), (8,0), (8,8), (8, 5), (9, 0), (9, 7), (10,10), (null, 1), (1,1), (3,3), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (0, 0), (1,1), (2, null),(2,2), (5,5), (5,5), (5,7),(6,7), (6,6), (6, null),(7,7), (7, 0), (8,0), (8,8), (8, 5), (9, 0), (9, 7), (10,10), (null, 1), (1,1), (3,3), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (0, 0), (1,1), (2, null),(2,2), (5,5), (5,5), (5,7),(6,7), (6,6), (6, null),(7,7), (7, 0), (8,0), (8,8), (8, 5), (9, 0), (9, 7), (10,10), (null, 1), (1,1), (3,3), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (0, 0), (1,1), (2, null),(2,2), (5,5), (5,5), (5,7),(6,7), (6,6), (6, null),(7,7), (7, 0), (8,0), (8,8), (8, 5), (9, 0), (9, 7), (10,10), (null, 1), (1,1), (3,3), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1); -insert/*insert trace*/ into xy_t2 values(null, 1), (1,1), (3,3), (5,5), (5,6), (5,4), (6,6), (9,9); -insert/*insert trace*/ into xy_t3 values(1,1), (3,3), (5,5), (5,6), (5,4), (6,6), (9,9), (5,7),(6,7), (6,6), (6, null),(7,7); -insert/*insert trace*/ into xy_t4 values(1,1), (3,3); - -***************** RIGHT HASH SEMI 最优 -select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -select /*+ use_nl(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -select /*+ use_hash(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -select /*+ use_merge(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -3 3 -3 3 -3 3 -3 3 -5 7 -5 7 -5 5 -5 5 -5 5 -5 5 -5 5 -5 7 -5 5 -5 5 -5 5 -5 7 -6 NULL -6 7 -6 NULL -6 6 -6 7 -6 6 -6 NULL -6 7 -6 6 -6 NULL -6 6 -6 7 -9 7 -9 0 -9 0 -9 7 -9 7 -9 0 -9 0 -9 7 -select /*+ no_rewrite */ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 - -***************** HASH SEMI 最优 -select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -9 9 -1 1 -6 6 -3 3 -5 4 -5 6 -5 5 -select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -1 1 -3 3 -5 5 -5 6 -5 4 -6 6 -9 9 -select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -9 9 -1 1 -6 6 -3 3 -5 4 -5 6 -5 5 -select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -1 1 -3 3 -5 5 -5 6 -5 4 -6 6 -9 9 - -**************** NL SEMI 最优 -select * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); -c1 c2 -1 1 -3 3 -select /*+ use_nl(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); -c1 c2 -1 1 -3 3 -select /*+ use_hash(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); -c1 c2 -3 3 -1 1 -select /*+ use_merge(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); -c1 c2 -1 1 -3 3 - -**************** MERGE SEMI 最优 -select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); -c1 c2 -NULL 1 -1 1 -3 3 -5 5 -5 6 -6 6 -select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); -c1 c2 -NULL 1 -1 1 -3 3 -5 5 -5 6 -6 6 -select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); -c1 c2 -1 1 -NULL 1 -6 6 -5 6 -3 3 -5 5 -select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); -c1 c2 -NULL 1 -1 1 -3 3 -5 5 -5 6 -6 6 - -***************** RIGHT HASH ANTI 最优 -select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -select /*+ use_nl(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -select /*+ use_hash(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -select /*+ use_merge(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -NULL 1 -NULL 1 -NULL 1 -NULL 1 -0 0 -0 0 -0 0 -0 0 -2 NULL -2 NULL -2 2 -2 2 -2 2 -2 2 -2 NULL -2 NULL -7 7 -7 0 -7 7 -7 7 -7 0 -7 0 -7 7 -7 0 -8 5 -8 5 -8 5 -8 8 -8 0 -8 0 -8 0 -8 5 -8 8 -8 8 -8 0 -8 8 -10 10 -10 10 -10 10 -10 10 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -select /*+ no_rewrite */ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 - -***************** HASH ANTI 最优 -select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -NULL 1 -select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -NULL 1 -select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -NULL 1 -select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -NULL 1 - -**************** NL ANTI 最优 -select * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); -c1 c2 -select /*+ use_nl(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); -c1 c2 -select /*+ use_hash(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); -c1 c2 -select /*+ use_merge(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); -c1 c2 - -**************** MERGE ANTI 最优 -select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); -c1 c2 -5 4 -9 9 -select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); -c1 c2 -5 4 -9 9 -select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); -c1 c2 -9 9 -5 4 -select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); -c1 c2 -5 4 -9 9 - -*************** 测试3表情况 -select sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); -sum(c1) sum(c2) -224 168 -select /*+ use_hash(xy_t3, xy_t1) use_hash(xy_t2, xy_t1)*/ sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); -sum(c1) sum(c2) -224 168 -select /*+ no_rewrite*/ sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); -sum(c1) sum(c2) -224 168 - -select sum(c1), sum(c2) from xy_t1 where not exists (select 1 from xy_t3 where c2 = xy_t1.c2) and exists (select 1 from xy_t2 where c2 = xy_t1.c2); -sum(c1) sum(c2) -NULL NULL -select /*+ no_rewrite*/ sum(c1), sum(c2) from xy_t1 where not exists (select 1 from xy_t3 where c2 = xy_t1.c2) and exists (select 1 from xy_t2 where c2 = xy_t1.c2); -sum(c1) sum(c2) -NULL NULL - -*************** 测试limit下压 HASH RIGHT SEMI加limit后情况, limit 小时, SEMI代价会小, limit 太大后代价不影响 -select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 3; -c1 c2 -1 1 -5 5 -5 5 -select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 1000; -c1 c2 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 -1 1 -5 5 -5 5 -5 7 -6 7 -6 6 -6 NULL -9 0 -9 7 -1 1 -3 3 - -*************** 测试limit下压 HASH LEFT SEMI加limit后情况, limit不影响SEMI代价 -select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -9 9 -1 1 -6 6 -3 3 -5 4 -5 6 -5 5 -select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 3; -c1 c2 -9 9 -1 1 -6 6 -select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 1000; -c1 c2 -9 9 -1 1 -6 6 -3 3 -5 4 -5 6 -5 5 - -*************** 测试limit下压 HASH RIGHT ANTI加limit后情况, limit 小时, ANTI代价会小, limit 太大后代价不影响 -select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); -c1 c2 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 3; -c1 c2 -0 0 -2 NULL -2 2 -select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 1000; -c1 c2 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -0 0 -2 NULL -2 2 -7 7 -7 0 -8 0 -8 8 -8 5 -10 10 -NULL 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 -20 1 - -*************** 测试limit下压 HASH LEFT ANTI加limit后情况, limit 不影响ANTI代价 -select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); -c1 c2 -NULL 1 -select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 3; -c1 c2 -NULL 1 -select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 1000; -c1 c2 -NULL 1 -drop table xy_t1, xy_t2, xy_t3; - -************** 测试SEMI/ANTI 含unique order的场景 -create table xy_t1(c1 int primary key, c2 int, c3 int); -create table xy_t2(c1 int primary key, c2 int, c3 int); -insert/*insert trace*/ into xy_t1 values(0, 0, 0), (1,1, 1), (2,2, 2), (3,5, 5), (5,5, 5), (6,7,7), (7,6, 6), (8, 7,8); -insert/*insert trace*/ into xy_t2 values(1,1, 1), (3,3,3), (4,5,5), (5,5, 5), (6,6,7); - -//两边都无序hash right -select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -6 6 -select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -6 6 -select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -6 6 -select /*+ no_rewrite*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -6 6 - -//两边都无序hash left -select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -6 7 -select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -6 7 -select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -6 7 -select /*+ no_rewrite*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -6 7 - -//两边唯一有序, 改写为inner join -select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; -c1 c2 -select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; -c1 c2 -select /*+ no_rewrite*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; -c1 c2 - -// 一边唯一有序 -select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c1 c2 -6 6 -select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c1 c2 -6 6 -select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c1 c2 -6 6 -select /*+ no_rewrite*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; -c1 c2 -6 6 - -//两边都无序hash right -select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -0 0 -1 1 -2 2 -5 5 -5 5 -7 7 -7 8 -select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -0 0 -1 1 -2 2 -5 5 -5 5 -7 7 -7 8 -select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -0 0 -1 1 -2 2 -5 5 -5 5 -7 7 -7 8 -select /*+ no_rewrite*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -0 0 -1 1 -2 2 -5 5 -5 5 -7 7 -7 8 - -//两边都无序hash left -select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -1 1 -3 3 -5 5 -5 5 -select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -1 1 -3 3 -5 5 -5 5 -select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -1 1 -3 3 -5 5 -5 5 -select /*+ no_rewrite*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c2 c3 -1 1 -3 3 -5 5 -5 5 - -// 两边唯一有序 -select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c1 c2 -1 1 -3 3 -4 5 -5 5 -6 6 -select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c1 c2 -1 1 -3 3 -4 5 -5 5 -6 6 -select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c1 c2 -1 1 -3 3 -4 5 -5 5 -6 6 -select /*+ no_rewrite*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; -c1 c2 -1 1 -3 3 -4 5 -5 5 -6 6 - -//一边唯一有序 -select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; -c1 c2 -1 1 -3 3 -4 5 -5 5 -6 6 -select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; -c1 c2 -1 1 -3 3 -4 5 -5 5 -6 6 -select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; -c1 c2 -1 1 -3 3 -4 5 -5 5 -6 6 -select /*+ no_rewrite*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; -c1 c2 -1 1 -3 3 -4 5 -5 5 -6 6 -drop table xy_t1, xy_t2; diff --git a/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null.result b/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null.result deleted file mode 100644 index e63589829..000000000 --- a/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null.result +++ /dev/null @@ -1,27 +0,0 @@ -drop table if exists t1,t2; -create table t1 (id int primary key, i2 int); -create table t2 (id int primary key, i2 int); -insert/*trace*/ into t1(id) values (75); -insert/*trace*/ into t1(id) values (79); -insert/*trace*/ into t1(id) values (78); -insert/*trace*/ into t1(id) values (77); -insert/*trace*/ into t1(id) values (104); -insert/*trace*/ into t1(id) values (103); -insert/*trace*/ into t1(id) values (102); -insert/*trace*/ into t1(id) values (101); -insert/*trace*/ into t1(id) values (105); -insert/*trace*/ into t1(id) values (106); -insert/*trace*/ into t1(id) values (107); -insert/*trace*/ into t2(id) values (107),(75),(1000); -select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200; -id id - -select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200 and t1.id<200; -id id - -select a.id , b.id from t1 a, t2 b where a.id = b.id and a.id>200 and a.id<200; -id id - -select a.id, b.id from t1 a, t2 b where a.id = a.id and a.id>200 and a.id<200; -id id -drop table t1, t2; diff --git a/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon.result b/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon.result deleted file mode 100644 index f404dbca1..000000000 --- a/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon.result +++ /dev/null @@ -1,28 +0,0 @@ -drop table if exists t1,t2; -create table t1 (id int primary key, i2 int); -create table t2 (id int primary key, i2 int); -insert/*trace*/ into t1(id) values (75); -insert/*trace*/ into t1(id) values (79); -insert/*trace*/ into t1(id) values (78); -insert/*trace*/ into t1(id) values (77); -insert/*trace*/ into t1(id) values (104); -insert/*trace*/ into t1(id) values (103); -insert/*trace*/ into t1(id) values (102); -insert/*trace*/ into t1(id) values (101); -insert/*trace*/ into t1(id) values (105); -insert/*trace*/ into t1(id) values (106); -insert/*trace*/ into t1(id) values (107); -insert/*trace*/ into t2(id) values (107),(75),(1000); - -select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200; -id id - -select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200 and t1.id<200; -id id - -select a.id , b.id from t1 a join t2 b on a.id = b.id and a.id>200 and a.id<200; -id id - -select a.id, b.id from t1 a join t2 b on a.id = a.id and a.id>200 and a.id<200; -id id -drop table t1, t2; diff --git a/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon_where.result b/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon_where.result deleted file mode 100644 index 5224ce420..000000000 --- a/test/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon_where.result +++ /dev/null @@ -1,28 +0,0 @@ -drop table if exists t1,t2; -create table t1 (id int primary key, i2 int); -create table t2 (id int primary key, i2 int); -insert/*trace*/ into t1(id) values (75); -insert/*trace*/ into t1(id) values (79); -insert/*trace*/ into t1(id) values (78); -insert/*trace*/ into t1(id) values (77); -insert/*trace*/ into t1(id) values (104); -insert/*trace*/ into t1(id) values (103); -insert/*trace*/ into t1(id) values (102); -insert/*trace*/ into t1(id) values (101); -insert/*trace*/ into t1(id) values (105); -insert/*trace*/ into t1(id) values (106); -insert/*trace*/ into t1(id) values (107); -insert/*trace*/ into t2(id) values (107),(75),(1000); - -select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200; -id id - -select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200 and t1.id<200; -id id - -select a.id , b.id from t1 a join t2 b on a.id = b.id where a.id>200 and a.id<200; -id id - -select a.id , b.id from t1 a join t2 b on a.id = a.id where a.id>200 and a.id<200; -id id -drop table t1, t2; diff --git a/test/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result b/test/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result deleted file mode 100644 index 2f20e843a..000000000 --- a/test/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result +++ /dev/null @@ -1,373 +0,0 @@ -drop database if exists bushy_leading_hint_db; -create database bushy_leading_hint_db; -use bushy_leading_hint_db; -drop table if exists nn1; -drop table if exists nn2; -drop table if exists t1; -drop table if exists t2; -drop table if exists t3; -create table nn1(c1 int, c2 int, c3 varchar(10)); -create table nn2(d1 int, d2 int, d3 varchar(10)); -create table t1(a int, b int, c int); -create table t2(a int, b int, c int); -create table t3(a int, b int, c int); -select /*+ leading(c, (b , a) ) */ count(*),sum(a.c1+b.d2*a.c2) from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5 ; -count(*) sum(a.c1+b.d2*a.c2) -0 NULL -select /*+ leading(c, (b , a) ) */ count(a.c1), sum(a.c2+b.d2) from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on c.c1 = b.d2 + 1 where a.c2 < 15 ; -count(a.c1) sum(a.c2+b.d2) -0 NULL -select /*+ leading((c, d), (a , b) ) */ count(*),sum(a.c1),sum(b.d2) from nn1 a join nn2 b on a.c1 = b.d2 -join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 ; -count(*) sum(a.c1) sum(b.d2) -0 NULL NULL -select /*+ leading(c, d, (a , b)) */ count(*),sum(a.c1+b.d1+c.c1-d.c2) from -nn1 a, nn2 b , nn1 c, nn1 d -where a.c1 = b.d2 and b.d1 = c.c1 and d.c2 = c.c2; -count(*) sum(a.c1+b.d1+c.c1-d.c2) -0 NULL -select /*+ leading(c, (a ,d, b) ) use_hash(c,d) */ count(a.c1),sum(b.d1*b.d2-a.c2) from nn1 a join nn2 b on a.c1 = b.d2 -join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 and d.c1 = b.d2 -and d.c2 = a.c1 ; -count(a.c1) sum(b.d1*b.d2-a.c2) -0 NULL -select /*+ leading(c, (d, b) ) */ count(*) -from nn2 b, nn1 c, nn1 d -where b.d1 = c.c1 and d.c2 = c.c2 and d.c1 = b.d2; -count(*) -0 -select /*+ leading(t2, (t1, t3), t7, (t8, t9), (t4, t5, t6)) */ -count(*) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1 -and t1.c3 = 'hello11' and t2.c2 < 4 ; -count(*) -0 -select /*+ leading(t1,t2,t3,(t4,t5,t6),(t7,t8)) */ count(*),sum(t1.c1+t2.d1+t3.c1+t4.d2-t5.c1+t6.d2-t7.c1-t8.d2) -from nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5 , nn2 t6, nn1 t7, nn2 t8 -where t1.c1 = t2.d1 and t1.c2 = t3.c1 and -t4.d1 = t1.c1 and t5.c1 = t2.d2 and t6.d2 = t3.c1 AND -t7.c1 = t2.d1 and t7.c2 = t5.c1 and t8.d1 = t4.d2 and t8.d2 = t6.d2; -count(*) sum(t1.c1+t2.d1+t3.c1+t4.d2-t5.c1+t6.d2-t7.c1-t8.d2) -0 NULL -select /*+ leading(c, (d, (a,b))) */ count(a.c1+b.d2+a.c2) from nn1 a join nn2 b on a.c1 = b.d2 -join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 ; -count(a.c1+b.d2+a.c2) -0 -select /*+ leading(t2, (t1, (t3 , (t7, (t8, (t9 , (t4, (t5, (t6))))))))) */ -count(*),sum(t1.c1+t2.c1+t3.c1+t4.c2-t5.c1+t6.c2-t7.c1-t8.c2)+count(t9.c1) -from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; -count(*) sum(t1.c1+t2.c1+t3.c1+t4.c2-t5.c1+t6.c2-t7.c1-t8.c2)+count(t9.c1) -0 NULL -select /*+ leading(t1, ((t2, t3), t4), (t5, t6)) */ count(t1.c1), count(t2.d1 * t3.c1), sum(t4.d1 + t5.c1) -from nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5, nn2 t6 -where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 + t2.d2 = t4.d1 + t1.c2 and -t4.d1 = t5.c1 + t6.d2 and t2.d2 = t5.c1 and t2.d1 = t6.d2 and -t1.c1 + t4.d2 = t5.c2 + t6.d2 - 1; -count(t1.c1) count(t2.d1 * t3.c1) sum(t4.d1 + t5.c1) -0 0 NULL -select /*+ leading(t1, ((t2, t3), t4)) */ count(*), sum(t2.d1 * t3.c1 - t4.d2) -from nn1 t1, nn2 t2, nn1 t3, nn2 t4 -where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 + t2.d2 = t4.d1 + t1.c2; -count(*) sum(t2.d1 * t3.c1 - t4.d2) -0 NULL -select /*+ leading(t1, (t2, t3)) */ count(*), sum(t2.d1+t3.c2) -from nn1 t1, nn2 t2, nn1 t3 -where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 =t3.c1+t2.d2; -count(*) sum(t2.d1+t3.c2) -0 NULL -SELECT count(*), sum(b.d1) from -nn1 a, nn2 b, nn1 c -WHERE -a.c1 = b.d1 and b.d2 = c.c1 and c.c2 in ( -select -/*+ leading(x, ((y, z), x2, (y2,y3))) no_use_hash(y2, y3) */ -x.c1 -from nn1 x, nn2 y, nn1 z, nn1 x2, nn1 y2, nn1 y3 -where x.c2 = y.d2 and y.d1 = z.c2 and y2.c1 = y3.c1 -); -count(*) sum(b.d1) -0 NULL -select /*+ leading(t6, (t5, t4), (t3, t1), (t2)) */ count(*), sum(t2.c1) from nn1 t1, nn1 t2 , nn1 t3, nn1 t4, nn1 t5, nn1 t6 -where t1.c1 = t2.c1 and t2.c2 = t3.c1 and t3.c2 = t4.c1 and t4.c2 = t5.c1 and t5.c2 = t6.c1 and t5.c2 <> 44 -union ALL -select /* leading(t2, t1, (t4, t3, (t6, t5))) */ sum(t1.c1), max(t2.c2)+sum(t5.c1-t6.c2) from nn1 t1, nn1 t2 , nn1 t3, nn1 t4, nn1 t5, nn1 t6 -where t1.c1 = t2.c1 and t2.c2 = t3.c1 and t3.c2 = t4.c1 and t4.c2 = t5.c1 and t5.c2 = t6.c1 and t5.c2 <> 55; -count(*) sum(t2.c1) -0 NULL -NULL NULL -select /*+ leading(t9, (t8, t7, (t6, t5), t4), (t3, t1), t2)*/ count(*),sum(t9.c1-t5.c1+t4.d2-t1.c1) from -nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5, nn2 t6, nn1 t7, nn2 t8, nn1 t9 -where mod(t1.c1, 3) = mod(t2.d2,2) and mod(t1.c1,5) = mod(t3.c1,4) and mod(t1.c2, 7) = mod(t4.d1, 3) AND -mod(t1.c2, 5) = mod(t5.c1, 6) and mod(t1.c1, 3) = mod(t6.d2, 2) and mod(t1.c1, 4) = mod(t7.c1,3) AND -mod(t1.c1, 7) = mod(t8.d1, 3) and mod(t1.c2, 5) = mod(t9.c1, 4) AND -mod(t2.d1,5) = mod(t3.c1,4) and mod(t2.d2, 7) = mod(t4.d1, 3) AND -mod(t2.d2, 5) = mod(t5.c1, 6) and mod(t2.d1, 3) = mod(t6.d2, 2) and mod(t2.d1, 4) = mod(t7.c1,3) AND -mod(t2.d1, 7) = mod(t8.d1, 3) and mod(t2.d2, 5) = mod(t9.c1, 4) AND -mod(t3.c2, 7) = mod(t4.d1, 3) AND -mod(t3.c2, 5) = mod(t5.c1, 6) and mod(t3.c1, 3) = mod(t6.d2, 2) and mod(t3.c1, 4) = mod(t7.c1,3) AND -mod(t3.c1, 7) = mod(t8.d1, 3) and mod(t3.c2, 5) = mod(t9.c1, 4) AND -mod(t4.d2, 5) = mod(t5.c1, 6) and mod(t4.d1, 3) = mod(t6.d2, 2) and mod(t4.d1, 4) = mod(t7.c1,3) AND -mod(t4.d1, 7) = mod(t8.d1, 3) and mod(t4.d2, 5) = mod(t9.c1, 4) and -mod(t5.c1, 2) = mod(t6.d2, 5) and mod(t5.c1, 4) = mod(t7.c1,1) AND -mod(t5.c1, 7) = mod(t8.d1, 6) and mod(t5.c2, 5) = mod(t9.c1, 4) AND -mod(t6.d1, 4) = mod(t7.c1,3) AND -mod(t6.d1, 7) = mod(t8.d1, 3) and mod(t6.d2, 5) = mod(t9.c1, 4) AND -mod(t7.c1, 7) = mod(t8.d1, 3) and mod(t7.c2, 5) = mod(t9.c1, 4) AND -mod(t8.d2, 5) = mod(t9.c1, 14) ; -count(*) sum(t9.c1-t5.c1+t4.d2-t1.c1) -0 NULL -select /*+ leading(a (c ,(b, d))) */ count(*),sum(a.c1) from nn1 a, (select * from nn2) b, -(select * from nn1 cc group by c1,c2) c, nn2 d -where a.c1 = c.c1 and b.d2 = d.d1 and c.c2 = d.d2; -count(*) sum(a.c1) -0 NULL -select /*+ leading(a (c ,(b, d))) */count(*), sum(b.d2) from nn1 a left join nn2 b -on a.c1 = b.d1 left join nn1 c on b.d2 = c.c1 left join nn2 d on c.c2 = d.d2 -where a.c1 = b.d1 and b.d2 = c.c1 and c.c2 = d.d2; -count(*) sum(b.d2) -0 NULL -select (select /*+ leading(a (c ,(b, d))) */ count(x.c2) from nn1 a left join nn2 b -on a.c1 = b.d1 left join nn1 c on b.d2 = c.c1 left join nn2 d on c.c2 = d.d2 -where a.c1 = b.d1 and b.d2 = c.c1 and c.c2 = d.d2 and x.c1 = a.c1 + b.d1 + c.c2 - d.d2 * 5) as x -from nn1 x; -x -NULL -select /* leading(t3 (t2 t1)) */ sum(t1.c1) from nn1 t1 , nn1 t2 , nn1 t3 where t2.c2=t1.c2 and t1.c1 = -(select /*+ leading(x,(y z)) */ count(*) from nn1 x, nn2 y, nn1 z where x.c1 = y.d1 and y.d2 = z.c1) -and t3.c1 in (1,2); -sum(t1.c1) -NULL -select /*+ leading((d, c), b , a) */ count(*), sum(b.d1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d -where a.c1 = b.d1 and c.c2 = d.d1; -count(*) sum(b.d1+d.d2) -0 NULL -select /*+ leading((d, (c), (b)) , (a)) */ count(*),sum(a.c1+b.d2+c.c1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d -where a.c1 = b.d2 and c.c2 = d.d2; -count(*) sum(a.c1+b.d2+c.c1+d.d2) -0 NULL -select /*+ leading(b, (c d)) a) */ count(*), sum(b.d1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d -where a.c1 = b.d1 and c.c2 = d.d1; -count(*) sum(b.d1+d.d2) -0 NULL -select /*+ leading(b1, (c1 d1 ) a1) */ count(*), sum(b.d2+d.d1*c.c1-a.c1) from nn1 a, nn2 b, nn1 c, nn2 d -where a.c1 = b.d1 and c.c2 = d.d1; -count(*) sum(b.d2+d.d1*c.c1-a.c1) -0 NULL -select /*+ leading((((t2,t1,t4),t3),t5), (t6),(t7))*/ count(*), sum(t6.c1+t7.c1+t4.c2) from -nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6, nn1 t7 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1; -count(*) sum(t6.c1+t7.c1+t4.c2) -0 NULL -select /*+ leading(t4,t6,t5) */ count(*), sum(t2.c2+t3.c1) -from nn1 t1 left join nn1 t2 on t1.c1 = t2.c1 left JOIN -nn1 t3 on t3.c2 IN(1,23,4,2,5,6) join nn1 t4 on t3.c1=t4.c1 join nn1 t5 on t4.c2=t5.c2 -join nn1 t6 on t5.c1 = t6.c2 left join nn1 t7 on t1.c1=t7.c1; -count(*) sum(t2.c2+t3.c1) -0 NULL -select /*+ leading(c, (a ,(d, b)) ) */ count(a.c1+b.d2) , sum(b.d2+b.d2*a.c1) from nn1 a join nn2 b on a.c1 = b.d2 -join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 and d.c1 = b.d2 -and d.c2 = a.c1 ; -count(a.c1+b.d2) sum(b.d2+b.d2*a.c1) -0 NULL -create view v1 as select /*+ leading(c, b , a ) use_hash(b a) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2, c.c3 as c_c3 from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5; -show create view v1; -View Create View character_set_client collation_connection -v1 CREATE VIEW `v1` AS select /*+ LEADING(c b a) USE_HASH((b) (a)) */`a`.`c1` AS `a_c1`,`a`.`c2` AS `a_c2`,`a`.`c3` AS `a_c3`,`b`.`d1` AS `d1`,`b`.`d2` AS `d2`,`b`.`d3` AS `d3`,`c`.`c1` AS `c_c1`,`c`.`c2` AS `c_c2`,`c`.`c3` AS `c_c3` from ((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`a`.`c1` = `b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`b`.`d1` = `c`.`c1`))) where (`a`.`c2` < 5) utf8mb4 utf8mb4_general_ci -create view v2 as select /*+ leading(c, (b , a)) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2, c.c3 as c_c3 from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5 ; -show create view v2; -View Create View character_set_client collation_connection -v2 CREATE VIEW `v2` AS select /*+ LEADING(c (b a)) */`a`.`c1` AS `a_c1`,`a`.`c2` AS `a_c2`,`a`.`c3` AS `a_c3`,`b`.`d1` AS `d1`,`b`.`d2` AS `d2`,`b`.`d3` AS `d3`,`c`.`c1` AS `c_c1`,`c`.`c2` AS `c_c2`,`c`.`c3` AS `c_c3` from ((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`a`.`c1` = `b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`b`.`d1` = `c`.`c1`))) where (`a`.`c2` < 5) utf8mb4 utf8mb4_general_ci -create view v3 as select /*+ leading(c, (d, (a,b))) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2, c.c3 as c_c3 from nn1 a join nn2 b -on a.c1 = b.d2 -join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 ; -show create view v3; -View Create View character_set_client collation_connection -v3 CREATE VIEW `v3` AS select /*+ LEADING(c (d (a b))) */`a`.`c1` AS `a_c1`,`a`.`c2` AS `a_c2`,`a`.`c3` AS `a_c3`,`b`.`d1` AS `d1`,`b`.`d2` AS `d2`,`b`.`d3` AS `d3`,`c`.`c1` AS `c_c1`,`c`.`c2` AS `c_c2`,`c`.`c3` AS `c_c3` from (((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`a`.`c1` = `b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`b`.`d1` = `c`.`c1`))) join `bushy_leading_hint_db`.`nn1` `d` on ((`d`.`c2` = `c`.`c2`))) where (`a`.`c2` < 5) utf8mb4 utf8mb4_general_ci -create view v4 as -select /*+ leading(t2, (t1, t3), (t7, (t8, t9)), (t4, t5, t6)) */ -t1.c1 as x, t3.c2 as y, t5.c2 as z from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; -show create view v4; -View Create View character_set_client collation_connection -v4 CREATE VIEW `v4` AS select /*+ LEADING(t2 (t1 t3) (t7 (t8 t9)) (t4 t5 t6)) */`t1`.`c1` AS `x`,`t3`.`c2` AS `y`,`t5`.`c2` AS `z` from `bushy_leading_hint_db`.`nn1` `t1`,`bushy_leading_hint_db`.`nn1` `t2`,`bushy_leading_hint_db`.`nn1` `t3`,`bushy_leading_hint_db`.`nn1` `t4`,`bushy_leading_hint_db`.`nn1` `t5`,`bushy_leading_hint_db`.`nn1` `t6`,`bushy_leading_hint_db`.`nn1` `t7`,`bushy_leading_hint_db`.`nn1` `t8`,`bushy_leading_hint_db`.`nn1` `t9` where (`t1`.`c1` = `t2`.`c1`) and (`t1`.`c1` = `t3`.`c2`) and (`t2`.`c1` = `t3`.`c1`) and (`t3`.`c1` = `t4`.`c1`) and (`t4`.`c1` = `t5`.`c1`) and (`t5`.`c1` = `t6`.`c1`) and (`t6`.`c1` = `t7`.`c1`) and (`t7`.`c1` = `t8`.`c1`) and (`t8`.`c1` = `t9`.`c1`) and (`t8`.`c1` = `t2`.`c1`) and (`t1`.`c1` = `t9`.`c1`) utf8mb4 utf8mb4_general_ci -select count(*), sum(x+y-z*4) from v4; -count(*) sum(x+y-z*4) -0 NULL -select /*+ leading(t2, (t1, t3), (t7, (t8, t9))) */ -count(*)+sum(t1.c1+t4.c2+t5.c1+t5.c2-5*t9.c1) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; -count(*)+sum(t1.c1+t4.c2+t5.c1+t5.c2-5*t9.c1) -NULL -select /*+ leading(t2, t1, t3, (t4, (t5, t6)), (t8, (t9, t7))) */ -count(*), sum(t1.c1+t5.c1+t6.c1-t7.c1-t8.c2*t9.c1) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 >= t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1 and t7.c1 = t8.c2 and t8.c2 = t9.c1 and t8.c1 <= t2.c1 and t1.c1 = t9.c1; -count(*) sum(t1.c1+t5.c1+t6.c1-t7.c1-t8.c2*t9.c1) -0 NULL -select /*+ leading(t2, (t1, t3), (t7, t8, t9), (t4, t5, t6)) */ -count(*), sum(t1.c1-t7.c2-t8.c1-t9.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; -count(*) sum(t1.c1-t7.c2-t8.c1-t9.c2) -0 NULL -select /*+ leading(t1, (t2 t3), (t4, t5 (t6, t7))) use_hash(t4, t5) use_hash(t6,t7) */ -count(*), sum(t1.c1-t5.c2+t6.c1) - max(t2.c1*t8.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; -count(*) sum(t1.c1-t5.c2+t6.c1) - max(t2.c1*t8.c2) -0 NULL -select /*+ leading(t2 (t7, t1 (t8, t9))) */ -count(*) , sum(t1.c1+t5.c1+t8.c2*t9.c1-t3.c1*4) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 -where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND -t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; -count(*) sum(t1.c1+t5.c1+t8.c2*t9.c1-t3.c1*4) -0 NULL -select /*+ leading(t1,t4,(t2,t3)) */ -count(*), sum(t1.c1)-sum(t4.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4 -where t1.c1 = t2.c1 and t3.c1 = t4.c1 and t1.c2 = t3.c2; -count(*) sum(t1.c1)-sum(t4.c2) -0 NULL -select /*+ LEADING(@x2x (c d), (a b)) */ -* from nn1 x -where exists (select /*+ qb_name(x2x) */ 1 -from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 -and c.c2 = d.d1) order by x.c1 asc, x.c2 asc, x.c3 desc; -c1 c2 c3 -select /*+ LEADING(@x2x (c d), (a b)) */ -* from nn1 x -where exists (select /*+ qb_name(x2x) LEADING(a c b d)*/ 1 -from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 -and c.c2 = d.d1) order by x.c1 desc, x.c2 asc, x.c3 desc; -c1 c2 c3 -select /*+ LEADING(@x3x b d (a c)) */ -* from nn1 x -where exists (select /*+ qb_name(x3x) */ 1 -from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 -and c.c2 = d.d1) order by x.c1 desc, x.c3 desc, x.c2 asc ; -c1 c2 c3 -select /*+ leading(t1,t2,(t4,t5))*/ count(*),min(t2.c1)+max(t5.d2) from nn1 t1, nn1 t2, nn2 t4, nn2 t5 -where t1.c1 = t2.c1 and -t4.d1 = t5.d1 AND -t1.c1 + t2.c1 = t4.d1 + t5.d2 ; -count(*) min(t2.c1)+max(t5.d2) -0 NULL -explain select /*+leading(t1 (t2 t3))*/* from t1,t3 where t1.a = t3.a and t1.b not in (select b from t2); -Query Plan -===================================================== -|ID|OPERATOR |NAME|EST. ROWS|COST | ------------------------------------------------------ -|0 |HASH JOIN | |960597 |2820926886| -|1 | NESTED-LOOP ANTI JOIN| |981 |2820256644| -|2 | TABLE SCAN |t1 |100000 |66272 | -|3 | MATERIAL | |100000 |80235 | -|4 | TABLE SCAN |t2 |100000 |61860 | -|5 | TABLE SCAN |t3 |100000 |66272 | -===================================================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), - equal_conds([t1.a = t3.a]), other_conds(nil) - 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), - conds([(T_OP_OR, t1.b = t2.b, (T_OP_IS, t1.b, NULL, 0), (T_OP_IS, t2.b, NULL, 0))]), nl_params_(nil) - 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), - access([t1.a], [t1.b], [t1.c]), partitions(p0) - 3 - output([t2.b]), filter(nil) - 4 - output([t2.b]), filter(nil), - access([t2.b]), partitions(p0) - 5 - output([t3.a], [t3.b], [t3.c]), filter(nil), - access([t3.a], [t3.b], [t3.c]), partitions(p0) - -explain select /*+leading(t2 t3 t1)*/* from t1,t3 where t1.a = t3.a and t1.b not in (select b from t2); -Query Plan -===================================================== -|ID|OPERATOR |NAME|EST. ROWS|COST | ------------------------------------------------------ -|0 |HASH JOIN | |960597 |2820926886| -|1 | NESTED-LOOP ANTI JOIN| |981 |2820256644| -|2 | TABLE SCAN |t1 |100000 |66272 | -|3 | MATERIAL | |100000 |80235 | -|4 | TABLE SCAN |t2 |100000 |61860 | -|5 | TABLE SCAN |t3 |100000 |66272 | -===================================================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), - equal_conds([t1.a = t3.a]), other_conds(nil) - 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), - conds([(T_OP_OR, t1.b = t2.b, (T_OP_IS, t1.b, NULL, 0), (T_OP_IS, t2.b, NULL, 0))]), nl_params_(nil) - 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), - access([t1.a], [t1.b], [t1.c]), partitions(p0) - 3 - output([t2.b]), filter(nil) - 4 - output([t2.b]), filter(nil), - access([t2.b]), partitions(p0) - 5 - output([t3.a], [t3.b], [t3.c]), filter(nil), - access([t3.a], [t3.b], [t3.c]), partitions(p0) - -explain select /*+leading(t3 t1 t2)*/* from t1,t3 where t1.a = t3.a and t1.b not in (select b from t2); -Query Plan -======================================================= -|ID|OPERATOR |NAME|EST. ROWS|COST | -------------------------------------------------------- -|0 |NESTED-LOOP ANTI JOIN| |960597 |2.764048e+12 | -|1 | HASH JOIN | |98010000 |58439627 | -|2 | TABLE SCAN |t3 |100000 |66272 | -|3 | TABLE SCAN |t1 |100000 |66272 | -|4 | MATERIAL | |100000 |80235 | -|5 | TABLE SCAN |t2 |100000 |61860 | -======================================================= - -Outputs & filters: -------------------------------------- - 0 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), - conds([(T_OP_OR, t1.b = t2.b, (T_OP_IS, t1.b, NULL, 0), (T_OP_IS, t2.b, NULL, 0))]), nl_params_(nil) - 1 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), - equal_conds([t1.a = t3.a]), other_conds(nil) - 2 - output([t3.a], [t3.b], [t3.c]), filter(nil), - access([t3.a], [t3.b], [t3.c]), partitions(p0) - 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), - access([t1.a], [t1.b], [t1.c]), partitions(p0) - 4 - output([t2.b]), filter(nil) - 5 - output([t2.b]), filter(nil), - access([t2.b]), partitions(p0) - -explain select /*+leading(t1 t2 t3)*/* from t1,t3 where t1.a = t3.a and t1.b not in (select b from t2); -Query Plan -===================================================== -|ID|OPERATOR |NAME|EST. ROWS|COST | ------------------------------------------------------ -|0 |HASH JOIN | |960597 |2820926886| -|1 | NESTED-LOOP ANTI JOIN| |981 |2820256644| -|2 | TABLE SCAN |t1 |100000 |66272 | -|3 | MATERIAL | |100000 |80235 | -|4 | TABLE SCAN |t2 |100000 |61860 | -|5 | TABLE SCAN |t3 |100000 |66272 | -===================================================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), - equal_conds([t1.a = t3.a]), other_conds(nil) - 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), - conds([(T_OP_OR, t1.b = t2.b, (T_OP_IS, t1.b, NULL, 0), (T_OP_IS, t2.b, NULL, 0))]), nl_params_(nil) - 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), - access([t1.a], [t1.b], [t1.c]), partitions(p0) - 3 - output([t2.b]), filter(nil) - 4 - output([t2.b]), filter(nil), - access([t2.b]), partitions(p0) - 5 - output([t3.a], [t3.b], [t3.c]), filter(nil), - access([t3.a], [t3.b], [t3.c]), partitions(p0) - -drop table nn1; -drop table nn2; -drop table t1; -drop table t2; -drop table t3; -drop database bushy_leading_hint_db; diff --git a/test/mysql_test/test_suite/optimizer/r/mysql/union_sort_opt.result b/test/mysql_test/test_suite/optimizer/r/mysql/union_sort_opt.result deleted file mode 100644 index 37cebb9bc..000000000 --- a/test/mysql_test/test_suite/optimizer/r/mysql/union_sort_opt.result +++ /dev/null @@ -1,550 +0,0 @@ -drop database if exists union_sort_opt_db; -create database union_sort_opt_db; -use union_sort_opt_db; -create table t4(c1 int primary key, c2 int, c3 int); -insert into t4 values(10,12,3),(4,5,6),(2,13,4),(3,4,25),(7,18,9); -commit; -create index idx_t4_c2c3 on t4(c2,c3); -### 1, 基本测试 表有PK ### -select* from (select * from t4 union select * from t4) as x order by 1,2,3; -c1 c2 c3 -2 13 4 -3 4 25 -4 5 6 -7 18 9 -10 12 3 -select * from t4 union select * from t4; -c1 c2 c3 -2 13 4 -3 4 25 -4 5 6 -7 18 9 -10 12 3 -#1.2 使用索引c2c3也ok -select /*+ index(t4 idx_t4_c2c3) */ * from t4 union -select /*+ index(t4 idx_t4_c2c3) */ * from t4 order by 1,2,3; -c1 c2 c3 -2 13 4 -3 4 25 -4 5 6 -7 18 9 -10 12 3 -#1.3 顺序一致, 原本就支持 -select /*+ index(t4 idx_t4_c2c3) */ c2,c3 from t4 union -select /*+ index(t4 idx_t4_c2c3) */ c2,c3 from t4 order by 2,1; -c2 c3 -12 3 -13 4 -5 6 -18 9 -4 25 -#1.4 顺序不一致, 修改后支持, 5 -select /*+ index(t4 idx_t4_c2c3) */ c3,c2 from t4 union -select /*+ index(t4 idx_t4_c2c3) */ c3,c2 from t4 order by 1,2; -c3 c2 -3 12 -4 13 -6 5 -9 18 -25 4 -#1.5 完全一致 -select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 union -select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 order by 1,2,3; -c2 c3 c1 -4 25 3 -5 6 4 -12 3 10 -13 4 2 -18 9 7 -#1.5.2 左匹配, 原本就支持 -select /*+ index(t4 idx_t4_c2c3) */ c2 from t4 union -select /*+ index(t4 idx_t4_c2c3) */ c2 from t4 order by 1; -c2 -4 -5 -12 -13 -18 -#1.5.3 不能优化 -select /*+ index(t4 idx_t4_c2c3) */ c3 from t4 union -select /*+ index(t4 idx_t4_c2c3) */ c3 from t4 order by 1; -c3 -3 -4 -6 -9 -25 -#1.5.4 不支持 -select /*+ index(t4 idx_t4_c2c3) */ c1 from t4 union -select /*+ index(t4 idx_t4_c2c3) */ c1 from t4 order by 1; -c1 -2 -3 -4 -7 -10 -#1.6 两侧不匹配不能优化, 都加sort 10 -select /*+ index(x idx_t4_c2c3) */ c3,c1,c2 from t4 x union -select /*+ index(y idx_t4_c2c3) */ c3,c2,c1 from t4 y order by 1,2,3; -c3 c1 c2 -3 10 12 -3 12 10 -4 2 13 -4 13 2 -6 4 5 -6 5 4 -9 7 18 -9 18 7 -25 3 4 -25 4 3 -#1.7 两侧不匹配不能优化, 单侧加sort -select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 union -select /*+ index(t4 idx_t4_c2c3) */ c3,c2,c1 from t4 order by 1,2,3; -c2 c3 c1 -3 12 10 -4 13 2 -4 25 3 -5 6 4 -6 5 4 -9 18 7 -12 3 10 -13 4 2 -18 9 7 -25 4 3 -### 2, 不包含PK的简单测试, 单key索引 ### -create table t5(c int, c2 int, c3 int); -insert into t5 values(1,2,3),(2,3,4),(0,1,2),(3,4,5),(0,2,3),(2,4,5); -create index idx_t5_c2 on t5(c2); -#2.1 不能优化 -select /*+ index(t5 idx_t5_c2) */ c2,c3 from t5 union -select /*+ index(t5 idx_t5_c2) */ c2,c3 from t5 order by 1,2; -c2 c3 -1 2 -2 3 -3 4 -4 5 -#2.2 原本就可优化 -select /*+ index(t5 idx_t5_c2) */ c2 from t5 union -select /*+ index(t5 idx_t5_c2) */ c2 from t5 order by 1; -c2 -1 -2 -3 -4 -### 3, 无PK, 数据有重复, 结果正确性验证1 -create table t6(c1 int, c2 int); -create index idx_t6_c1c2 on t6(c1,c2); -insert into t6 values(10,20),(10,30),(20,10),(20,5),(10,30),(40,5),(10,8),(10,20),(1,0),(0,1),(20,80),(10,5),(10,5),(30,20),(30,1),(30,5), -(10,20),(10,30),(20,10),(20,5),(10,30),(40,5),(10,8),(20,80),(10,5),(10,5),(30,20),(30,1),(1,0),(0,1),(0,0),(30,5); -#3.1 可以优化, 14 rows -select c1,c2 from t6 union select c1,c2 from t6 order by 1,2; -c1 c2 -0 0 -0 1 -1 0 -10 5 -10 8 -10 20 -10 30 -20 5 -20 10 -20 80 -30 1 -30 5 -30 20 -40 5 -#3.2 可以优化, 14 rows -select c2,c1 from t6 union select c2,c1 from t6 order by 1,2; -c2 c1 -0 0 -0 1 -1 0 -1 30 -5 10 -5 20 -5 30 -5 40 -8 10 -10 20 -20 10 -20 30 -30 10 -80 20 -#3.3 不能优化 23 rows -select c2,c1 from t6 union select c1,c2 from t6 order by 1,2; -c2 c1 -0 0 -0 1 -1 0 -1 30 -5 10 -5 20 -5 30 -5 40 -8 10 -10 5 -10 8 -10 20 -10 30 -20 5 -20 10 -20 30 -20 80 -30 1 -30 5 -30 10 -30 20 -40 5 -80 20 -#3.4 不能优化, 有计算列的情况, 23 rows, 14 -select c2,c1 from t6 union select 0+c1,c2 from t6 order by 1,2; -c2 c1 -0 0 -0 1 -1 0 -1 30 -5 10 -5 20 -5 30 -5 40 -8 10 -10 5 -10 8 -10 20 -10 30 -20 5 -20 10 -20 30 -20 80 -30 1 -30 5 -30 10 -30 20 -40 5 -80 20 -select c1,c2,c1,c2 from t6 union select 0+c1,c2,c1,c2 from t6 order by 1,2,3,4; -c1 c2 c1 c2 -0 0 0 0 -0 1 0 1 -1 0 1 0 -10 5 10 5 -10 8 10 8 -10 20 10 20 -10 30 10 30 -20 5 20 5 -20 10 20 10 -20 80 20 80 -30 1 30 1 -30 5 30 5 -30 20 30 20 -40 5 40 5 -#4 分区表的测试 -create table t7(c1 varchar(10), c2 decimal(10,2), c3 int, c4 int) partition by hash(c4) partitions 5; -insert into t7 values('11', 1.2, 1, 7),('22', 2.3, 2, 6),('33', 3.4, 3, 2), ('44', 4.5, 4, 10), ('55', 5.6, 5, 6), -('12', 1.244, 4, 22),('22', 2.3, 3, 13),('3', 3.4, 2, 0), ('44', 4.5, 4, 1), ('56', 56, 1, 6),('44', 4.5, 4, 10); -create index idx_t7_c2c1 on t7(c2,c1,c3) local; -#4.1 可以优化, 完全匹配, 9 rows -select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union -select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 where c2 < 10 order by 1,2,3; -c2 c1 c3 -1.20 11 1 -1.24 12 4 -2.30 22 2 -2.30 22 3 -3.40 3 2 -3.40 33 3 -4.50 44 4 -5.60 55 5 -56.00 56 1 -#4.2 可以优化, 后续有连接, 15 rows -select xx.c2,xx.c1 from -(select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union -select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 where c2 < 10) xx, -t7 yy where xx.c2 = yy.c2 order by 1,2; -c2 c1 -1.20 11 -1.24 12 -2.30 22 -2.30 22 -2.30 22 -2.30 22 -3.40 3 -3.40 3 -3.40 33 -3.40 33 -4.50 44 -4.50 44 -4.50 44 -5.60 55 -56.00 56 -#4.3 可以优化, 9 rows -select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union -select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 order by 1,2,3; -c2 c1 c3 -1.20 11 1 -1.24 12 4 -2.30 22 2 -2.30 22 3 -3.40 3 2 -3.40 33 3 -4.50 44 4 -5.60 55 5 -56.00 56 1 -select c1 from t7 union select c1 from t7 order by 1; -c1 -11 -12 -22 -3 -33 -44 -55 -56 -select /*+ index(t7 idx_t7_c2c1) */ c1,c2,c3 from t7 union -select /*+ index(t7 idx_t7_c2c1) */ c1,c2,c3 from t7 order by 1,2,3; -c1 c2 c3 -11 1.20 1 -12 1.24 4 -22 2.30 2 -22 2.30 3 -3 3.40 2 -33 3.40 3 -44 4.50 4 -55 5.60 5 -56 56.00 1 -#4.4 索引KEY升降序的测试, 目前此功能并不支持, 实际都是ASC -drop index idx_t7_c2c1 on t7; -create index idx_t7_c3c2c1 on t7(c3 asc,c2 asc,c1 asc) local; -create table t72(c1 varchar(10), c2 decimal(10,2), c3 int); -insert into t72 values('11', 1.2, 1),('22', 2.3, 2),('33', 3.4, 3), ('44', 4.5, 4), ('55', 5.6, 5), -('12', 1.244, 4),('22', 2.3, 3),('3', 3.4, 2), ('44', 4.5, 4), ('56', 56, 1),('44', 4.5, 4); -create index idx_t72_c3c2c1 on t72(c3 asc,c2 asc,c1 asc); -#4.4.1 两个表上索引升降序一致, 不一一对应但两侧分支匹配, 可以优化, 8 rows -select /*+ index(t7 idx_t7_c3c2c1) */ c1,c2,c3 from t7 where c3 < 5 union -select /*+ index(t72 idx_t72_c3c2c1) */ c1,c2,c3 from t72 where c3 < 5 order by 1,2,3; -c1 c2 c3 -11 1.20 1 -12 1.24 4 -22 2.30 2 -22 2.30 3 -3 3.40 2 -33 3.40 3 -44 4.50 4 -56 56.00 1 -#4.4.2 可以优化, 同上 -select /*+ index(t7 idx_t7_c3c2c1) */ c3,c2,c1 from t7 where c3 < 5 union -select /*+ index(t72 idx_t72_c3c2c1) */ c3,c2,c1 from t72 where c3 < 5 order by 1,2,3; -c3 c2 c1 -1 1.20 11 -1 56.00 56 -2 2.30 22 -2 3.40 3 -3 2.30 22 -3 3.40 33 -4 1.24 12 -4 4.50 44 -drop index idx_t72_c3c2c1 on t72; -create index idx_t72_c3c2c1 on t72(c3 asc,c2 asc,c1 asc); -#4.4.3 A,D不同, 但是实际存储一样, 所以也能优化, 8 rows -select /*+ index(t7 idx_t7_c3c2c1) */ c1,c2,c3 from t7 where c3 < 5 union -select /*+ index(t72 idx_t72_c3c2c1) */ c1,c2,c3 from t72 where c3 < 5 order by 1,2,3; -c1 c2 c3 -11 1.20 1 -12 1.24 4 -22 2.30 2 -22 2.30 3 -3 3.40 2 -33 3.40 3 -44 4.50 4 -56 56.00 1 -#4.4.4 同上, 也能优化 -select /*+ index(t7 idx_t7_c3c2c1) */ c3,c2,c1 from t7 where c3 < 5 union -select /*+ index(t72 idx_t72_c3c2c1) */ c3,c2,c1 from t72 where c3 < 5 order by 1,2,3; -c3 c2 c1 -1 1.20 11 -1 56.00 56 -2 2.30 22 -2 3.40 3 -3 2.30 22 -3 3.40 33 -4 1.24 12 -4 4.50 44 -#5 结果正确性测试2 -create table test1(c1 int, c2 int); -create table test2(d1 int, d2 int); -insert into test1 values(1,1),(1,2),(2,1),(2,2),(2,0),(1,3),(1,0),(3,0),(3,2),(3,1),(2,1); -insert into test2 values(1,1),(1,2),(2,1),(2,2),(2,0),(1,3),(1,0),(3,0),(3,2),(3,1),(2,1); -commit; -create index idx_test1_c1c2 on test1(c1 asc, c2 asc); -create index idx_test2_d1d2 on test2(d1 asc, d2 asc); -#5.1 最后加了排序, which can't be optimized... -select c2, c1 from test1 union select d2,d1 from test2 order by c2,c1; -c2 c1 -0 1 -0 2 -0 3 -1 1 -1 2 -1 3 -2 1 -2 2 -2 3 -3 1 -#5.2 最后的排序可以被优化 -select c2, c1 from test1 union select d2,d1 from test2 order by c1,c2; -c2 c1 -0 1 -1 1 -2 1 -3 1 -0 2 -1 2 -2 2 -0 3 -1 3 -2 3 -#5.3 最后的排序由于是逆序不能被优化掉 -select c2, c1 from test1 union select d2,d1 from test2 order by c1 desc,c2 desc; -c2 c1 -2 3 -1 3 -0 3 -2 2 -1 2 -0 2 -3 1 -2 1 -1 1 -0 1 -#5.4 整数的查询项, 6 rows, 10, 4 rows -select 1, c1 from test1 union select 2,d1 from test2 order by 1,2; -1 c1 -1 1 -1 2 -1 3 -2 1 -2 2 -2 3 -select 1, c2 from test1 union select d1,d2 from test2 order by 1,2; -1 c2 -1 0 -1 1 -1 2 -1 3 -2 0 -2 1 -2 2 -3 0 -3 1 -3 2 -select mod(c1,2),mod(c2,2) from test1 union select mod(d1,2),mod(d2,2) from test2 order by 1,2; -mod(c1,2) mod(c2,2) -0 0 -0 1 -1 0 -1 1 -#6 from mysqltest union1, simply recreate -create table x1(c1 int, c2 char(10), c3 int); -create table x2(d1 int, d2 char(10), d3 int, index ix2(d2, d3)); -insert into x1 values(1,'xx2',3),(2,'xxx3',4),(3,'aaa4',5); -insert into x2 values(11,'xx2',3),(2,'xx3',4),(3,'aaa4',5); -select c2, c3 from x1 union select /*+ index(x2 ix2) */ d2, d3 from x2 order by 1,2; -c2 c3 -aaa4 5 -xx2 3 -xx3 4 -xxx3 4 -select c3, c2 from x1 union select /*+ index(x2 ix2) */ d3, d2 from x2 order by 1,2; -c3 c2 -3 xx2 -4 xx3 -4 xxx3 -5 aaa4 -CREATE TABLE ts1 (c1 VARCHAR(10) NOT NULL, c2 INT NOT NULL); -CREATE TABLE ts2 (c1 VARCHAR(10) NOT NULL, c2 INT NOT NULL); -INSERT INTO ts1 (c1, c2) VALUES ('t1a', 1), ('t1a', 2), ('t1a', 3), ('t1b', 2), ('t1b', 1); -INSERT INTO ts2 (c1, c2) VALUES ('t2a', 1), ('t2a', 2), ('t2a', 3), ('t2b', 2), ('t2b', 1); -SELECT c1, c2 FROM ( -SELECT c1, c2 FROM ts1 -UNION -(SELECT c1, c2 FROM ts2 ORDER BY c2 DESC, c1 LIMIT 1) -) AS res order by 1,2; -c1 c2 -t1a 1 -t1a 2 -t1a 3 -t1b 1 -t1b 2 -t2a 3 -DROP TABLE IF EXISTS T1, T2, T3; -CREATE TABLE T1 (PK INT PRIMARY KEY, C1 INT, C2 INT); -CREATE TABLE T2 (PK INT PRIMARY KEY, C1 INT, C2 INT); -CREATE TABLE T3 (PK INT PRIMARY KEY, C1 INT, C2 INT); -SELECT C1, C2, PK FROM T1 ORDER BY PK DESC LIMIT 1 UNION (SELECT C1, C2, PK FROM T2 UNION SELECT C1, C2 ,PK FROM T3); -C1 C2 PK -5 4 2 -1 1 1 -1 1 2 -CREATE TABLE table2_bigint ( -col_decimal_20_0_signed decimal(20,0) signed, -col_decimal_20_0_unsigned decimal(20,0) unsigned, -col_char_20 char(20), -col_decimal_20_0 decimal(20,0), -pk bigint, -col_bigint bigint, -col_timestamp_6 timestamp(6) NULL DEFAULT NULL, -col_bigint_unsigned bigint unsigned, -col_bigint_signed bigint signed, -primary key (pk)); -CREATE TABLE table100_bigint ( -col_bigint_unsigned bigint unsigned, -col_decimal_20_0_unsigned decimal(20,0) unsigned, -col_bigint_signed bigint signed, -col_bigint bigint, -pk bigint, -col_decimal_20_0_signed decimal(20,0) signed, -col_timestamp_6 timestamp(6) NULL DEFAULT NULL, -col_char_20 char(20), -col_decimal_20_0 decimal(20,0), -/*Indices*/ -primary key (pk)) ; -SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk -FROM -( -(SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk -FROM table2_bigint -WHERE col_decimal_20_0_unsigned <> 99999 -ORDER BY pk DESC , 6 DESC , pk -LIMIT 1, -5) -UNION DISTINCT SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk -FROM ( -(SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk -FROM table100_bigint -WHERE col_decimal_20_0_signed = ROUND(SIGN(col_decimal_20_0)) -ORDER BY col_bigint_signed , 6 , col_decimal_20_0 , pk DESC LIMIT 7) -UNION DISTINCT -(SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk -FROM table2_bigint -WHERE SUBSTR('g', 1, LEAST(58, 20)) <> INSERT('lgeswk', 99, 8, TRIM(SUBSTRING(CONVERT(TRIM(SUBSTR(TRIM(SUBSTR(SUBSTRING('nlge', 1, LEAST(58, 20)), 1, 2) -FROM SUBSTRING('', 1, LEAST(58, 20))), 1, LEAST(58, 20))), CHAR(50)), 1, LEAST(58, 20)))) -ORDER BY 3 , -col_bigint_unsigned , -pk DESC)) TUT -ORDER BY col_bigint, -col_bigint_signed, -col_bigint_unsigned, -col_char_20, -col_decimal_20_0, -col_decimal_20_0_signed, -col_decimal_20_0_unsigned, -col_timestamp_6, -pk) TUT WHERE pk in (9727744 ,7826688 ,1657856 , 55039 , 50631) -ORDER BY col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk; -col_bigint col_bigint_signed col_bigint_unsigned col_char_20 col_decimal_20_0 col_decimal_20_0_signed col_decimal_20_0_unsigned col_timestamp_6 pk -NULL NULL NULL NULL NULL NULL 0 NULL 7826688 -NULL NULL NULL NULL NULL NULL 1 NULL 1657856 -NULL NULL NULL NULL NULL NULL 11753728 NULL 9727744 -NULL NULL NULL 0 NULL NULL 999999999 NULL 50631 -NULL NULL NULL nf NULL NULL 22222222 NULL 55039 -drop database union_sort_opt_db; diff --git a/test/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_select_list.result b/test/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_select_list.result deleted file mode 100644 index d21035cf47408894377a9bfa6c7b907ad4277fc7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5013 zcmdPbSFpnZ6hd5sLlgoMixP8FQxu%@^NLFpJo6NSQ*%<2OB8Id0IuZxygZPkLVi+l zWwDNmzmsodaG+1TZ?J(*VoGji9zrM}+(oA(wYUUH#6Kv+8fHXhejdaSYc3S$DTJgJ zmna)5I3*TmCM!567N-_-C8efk=Ar0JNli;E%_*_wDuy`LP)ET?N5NP}K|LciCnsNB zA+0DsS0SY|F~^$Akkg3Mm=i3H!iH)!)=@CgQ7{E*%|y{>%xS`D%9)YL1!w5%E2LHw zfc&44SrVU|Uz%53W>!E$r*`78b$`1 zAi?~+33lwaeMw}T&oCchRoQ9ZQs#HhvkTDJqf&7z!)kC1L zfY@h*+d~jLAl^Z>0`47{4d~u6(u8^kY&=(LB`D58o-yJy0;Mpl5eH2Ih}Z-toBZU| z#Jr@$;#9r#GL?dy#Ju?A#N>?BcrdfLB(X%HJR`LzRRP3I%}vcKQOL>6PE}Bcng)#@ zd!*p9#~xhvItuohItuovaSsxLgp@r}ysKMt!JWxv$d#O*o10l;&6QG=U!YKun3R*M zkeQ~CT9H{?Qmg>VcJU?FT$y>rsYN9UnRzAoP%(wF#GKO9Vg(ID9R*Ml(=dX#Qo~qB z!C2E8o{|%F6cRyh2AhH0CtsGUf#3FB47^SdznLH#jkX&4t=+1hLx~k}<$CIP5k8+ieWC z+XQ467szf?Q04~PZN_QJX-3}^g3X8EBm(va)Q9#EAKD}P5G@g4DL9Q3f=iPMOH+#~ zVZo^dF+c;FI-w;cL=aR!YC=m$NZE)(7o>1CLD2;&RZX}cB(9PXYAHPBLJXiVgQ58d zl#4)_2%HMRKEezpXzoufD#|ay;YCQm7(rYJHpZIEH7LkGNWsJ?*vQaI!KJhyCo?&* zBvm0fKc_S|Pa!WcHx*QT<1!GGUy==V6yW&>>_TuHmuOmZB^z=kg43oUIBgn1Bft=x zMxgT^iASu4hN@hq_99q)tYGW1uNUIByVE{ zXGqv*7DF2>!6ikRdFezn5umj)B7Uv8AZ-E&2@P;1Fi#;PwNeQ~B}f#a2h4)%P>;c4 zGDL_AO2JhcfK5kfWq?Jv7$6i}VGNj$q7Wj)1*PCBAr3}S2@&FgQgD@dU^8R#P}G9O zxVRwRf*1elF-2gBm?BKYyj;9sIbK+@SC1(H3&fOQD(2*ZG`u)LsSnWvg*5U^6#P=t zQ%f?-QXz2(Gf>x1M?u#}M?u#RL>lTs3wcnUwC2(^Keni#+9{mqEt}n1>!)O17KESu>#bGkP;9jw4pN4 z+zc*fK$=ji3@rK76cVEfVW8%QLV0FMhC)D5YFcIm5gFA<-N3-m5G5@^g}9huaqOgS zXkci7rUop;1y95-i6yD(Mh1pPx?qH&7+sDFp$=vROo=fb?Jzlzb|@RBJtQ+XRo&3Y z%D}+N0M((WGF&h<7#a<&3{XP>t`RH))(B!DYb-8F%q>9jw1T0L6&RuT9%K-1l_1YR z!wjySpdH3mhQ`F%0al4_2S^Z<0nv*HGlkH+%=|o<^@fNtS)mjp0ZY2jiV&28tho%i z47uQ?0g?==7L;^u#AU=~3~~S+O8{Jc!Ce}l=0@Zeoq{%~^J@ZbaTs84aiIDhn%BX7 zUo(VDAdNwgX`IOhNX-*)E05ER%a9Y)a5m%wHC8|@BTi7m8pJY2G~l771Y0ha1ZTWy$Mx3D5 z4~S*ViMs`ar2sQmNPvcRaY+%#*~KMA2?~jMDJbF~L0H;UPfSWy2dPv~M9Bz=T!~4^ zNQzQ$DN3PF`cs1X3*00_ajOz)7Za*ZK>^}36s6W+PbDTLC&GLNQkIgWuArWT>id)= zuEdn2B>MOb)&*Bkz@3R;txLQ;XRsuwro&N_LWaSR#;_7|N>YmyiYtptQgaoGQ%e+b i5{uGPzpG)Z&c%oD>CH1$9FMgWO_uYc2pP``Zfu diff --git a/test/mysql_test/test_suite/px/include/exam_data.inc b/test/mysql_test/test_suite/px/include/exam_data.inc deleted file mode 100644 index cd320d874..000000000 --- a/test/mysql_test/test_suite/px/include/exam_data.inc +++ /dev/null @@ -1,106 +0,0 @@ -set ob_query_timeout=1000000000; ---disable_warnings -drop database if exists px_test; ---enable_warnings -create database px_test; -use px_test; - -# 场景:一个年级 6 个班,修了2门课,英语和数学 - -create table stu ( - sid int, - name varchar(32), - cls int, - primary key (cls, sid) -) partition by hash(sid) partitions 6; - -create table teacher ( - tid int, - name varchar(32), - subject varchar(4), - primary key (tid) -) partition by hash(tid) partitions 8; - -create table score ( - sid int, - subject varchar(4), - score int, - primary key (sid, subject) -) partition by hash(sid) partitions 6; - -insert into stu values -(11, 'a1', 1), -(12, 'b1', 1), -(13, 'c1', 1), - -(21, 'a2', 2), -(22, 'b2', 2), - -(31, 'a3', 3), - -(41, 'a4', 4), -(42, 'b4', 4), - -(51, 'a5', 5), -(52, 'b5', 5), - -(61, 'a6', 6), -(62, 'b6', 6), -(63, 'c6', 6), -(64, 'd6', 6); - -insert into teacher values -(1, 'Miss Zhang', 'EN'), -(2, 'Mr Wang', 'MA'); - - -insert into score values -(11, 'EN', 60), -(12, 'EN', 70), -(13, 'EN', 80), - -(21, 'EN', 58), -(22, 'EN', 90), - -(31, 'EN', 80), - -(41, 'EN', 80), -(42, 'EN', 90), - -(51, 'EN', 89), -(52, 'EN', 99), - -(61, 'EN', 100), -(62, 'EN', 90), -(63, 'EN', 99), -(64, 'EN', 87); - - -insert into score values -(11, 'MA', 60), -(12, 'MA', 70), -(13, 'MA', 80), - -(21, 'MA', 58), -(22, 'MA', 90), - -(31, 'MA', 80), - -(41, 'MA', 80), -(42, 'MA', 90), - -(51, 'MA', 89), -(52, 'MA', 99), - -(61, 'MA', 100), -(62, 'MA', 90), -(63, 'MA', 99), -(64, 'MA', 87); - ---disable_query_log ---disable_result_log -select * from stu; -select * from teacher; -select * from score; ---enable_query_log ---enable_result_log diff --git a/test/mysql_test/test_suite/px/r/mysql/sql_audit.result b/test/mysql_test/test_suite/px/r/mysql/sql_audit.result deleted file mode 100644 index f7bd552ea..000000000 --- a/test/mysql_test/test_suite/px/r/mysql/sql_audit.result +++ /dev/null @@ -1,98 +0,0 @@ -set ob_query_timeout=1000000000; -drop database if exists px_test; -create database px_test; -use px_test; -create table stu ( -sid int, -name varchar(32), -cls int, -primary key (cls, sid) -) partition by hash(sid) partitions 6; -create table teacher ( -tid int, -name varchar(32), -subject varchar(4), -primary key (tid) -) partition by hash(tid) partitions 8; -create table score ( -sid int, -subject varchar(4), -score int, -primary key (sid, subject) -) partition by hash(sid) partitions 6; -insert into stu values -(11, 'a1', 1), -(12, 'b1', 1), -(13, 'c1', 1), -(21, 'a2', 2), -(22, 'b2', 2), -(31, 'a3', 3), -(41, 'a4', 4), -(42, 'b4', 4), -(51, 'a5', 5), -(52, 'b5', 5), -(61, 'a6', 6), -(62, 'b6', 6), -(63, 'c6', 6), -(64, 'd6', 6); -insert into teacher values -(1, 'Miss Zhang', 'EN'), -(2, 'Mr Wang', 'MA'); -insert into score values -(11, 'EN', 60), -(12, 'EN', 70), -(13, 'EN', 80), -(21, 'EN', 58), -(22, 'EN', 90), -(31, 'EN', 80), -(41, 'EN', 80), -(42, 'EN', 90), -(51, 'EN', 89), -(52, 'EN', 99), -(61, 'EN', 100), -(62, 'EN', 90), -(63, 'EN', 99), -(64, 'EN', 87); -insert into score values -(11, 'MA', 60), -(12, 'MA', 70), -(13, 'MA', 80), -(21, 'MA', 58), -(22, 'MA', 90), -(31, 'MA', 80), -(41, 'MA', 80), -(42, 'MA', 90), -(51, 'MA', 89), -(52, 'MA', 99), -(61, 'MA', 100), -(62, 'MA', 90), -(63, 'MA', 99), -(64, 'MA', 87); -connect obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys; -alter system set enable_sql_audit = true; -alter system flush sql audit global; -disconnect obsys; -connection default; -select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ * from teacher; -select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ * from teacher; -select /*+ TEST_SQL_AUDIT USE_PX parallel(4) */ * from teacher; -select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ subject, avg(score), max(score), min(score) from score group by subject; -select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject; -select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject; -select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ subject, avg(score), max(score), min(score) from score group by subject; -select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject; -select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject; -connect obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys; -select query_sql, EXPECTED_WORKER_COUNT, USED_WORKER_COUNT from oceanbase.gv$sql_audit where EXPECTED_WORKER_COUNT > 0 AND query_sql like '%TEST_SQL_AUDIT%' order by request_time desc limit 10; -query_sql EXPECTED_WORKER_COUNT USED_WORKER_COUNT -select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ * from teacher 2 2 -select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject 4 4 -select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject 4 4 -select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ subject, avg(score), max(score), min(score) from score group by subject 4 4 -select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ * from teacher 3 3 -select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject 6 6 -select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject 6 6 -select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ subject, avg(score), max(score), min(score) from score group by subject 6 6 -select /*+ TEST_SQL_AUDIT USE_PX parallel(4) */ * from teacher 4 4 diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/explicit_cast.result b/test/mysql_test/test_suite/static_engine/r/mysql/explicit_cast.result deleted file mode 100644 index 241dad1fe..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/explicit_cast.result +++ /dev/null @@ -1,261 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; -drop database if exists shaoge; -drop table if exists t1; -create database shaoge; -use shaoge; -create table t1(col_float float, col_char char(100), col_text text); -insert into t1 values (1.1, '1.1', '1.1'); -insert into t1 values (1.9, '1.9', '1.9'); -insert into t1 values (2.1, '2.1', '2.1'); -insert into t1 values (2.9, '2.9', '2.9'); -insert into t1 values (9223372036854775807, '9223372036854775807', '9223372036854775807'); -insert into t1 values (9223372036854775807.5, '9223372036854775807.5', '9223372036854775807.5'); -insert into t1 values (9223372036854775806.5, '9223372036854775806.5', '9223372036854775806.5'); -insert into t1 values (null, '1234567890123456789012345678901234567890.5', '1234567890123456789012345678901234567890.5'); -insert into t1 values (-1.1, '-1.1', '-1.1'); -insert into t1 values (-1.9, '-1.9', '-1.9'); -insert into t1 values (-2.1, '-2.1', '-2.1'); -insert into t1 values (-2.9, '-2.9', '-2.9'); -insert into t1 values (-9223372036854775807, '-9223372036854775808', '-9223372036854775808'); -insert into t1 values (-9223372036854775807.5, '-9223372036854775807.5', '-9223372036854775807.5'); -insert into t1 values (-9223372036854775806.5, '-9223372036854775806.5', '-9223372036854775806.5'); -insert into t1 values (null, '-1234567890123456789012345678901234567890.5', '-1234567890123456789012345678901234567890.5'); -create table tbl_check_zerofill(col_zf int(3) zerofill, col_no_zf int(3)); -insert into tbl_check_zerofill values(1, 1); -// sql engine 3.0 test -// string->int/uint will trunc -// otherwise will round -select col_float, cast(col_float as signed) from t1; -col_float cast(col_float as signed) -1.1 1 -1.9 2 -2.1 2 -2.9 3 -9.22337e18 -9223372036854775808 -9.22337e18 -9223372036854775808 -9.22337e18 -9223372036854775808 -NULL NULL --1.1 -1 --1.9 -2 --2.1 -2 --2.9 -3 --9.22337e18 -9223372036854775808 --9.22337e18 -9223372036854775808 --9.22337e18 -9223372036854775808 -NULL NULL -select col_char, cast(col_char as signed) from t1; -col_char cast(col_char as signed) -1.1 1 -1.9 1 -2.1 2 -2.9 2 -9223372036854775807 9223372036854775807 -9223372036854775807.5 9223372036854775807 -9223372036854775806.5 9223372036854775806 -1234567890123456789012345678901234567890.5 9223372036854775807 --1.1 -1 --1.9 -1 --2.1 -2 --2.9 -2 --9223372036854775808 -9223372036854775808 --9223372036854775807.5 -9223372036854775807 --9223372036854775806.5 -9223372036854775806 --1234567890123456789012345678901234567890.5 -9223372036854775808 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '1.1' -Warning 1292 Truncated incorrect INTEGER value: '1.9' -Warning 1292 Truncated incorrect INTEGER value: '2.1' -Warning 1292 Truncated incorrect INTEGER value: '2.9' -Warning 1292 Truncated incorrect INTEGER value: '9223372036854775807.5' -Warning 1292 Truncated incorrect INTEGER value: '9223372036854775806.5' -Warning 1292 Truncated incorrect INTEGER value: '-1.1' -Warning 1292 Truncated incorrect INTEGER value: '-1.9' -Warning 1292 Truncated incorrect INTEGER value: '-2.1' -Warning 1292 Truncated incorrect INTEGER value: '-2.9' -Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775807.5' -Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775806.5' -select col_text, cast(col_text as signed) from t1; -col_text cast(col_text as signed) -1.1 1 -1.9 1 -2.1 2 -2.9 2 -9223372036854775807 9223372036854775807 -9223372036854775807.5 9223372036854775807 -9223372036854775806.5 9223372036854775806 -1234567890123456789012345678901234567890.5 9223372036854775807 --1.1 -1 --1.9 -1 --2.1 -2 --2.9 -2 --9223372036854775808 -9223372036854775808 --9223372036854775807.5 -9223372036854775807 --9223372036854775806.5 -9223372036854775806 --1234567890123456789012345678901234567890.5 -9223372036854775808 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '1.1' -Warning 1292 Truncated incorrect INTEGER value: '1.9' -Warning 1292 Truncated incorrect INTEGER value: '2.1' -Warning 1292 Truncated incorrect INTEGER value: '2.9' -Warning 1292 Truncated incorrect INTEGER value: '9223372036854775807.5' -Warning 1292 Truncated incorrect INTEGER value: '9223372036854775806.5' -Warning 1292 Truncated incorrect INTEGER value: '-1.1' -Warning 1292 Truncated incorrect INTEGER value: '-1.9' -Warning 1292 Truncated incorrect INTEGER value: '-2.1' -Warning 1292 Truncated incorrect INTEGER value: '-2.9' -Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775807.5' -Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775806.5' -select col_float, cast(col_float as unsigned) from t1; -col_float cast(col_float as unsigned) -1.1 1 -1.9 2 -2.1 2 -2.9 3 -9.22337e18 9223372036854775808 -9.22337e18 9223372036854775808 -9.22337e18 9223372036854775808 -NULL NULL --1.1 18446744073709551615 --1.9 18446744073709551614 --2.1 18446744073709551614 --2.9 18446744073709551613 --9.22337e18 9223372036854775808 --9.22337e18 9223372036854775808 --9.22337e18 9223372036854775808 -NULL NULL -select col_char, cast(col_char as unsigned) from t1; -col_char cast(col_char as unsigned) -1.1 1 -1.9 1 -2.1 2 -2.9 2 -9223372036854775807 9223372036854775807 -9223372036854775807.5 9223372036854775807 -9223372036854775806.5 9223372036854775806 -1234567890123456789012345678901234567890.5 18446744073709551615 --1.1 18446744073709551615 --1.9 18446744073709551615 --2.1 18446744073709551614 --2.9 18446744073709551614 --9223372036854775808 9223372036854775808 --9223372036854775807.5 9223372036854775809 --9223372036854775806.5 9223372036854775810 --1234567890123456789012345678901234567890.5 18446744073709551615 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '1.1' -Warning 1292 Truncated incorrect INTEGER value: '1.9' -Warning 1292 Truncated incorrect INTEGER value: '2.1' -Warning 1292 Truncated incorrect INTEGER value: '2.9' -Warning 1292 Truncated incorrect INTEGER value: '9223372036854775807.5' -Warning 1292 Truncated incorrect INTEGER value: '9223372036854775806.5' -Warning 1292 Truncated incorrect INTEGER value: '1234567890123456789012345678901234567890.5' -Warning 1292 Truncated incorrect INTEGER value: '-1.1' -Warning 1292 Truncated incorrect INTEGER value: '-1.9' -Warning 1292 Truncated incorrect INTEGER value: '-2.1' -Warning 1292 Truncated incorrect INTEGER value: '-2.9' -Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775807.5' -Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775806.5' -Warning 1292 Truncated incorrect INTEGER value: '-1234567890123456789012345678901234567890.5' -select col_text, cast(col_text as unsigned) from t1; -col_text cast(col_text as unsigned) -1.1 1 -1.9 1 -2.1 2 -2.9 2 -9223372036854775807 9223372036854775807 -9223372036854775807.5 9223372036854775807 -9223372036854775806.5 9223372036854775806 -1234567890123456789012345678901234567890.5 18446744073709551615 --1.1 18446744073709551615 --1.9 18446744073709551615 --2.1 18446744073709551614 --2.9 18446744073709551614 --9223372036854775808 9223372036854775808 --9223372036854775807.5 9223372036854775809 --9223372036854775806.5 9223372036854775810 --1234567890123456789012345678901234567890.5 18446744073709551615 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '1.1' -Warning 1292 Truncated incorrect INTEGER value: '1.9' -Warning 1292 Truncated incorrect INTEGER value: '2.1' -Warning 1292 Truncated incorrect INTEGER value: '2.9' -Warning 1292 Truncated incorrect INTEGER value: '9223372036854775807.5' -Warning 1292 Truncated incorrect INTEGER value: '9223372036854775806.5' -Warning 1292 Truncated incorrect INTEGER value: '1234567890123456789012345678901234567890.5' -Warning 1292 Truncated incorrect INTEGER value: '-1.1' -Warning 1292 Truncated incorrect INTEGER value: '-1.9' -Warning 1292 Truncated incorrect INTEGER value: '-2.1' -Warning 1292 Truncated incorrect INTEGER value: '-2.9' -Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775807.5' -Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775806.5' -Warning 1292 Truncated incorrect INTEGER value: '-1234567890123456789012345678901234567890.5' -// 测试zerofill -// 应该有warning: Truncated incorrect CHAR(1) value: '001' -select cast(col_zf as char(1)) from tbl_check_zerofill; -cast(col_zf as char(1)) -0 -select cast(col_zf as char(2)) from tbl_check_zerofill; -cast(col_zf as char(2)) -00 -select cast(col_zf as char(3)) from tbl_check_zerofill; -cast(col_zf as char(3)) -001 -select cast(col_zf as char(4)) from tbl_check_zerofill; -cast(col_zf as char(4)) -001 -select cast(col_no_zf as char(1)) from tbl_check_zerofill; -cast(col_no_zf as char(1)) -1 -select cast(col_no_zf as char(1)) from tbl_check_zerofill; -cast(col_no_zf as char(1)) -1 -select cast(col_no_zf as char(2)) from tbl_check_zerofill; -cast(col_no_zf as char(2)) -1 -select cast(col_no_zf as char(3)) from tbl_check_zerofill; -cast(col_no_zf as char(3)) -1 -select cast(col_no_zf as char(4)) from tbl_check_zerofill; -cast(col_no_zf as char(4)) -1 -drop table t1; -create table t1(c1 varchar(3)); -insert into t1 values('abc'); -select cast(c1 as char(10)), concat(c1, '123') from t1; -cast(c1 as char(10)) concat(c1, '123') -abc abc123 -select cast(c1 as char(1)), concat(c1, '123') from t1; -cast(c1 as char(1)) concat(c1, '123') -a abc123 -select concat(cast(c1 as char(10)), '123') from t1; -concat(cast(c1 as char(10)), '123') -abc123 -select concat(cast(c1 as char(1)), '123') from t1; -concat(cast(c1 as char(1)), '123') -a123 -drop table t1; -create table t1(c1 decimal(10, 3)); -insert into t1 values(1.123); -select cast(c1 as decimal(10,1)), concat(c1, 'abc') from t1; -cast(c1 as decimal(10,1)) concat(c1, 'abc') -1.1 1.123abc -select c1, cast(c1 as binary(10)), hex(cast(c1 as binary(10))) from t1; -c1 cast(c1 as binary(10)) hex(cast(c1 as binary(10))) -1.123 1.123 312E3132330000000000 -drop table t1; -create table t1(c1 time(6)); -insert into t1 values('11:11:11.123456'); -select cast(c1 as time), concat(c1, 'abc') from t1; -cast(c1 as time) concat(c1, 'abc') -11:11:11 11:11:11.123456abc -drop table t1; -create table t1(c1 bigint unsigned); -insert into t1 values(18446744073709551615); -select cast(c1 as signed) from t1; -cast(c1 as signed) --1 -select c1, cast(c1 as binary(30)), hex(cast(c1 as binary(30))) from t1; -c1 cast(c1 as binary(30)) hex(cast(c1 as binary(30))) -18446744073709551615 18446744073709551615 313834343637343430373337303935353136313500000000000000000000 -drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_and_or.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_and_or.result deleted file mode 100644 index 2bb6b3776..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_and_or.result +++ /dev/null @@ -1,314 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set ob_enable_plan_cache = 0; -drop table if exists t1; -create table t1(col_int int, -col_zero int, -col_null int, -col_varchar varchar(100), -col_varchar_num varchar(100), -col_empty_str varchar(100), -col_varchar_zero varchar(100)); -insert into t1 values(1, 0, null, 'abc', '1', '', '0'); -// Case1: normal test -// Case1.1: int test -// bool expr exists, no cast expr, res is NULL -select col_int and col_null from t1; -col_int and col_null -NULL -// same as above -select col_null and col_int from t1; -col_null and col_int -NULL -// bool expr exists for col_varchar, cast expr exists, res is 0 -select col_int and col_varchar from t1; -col_int and col_varchar -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'abc' -// same as above -select col_varchar and col_int from t1; -col_varchar and col_int -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'abc' -// bool expr and cast expr exists for col_varchar_num, res is 0 -select col_int and col_varchar_num from t1; -col_int and col_varchar_num -1 -// same as above -select col_varchar_num and col_int from t1; -col_varchar_num and col_int -1 -// bool expr exists, no cast expr, res is 0 -select col_int and 0 from t1; -col_int and 0 -0 -// same as above -select 0 and col_int from t1; -0 and col_int -0 -// Case1.1: null test -// bool expr exists, no cast expr, res is NULL -select col_null and col_null from t1; -col_null and col_null -NULL -// bool expr and cast expr exists for col_varchar_num, res is NULL -select col_null and col_varchar_num from t1; -col_null and col_varchar_num -NULL -// same as above -select col_varchar_num and col_null from t1; -col_varchar_num and col_null -NULL -// bool expr and cast expr exists for col_varchar_num, res is 0 -select col_null and col_varchar from t1; -col_null and col_varchar -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'abc' -// same as above -select col_varchar and col_null from t1; -col_varchar and col_null -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'abc' -// same as above -select col_null and 0 from t1; -col_null and 0 -0 -// Case1.2: 0 test -// bool expr exists, no cast expr, res is 0 -select col_varchar_num and 0 from t1; -col_varchar_num and 0 -0 -// same as above -select col_varchar_num and 0 from t1; -col_varchar_num and 0 -0 -// Case1.3: empty str test -// bool expr and cast expr exists for empty str, res is 0 -select col_int and '' from t1; -col_int and '' -0 -// same as above -select '' and col_int from t1; -'' and col_int -0 -// bool expr and cast expr exists for empty str and col_varchar, res is 0 -select col_varchar and '' from t1; -col_varchar and '' -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'abc' -// same as above -select '' and col_varchar from t1; -'' and col_varchar -0 -// bool expr and cast expr exists for empty str and col_varchar_num, res is 0 -select col_varchar_num and '' from t1; -col_varchar_num and '' -0 -// same as above -select '' and col_varchar_num from t1; -'' and col_varchar_num -0 -// Case2: create table as test. 因为select/explain语句对应的cast mode -// 有WARN_ON_FAIL。其他的没有,所以结果是有区别的 -// TODO: 目前没法测试,建表语句还不完善 -// Case3: or test -// Case3.1 normal test -// bool expr exists, res is 1 -select col_int or col_int from t1; -col_int or col_int -1 -// bool expr exists, res is 0 -select col_zero or col_zero from t1; -col_zero or col_zero -0 -// bool expr exists, cast expr exists res is 0 -select col_varchar_zero or col_varchar_zero from t1; -col_varchar_zero or col_varchar_zero -0 -// Case3.2 null test -// bool expr exists, res is NULL -select col_null or col_null from t1; -col_null or col_null -NULL -// bool expr exists, res is 1 -select col_int or col_null from t1; -col_int or col_null -1 -// same as above -select col_null or col_int from t1; -col_null or col_int -1 -// bool expr exists, res is NULL -select col_zero or col_null from t1; -col_zero or col_null -NULL -// same as above -select col_null or col_zero from t1; -col_null or col_zero -NULL -// bool expr exists, res is 1 -select col_varchar_num or col_null from t1; -col_varchar_num or col_null -1 -// same as above -select col_null or col_varchar_num from t1; -col_null or col_varchar_num -1 -// bool expr exists, res is NULL -select col_varchar_zero or col_null from t1; -col_varchar_zero or col_null -NULL -// same as above -select col_null or col_varchar_zero from t1; -col_null or col_varchar_zero -NULL -// Case3.3 empty str test -// bool expr exists, res is NULL -select col_null or '' from t1; -col_null or '' -NULL -// same as above -select '' or col_null from t1; -'' or col_null -NULL -// bool expr exists, res is 1 -select col_int or '' from t1; -col_int or '' -1 -// same as above -select '' or col_int from t1; -'' or col_int -1 -// bool expr exists, res is 0 -select col_zero or '' from t1; -col_zero or '' -0 -// same as above -select '' or col_zero from t1; -'' or col_zero -0 -// res is 0 -select col_empty_str or '' from t1; -col_empty_str or '' -0 -// Case4: multi and test -// res is 1 -select 1 and 2 and 3 and col_int from t1; -1 and 2 and 3 and col_int -1 -// res is NULL -select 1 and col_null and 3 and col_int from t1; -1 and col_null and 3 and col_int -NULL -// res is 0 -select 1 and col_null and 3 and col_zero from t1; -1 and col_null and 3 and col_zero -0 -// res is 0 -select 1 and col_null and 3 and col_empty_str from t1; -1 and col_null and 3 and col_empty_str -0 -// Case5: multi or test -// res is 1 -select 1 or 2 or col_int from t1; -1 or 2 or col_int -1 -// res is NULL -select 1 or 2 or col_null from t1; -1 or 2 or col_null -1 -// res is 0 -select '' or 0 or col_null from t1; -'' or 0 or col_null -NULL -// Case6: 0, 1, null三个值组合测试,结果跟不开新引擎的结果进行对比 -drop table if exists t1; -create table t1 (c1 int, c2 int, c3 int, -c4 float, c5 float, c6 float, -c7 double, c8 double, c9 double, -c10 decimal, c11 decimal, c12 decimal, -c13 datetime, c14 datetime, c15 datetime, -c16 timestamp, c17 timestamp, c18 timestamp, -c19 date, c20 date, c21 date, -c22 varchar(10), c23 varchar(10), c24 varchar(10), -c25 char(11), c26 char(11), c27 char(12), -c28 char(10), c29 char(10), c30 char(10)); -insert into t1 values(0, 1, null, -0.0, 1.0, null, -0.0, 1.0, null, -0.0, 1.0, null, -0, '2019-01-01 00:00:00', null, -0, '2019-01-01 00:00:00', null, -0, '2019-01-01', null, -'0', '123', null, -'0', '123', null, -'0', 'abc', null); -set @@ob_enable_plan_cache = 0; -select c1, c1, c1 and c1 from t1; -c1 c1 c1 and c1 -0 0 0 -select c1, c1, c1 or c1 from t1; -c1 c1 c1 or c1 -0 0 0 -select c1, c2, c1 and c2 from t1; -c1 c2 c1 and c2 -0 1 0 -select c1, c2, c1 or c2 from t1; -c1 c2 c1 or c2 -0 1 1 -select c1, c3, c1 and c3 from t1; -c1 c3 c1 and c3 -0 NULL 0 -select c1, c3, c1 or c3 from t1; -c1 c3 c1 or c3 -0 NULL NULL -select c2, c1, c2 and c1 from t1; -c2 c1 c2 and c1 -1 0 0 -select c2, c1, c2 or c1 from t1; -c2 c1 c2 or c1 -1 0 1 -select c2, c2, c2 and c2 from t1; -c2 c2 c2 and c2 -1 1 1 -select c2, c2, c2 or c2 from t1; -c2 c2 c2 or c2 -1 1 1 -select c2, c3, c2 and c3 from t1; -c2 c3 c2 and c3 -1 NULL NULL -select c2, c3, c2 or c3 from t1; -c2 c3 c2 or c3 -1 NULL 1 -select c3, c1, c3 and c1 from t1; -c3 c1 c3 and c1 -NULL 0 0 -select c3, c1, c3 or c1 from t1; -c3 c1 c3 or c1 -NULL 0 NULL -select c3, c2, c3 and c2 from t1; -c3 c2 c3 and c2 -NULL 1 NULL -select c3, c2, c3 or c2 from t1; -c3 c2 c3 or c2 -NULL 1 1 -select c3, c3, c3 and c3 from t1; -c3 c3 c3 and c3 -NULL NULL NULL -select c3, c3, c3 or c3 from t1; -c3 c3 c3 or c3 -NULL NULL NULL -drop table t1; -CREATE TABLE t1(c0 VARCHAR(500), c1 DECIMAL); -insert into t1 values('', 123); -SELECT ALL t1.c0 AS ref0 FROM t1 WHERE (NULL AND ( CAST(COALESCE(t1.c0, EXISTS (SELECT 1)) AS SIGNED) IS NOT NULL)) IS NULL; -ref0 - -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '' -drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_assign.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_assign.result deleted file mode 100644 index 50ca7f6ff..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_assign.result +++ /dev/null @@ -1,183 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30)); -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5'); -select @var1, @var2; -@var1 @var2 -NULL NULL -select @var2_1 := @var1_1 := c1 from t1; -@var2_1 := @var1_1 := c1 -1 -select @var1_1, @var2_1; -@var1_1 @var2_1 -1 1 -select @var2_2 := @var1_2 := c2 from t1; -@var2_2 := @var1_2 := c2 -2 -select @var1_2, @var2_2; -@var1_2 @var2_2 -2 2 -select @var2_3 := @var1_3 := c3 from t1; -@var2_3 := @var1_3 := c3 -1 -select @var1_3, @var2_3; -@var1_3 @var2_3 -1 1 -select @var2_4 := @var1_4 := c4 from t1; -@var2_4 := @var1_4 := c4 -2 -select @var1_4, @var2_4; -@var1_4 @var2_4 -2 2 -select @var2_5 := @var1_5 := c5 from t1; -@var2_5 := @var1_5 := c5 -1 -select @var1_5, @var2_5; -@var1_5 @var2_5 -1 1 -select @var2_6 := @var1_6 := c6 from t1; -@var2_6 := @var1_6 := c6 -2 -select @var1_6, @var2_6; -@var1_6 @var2_6 -2 2 -select @var2_7 := @var1_7 := c7 from t1; -@var2_7 := @var1_7 := c7 -1 -select @var1_7, @var2_7; -@var1_7 @var2_7 -1 1 -select @var2_8 := @var1_8 := c8 from t1; -@var2_8 := @var1_8 := c8 -2 -select @var1_8, @var2_8; -@var1_8 @var2_8 -2 2 -select @var2_9 := @var1_9 := c9 from t1; -@var2_9 := @var1_9 := c9 -1 -select @var1_9, @var2_9; -@var1_9 @var2_9 -1 1 -select @var2_10 := @var1_10 := c10 from t1; -@var2_10 := @var1_10 := c10 -2 -select @var1_10, @var2_10; -@var1_10 @var2_10 -2 2 -select @var2_11 := @var1_11 := c11 from t1; -@var2_11 := @var1_11 := c11 -1 -select @var1_11, @var2_11; -@var1_11 @var2_11 -1 1 -select @var2_12 := @var1_12 := c12 from t1; -@var2_12 := @var1_12 := c12 -2 -select @var1_12, @var2_12; -@var1_12 @var2_12 -2 2 -select @var2_13 := @var1_13 := c13 from t1; -@var2_13 := @var1_13 := c13 -3.5 -select @var1_13, @var2_13; -@var1_13 @var2_13 -3.5 3.5 -select @var2_14 := @var1_14 := c14 from t1; -@var2_14 := @var1_14 := c14 -4.5 -select @var1_14, @var2_14; -@var1_14 @var2_14 -4.5 4.5 -select @var2_15 := @var1_15 := c15 from t1; -@var2_15 := @var1_15 := c15 -5.5 -select @var1_15, @var2_15; -@var1_15 @var2_15 -5.5 5.5 -select @var2_16 := @var1_16 := c16 from t1; -@var2_16 := @var1_16 := c16 -6.5 -select @var1_16, @var2_16; -@var1_16 @var2_16 -6.5 6.5 -select @var2_17 := @var1_17 := c17 from t1; -@var2_17 := @var1_17 := c17 -8 -select @var1_17, @var2_17; -@var1_17 @var2_17 -8 8 -select @var2_18 := @var1_18 := c18 from t1; -@var2_18 := @var1_18 := c18 -9 -select @var1_18, @var2_18; -@var1_18 @var2_18 -9 9 -select @var2_19 := @var1_19 := c19 from t1; -@var2_19 := @var1_19 := c19 -2019-12-01 12:00:00 -select @var1_19, @var2_19; -@var1_19 @var2_19 -2019-12-01 12:00:00 2019-12-01 12:00:00 -select @var2_20 := @var1_20 := c20 from t1; -@var2_20 := @var1_20 := c20 -2019-12-03 06:00:00 -select @var1_20, @var2_20; -@var1_20 @var2_20 -2019-12-03 06:00:00 2019-12-03 06:00:00 -select @var2_21 := @var1_21 := c21 from t1; -@var2_21 := @var1_21 := c21 -9.5 -select @var1_21, @var2_21; -@var1_21 @var2_21 -9.5 9.5 -select @var2_22 := @var1_22 := c22 from t1; -@var2_22 := @var1_22 := c22 -10.5 -select @var1_22, @var2_22; -@var1_22 @var2_22 -10.5 10.5 -set @a = 1; -select @a := @someval; -@a := @someval -NULL -select @a; -@a -NULL -drop view if exists vv; -create view vv as select @a; -desc vv; -Field Type Null Key Default Extra -@a varbinary(1048576) NO -select @a := null; -@a := null -NULL -select @a; -@a -NULL -drop view if exists vv; -create view vv as select @a; -desc vv; -Field Type Null Key Default Extra -@a varbinary(1048576) NO diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_bool.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_bool.result deleted file mode 100644 index c9efe3a76..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_bool.result +++ /dev/null @@ -1,3922 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -drop table if exists t1, t2; -create table t1 ( -col_tinyint tinyint, -col_smallint smallint, -col_mediumint tinyint, -col_int int, -col_bigint bigint, -col_float float, -col_double double, -col_decimal decimal, -col_utinyint tinyint unsigned, -col_usmallint smallint unsigned, -col_umediumint tinyint unsigned, -col_uint int unsigned, -col_ubigint bigint unsigned, -col_ufloat float unsigned, -col_udouble double unsigned, -col_udecimal decimal unsigned, -col_char char(100), -col_varchar varchar(100), -col_blob blob, -col_text text, -col_date date, -col_datetime datetime, -col_timestamp timestamp, -col_year year, -col_time time, -col_bit bit -); -insert into t1 values( --1, --2, --3, --4, --5, --1.0, --2.0, --111.11, -0, -0, -0, -0, -0, -1.0, -2.0, -111.11, -'0', -'varchar type', -'blob type', -'text type', -'2019-01-01', -'2019-01-01 00:00:00', -'2019-01-01 00:00:00', -'1997', -'00:12:12', -b'001' -); -create table t2 (c1 int); -insert into t2 values(1); -// Case1: AND/OR测试 -set ob_enable_plan_cache = 0; -// 两个col_int上面应该有bool expr -select col_int and col_int from t1; -col_int and col_int -1 -// 两个col_xxx上面都应该有bool expr,col_varchar上面应该有cast,转换为decimal -select col_int and col_varchar from t1; -col_int and col_varchar -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'varchar type' -// 两个col_int上面应该有bool expr -select col_int or col_int from t1; -col_int or col_int -1 -// 两个col_xxx上面都应该有bool expr,col_varchar上面应该有cast,转换为decimal -select col_int or col_varchar from t1; -col_int or col_varchar -1 -// 两个col_uint上面应该有bool expr, 结果为0 -select 1 and col_uint from t1; -1 and col_uint -0 -// 两个col_xxx上面都应该有bool expr,col_char上面应该有cast,转换为decimal, 结果为0 -select 1 and col_char from t1; -1 and col_char -0 -// 两个col_uint上面应该有bool expr, 结果为0 -select col_uint or col_uint from t1; -col_uint or col_uint -0 -// 两个col_xxx上面都应该有bool expr,col_char上面应该有cast,转换为decimal, 结果为0 -select col_uint or col_char from t1; -col_uint or col_char -0 -// 两个col_uint上面应该有bool expr, 结果为1 -select col_uint or 1 from t1; -col_uint or 1 -1 -// 两个col_xxx上面都应该有bool expr,col_char上面应该有cast,转换为decimal, 结果为1 -select 1 or col_char from t1; -1 or col_char -1 -// Case2: 有布尔语义的表达式,不会有bool expr被插入 -// and表达式的两个子节点都是有布尔语义的,所以bool expr不会出现 -select col_int from t1 where (col_int = col_int) and (col_uint = col_uint); -col_int --4 -// 同上,也不会有bool expr -select 1 from t1 where t1.col_int = t1.col_uint; -1 -// 同上,也不会有bool expr -select col_int from t1 having avg(col_int) = 1; -col_int -// 同上,也不会有bool expr -select 1 from t1 inner join t2 on t2.c1 = t1.col_int; -1 -// Case3: TODO: 测试where/having/join condition, -// 需要想一些不带有布尔语义的作为各个子句的条件 -// Case4: 对各种类型进行测试,看能否顺利转换,且结果跟不加bool expr是一致的 -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30), c23 blob, c24 text); -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5', 'blob type', 'text type'); -set ob_enable_plan_cache = 0; -select c1 and c1 from t1; -c1 and c1 -1 -select c1 or c1 from t1; -c1 or c1 -1 -select c1 and c2 from t1; -c1 and c2 -1 -select c1 or c2 from t1; -c1 or c2 -1 -select c1 and c3 from t1; -c1 and c3 -1 -select c1 or c3 from t1; -c1 or c3 -1 -select c1 and c4 from t1; -c1 and c4 -1 -select c1 or c4 from t1; -c1 or c4 -1 -select c1 and c5 from t1; -c1 and c5 -1 -select c1 or c5 from t1; -c1 or c5 -1 -select c1 and c6 from t1; -c1 and c6 -1 -select c1 or c6 from t1; -c1 or c6 -1 -select c1 and c7 from t1; -c1 and c7 -1 -select c1 or c7 from t1; -c1 or c7 -1 -select c1 and c8 from t1; -c1 and c8 -1 -select c1 or c8 from t1; -c1 or c8 -1 -select c1 and c9 from t1; -c1 and c9 -1 -select c1 or c9 from t1; -c1 or c9 -1 -select c1 and c10 from t1; -c1 and c10 -1 -select c1 or c10 from t1; -c1 or c10 -1 -select c1 and c11 from t1; -c1 and c11 -1 -select c1 or c11 from t1; -c1 or c11 -1 -select c1 and c12 from t1; -c1 and c12 -1 -select c1 or c12 from t1; -c1 or c12 -1 -select c1 and c13 from t1; -c1 and c13 -1 -select c1 or c13 from t1; -c1 or c13 -1 -select c1 and c14 from t1; -c1 and c14 -1 -select c1 or c14 from t1; -c1 or c14 -1 -select c1 and c15 from t1; -c1 and c15 -1 -select c1 or c15 from t1; -c1 or c15 -1 -select c1 and c16 from t1; -c1 and c16 -1 -select c1 or c16 from t1; -c1 or c16 -1 -select c1 and c17 from t1; -c1 and c17 -1 -select c1 or c17 from t1; -c1 or c17 -1 -select c1 and c18 from t1; -c1 and c18 -1 -select c1 or c18 from t1; -c1 or c18 -1 -select c1 and c19 from t1; -c1 and c19 -1 -select c1 or c19 from t1; -c1 or c19 -1 -select c1 and c20 from t1; -c1 and c20 -1 -select c1 or c20 from t1; -c1 or c20 -1 -select c1 and c21 from t1; -c1 and c21 -1 -select c1 or c21 from t1; -c1 or c21 -1 -select c1 and c22 from t1; -c1 and c22 -1 -select c1 or c22 from t1; -c1 or c22 -1 -select c1 and c23 from t1; -c1 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c1 or c23 from t1; -c1 or c23 -1 -select c1 and c24 from t1; -c1 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c1 or c24 from t1; -c1 or c24 -1 -select c2 and c1 from t1; -c2 and c1 -1 -select c2 or c1 from t1; -c2 or c1 -1 -select c2 and c2 from t1; -c2 and c2 -1 -select c2 or c2 from t1; -c2 or c2 -1 -select c2 and c3 from t1; -c2 and c3 -1 -select c2 or c3 from t1; -c2 or c3 -1 -select c2 and c4 from t1; -c2 and c4 -1 -select c2 or c4 from t1; -c2 or c4 -1 -select c2 and c5 from t1; -c2 and c5 -1 -select c2 or c5 from t1; -c2 or c5 -1 -select c2 and c6 from t1; -c2 and c6 -1 -select c2 or c6 from t1; -c2 or c6 -1 -select c2 and c7 from t1; -c2 and c7 -1 -select c2 or c7 from t1; -c2 or c7 -1 -select c2 and c8 from t1; -c2 and c8 -1 -select c2 or c8 from t1; -c2 or c8 -1 -select c2 and c9 from t1; -c2 and c9 -1 -select c2 or c9 from t1; -c2 or c9 -1 -select c2 and c10 from t1; -c2 and c10 -1 -select c2 or c10 from t1; -c2 or c10 -1 -select c2 and c11 from t1; -c2 and c11 -1 -select c2 or c11 from t1; -c2 or c11 -1 -select c2 and c12 from t1; -c2 and c12 -1 -select c2 or c12 from t1; -c2 or c12 -1 -select c2 and c13 from t1; -c2 and c13 -1 -select c2 or c13 from t1; -c2 or c13 -1 -select c2 and c14 from t1; -c2 and c14 -1 -select c2 or c14 from t1; -c2 or c14 -1 -select c2 and c15 from t1; -c2 and c15 -1 -select c2 or c15 from t1; -c2 or c15 -1 -select c2 and c16 from t1; -c2 and c16 -1 -select c2 or c16 from t1; -c2 or c16 -1 -select c2 and c17 from t1; -c2 and c17 -1 -select c2 or c17 from t1; -c2 or c17 -1 -select c2 and c18 from t1; -c2 and c18 -1 -select c2 or c18 from t1; -c2 or c18 -1 -select c2 and c19 from t1; -c2 and c19 -1 -select c2 or c19 from t1; -c2 or c19 -1 -select c2 and c20 from t1; -c2 and c20 -1 -select c2 or c20 from t1; -c2 or c20 -1 -select c2 and c21 from t1; -c2 and c21 -1 -select c2 or c21 from t1; -c2 or c21 -1 -select c2 and c22 from t1; -c2 and c22 -1 -select c2 or c22 from t1; -c2 or c22 -1 -select c2 and c23 from t1; -c2 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c2 or c23 from t1; -c2 or c23 -1 -select c2 and c24 from t1; -c2 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c2 or c24 from t1; -c2 or c24 -1 -select c3 and c1 from t1; -c3 and c1 -1 -select c3 or c1 from t1; -c3 or c1 -1 -select c3 and c2 from t1; -c3 and c2 -1 -select c3 or c2 from t1; -c3 or c2 -1 -select c3 and c3 from t1; -c3 and c3 -1 -select c3 or c3 from t1; -c3 or c3 -1 -select c3 and c4 from t1; -c3 and c4 -1 -select c3 or c4 from t1; -c3 or c4 -1 -select c3 and c5 from t1; -c3 and c5 -1 -select c3 or c5 from t1; -c3 or c5 -1 -select c3 and c6 from t1; -c3 and c6 -1 -select c3 or c6 from t1; -c3 or c6 -1 -select c3 and c7 from t1; -c3 and c7 -1 -select c3 or c7 from t1; -c3 or c7 -1 -select c3 and c8 from t1; -c3 and c8 -1 -select c3 or c8 from t1; -c3 or c8 -1 -select c3 and c9 from t1; -c3 and c9 -1 -select c3 or c9 from t1; -c3 or c9 -1 -select c3 and c10 from t1; -c3 and c10 -1 -select c3 or c10 from t1; -c3 or c10 -1 -select c3 and c11 from t1; -c3 and c11 -1 -select c3 or c11 from t1; -c3 or c11 -1 -select c3 and c12 from t1; -c3 and c12 -1 -select c3 or c12 from t1; -c3 or c12 -1 -select c3 and c13 from t1; -c3 and c13 -1 -select c3 or c13 from t1; -c3 or c13 -1 -select c3 and c14 from t1; -c3 and c14 -1 -select c3 or c14 from t1; -c3 or c14 -1 -select c3 and c15 from t1; -c3 and c15 -1 -select c3 or c15 from t1; -c3 or c15 -1 -select c3 and c16 from t1; -c3 and c16 -1 -select c3 or c16 from t1; -c3 or c16 -1 -select c3 and c17 from t1; -c3 and c17 -1 -select c3 or c17 from t1; -c3 or c17 -1 -select c3 and c18 from t1; -c3 and c18 -1 -select c3 or c18 from t1; -c3 or c18 -1 -select c3 and c19 from t1; -c3 and c19 -1 -select c3 or c19 from t1; -c3 or c19 -1 -select c3 and c20 from t1; -c3 and c20 -1 -select c3 or c20 from t1; -c3 or c20 -1 -select c3 and c21 from t1; -c3 and c21 -1 -select c3 or c21 from t1; -c3 or c21 -1 -select c3 and c22 from t1; -c3 and c22 -1 -select c3 or c22 from t1; -c3 or c22 -1 -select c3 and c23 from t1; -c3 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c3 or c23 from t1; -c3 or c23 -1 -select c3 and c24 from t1; -c3 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c3 or c24 from t1; -c3 or c24 -1 -select c4 and c1 from t1; -c4 and c1 -1 -select c4 or c1 from t1; -c4 or c1 -1 -select c4 and c2 from t1; -c4 and c2 -1 -select c4 or c2 from t1; -c4 or c2 -1 -select c4 and c3 from t1; -c4 and c3 -1 -select c4 or c3 from t1; -c4 or c3 -1 -select c4 and c4 from t1; -c4 and c4 -1 -select c4 or c4 from t1; -c4 or c4 -1 -select c4 and c5 from t1; -c4 and c5 -1 -select c4 or c5 from t1; -c4 or c5 -1 -select c4 and c6 from t1; -c4 and c6 -1 -select c4 or c6 from t1; -c4 or c6 -1 -select c4 and c7 from t1; -c4 and c7 -1 -select c4 or c7 from t1; -c4 or c7 -1 -select c4 and c8 from t1; -c4 and c8 -1 -select c4 or c8 from t1; -c4 or c8 -1 -select c4 and c9 from t1; -c4 and c9 -1 -select c4 or c9 from t1; -c4 or c9 -1 -select c4 and c10 from t1; -c4 and c10 -1 -select c4 or c10 from t1; -c4 or c10 -1 -select c4 and c11 from t1; -c4 and c11 -1 -select c4 or c11 from t1; -c4 or c11 -1 -select c4 and c12 from t1; -c4 and c12 -1 -select c4 or c12 from t1; -c4 or c12 -1 -select c4 and c13 from t1; -c4 and c13 -1 -select c4 or c13 from t1; -c4 or c13 -1 -select c4 and c14 from t1; -c4 and c14 -1 -select c4 or c14 from t1; -c4 or c14 -1 -select c4 and c15 from t1; -c4 and c15 -1 -select c4 or c15 from t1; -c4 or c15 -1 -select c4 and c16 from t1; -c4 and c16 -1 -select c4 or c16 from t1; -c4 or c16 -1 -select c4 and c17 from t1; -c4 and c17 -1 -select c4 or c17 from t1; -c4 or c17 -1 -select c4 and c18 from t1; -c4 and c18 -1 -select c4 or c18 from t1; -c4 or c18 -1 -select c4 and c19 from t1; -c4 and c19 -1 -select c4 or c19 from t1; -c4 or c19 -1 -select c4 and c20 from t1; -c4 and c20 -1 -select c4 or c20 from t1; -c4 or c20 -1 -select c4 and c21 from t1; -c4 and c21 -1 -select c4 or c21 from t1; -c4 or c21 -1 -select c4 and c22 from t1; -c4 and c22 -1 -select c4 or c22 from t1; -c4 or c22 -1 -select c4 and c23 from t1; -c4 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c4 or c23 from t1; -c4 or c23 -1 -select c4 and c24 from t1; -c4 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c4 or c24 from t1; -c4 or c24 -1 -select c5 and c1 from t1; -c5 and c1 -1 -select c5 or c1 from t1; -c5 or c1 -1 -select c5 and c2 from t1; -c5 and c2 -1 -select c5 or c2 from t1; -c5 or c2 -1 -select c5 and c3 from t1; -c5 and c3 -1 -select c5 or c3 from t1; -c5 or c3 -1 -select c5 and c4 from t1; -c5 and c4 -1 -select c5 or c4 from t1; -c5 or c4 -1 -select c5 and c5 from t1; -c5 and c5 -1 -select c5 or c5 from t1; -c5 or c5 -1 -select c5 and c6 from t1; -c5 and c6 -1 -select c5 or c6 from t1; -c5 or c6 -1 -select c5 and c7 from t1; -c5 and c7 -1 -select c5 or c7 from t1; -c5 or c7 -1 -select c5 and c8 from t1; -c5 and c8 -1 -select c5 or c8 from t1; -c5 or c8 -1 -select c5 and c9 from t1; -c5 and c9 -1 -select c5 or c9 from t1; -c5 or c9 -1 -select c5 and c10 from t1; -c5 and c10 -1 -select c5 or c10 from t1; -c5 or c10 -1 -select c5 and c11 from t1; -c5 and c11 -1 -select c5 or c11 from t1; -c5 or c11 -1 -select c5 and c12 from t1; -c5 and c12 -1 -select c5 or c12 from t1; -c5 or c12 -1 -select c5 and c13 from t1; -c5 and c13 -1 -select c5 or c13 from t1; -c5 or c13 -1 -select c5 and c14 from t1; -c5 and c14 -1 -select c5 or c14 from t1; -c5 or c14 -1 -select c5 and c15 from t1; -c5 and c15 -1 -select c5 or c15 from t1; -c5 or c15 -1 -select c5 and c16 from t1; -c5 and c16 -1 -select c5 or c16 from t1; -c5 or c16 -1 -select c5 and c17 from t1; -c5 and c17 -1 -select c5 or c17 from t1; -c5 or c17 -1 -select c5 and c18 from t1; -c5 and c18 -1 -select c5 or c18 from t1; -c5 or c18 -1 -select c5 and c19 from t1; -c5 and c19 -1 -select c5 or c19 from t1; -c5 or c19 -1 -select c5 and c20 from t1; -c5 and c20 -1 -select c5 or c20 from t1; -c5 or c20 -1 -select c5 and c21 from t1; -c5 and c21 -1 -select c5 or c21 from t1; -c5 or c21 -1 -select c5 and c22 from t1; -c5 and c22 -1 -select c5 or c22 from t1; -c5 or c22 -1 -select c5 and c23 from t1; -c5 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c5 or c23 from t1; -c5 or c23 -1 -select c5 and c24 from t1; -c5 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c5 or c24 from t1; -c5 or c24 -1 -select c6 and c1 from t1; -c6 and c1 -1 -select c6 or c1 from t1; -c6 or c1 -1 -select c6 and c2 from t1; -c6 and c2 -1 -select c6 or c2 from t1; -c6 or c2 -1 -select c6 and c3 from t1; -c6 and c3 -1 -select c6 or c3 from t1; -c6 or c3 -1 -select c6 and c4 from t1; -c6 and c4 -1 -select c6 or c4 from t1; -c6 or c4 -1 -select c6 and c5 from t1; -c6 and c5 -1 -select c6 or c5 from t1; -c6 or c5 -1 -select c6 and c6 from t1; -c6 and c6 -1 -select c6 or c6 from t1; -c6 or c6 -1 -select c6 and c7 from t1; -c6 and c7 -1 -select c6 or c7 from t1; -c6 or c7 -1 -select c6 and c8 from t1; -c6 and c8 -1 -select c6 or c8 from t1; -c6 or c8 -1 -select c6 and c9 from t1; -c6 and c9 -1 -select c6 or c9 from t1; -c6 or c9 -1 -select c6 and c10 from t1; -c6 and c10 -1 -select c6 or c10 from t1; -c6 or c10 -1 -select c6 and c11 from t1; -c6 and c11 -1 -select c6 or c11 from t1; -c6 or c11 -1 -select c6 and c12 from t1; -c6 and c12 -1 -select c6 or c12 from t1; -c6 or c12 -1 -select c6 and c13 from t1; -c6 and c13 -1 -select c6 or c13 from t1; -c6 or c13 -1 -select c6 and c14 from t1; -c6 and c14 -1 -select c6 or c14 from t1; -c6 or c14 -1 -select c6 and c15 from t1; -c6 and c15 -1 -select c6 or c15 from t1; -c6 or c15 -1 -select c6 and c16 from t1; -c6 and c16 -1 -select c6 or c16 from t1; -c6 or c16 -1 -select c6 and c17 from t1; -c6 and c17 -1 -select c6 or c17 from t1; -c6 or c17 -1 -select c6 and c18 from t1; -c6 and c18 -1 -select c6 or c18 from t1; -c6 or c18 -1 -select c6 and c19 from t1; -c6 and c19 -1 -select c6 or c19 from t1; -c6 or c19 -1 -select c6 and c20 from t1; -c6 and c20 -1 -select c6 or c20 from t1; -c6 or c20 -1 -select c6 and c21 from t1; -c6 and c21 -1 -select c6 or c21 from t1; -c6 or c21 -1 -select c6 and c22 from t1; -c6 and c22 -1 -select c6 or c22 from t1; -c6 or c22 -1 -select c6 and c23 from t1; -c6 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c6 or c23 from t1; -c6 or c23 -1 -select c6 and c24 from t1; -c6 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c6 or c24 from t1; -c6 or c24 -1 -select c7 and c1 from t1; -c7 and c1 -1 -select c7 or c1 from t1; -c7 or c1 -1 -select c7 and c2 from t1; -c7 and c2 -1 -select c7 or c2 from t1; -c7 or c2 -1 -select c7 and c3 from t1; -c7 and c3 -1 -select c7 or c3 from t1; -c7 or c3 -1 -select c7 and c4 from t1; -c7 and c4 -1 -select c7 or c4 from t1; -c7 or c4 -1 -select c7 and c5 from t1; -c7 and c5 -1 -select c7 or c5 from t1; -c7 or c5 -1 -select c7 and c6 from t1; -c7 and c6 -1 -select c7 or c6 from t1; -c7 or c6 -1 -select c7 and c7 from t1; -c7 and c7 -1 -select c7 or c7 from t1; -c7 or c7 -1 -select c7 and c8 from t1; -c7 and c8 -1 -select c7 or c8 from t1; -c7 or c8 -1 -select c7 and c9 from t1; -c7 and c9 -1 -select c7 or c9 from t1; -c7 or c9 -1 -select c7 and c10 from t1; -c7 and c10 -1 -select c7 or c10 from t1; -c7 or c10 -1 -select c7 and c11 from t1; -c7 and c11 -1 -select c7 or c11 from t1; -c7 or c11 -1 -select c7 and c12 from t1; -c7 and c12 -1 -select c7 or c12 from t1; -c7 or c12 -1 -select c7 and c13 from t1; -c7 and c13 -1 -select c7 or c13 from t1; -c7 or c13 -1 -select c7 and c14 from t1; -c7 and c14 -1 -select c7 or c14 from t1; -c7 or c14 -1 -select c7 and c15 from t1; -c7 and c15 -1 -select c7 or c15 from t1; -c7 or c15 -1 -select c7 and c16 from t1; -c7 and c16 -1 -select c7 or c16 from t1; -c7 or c16 -1 -select c7 and c17 from t1; -c7 and c17 -1 -select c7 or c17 from t1; -c7 or c17 -1 -select c7 and c18 from t1; -c7 and c18 -1 -select c7 or c18 from t1; -c7 or c18 -1 -select c7 and c19 from t1; -c7 and c19 -1 -select c7 or c19 from t1; -c7 or c19 -1 -select c7 and c20 from t1; -c7 and c20 -1 -select c7 or c20 from t1; -c7 or c20 -1 -select c7 and c21 from t1; -c7 and c21 -1 -select c7 or c21 from t1; -c7 or c21 -1 -select c7 and c22 from t1; -c7 and c22 -1 -select c7 or c22 from t1; -c7 or c22 -1 -select c7 and c23 from t1; -c7 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c7 or c23 from t1; -c7 or c23 -1 -select c7 and c24 from t1; -c7 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c7 or c24 from t1; -c7 or c24 -1 -select c8 and c1 from t1; -c8 and c1 -1 -select c8 or c1 from t1; -c8 or c1 -1 -select c8 and c2 from t1; -c8 and c2 -1 -select c8 or c2 from t1; -c8 or c2 -1 -select c8 and c3 from t1; -c8 and c3 -1 -select c8 or c3 from t1; -c8 or c3 -1 -select c8 and c4 from t1; -c8 and c4 -1 -select c8 or c4 from t1; -c8 or c4 -1 -select c8 and c5 from t1; -c8 and c5 -1 -select c8 or c5 from t1; -c8 or c5 -1 -select c8 and c6 from t1; -c8 and c6 -1 -select c8 or c6 from t1; -c8 or c6 -1 -select c8 and c7 from t1; -c8 and c7 -1 -select c8 or c7 from t1; -c8 or c7 -1 -select c8 and c8 from t1; -c8 and c8 -1 -select c8 or c8 from t1; -c8 or c8 -1 -select c8 and c9 from t1; -c8 and c9 -1 -select c8 or c9 from t1; -c8 or c9 -1 -select c8 and c10 from t1; -c8 and c10 -1 -select c8 or c10 from t1; -c8 or c10 -1 -select c8 and c11 from t1; -c8 and c11 -1 -select c8 or c11 from t1; -c8 or c11 -1 -select c8 and c12 from t1; -c8 and c12 -1 -select c8 or c12 from t1; -c8 or c12 -1 -select c8 and c13 from t1; -c8 and c13 -1 -select c8 or c13 from t1; -c8 or c13 -1 -select c8 and c14 from t1; -c8 and c14 -1 -select c8 or c14 from t1; -c8 or c14 -1 -select c8 and c15 from t1; -c8 and c15 -1 -select c8 or c15 from t1; -c8 or c15 -1 -select c8 and c16 from t1; -c8 and c16 -1 -select c8 or c16 from t1; -c8 or c16 -1 -select c8 and c17 from t1; -c8 and c17 -1 -select c8 or c17 from t1; -c8 or c17 -1 -select c8 and c18 from t1; -c8 and c18 -1 -select c8 or c18 from t1; -c8 or c18 -1 -select c8 and c19 from t1; -c8 and c19 -1 -select c8 or c19 from t1; -c8 or c19 -1 -select c8 and c20 from t1; -c8 and c20 -1 -select c8 or c20 from t1; -c8 or c20 -1 -select c8 and c21 from t1; -c8 and c21 -1 -select c8 or c21 from t1; -c8 or c21 -1 -select c8 and c22 from t1; -c8 and c22 -1 -select c8 or c22 from t1; -c8 or c22 -1 -select c8 and c23 from t1; -c8 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c8 or c23 from t1; -c8 or c23 -1 -select c8 and c24 from t1; -c8 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c8 or c24 from t1; -c8 or c24 -1 -select c9 and c1 from t1; -c9 and c1 -1 -select c9 or c1 from t1; -c9 or c1 -1 -select c9 and c2 from t1; -c9 and c2 -1 -select c9 or c2 from t1; -c9 or c2 -1 -select c9 and c3 from t1; -c9 and c3 -1 -select c9 or c3 from t1; -c9 or c3 -1 -select c9 and c4 from t1; -c9 and c4 -1 -select c9 or c4 from t1; -c9 or c4 -1 -select c9 and c5 from t1; -c9 and c5 -1 -select c9 or c5 from t1; -c9 or c5 -1 -select c9 and c6 from t1; -c9 and c6 -1 -select c9 or c6 from t1; -c9 or c6 -1 -select c9 and c7 from t1; -c9 and c7 -1 -select c9 or c7 from t1; -c9 or c7 -1 -select c9 and c8 from t1; -c9 and c8 -1 -select c9 or c8 from t1; -c9 or c8 -1 -select c9 and c9 from t1; -c9 and c9 -1 -select c9 or c9 from t1; -c9 or c9 -1 -select c9 and c10 from t1; -c9 and c10 -1 -select c9 or c10 from t1; -c9 or c10 -1 -select c9 and c11 from t1; -c9 and c11 -1 -select c9 or c11 from t1; -c9 or c11 -1 -select c9 and c12 from t1; -c9 and c12 -1 -select c9 or c12 from t1; -c9 or c12 -1 -select c9 and c13 from t1; -c9 and c13 -1 -select c9 or c13 from t1; -c9 or c13 -1 -select c9 and c14 from t1; -c9 and c14 -1 -select c9 or c14 from t1; -c9 or c14 -1 -select c9 and c15 from t1; -c9 and c15 -1 -select c9 or c15 from t1; -c9 or c15 -1 -select c9 and c16 from t1; -c9 and c16 -1 -select c9 or c16 from t1; -c9 or c16 -1 -select c9 and c17 from t1; -c9 and c17 -1 -select c9 or c17 from t1; -c9 or c17 -1 -select c9 and c18 from t1; -c9 and c18 -1 -select c9 or c18 from t1; -c9 or c18 -1 -select c9 and c19 from t1; -c9 and c19 -1 -select c9 or c19 from t1; -c9 or c19 -1 -select c9 and c20 from t1; -c9 and c20 -1 -select c9 or c20 from t1; -c9 or c20 -1 -select c9 and c21 from t1; -c9 and c21 -1 -select c9 or c21 from t1; -c9 or c21 -1 -select c9 and c22 from t1; -c9 and c22 -1 -select c9 or c22 from t1; -c9 or c22 -1 -select c9 and c23 from t1; -c9 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c9 or c23 from t1; -c9 or c23 -1 -select c9 and c24 from t1; -c9 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c9 or c24 from t1; -c9 or c24 -1 -select c10 and c1 from t1; -c10 and c1 -1 -select c10 or c1 from t1; -c10 or c1 -1 -select c10 and c2 from t1; -c10 and c2 -1 -select c10 or c2 from t1; -c10 or c2 -1 -select c10 and c3 from t1; -c10 and c3 -1 -select c10 or c3 from t1; -c10 or c3 -1 -select c10 and c4 from t1; -c10 and c4 -1 -select c10 or c4 from t1; -c10 or c4 -1 -select c10 and c5 from t1; -c10 and c5 -1 -select c10 or c5 from t1; -c10 or c5 -1 -select c10 and c6 from t1; -c10 and c6 -1 -select c10 or c6 from t1; -c10 or c6 -1 -select c10 and c7 from t1; -c10 and c7 -1 -select c10 or c7 from t1; -c10 or c7 -1 -select c10 and c8 from t1; -c10 and c8 -1 -select c10 or c8 from t1; -c10 or c8 -1 -select c10 and c9 from t1; -c10 and c9 -1 -select c10 or c9 from t1; -c10 or c9 -1 -select c10 and c10 from t1; -c10 and c10 -1 -select c10 or c10 from t1; -c10 or c10 -1 -select c10 and c11 from t1; -c10 and c11 -1 -select c10 or c11 from t1; -c10 or c11 -1 -select c10 and c12 from t1; -c10 and c12 -1 -select c10 or c12 from t1; -c10 or c12 -1 -select c10 and c13 from t1; -c10 and c13 -1 -select c10 or c13 from t1; -c10 or c13 -1 -select c10 and c14 from t1; -c10 and c14 -1 -select c10 or c14 from t1; -c10 or c14 -1 -select c10 and c15 from t1; -c10 and c15 -1 -select c10 or c15 from t1; -c10 or c15 -1 -select c10 and c16 from t1; -c10 and c16 -1 -select c10 or c16 from t1; -c10 or c16 -1 -select c10 and c17 from t1; -c10 and c17 -1 -select c10 or c17 from t1; -c10 or c17 -1 -select c10 and c18 from t1; -c10 and c18 -1 -select c10 or c18 from t1; -c10 or c18 -1 -select c10 and c19 from t1; -c10 and c19 -1 -select c10 or c19 from t1; -c10 or c19 -1 -select c10 and c20 from t1; -c10 and c20 -1 -select c10 or c20 from t1; -c10 or c20 -1 -select c10 and c21 from t1; -c10 and c21 -1 -select c10 or c21 from t1; -c10 or c21 -1 -select c10 and c22 from t1; -c10 and c22 -1 -select c10 or c22 from t1; -c10 or c22 -1 -select c10 and c23 from t1; -c10 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c10 or c23 from t1; -c10 or c23 -1 -select c10 and c24 from t1; -c10 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c10 or c24 from t1; -c10 or c24 -1 -select c11 and c1 from t1; -c11 and c1 -1 -select c11 or c1 from t1; -c11 or c1 -1 -select c11 and c2 from t1; -c11 and c2 -1 -select c11 or c2 from t1; -c11 or c2 -1 -select c11 and c3 from t1; -c11 and c3 -1 -select c11 or c3 from t1; -c11 or c3 -1 -select c11 and c4 from t1; -c11 and c4 -1 -select c11 or c4 from t1; -c11 or c4 -1 -select c11 and c5 from t1; -c11 and c5 -1 -select c11 or c5 from t1; -c11 or c5 -1 -select c11 and c6 from t1; -c11 and c6 -1 -select c11 or c6 from t1; -c11 or c6 -1 -select c11 and c7 from t1; -c11 and c7 -1 -select c11 or c7 from t1; -c11 or c7 -1 -select c11 and c8 from t1; -c11 and c8 -1 -select c11 or c8 from t1; -c11 or c8 -1 -select c11 and c9 from t1; -c11 and c9 -1 -select c11 or c9 from t1; -c11 or c9 -1 -select c11 and c10 from t1; -c11 and c10 -1 -select c11 or c10 from t1; -c11 or c10 -1 -select c11 and c11 from t1; -c11 and c11 -1 -select c11 or c11 from t1; -c11 or c11 -1 -select c11 and c12 from t1; -c11 and c12 -1 -select c11 or c12 from t1; -c11 or c12 -1 -select c11 and c13 from t1; -c11 and c13 -1 -select c11 or c13 from t1; -c11 or c13 -1 -select c11 and c14 from t1; -c11 and c14 -1 -select c11 or c14 from t1; -c11 or c14 -1 -select c11 and c15 from t1; -c11 and c15 -1 -select c11 or c15 from t1; -c11 or c15 -1 -select c11 and c16 from t1; -c11 and c16 -1 -select c11 or c16 from t1; -c11 or c16 -1 -select c11 and c17 from t1; -c11 and c17 -1 -select c11 or c17 from t1; -c11 or c17 -1 -select c11 and c18 from t1; -c11 and c18 -1 -select c11 or c18 from t1; -c11 or c18 -1 -select c11 and c19 from t1; -c11 and c19 -1 -select c11 or c19 from t1; -c11 or c19 -1 -select c11 and c20 from t1; -c11 and c20 -1 -select c11 or c20 from t1; -c11 or c20 -1 -select c11 and c21 from t1; -c11 and c21 -1 -select c11 or c21 from t1; -c11 or c21 -1 -select c11 and c22 from t1; -c11 and c22 -1 -select c11 or c22 from t1; -c11 or c22 -1 -select c11 and c23 from t1; -c11 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c11 or c23 from t1; -c11 or c23 -1 -select c11 and c24 from t1; -c11 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c11 or c24 from t1; -c11 or c24 -1 -select c12 and c1 from t1; -c12 and c1 -1 -select c12 or c1 from t1; -c12 or c1 -1 -select c12 and c2 from t1; -c12 and c2 -1 -select c12 or c2 from t1; -c12 or c2 -1 -select c12 and c3 from t1; -c12 and c3 -1 -select c12 or c3 from t1; -c12 or c3 -1 -select c12 and c4 from t1; -c12 and c4 -1 -select c12 or c4 from t1; -c12 or c4 -1 -select c12 and c5 from t1; -c12 and c5 -1 -select c12 or c5 from t1; -c12 or c5 -1 -select c12 and c6 from t1; -c12 and c6 -1 -select c12 or c6 from t1; -c12 or c6 -1 -select c12 and c7 from t1; -c12 and c7 -1 -select c12 or c7 from t1; -c12 or c7 -1 -select c12 and c8 from t1; -c12 and c8 -1 -select c12 or c8 from t1; -c12 or c8 -1 -select c12 and c9 from t1; -c12 and c9 -1 -select c12 or c9 from t1; -c12 or c9 -1 -select c12 and c10 from t1; -c12 and c10 -1 -select c12 or c10 from t1; -c12 or c10 -1 -select c12 and c11 from t1; -c12 and c11 -1 -select c12 or c11 from t1; -c12 or c11 -1 -select c12 and c12 from t1; -c12 and c12 -1 -select c12 or c12 from t1; -c12 or c12 -1 -select c12 and c13 from t1; -c12 and c13 -1 -select c12 or c13 from t1; -c12 or c13 -1 -select c12 and c14 from t1; -c12 and c14 -1 -select c12 or c14 from t1; -c12 or c14 -1 -select c12 and c15 from t1; -c12 and c15 -1 -select c12 or c15 from t1; -c12 or c15 -1 -select c12 and c16 from t1; -c12 and c16 -1 -select c12 or c16 from t1; -c12 or c16 -1 -select c12 and c17 from t1; -c12 and c17 -1 -select c12 or c17 from t1; -c12 or c17 -1 -select c12 and c18 from t1; -c12 and c18 -1 -select c12 or c18 from t1; -c12 or c18 -1 -select c12 and c19 from t1; -c12 and c19 -1 -select c12 or c19 from t1; -c12 or c19 -1 -select c12 and c20 from t1; -c12 and c20 -1 -select c12 or c20 from t1; -c12 or c20 -1 -select c12 and c21 from t1; -c12 and c21 -1 -select c12 or c21 from t1; -c12 or c21 -1 -select c12 and c22 from t1; -c12 and c22 -1 -select c12 or c22 from t1; -c12 or c22 -1 -select c12 and c23 from t1; -c12 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c12 or c23 from t1; -c12 or c23 -1 -select c12 and c24 from t1; -c12 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c12 or c24 from t1; -c12 or c24 -1 -select c13 and c1 from t1; -c13 and c1 -1 -select c13 or c1 from t1; -c13 or c1 -1 -select c13 and c2 from t1; -c13 and c2 -1 -select c13 or c2 from t1; -c13 or c2 -1 -select c13 and c3 from t1; -c13 and c3 -1 -select c13 or c3 from t1; -c13 or c3 -1 -select c13 and c4 from t1; -c13 and c4 -1 -select c13 or c4 from t1; -c13 or c4 -1 -select c13 and c5 from t1; -c13 and c5 -1 -select c13 or c5 from t1; -c13 or c5 -1 -select c13 and c6 from t1; -c13 and c6 -1 -select c13 or c6 from t1; -c13 or c6 -1 -select c13 and c7 from t1; -c13 and c7 -1 -select c13 or c7 from t1; -c13 or c7 -1 -select c13 and c8 from t1; -c13 and c8 -1 -select c13 or c8 from t1; -c13 or c8 -1 -select c13 and c9 from t1; -c13 and c9 -1 -select c13 or c9 from t1; -c13 or c9 -1 -select c13 and c10 from t1; -c13 and c10 -1 -select c13 or c10 from t1; -c13 or c10 -1 -select c13 and c11 from t1; -c13 and c11 -1 -select c13 or c11 from t1; -c13 or c11 -1 -select c13 and c12 from t1; -c13 and c12 -1 -select c13 or c12 from t1; -c13 or c12 -1 -select c13 and c13 from t1; -c13 and c13 -1 -select c13 or c13 from t1; -c13 or c13 -1 -select c13 and c14 from t1; -c13 and c14 -1 -select c13 or c14 from t1; -c13 or c14 -1 -select c13 and c15 from t1; -c13 and c15 -1 -select c13 or c15 from t1; -c13 or c15 -1 -select c13 and c16 from t1; -c13 and c16 -1 -select c13 or c16 from t1; -c13 or c16 -1 -select c13 and c17 from t1; -c13 and c17 -1 -select c13 or c17 from t1; -c13 or c17 -1 -select c13 and c18 from t1; -c13 and c18 -1 -select c13 or c18 from t1; -c13 or c18 -1 -select c13 and c19 from t1; -c13 and c19 -1 -select c13 or c19 from t1; -c13 or c19 -1 -select c13 and c20 from t1; -c13 and c20 -1 -select c13 or c20 from t1; -c13 or c20 -1 -select c13 and c21 from t1; -c13 and c21 -1 -select c13 or c21 from t1; -c13 or c21 -1 -select c13 and c22 from t1; -c13 and c22 -1 -select c13 or c22 from t1; -c13 or c22 -1 -select c13 and c23 from t1; -c13 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c13 or c23 from t1; -c13 or c23 -1 -select c13 and c24 from t1; -c13 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c13 or c24 from t1; -c13 or c24 -1 -select c14 and c1 from t1; -c14 and c1 -1 -select c14 or c1 from t1; -c14 or c1 -1 -select c14 and c2 from t1; -c14 and c2 -1 -select c14 or c2 from t1; -c14 or c2 -1 -select c14 and c3 from t1; -c14 and c3 -1 -select c14 or c3 from t1; -c14 or c3 -1 -select c14 and c4 from t1; -c14 and c4 -1 -select c14 or c4 from t1; -c14 or c4 -1 -select c14 and c5 from t1; -c14 and c5 -1 -select c14 or c5 from t1; -c14 or c5 -1 -select c14 and c6 from t1; -c14 and c6 -1 -select c14 or c6 from t1; -c14 or c6 -1 -select c14 and c7 from t1; -c14 and c7 -1 -select c14 or c7 from t1; -c14 or c7 -1 -select c14 and c8 from t1; -c14 and c8 -1 -select c14 or c8 from t1; -c14 or c8 -1 -select c14 and c9 from t1; -c14 and c9 -1 -select c14 or c9 from t1; -c14 or c9 -1 -select c14 and c10 from t1; -c14 and c10 -1 -select c14 or c10 from t1; -c14 or c10 -1 -select c14 and c11 from t1; -c14 and c11 -1 -select c14 or c11 from t1; -c14 or c11 -1 -select c14 and c12 from t1; -c14 and c12 -1 -select c14 or c12 from t1; -c14 or c12 -1 -select c14 and c13 from t1; -c14 and c13 -1 -select c14 or c13 from t1; -c14 or c13 -1 -select c14 and c14 from t1; -c14 and c14 -1 -select c14 or c14 from t1; -c14 or c14 -1 -select c14 and c15 from t1; -c14 and c15 -1 -select c14 or c15 from t1; -c14 or c15 -1 -select c14 and c16 from t1; -c14 and c16 -1 -select c14 or c16 from t1; -c14 or c16 -1 -select c14 and c17 from t1; -c14 and c17 -1 -select c14 or c17 from t1; -c14 or c17 -1 -select c14 and c18 from t1; -c14 and c18 -1 -select c14 or c18 from t1; -c14 or c18 -1 -select c14 and c19 from t1; -c14 and c19 -1 -select c14 or c19 from t1; -c14 or c19 -1 -select c14 and c20 from t1; -c14 and c20 -1 -select c14 or c20 from t1; -c14 or c20 -1 -select c14 and c21 from t1; -c14 and c21 -1 -select c14 or c21 from t1; -c14 or c21 -1 -select c14 and c22 from t1; -c14 and c22 -1 -select c14 or c22 from t1; -c14 or c22 -1 -select c14 and c23 from t1; -c14 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c14 or c23 from t1; -c14 or c23 -1 -select c14 and c24 from t1; -c14 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c14 or c24 from t1; -c14 or c24 -1 -select c15 and c1 from t1; -c15 and c1 -1 -select c15 or c1 from t1; -c15 or c1 -1 -select c15 and c2 from t1; -c15 and c2 -1 -select c15 or c2 from t1; -c15 or c2 -1 -select c15 and c3 from t1; -c15 and c3 -1 -select c15 or c3 from t1; -c15 or c3 -1 -select c15 and c4 from t1; -c15 and c4 -1 -select c15 or c4 from t1; -c15 or c4 -1 -select c15 and c5 from t1; -c15 and c5 -1 -select c15 or c5 from t1; -c15 or c5 -1 -select c15 and c6 from t1; -c15 and c6 -1 -select c15 or c6 from t1; -c15 or c6 -1 -select c15 and c7 from t1; -c15 and c7 -1 -select c15 or c7 from t1; -c15 or c7 -1 -select c15 and c8 from t1; -c15 and c8 -1 -select c15 or c8 from t1; -c15 or c8 -1 -select c15 and c9 from t1; -c15 and c9 -1 -select c15 or c9 from t1; -c15 or c9 -1 -select c15 and c10 from t1; -c15 and c10 -1 -select c15 or c10 from t1; -c15 or c10 -1 -select c15 and c11 from t1; -c15 and c11 -1 -select c15 or c11 from t1; -c15 or c11 -1 -select c15 and c12 from t1; -c15 and c12 -1 -select c15 or c12 from t1; -c15 or c12 -1 -select c15 and c13 from t1; -c15 and c13 -1 -select c15 or c13 from t1; -c15 or c13 -1 -select c15 and c14 from t1; -c15 and c14 -1 -select c15 or c14 from t1; -c15 or c14 -1 -select c15 and c15 from t1; -c15 and c15 -1 -select c15 or c15 from t1; -c15 or c15 -1 -select c15 and c16 from t1; -c15 and c16 -1 -select c15 or c16 from t1; -c15 or c16 -1 -select c15 and c17 from t1; -c15 and c17 -1 -select c15 or c17 from t1; -c15 or c17 -1 -select c15 and c18 from t1; -c15 and c18 -1 -select c15 or c18 from t1; -c15 or c18 -1 -select c15 and c19 from t1; -c15 and c19 -1 -select c15 or c19 from t1; -c15 or c19 -1 -select c15 and c20 from t1; -c15 and c20 -1 -select c15 or c20 from t1; -c15 or c20 -1 -select c15 and c21 from t1; -c15 and c21 -1 -select c15 or c21 from t1; -c15 or c21 -1 -select c15 and c22 from t1; -c15 and c22 -1 -select c15 or c22 from t1; -c15 or c22 -1 -select c15 and c23 from t1; -c15 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c15 or c23 from t1; -c15 or c23 -1 -select c15 and c24 from t1; -c15 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c15 or c24 from t1; -c15 or c24 -1 -select c16 and c1 from t1; -c16 and c1 -1 -select c16 or c1 from t1; -c16 or c1 -1 -select c16 and c2 from t1; -c16 and c2 -1 -select c16 or c2 from t1; -c16 or c2 -1 -select c16 and c3 from t1; -c16 and c3 -1 -select c16 or c3 from t1; -c16 or c3 -1 -select c16 and c4 from t1; -c16 and c4 -1 -select c16 or c4 from t1; -c16 or c4 -1 -select c16 and c5 from t1; -c16 and c5 -1 -select c16 or c5 from t1; -c16 or c5 -1 -select c16 and c6 from t1; -c16 and c6 -1 -select c16 or c6 from t1; -c16 or c6 -1 -select c16 and c7 from t1; -c16 and c7 -1 -select c16 or c7 from t1; -c16 or c7 -1 -select c16 and c8 from t1; -c16 and c8 -1 -select c16 or c8 from t1; -c16 or c8 -1 -select c16 and c9 from t1; -c16 and c9 -1 -select c16 or c9 from t1; -c16 or c9 -1 -select c16 and c10 from t1; -c16 and c10 -1 -select c16 or c10 from t1; -c16 or c10 -1 -select c16 and c11 from t1; -c16 and c11 -1 -select c16 or c11 from t1; -c16 or c11 -1 -select c16 and c12 from t1; -c16 and c12 -1 -select c16 or c12 from t1; -c16 or c12 -1 -select c16 and c13 from t1; -c16 and c13 -1 -select c16 or c13 from t1; -c16 or c13 -1 -select c16 and c14 from t1; -c16 and c14 -1 -select c16 or c14 from t1; -c16 or c14 -1 -select c16 and c15 from t1; -c16 and c15 -1 -select c16 or c15 from t1; -c16 or c15 -1 -select c16 and c16 from t1; -c16 and c16 -1 -select c16 or c16 from t1; -c16 or c16 -1 -select c16 and c17 from t1; -c16 and c17 -1 -select c16 or c17 from t1; -c16 or c17 -1 -select c16 and c18 from t1; -c16 and c18 -1 -select c16 or c18 from t1; -c16 or c18 -1 -select c16 and c19 from t1; -c16 and c19 -1 -select c16 or c19 from t1; -c16 or c19 -1 -select c16 and c20 from t1; -c16 and c20 -1 -select c16 or c20 from t1; -c16 or c20 -1 -select c16 and c21 from t1; -c16 and c21 -1 -select c16 or c21 from t1; -c16 or c21 -1 -select c16 and c22 from t1; -c16 and c22 -1 -select c16 or c22 from t1; -c16 or c22 -1 -select c16 and c23 from t1; -c16 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c16 or c23 from t1; -c16 or c23 -1 -select c16 and c24 from t1; -c16 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c16 or c24 from t1; -c16 or c24 -1 -select c17 and c1 from t1; -c17 and c1 -1 -select c17 or c1 from t1; -c17 or c1 -1 -select c17 and c2 from t1; -c17 and c2 -1 -select c17 or c2 from t1; -c17 or c2 -1 -select c17 and c3 from t1; -c17 and c3 -1 -select c17 or c3 from t1; -c17 or c3 -1 -select c17 and c4 from t1; -c17 and c4 -1 -select c17 or c4 from t1; -c17 or c4 -1 -select c17 and c5 from t1; -c17 and c5 -1 -select c17 or c5 from t1; -c17 or c5 -1 -select c17 and c6 from t1; -c17 and c6 -1 -select c17 or c6 from t1; -c17 or c6 -1 -select c17 and c7 from t1; -c17 and c7 -1 -select c17 or c7 from t1; -c17 or c7 -1 -select c17 and c8 from t1; -c17 and c8 -1 -select c17 or c8 from t1; -c17 or c8 -1 -select c17 and c9 from t1; -c17 and c9 -1 -select c17 or c9 from t1; -c17 or c9 -1 -select c17 and c10 from t1; -c17 and c10 -1 -select c17 or c10 from t1; -c17 or c10 -1 -select c17 and c11 from t1; -c17 and c11 -1 -select c17 or c11 from t1; -c17 or c11 -1 -select c17 and c12 from t1; -c17 and c12 -1 -select c17 or c12 from t1; -c17 or c12 -1 -select c17 and c13 from t1; -c17 and c13 -1 -select c17 or c13 from t1; -c17 or c13 -1 -select c17 and c14 from t1; -c17 and c14 -1 -select c17 or c14 from t1; -c17 or c14 -1 -select c17 and c15 from t1; -c17 and c15 -1 -select c17 or c15 from t1; -c17 or c15 -1 -select c17 and c16 from t1; -c17 and c16 -1 -select c17 or c16 from t1; -c17 or c16 -1 -select c17 and c17 from t1; -c17 and c17 -1 -select c17 or c17 from t1; -c17 or c17 -1 -select c17 and c18 from t1; -c17 and c18 -1 -select c17 or c18 from t1; -c17 or c18 -1 -select c17 and c19 from t1; -c17 and c19 -1 -select c17 or c19 from t1; -c17 or c19 -1 -select c17 and c20 from t1; -c17 and c20 -1 -select c17 or c20 from t1; -c17 or c20 -1 -select c17 and c21 from t1; -c17 and c21 -1 -select c17 or c21 from t1; -c17 or c21 -1 -select c17 and c22 from t1; -c17 and c22 -1 -select c17 or c22 from t1; -c17 or c22 -1 -select c17 and c23 from t1; -c17 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c17 or c23 from t1; -c17 or c23 -1 -select c17 and c24 from t1; -c17 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c17 or c24 from t1; -c17 or c24 -1 -select c18 and c1 from t1; -c18 and c1 -1 -select c18 or c1 from t1; -c18 or c1 -1 -select c18 and c2 from t1; -c18 and c2 -1 -select c18 or c2 from t1; -c18 or c2 -1 -select c18 and c3 from t1; -c18 and c3 -1 -select c18 or c3 from t1; -c18 or c3 -1 -select c18 and c4 from t1; -c18 and c4 -1 -select c18 or c4 from t1; -c18 or c4 -1 -select c18 and c5 from t1; -c18 and c5 -1 -select c18 or c5 from t1; -c18 or c5 -1 -select c18 and c6 from t1; -c18 and c6 -1 -select c18 or c6 from t1; -c18 or c6 -1 -select c18 and c7 from t1; -c18 and c7 -1 -select c18 or c7 from t1; -c18 or c7 -1 -select c18 and c8 from t1; -c18 and c8 -1 -select c18 or c8 from t1; -c18 or c8 -1 -select c18 and c9 from t1; -c18 and c9 -1 -select c18 or c9 from t1; -c18 or c9 -1 -select c18 and c10 from t1; -c18 and c10 -1 -select c18 or c10 from t1; -c18 or c10 -1 -select c18 and c11 from t1; -c18 and c11 -1 -select c18 or c11 from t1; -c18 or c11 -1 -select c18 and c12 from t1; -c18 and c12 -1 -select c18 or c12 from t1; -c18 or c12 -1 -select c18 and c13 from t1; -c18 and c13 -1 -select c18 or c13 from t1; -c18 or c13 -1 -select c18 and c14 from t1; -c18 and c14 -1 -select c18 or c14 from t1; -c18 or c14 -1 -select c18 and c15 from t1; -c18 and c15 -1 -select c18 or c15 from t1; -c18 or c15 -1 -select c18 and c16 from t1; -c18 and c16 -1 -select c18 or c16 from t1; -c18 or c16 -1 -select c18 and c17 from t1; -c18 and c17 -1 -select c18 or c17 from t1; -c18 or c17 -1 -select c18 and c18 from t1; -c18 and c18 -1 -select c18 or c18 from t1; -c18 or c18 -1 -select c18 and c19 from t1; -c18 and c19 -1 -select c18 or c19 from t1; -c18 or c19 -1 -select c18 and c20 from t1; -c18 and c20 -1 -select c18 or c20 from t1; -c18 or c20 -1 -select c18 and c21 from t1; -c18 and c21 -1 -select c18 or c21 from t1; -c18 or c21 -1 -select c18 and c22 from t1; -c18 and c22 -1 -select c18 or c22 from t1; -c18 or c22 -1 -select c18 and c23 from t1; -c18 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c18 or c23 from t1; -c18 or c23 -1 -select c18 and c24 from t1; -c18 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c18 or c24 from t1; -c18 or c24 -1 -select c19 and c1 from t1; -c19 and c1 -1 -select c19 or c1 from t1; -c19 or c1 -1 -select c19 and c2 from t1; -c19 and c2 -1 -select c19 or c2 from t1; -c19 or c2 -1 -select c19 and c3 from t1; -c19 and c3 -1 -select c19 or c3 from t1; -c19 or c3 -1 -select c19 and c4 from t1; -c19 and c4 -1 -select c19 or c4 from t1; -c19 or c4 -1 -select c19 and c5 from t1; -c19 and c5 -1 -select c19 or c5 from t1; -c19 or c5 -1 -select c19 and c6 from t1; -c19 and c6 -1 -select c19 or c6 from t1; -c19 or c6 -1 -select c19 and c7 from t1; -c19 and c7 -1 -select c19 or c7 from t1; -c19 or c7 -1 -select c19 and c8 from t1; -c19 and c8 -1 -select c19 or c8 from t1; -c19 or c8 -1 -select c19 and c9 from t1; -c19 and c9 -1 -select c19 or c9 from t1; -c19 or c9 -1 -select c19 and c10 from t1; -c19 and c10 -1 -select c19 or c10 from t1; -c19 or c10 -1 -select c19 and c11 from t1; -c19 and c11 -1 -select c19 or c11 from t1; -c19 or c11 -1 -select c19 and c12 from t1; -c19 and c12 -1 -select c19 or c12 from t1; -c19 or c12 -1 -select c19 and c13 from t1; -c19 and c13 -1 -select c19 or c13 from t1; -c19 or c13 -1 -select c19 and c14 from t1; -c19 and c14 -1 -select c19 or c14 from t1; -c19 or c14 -1 -select c19 and c15 from t1; -c19 and c15 -1 -select c19 or c15 from t1; -c19 or c15 -1 -select c19 and c16 from t1; -c19 and c16 -1 -select c19 or c16 from t1; -c19 or c16 -1 -select c19 and c17 from t1; -c19 and c17 -1 -select c19 or c17 from t1; -c19 or c17 -1 -select c19 and c18 from t1; -c19 and c18 -1 -select c19 or c18 from t1; -c19 or c18 -1 -select c19 and c19 from t1; -c19 and c19 -1 -select c19 or c19 from t1; -c19 or c19 -1 -select c19 and c20 from t1; -c19 and c20 -1 -select c19 or c20 from t1; -c19 or c20 -1 -select c19 and c21 from t1; -c19 and c21 -1 -select c19 or c21 from t1; -c19 or c21 -1 -select c19 and c22 from t1; -c19 and c22 -1 -select c19 or c22 from t1; -c19 or c22 -1 -select c19 and c23 from t1; -c19 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c19 or c23 from t1; -c19 or c23 -1 -select c19 and c24 from t1; -c19 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c19 or c24 from t1; -c19 or c24 -1 -select c20 and c1 from t1; -c20 and c1 -1 -select c20 or c1 from t1; -c20 or c1 -1 -select c20 and c2 from t1; -c20 and c2 -1 -select c20 or c2 from t1; -c20 or c2 -1 -select c20 and c3 from t1; -c20 and c3 -1 -select c20 or c3 from t1; -c20 or c3 -1 -select c20 and c4 from t1; -c20 and c4 -1 -select c20 or c4 from t1; -c20 or c4 -1 -select c20 and c5 from t1; -c20 and c5 -1 -select c20 or c5 from t1; -c20 or c5 -1 -select c20 and c6 from t1; -c20 and c6 -1 -select c20 or c6 from t1; -c20 or c6 -1 -select c20 and c7 from t1; -c20 and c7 -1 -select c20 or c7 from t1; -c20 or c7 -1 -select c20 and c8 from t1; -c20 and c8 -1 -select c20 or c8 from t1; -c20 or c8 -1 -select c20 and c9 from t1; -c20 and c9 -1 -select c20 or c9 from t1; -c20 or c9 -1 -select c20 and c10 from t1; -c20 and c10 -1 -select c20 or c10 from t1; -c20 or c10 -1 -select c20 and c11 from t1; -c20 and c11 -1 -select c20 or c11 from t1; -c20 or c11 -1 -select c20 and c12 from t1; -c20 and c12 -1 -select c20 or c12 from t1; -c20 or c12 -1 -select c20 and c13 from t1; -c20 and c13 -1 -select c20 or c13 from t1; -c20 or c13 -1 -select c20 and c14 from t1; -c20 and c14 -1 -select c20 or c14 from t1; -c20 or c14 -1 -select c20 and c15 from t1; -c20 and c15 -1 -select c20 or c15 from t1; -c20 or c15 -1 -select c20 and c16 from t1; -c20 and c16 -1 -select c20 or c16 from t1; -c20 or c16 -1 -select c20 and c17 from t1; -c20 and c17 -1 -select c20 or c17 from t1; -c20 or c17 -1 -select c20 and c18 from t1; -c20 and c18 -1 -select c20 or c18 from t1; -c20 or c18 -1 -select c20 and c19 from t1; -c20 and c19 -1 -select c20 or c19 from t1; -c20 or c19 -1 -select c20 and c20 from t1; -c20 and c20 -1 -select c20 or c20 from t1; -c20 or c20 -1 -select c20 and c21 from t1; -c20 and c21 -1 -select c20 or c21 from t1; -c20 or c21 -1 -select c20 and c22 from t1; -c20 and c22 -1 -select c20 or c22 from t1; -c20 or c22 -1 -select c20 and c23 from t1; -c20 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c20 or c23 from t1; -c20 or c23 -1 -select c20 and c24 from t1; -c20 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c20 or c24 from t1; -c20 or c24 -1 -select c21 and c1 from t1; -c21 and c1 -1 -select c21 or c1 from t1; -c21 or c1 -1 -select c21 and c2 from t1; -c21 and c2 -1 -select c21 or c2 from t1; -c21 or c2 -1 -select c21 and c3 from t1; -c21 and c3 -1 -select c21 or c3 from t1; -c21 or c3 -1 -select c21 and c4 from t1; -c21 and c4 -1 -select c21 or c4 from t1; -c21 or c4 -1 -select c21 and c5 from t1; -c21 and c5 -1 -select c21 or c5 from t1; -c21 or c5 -1 -select c21 and c6 from t1; -c21 and c6 -1 -select c21 or c6 from t1; -c21 or c6 -1 -select c21 and c7 from t1; -c21 and c7 -1 -select c21 or c7 from t1; -c21 or c7 -1 -select c21 and c8 from t1; -c21 and c8 -1 -select c21 or c8 from t1; -c21 or c8 -1 -select c21 and c9 from t1; -c21 and c9 -1 -select c21 or c9 from t1; -c21 or c9 -1 -select c21 and c10 from t1; -c21 and c10 -1 -select c21 or c10 from t1; -c21 or c10 -1 -select c21 and c11 from t1; -c21 and c11 -1 -select c21 or c11 from t1; -c21 or c11 -1 -select c21 and c12 from t1; -c21 and c12 -1 -select c21 or c12 from t1; -c21 or c12 -1 -select c21 and c13 from t1; -c21 and c13 -1 -select c21 or c13 from t1; -c21 or c13 -1 -select c21 and c14 from t1; -c21 and c14 -1 -select c21 or c14 from t1; -c21 or c14 -1 -select c21 and c15 from t1; -c21 and c15 -1 -select c21 or c15 from t1; -c21 or c15 -1 -select c21 and c16 from t1; -c21 and c16 -1 -select c21 or c16 from t1; -c21 or c16 -1 -select c21 and c17 from t1; -c21 and c17 -1 -select c21 or c17 from t1; -c21 or c17 -1 -select c21 and c18 from t1; -c21 and c18 -1 -select c21 or c18 from t1; -c21 or c18 -1 -select c21 and c19 from t1; -c21 and c19 -1 -select c21 or c19 from t1; -c21 or c19 -1 -select c21 and c20 from t1; -c21 and c20 -1 -select c21 or c20 from t1; -c21 or c20 -1 -select c21 and c21 from t1; -c21 and c21 -1 -select c21 or c21 from t1; -c21 or c21 -1 -select c21 and c22 from t1; -c21 and c22 -1 -select c21 or c22 from t1; -c21 or c22 -1 -select c21 and c23 from t1; -c21 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c21 or c23 from t1; -c21 or c23 -1 -select c21 and c24 from t1; -c21 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c21 or c24 from t1; -c21 or c24 -1 -select c22 and c1 from t1; -c22 and c1 -1 -select c22 or c1 from t1; -c22 or c1 -1 -select c22 and c2 from t1; -c22 and c2 -1 -select c22 or c2 from t1; -c22 or c2 -1 -select c22 and c3 from t1; -c22 and c3 -1 -select c22 or c3 from t1; -c22 or c3 -1 -select c22 and c4 from t1; -c22 and c4 -1 -select c22 or c4 from t1; -c22 or c4 -1 -select c22 and c5 from t1; -c22 and c5 -1 -select c22 or c5 from t1; -c22 or c5 -1 -select c22 and c6 from t1; -c22 and c6 -1 -select c22 or c6 from t1; -c22 or c6 -1 -select c22 and c7 from t1; -c22 and c7 -1 -select c22 or c7 from t1; -c22 or c7 -1 -select c22 and c8 from t1; -c22 and c8 -1 -select c22 or c8 from t1; -c22 or c8 -1 -select c22 and c9 from t1; -c22 and c9 -1 -select c22 or c9 from t1; -c22 or c9 -1 -select c22 and c10 from t1; -c22 and c10 -1 -select c22 or c10 from t1; -c22 or c10 -1 -select c22 and c11 from t1; -c22 and c11 -1 -select c22 or c11 from t1; -c22 or c11 -1 -select c22 and c12 from t1; -c22 and c12 -1 -select c22 or c12 from t1; -c22 or c12 -1 -select c22 and c13 from t1; -c22 and c13 -1 -select c22 or c13 from t1; -c22 or c13 -1 -select c22 and c14 from t1; -c22 and c14 -1 -select c22 or c14 from t1; -c22 or c14 -1 -select c22 and c15 from t1; -c22 and c15 -1 -select c22 or c15 from t1; -c22 or c15 -1 -select c22 and c16 from t1; -c22 and c16 -1 -select c22 or c16 from t1; -c22 or c16 -1 -select c22 and c17 from t1; -c22 and c17 -1 -select c22 or c17 from t1; -c22 or c17 -1 -select c22 and c18 from t1; -c22 and c18 -1 -select c22 or c18 from t1; -c22 or c18 -1 -select c22 and c19 from t1; -c22 and c19 -1 -select c22 or c19 from t1; -c22 or c19 -1 -select c22 and c20 from t1; -c22 and c20 -1 -select c22 or c20 from t1; -c22 or c20 -1 -select c22 and c21 from t1; -c22 and c21 -1 -select c22 or c21 from t1; -c22 or c21 -1 -select c22 and c22 from t1; -c22 and c22 -1 -select c22 or c22 from t1; -c22 or c22 -1 -select c22 and c23 from t1; -c22 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c22 or c23 from t1; -c22 or c23 -1 -select c22 and c24 from t1; -c22 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c22 or c24 from t1; -c22 or c24 -1 -select c23 and c1 from t1; -c23 and c1 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c1 from t1; -c23 or c1 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c2 from t1; -c23 and c2 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c2 from t1; -c23 or c2 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c3 from t1; -c23 and c3 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c3 from t1; -c23 or c3 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c4 from t1; -c23 and c4 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c4 from t1; -c23 or c4 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c5 from t1; -c23 and c5 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c5 from t1; -c23 or c5 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c6 from t1; -c23 and c6 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c6 from t1; -c23 or c6 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c7 from t1; -c23 and c7 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c7 from t1; -c23 or c7 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c8 from t1; -c23 and c8 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c8 from t1; -c23 or c8 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c9 from t1; -c23 and c9 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c9 from t1; -c23 or c9 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c10 from t1; -c23 and c10 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c10 from t1; -c23 or c10 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c11 from t1; -c23 and c11 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c11 from t1; -c23 or c11 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c12 from t1; -c23 and c12 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c12 from t1; -c23 or c12 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c13 from t1; -c23 and c13 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c13 from t1; -c23 or c13 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c14 from t1; -c23 and c14 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c14 from t1; -c23 or c14 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c15 from t1; -c23 and c15 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c15 from t1; -c23 or c15 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c16 from t1; -c23 and c16 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c16 from t1; -c23 or c16 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c17 from t1; -c23 and c17 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c17 from t1; -c23 or c17 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c18 from t1; -c23 and c18 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c18 from t1; -c23 or c18 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c19 from t1; -c23 and c19 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c19 from t1; -c23 or c19 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c20 from t1; -c23 and c20 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c20 from t1; -c23 or c20 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c21 from t1; -c23 and c21 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c21 from t1; -c23 or c21 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c22 from t1; -c23 and c22 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c22 from t1; -c23 or c22 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c23 from t1; -c23 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c23 from t1; -c23 or c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 and c24 from t1; -c23 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c23 or c24 from t1; -c23 or c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c1 from t1; -c24 and c1 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c1 from t1; -c24 or c1 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c2 from t1; -c24 and c2 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c2 from t1; -c24 or c2 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c3 from t1; -c24 and c3 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c3 from t1; -c24 or c3 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c4 from t1; -c24 and c4 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c4 from t1; -c24 or c4 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c5 from t1; -c24 and c5 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c5 from t1; -c24 or c5 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c6 from t1; -c24 and c6 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c6 from t1; -c24 or c6 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c7 from t1; -c24 and c7 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c7 from t1; -c24 or c7 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c8 from t1; -c24 and c8 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c8 from t1; -c24 or c8 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c9 from t1; -c24 and c9 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c9 from t1; -c24 or c9 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c10 from t1; -c24 and c10 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c10 from t1; -c24 or c10 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c11 from t1; -c24 and c11 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c11 from t1; -c24 or c11 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c12 from t1; -c24 and c12 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c12 from t1; -c24 or c12 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c13 from t1; -c24 and c13 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c13 from t1; -c24 or c13 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c14 from t1; -c24 and c14 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c14 from t1; -c24 or c14 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c15 from t1; -c24 and c15 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c15 from t1; -c24 or c15 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c16 from t1; -c24 and c16 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c16 from t1; -c24 or c16 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c17 from t1; -c24 and c17 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c17 from t1; -c24 or c17 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c18 from t1; -c24 and c18 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c18 from t1; -c24 or c18 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c19 from t1; -c24 and c19 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c19 from t1; -c24 or c19 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c20 from t1; -c24 and c20 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c20 from t1; -c24 or c20 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c21 from t1; -c24 and c21 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c21 from t1; -c24 or c21 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c22 from t1; -c24 and c22 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c22 from t1; -c24 or c22 -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 and c23 from t1; -c24 and c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c23 from t1; -c24 or c23 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -Warning 1292 Truncated incorrect DOUBLE value: 'blob type' -select c24 and c24 from t1; -c24 and c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -select c24 or c24 from t1; -c24 or c24 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -Warning 1292 Truncated incorrect DOUBLE value: 'text type' -// Case5: case/if表达式测试 -// 结果应该为'branch1',第一个when expr上面不应该有bool expr,其余的应该有bool expr -select case when 'a' = 'a' then 'branch1' when 'b' then c1 else c2 end from t1; -case when 'a' = 'a' then 'branch1' when 'b' then c1 else c2 end -branch1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'b' -// 结果应该为2,且when expr上面都应该 有bool expr -// TODO: 没有出现预期的warning -select case when 'a' then 'str' when 'b' then c1 else c2 end from t1; -case when 'a' then 'str' when 'b' then c1 else c2 end -2 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'a' -Warning 1292 Truncated incorrect DOUBLE value: 'b' -// 结果应该为'branch2',且if表达式会被转为case表达式,但是不应该有bool expr,因为判断本身就带有布尔语义 -select if ('a' = 'b', c1, 'branch2') from t1; -if ('a' = 'b', c1, 'branch2') -branch2 -// 结果应该为'branch2',且if表达式会被转为case表达式,0上面应该有一个bool expr -select if (0, c1, 'branch2') from t1; -if (0, c1, 'branch2') -branch2 -// Case6: not表达式测试 -// c1是1,所以结果为0,且c1上面应该有bool expr -select not c1 from t1; -not c1 -0 -// c1-1是0,所以结果为0,且c1上面应该有bool expr -select not c1-1 from t1; -not c1-1 -1 -// 结果为1,且not的子节点上面没有bool expr -select not (c1 and 0) from t1; -not (c1 and 0) -1 diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_char_length.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_char_length.result deleted file mode 100644 index eaf1f3c93..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_char_length.result +++ /dev/null @@ -1,43 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -alter system flush plan cache global; -set ob_enable_plan_cache = 0; -select char_length(1234); -char_length(1234) -4 -select char_length(1); -char_length(1) -1 -select char_length(null); -char_length(null) -NULL -select char_length(''); -char_length('') -0 -select char_length('a'); -char_length('a') -1 -select char_length(' a '); -char_length(' a ') -3 -select char_length(' a b'); -char_length(' a b') -4 -drop table if exists t1; -create table t1 (c1 int, c2 char(10), c3 varchar(10), c4 timestamp, c5 decimal); -insert into t1 values(1, 'a ', 'a ', '2010-01-01 11:11:11', 10.1); -select char_length(c1) from t1; -char_length(c1) -1 -select char_length(c2) from t1; -char_length(c2) -1 -select char_length(c3) from t1; -char_length(c3) -2 -select char_length(c4) from t1; -char_length(c4) -19 -select char_length(c5) from t1; -char_length(c5) -2 diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_collation.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_collation.result deleted file mode 100644 index d18f88e6c..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_collation.result +++ /dev/null @@ -1,138 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30), -c23 varchar(30) charset utf8); -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5', 'utf8 col'); -insert into t1 values(-1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --3.5, 4.5, --5.5, 6.5, --7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'-9.5', '10.5', 'utf8 col'); -select c1, charset(c1), collation(c1), coercibility(c1) from t1; -c1 charset(c1) collation(c1) coercibility(c1) -1 binary binary 5 --1 binary binary 5 -select c2, charset(c2), collation(c2), coercibility(c2) from t1; -c2 charset(c2) collation(c2) coercibility(c2) -2 binary binary 5 -2 binary binary 5 -select c3, charset(c3), collation(c3), coercibility(c3) from t1; -c3 charset(c3) collation(c3) coercibility(c3) -1 binary binary 5 --1 binary binary 5 -select c4, charset(c4), collation(c4), coercibility(c4) from t1; -c4 charset(c4) collation(c4) coercibility(c4) -2 binary binary 5 -2 binary binary 5 -select c5, charset(c5), collation(c5), coercibility(c5) from t1; -c5 charset(c5) collation(c5) coercibility(c5) -1 binary binary 5 --1 binary binary 5 -select c6, charset(c6), collation(c6), coercibility(c6) from t1; -c6 charset(c6) collation(c6) coercibility(c6) -2 binary binary 5 -2 binary binary 5 -select c7, charset(c7), collation(c7), coercibility(c7) from t1; -c7 charset(c7) collation(c7) coercibility(c7) -1 binary binary 5 --1 binary binary 5 -select c8, charset(c8), collation(c8), coercibility(c8) from t1; -c8 charset(c8) collation(c8) coercibility(c8) -2 binary binary 5 -2 binary binary 5 -select c9, charset(c9), collation(c9), coercibility(c9) from t1; -c9 charset(c9) collation(c9) coercibility(c9) -1 binary binary 5 --1 binary binary 5 -select c10, charset(c10), collation(c10), coercibility(c10) from t1; -c10 charset(c10) collation(c10) coercibility(c10) -2 binary binary 5 -2 binary binary 5 -select c11, charset(c11), collation(c11), coercibility(c11) from t1; -c11 charset(c11) collation(c11) coercibility(c11) -1 binary binary 5 --1 binary binary 5 -select c12, charset(c12), collation(c12), coercibility(c12) from t1; -c12 charset(c12) collation(c12) coercibility(c12) -2 binary binary 5 -2 binary binary 5 -select c13, charset(c13), collation(c13), coercibility(c13) from t1; -c13 charset(c13) collation(c13) coercibility(c13) -3.5 binary binary 5 --3.5 binary binary 5 -select c14, charset(c14), collation(c14), coercibility(c14) from t1; -c14 charset(c14) collation(c14) coercibility(c14) -4.5 binary binary 5 -4.5 binary binary 5 -select c15, charset(c15), collation(c15), coercibility(c15) from t1; -c15 charset(c15) collation(c15) coercibility(c15) -5.5 binary binary 5 --5.5 binary binary 5 -select c16, charset(c16), collation(c16), coercibility(c16) from t1; -c16 charset(c16) collation(c16) coercibility(c16) -6.5 binary binary 5 -6.5 binary binary 5 -select c17, charset(c17), collation(c17), coercibility(c17) from t1; -c17 charset(c17) collation(c17) coercibility(c17) -8 binary binary 5 --8 binary binary 5 -select c18, charset(c18), collation(c18), coercibility(c18) from t1; -c18 charset(c18) collation(c18) coercibility(c18) -9 binary binary 5 -9 binary binary 5 -select c19, charset(c19), collation(c19), coercibility(c19) from t1; -c19 charset(c19) collation(c19) coercibility(c19) -2019-12-01 12:00:00 binary binary 5 -2019-12-01 12:00:00 binary binary 5 -select c20, charset(c20), collation(c20), coercibility(c20) from t1; -c20 charset(c20) collation(c20) coercibility(c20) -2019-12-03 06:00:00 binary binary 5 -2019-12-03 06:00:00 binary binary 5 -select c21, charset(c21), collation(c21), coercibility(c21) from t1; -c21 charset(c21) collation(c21) coercibility(c21) -9.5 utf8mb4 utf8mb4_general_ci 2 --9.5 utf8mb4 utf8mb4_general_ci 2 -select c22, charset(c22), collation(c22), coercibility(c22) from t1; -c22 charset(c22) collation(c22) coercibility(c22) -10.5 utf8mb4 utf8mb4_general_ci 2 -10.5 utf8mb4 utf8mb4_general_ci 2 -// test set_collation expr -// set_collation表达式检查charset与collate不匹配,报错 -// 下面的是等号表达式在类型推导时,进行aggregate collation发现collation不一致报错 -select _utf8mb4'a' collate utf8mb4_general_ci = _utf8mb4'A' collate utf8mb4_bin; -ERROR HY000: Illegal mix of collations -select _utf8mb4'a' collate utf8mb4_general_ci = _utf8mb4'A' collate utf8mb4_general_ci; -_utf8mb4'a' collate utf8mb4_general_ci = _utf8mb4'A' collate utf8mb4_general_ci -1 -select _utf8mb4'a' collate utf8mb4_bin = _utf8mb4'A' collate utf8mb4_bin; -_utf8mb4'a' collate utf8mb4_bin = _utf8mb4'A' collate utf8mb4_bin -0 -drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_concat.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_concat.result deleted file mode 100644 index 386c8ab80..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_concat.result +++ /dev/null @@ -1,85 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; -drop table if exists t1; -create table t1 (c1 varchar(2000), c2 varchar(2000)); -insert into t1 (c1, c2) values ('a', 'b'); -insert into t1 (c1, c2) values (repeat('a', 50), repeat('b', 50)); -insert into t1 (c1, c2) values (repeat('a', 100), repeat('b', 100)); -insert into t1 (c1, c2) values (repeat('a', 200), repeat('b', 300)); -insert into t1 (c1, c2) values (repeat('a', 1000), repeat('b', 800)); -insert into t1 (c1, c2) values ('a', 'b'); -insert into t1 (c1, c2) values (repeat('a', 50), repeat('b', 50)); -insert into t1 (c1, c2) values (repeat('a', 100), repeat('b', 100)); -insert into t1 (c1, c2) values (repeat('a', 200), repeat('b', 300)); -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select concat('abc') from dual; -concat('abc') -abc -select concat(NULL) from dual; -concat(NULL) -NULL -select concat('abc', NULL) from dual; -concat('abc', NULL) -NULL -select concat(NULL, 'abc') from dual; -concat(NULL, 'abc') -NULL -select concat('def', 'abc') from dual; -concat('def', 'abc') -defabc -select concat(NULL, 'def', 'abc') from dual; -concat(NULL, 'def', 'abc') -NULL -select concat('ABC', 'def', 'abc') from dual; -concat('ABC', 'def', 'abc') -ABCdefabc -select concat(c1, c2) from t1; -concat(c1, c2) -ab -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -ab -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -set group_concat_max_len=9223372036854775807; -select group_concat('x') UNION ALL select 1; -group_concat('x') -x -1 -set group_concat_max_len=20; -select group_concat(c1) from (select 'abcdefg' c1 union select '012345678910123456789' c1)a; -group_concat(c1) -01234567891012345678 -select group_concat(c1) from (select 'abcdefg' c1 union select '012345678910123456' c1)a; -group_concat(c1) -012345678910123456,a -drop table if exists t111_var; -create table t111_var(c0 bigint ,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000)); -insert into t111_var values(1,repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000)); -insert into t111_var select c0+1,c1,c2,c3,c4 from t111_var; -insert into t111_var select c0+10,c1,c2,c3,c4 from t111_var; -insert into t111_var select c0+100,c1,c2,c3,c4 from t111_var; -insert into t111_var select c0+1000,c1,c2,c3,c4 from t111_var; -insert into t111_var select c0+10000,c1,c2,c3,c4 from t111_var; -insert into t111_var select c0+100000,c1,c2,c3,c4 from t111_var; -insert into t111_var select c0+1000000,c1,c2,c3,c4 from t111_var; -insert into t111_var select c0+10000000,c1,c2,c3,c4 from t111_var; -insert into t111_var select c0+100000000,c1,c2,c3,c4 from t111_var; -insert into t111_var values(null,null,null,null,null); -insert into t111_var select * from t111_var; -commit; -set group_concat_max_len=10485; -select length(group_concat(c1)) from t111_var; -length(group_concat(c1)) -10485 -select group_concat(c1) from t111_var; -group_concat(c1) -abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab,abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab,abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababa -set group_concat_max_len=1024; -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_conv.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_conv.result deleted file mode 100644 index 2a8584bf0..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_conv.result +++ /dev/null @@ -1,25 +0,0 @@ -connect sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -set @@ob_enable_plan_cache = 0; -select conv('a',16,2) from dual; -conv('a',16,2) -1010 -select conv('6E',18,8) from dual; -conv('6E',18,8) -172 -select conv(-17,10,-18) from dual; -conv(-17,10,-18) --H -select conv(10+'10'+'10'+X'0a',10,10) from dual; -conv(10+'10'+'10'+X'0a',10,10) -40 -select conv(null, 16, 2) from dual; -conv(null, 16, 2) -NULL -select conv('6E',null,8) from dual; -conv('6E',null,8) -NULL -select conv('6E',18, null) from dual; -conv('6E',18, null) -NULL -connection sys; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_date.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_date.result deleted file mode 100644 index eb0b487e2..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_date.result +++ /dev/null @@ -1,18 +0,0 @@ -connect sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -create table t1 (c1 varchar(2000)); -insert into t1 values("2019-10-11"); -connection sys; -connection default; -set @@ob_enable_plan_cache = 0; -select date(c1) from t1; -date(c1) -2019-10-11 -select date("2019-10-10") from dual; -date("2019-10-10") -2019-10-10 -select date(null) from dual; -date(null) -NULL -connection sys; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_datediff.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_datediff.result deleted file mode 100644 index 3fc1368d0..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_datediff.result +++ /dev/null @@ -1,34 +0,0 @@ -connect sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -create table t1 (c1 varchar(30), c2 date, c3 date); -insert into t1 values("2019-10-11", "2019-01-10", "2018-01-01"); -insert into t1 values(null, "2019-01-10", null); -insert into t1 values("2019-10-11", "0000-00-00", "2019-10-19"); -connection sys; -connection default; -set @@ob_enable_plan_cache = 0; -select datediff(c1, c2), datediff(c2, c3) from t1; -datediff(c1, c2) datediff(c2, c3) -274 374 -NULL NULL -NULL NULL -select datediff(20080701, "2008-08-01"); -datediff(20080701, "2008-08-01") --31 -select datediff("20080701", "2012-05-25"); -datediff("20080701", "2012-05-25") --1424 -select datediff("2012-05-25","20080701"); -datediff("2012-05-25","20080701") -1424 -select datediff(null,null); -datediff(null,null) -NULL -select datediff(null,"2012-05-25"); -datediff(null,"2012-05-25") -NULL -select datediff("2012-05-25","0000-00-00"); -datediff("2012-05-25","0000-00-00") -NULL -connection sys; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_des_hex_str.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_des_hex_str.result deleted file mode 100644 index 385e8bb9d..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_des_hex_str.result +++ /dev/null @@ -1,25 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select des_hex_str("11053FFF80EAB6BADEE6F501"); -des_hex_str("11053FFF80EAB6BADEE6F501") -2004-04-04 04:04:04.000000 -select des_hex_str("0C053FFFB8BD94DC9E8A8E8B40"); -des_hex_str("0C053FFFB8BD94DC9E8A8E8B40") -5.555 -select des_hex_str("0C053FFFB8BD94DC9E8A8E8B40"); -des_hex_str("0C053FFFB8BD94DC9E8A8E8B40") -5.555 -select des_hex_str("04053FFF05"); -des_hex_str("04053FFF05") -5 -select des_hex_str("0C053FFFADE4F6FCFED4F1F83F"); -des_hex_str("0C053FFFADE4F6FCFED4F1F83F") -1.111 -select des_hex_str("0B053FFF8080C08504"); -des_hex_str("0B053FFF8080C08504") -5.5 -select des_hex_str(NULL); -ERROR HY000: Invalid argument -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_empty_arg.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_empty_arg.result deleted file mode 100644 index c94baeebd..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_empty_arg.result +++ /dev/null @@ -1,123 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; -alter system set enable_async_syslog = false; -connection default; -set @@ob_enable_plan_cache = 0; -set @@ob_log_level='debug'; -drop view if exists v1; -create view v1 as select connection_id() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -connection_id() int(10) unsigned NO -drop view v1; -create view v1 as select utc_timestamp() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -utc_timestamp() datetime NO -drop view v1; -create view v1 as select utc_timestamp(3) from dual limit 10; -desc v1; -Field Type Null Key Default Extra -utc_timestamp(3) datetime(3) NO -drop view v1; -create view v1 as select current_timestamp() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -current_timestamp() datetime NO -drop view v1; -create view v1 as select current_timestamp(3) from dual limit 10; -desc v1; -Field Type Null Key Default Extra -current_timestamp(3) datetime NO -drop view v1; -create view v1 as select sysdate() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -sysdate() datetime NO -drop view v1; -create view v1 as select sysdate(3) from dual limit 10; -desc v1; -Field Type Null Key Default Extra -sysdate(3) datetime NO -drop view v1; -create view v1 as select cur_date() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -cur_date() date NO -drop view v1; -create view v1 as select curtime() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -curtime() time NO -drop view v1; -create view v1 as select current_user() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -current_user() varchar(193) NO -drop view v1; -create view v1 as select database() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -database() varchar(128) NO -drop view v1; -create view v1 as select effective_tenant_id() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -effective_tenant_id() bigint(20) unsigned NO -drop view v1; -create view v1 as select effective_tenant() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -effective_tenant() varchar(64) NO -drop view v1; -create view v1 as select found_rows() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -found_rows() bigint(20) NO -drop view v1; -create view v1 as select host_ip() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -host_ip() varchar(46) NO -drop view v1; -create view v1 as select last_execution_id() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -last_execution_id() bigint NO -drop view v1; -create view v1 as select last_trace_id() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -last_trace_id() varchar(128) NO -drop view v1; -create view v1 as select mysql_port() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -mysql_port() bigint(20) NO -drop view v1; -create view v1 as select rpc_port() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -rpc_port() int(11) NO -drop view v1; -create view v1 as select row_count() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -row_count() bigint(20) NO -drop view v1; -create view v1 as select uuid() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -uuid() varchar(36) NO -drop view v1; -create view v1 as select user() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -user() varchar(193) NO -drop view v1; -create view v1 as select version() from dual limit 10; -desc v1; -Field Type Null Key Default Extra -version() varchar(18) NO -drop view v1; -connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_field.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_field.result deleted file mode 100644 index 6026621ba..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_field.result +++ /dev/null @@ -1,29 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select field(1, 3, 2, 1, NULL); -field(1, 3, 2, 1, NULL) -3 -select field(1, 3, 2, 1, NULL, 1); -field(1, 3, 2, 1, NULL, 1) -3 -select field(NULL, 3, 2, 1, NULL); -field(NULL, 3, 2, 1, NULL) -0 -select field(2, 3, NULL, 2, 1, NULL); -field(2, 3, NULL, 2, 1, NULL) -3 -select field(1, 3, 2, "1", NULL); -field(1, 3, 2, "1", NULL) -3 -select field(1, 3, 2.2, "1", NULL); -field(1, 3, 2.2, "1", NULL) -3 -select field("abc", 3.2, "def", 'abc'); -field("abc", 3.2, "def", 'abc') -2 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'abc' -Warning 1292 Truncated incorrect DOUBLE value: 'def' -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_get_sys_var.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_get_sys_var.result deleted file mode 100644 index 15bfe3f04..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_get_sys_var.result +++ /dev/null @@ -1,30 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -// res type is string -select @@ob_log_level; -@@ob_log_level -disabled -set @@ob_log_level='debug'; -select @@ob_log_level; -@@ob_log_level -debug -set @@ob_log_level='info'; -// res type is bool -set @@ob_enable_plan_cache = 1; -select @@ob_enable_plan_cache = 0; -@@ob_enable_plan_cache = 0 -0 -set @@ob_enable_plan_cache = 0; -select @@ob_enable_plan_cache = 0; -@@ob_enable_plan_cache = 0 -1 -// res type is int -select @@ob_plan_cache_percentage; -@@ob_plan_cache_percentage -5 -// test null -set character_set_results=NULL; -select @@character_set_results; -@@character_set_results -NULL diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_get_user_var.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_get_user_var.result deleted file mode 100644 index 499e6ea0f..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_get_user_var.result +++ /dev/null @@ -1,31 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; -alter system flush plan cache global; -set ob_enable_plan_cache = 0; -set @var1 = NULL; -select @var1 from dual; -@var1 -NULL -set @var1 = 1; -select @var1 from dual; -@var1 -1 -drop table if exists t1; -create table t1 (c1 int); -insert into t1 values(@var1); -select * from t1; -c1 -1 -set @a=0,@b=0; -select @a:=10, @b:=1, @a > @b, @a < @b; -@a:=10 @b:=1 @a > @b @a < @b -10 1 1 0 -select @a:="10", @b:="1", @a > @b, @a < @b; -@a:="10" @b:="1" @a > @b @a < @b -10 1 1 0 -select @a:=10, @b:=2, @a > @b, @a < @b; -@a:=10 @b:=2 @a > @b @a < @b -10 2 0 1 -select @a:="10", @b:="2", @a > @b, @a < @b; -@a:="10" @b:="2" @a > @b @a < @b -10 2 1 0 diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_is.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_is.result deleted file mode 100644 index e2c712e08..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_is.result +++ /dev/null @@ -1,388 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -connection default; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 date, c20 date not null, -c21 datetime, c22 datetime not null, -c23 timestamp, c24 timestamp not null, -c25 varchar(30), c26 char(30)); -select * from t1; -c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 -insert into t1 values(NULL, NULL, -NULL, NULL, -NULL, NULL, -NULL, NULL, -NULL, NULL, -NULL, NULL, -NULL, NULL, -NULL, NULL, -NULL, NULL, -NULL, '0000-00-00', -NULL, '0000-00-00 00:00:00', -NULL, '0000-00-00 00:00:00', -NULL, NULL); -insert into t1 values(0, 0, -0, 0, -0, 0, -0, 0, -0, 0, -0, 0, -0.0, 0.0, -0.0, 0.0, -0.0, 0.0, -'0000-00-00', '0000-00-00', -'0000-00-00 00:00:00', '0000-00-00 00:00:00', -'0000-00-00 00:00:00', '0000-00-00 00:00:00', -'0', '0.0'); -insert into t1 values(1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, --0.1, 0.1, --0.1, 0.1, --0.1, 0.1, -'0001-01-01', '0001-01-01', -'0001-01-01 00:00:00', '0001-01-01 00:00:00', -'0001-01-01 00:00:00', '0001-01-01 00:00:00', -'1', '1.0'); -insert into t1 values(11, 11, -11, 11, -11, 11, -11, 11, -11, 11, -11, 11, -11.0, 11.0, -11.0, 11.0, -11.0, 11.0, -'2019-12-01 12:00:00', '2019-12-01 12:00:00', -'2019-12-01 12:00:00', '2019-12-01 12:00:00', -'2019-12-01 12:00:00', '2019-12-01 12:00:00', -'11', '11.0'); -connection conn_admin; -connection default; -set @@ob_enable_plan_cache = 0; -select c1, c1 is true, c1 is false, c1 is null, c1 is unknown from t1; -c1 c1 is true c1 is false c1 is null c1 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c1, c1 is not true, c1 is not false, c1 is not null, c1 is not unknown from t1; -c1 c1 is not true c1 is not false c1 is not null c1 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c2, c2 is true, c2 is false, c2 is null, c2 is unknown from t1; -c2 c2 is true c2 is false c2 is null c2 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c2, c2 is not true, c2 is not false, c2 is not null, c2 is not unknown from t1; -c2 c2 is not true c2 is not false c2 is not null c2 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c3, c3 is true, c3 is false, c3 is null, c3 is unknown from t1; -c3 c3 is true c3 is false c3 is null c3 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c3, c3 is not true, c3 is not false, c3 is not null, c3 is not unknown from t1; -c3 c3 is not true c3 is not false c3 is not null c3 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c4, c4 is true, c4 is false, c4 is null, c4 is unknown from t1; -c4 c4 is true c4 is false c4 is null c4 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c4, c4 is not true, c4 is not false, c4 is not null, c4 is not unknown from t1; -c4 c4 is not true c4 is not false c4 is not null c4 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c5, c5 is true, c5 is false, c5 is null, c5 is unknown from t1; -c5 c5 is true c5 is false c5 is null c5 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c5, c5 is not true, c5 is not false, c5 is not null, c5 is not unknown from t1; -c5 c5 is not true c5 is not false c5 is not null c5 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c6, c6 is true, c6 is false, c6 is null, c6 is unknown from t1; -c6 c6 is true c6 is false c6 is null c6 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c6, c6 is not true, c6 is not false, c6 is not null, c6 is not unknown from t1; -c6 c6 is not true c6 is not false c6 is not null c6 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c7, c7 is true, c7 is false, c7 is null, c7 is unknown from t1; -c7 c7 is true c7 is false c7 is null c7 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c7, c7 is not true, c7 is not false, c7 is not null, c7 is not unknown from t1; -c7 c7 is not true c7 is not false c7 is not null c7 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c8, c8 is true, c8 is false, c8 is null, c8 is unknown from t1; -c8 c8 is true c8 is false c8 is null c8 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c8, c8 is not true, c8 is not false, c8 is not null, c8 is not unknown from t1; -c8 c8 is not true c8 is not false c8 is not null c8 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c9, c9 is true, c9 is false, c9 is null, c9 is unknown from t1; -c9 c9 is true c9 is false c9 is null c9 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c9, c9 is not true, c9 is not false, c9 is not null, c9 is not unknown from t1; -c9 c9 is not true c9 is not false c9 is not null c9 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c10, c10 is true, c10 is false, c10 is null, c10 is unknown from t1; -c10 c10 is true c10 is false c10 is null c10 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c10, c10 is not true, c10 is not false, c10 is not null, c10 is not unknown from t1; -c10 c10 is not true c10 is not false c10 is not null c10 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c11, c11 is true, c11 is false, c11 is null, c11 is unknown from t1; -c11 c11 is true c11 is false c11 is null c11 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c11, c11 is not true, c11 is not false, c11 is not null, c11 is not unknown from t1; -c11 c11 is not true c11 is not false c11 is not null c11 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c12, c12 is true, c12 is false, c12 is null, c12 is unknown from t1; -c12 c12 is true c12 is false c12 is null c12 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c12, c12 is not true, c12 is not false, c12 is not null, c12 is not unknown from t1; -c12 c12 is not true c12 is not false c12 is not null c12 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c13, c13 is true, c13 is false, c13 is null, c13 is unknown from t1; -c13 c13 is true c13 is false c13 is null c13 is unknown -NULL 0 0 1 1 -0 0 1 0 0 --0.1 1 0 0 0 -11 1 0 0 0 -select c13, c13 is not true, c13 is not false, c13 is not null, c13 is not unknown from t1; -c13 c13 is not true c13 is not false c13 is not null c13 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 --0.1 0 1 1 1 -11 0 1 1 1 -select c14, c14 is true, c14 is false, c14 is null, c14 is unknown from t1; -c14 c14 is true c14 is false c14 is null c14 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -0.1 1 0 0 0 -11 1 0 0 0 -select c14, c14 is not true, c14 is not false, c14 is not null, c14 is not unknown from t1; -c14 c14 is not true c14 is not false c14 is not null c14 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -0.1 0 1 1 1 -11 0 1 1 1 -select c15, c15 is true, c15 is false, c15 is null, c15 is unknown from t1; -c15 c15 is true c15 is false c15 is null c15 is unknown -NULL 0 0 1 1 -0 0 1 0 0 --0.1 1 0 0 0 -11 1 0 0 0 -select c15, c15 is not true, c15 is not false, c15 is not null, c15 is not unknown from t1; -c15 c15 is not true c15 is not false c15 is not null c15 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 --0.1 0 1 1 1 -11 0 1 1 1 -select c16, c16 is true, c16 is false, c16 is null, c16 is unknown from t1; -c16 c16 is true c16 is false c16 is null c16 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -0.1 1 0 0 0 -11 1 0 0 0 -select c16, c16 is not true, c16 is not false, c16 is not null, c16 is not unknown from t1; -c16 c16 is not true c16 is not false c16 is not null c16 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -0.1 0 1 1 1 -11 0 1 1 1 -select c17, c17 is true, c17 is false, c17 is null, c17 is unknown from t1; -c17 c17 is true c17 is false c17 is null c17 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -0 0 1 0 0 -11 1 0 0 0 -select c17, c17 is not true, c17 is not false, c17 is not null, c17 is not unknown from t1; -c17 c17 is not true c17 is not false c17 is not null c17 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -0 1 0 1 1 -11 0 1 1 1 -select c18, c18 is true, c18 is false, c18 is null, c18 is unknown from t1; -c18 c18 is true c18 is false c18 is null c18 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -0 0 1 0 0 -11 1 0 0 0 -select c18, c18 is not true, c18 is not false, c18 is not null, c18 is not unknown from t1; -c18 c18 is not true c18 is not false c18 is not null c18 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -0 1 0 1 1 -11 0 1 1 1 -select c19, c19 is true, c19 is false, c19 is null, c19 is unknown from t1; -c19 c19 is true c19 is false c19 is null c19 is unknown -NULL 0 0 1 1 -0000-00-00 0 1 0 0 -0001-01-01 1 0 0 0 -2019-12-01 1 0 0 0 -select c19, c19 is not true, c19 is not false, c19 is not null, c19 is not unknown from t1; -c19 c19 is not true c19 is not false c19 is not null c19 is not unknown -NULL 1 1 0 0 -0000-00-00 1 0 1 1 -0001-01-01 0 1 1 1 -2019-12-01 0 1 1 1 -select c20, c20 is true, c20 is false, c20 is null, c20 is unknown from t1; -c20 c20 is true c20 is false c20 is null c20 is unknown -0000-00-00 0 1 0 0 -0000-00-00 0 1 0 0 -0001-01-01 1 0 0 0 -2019-12-01 1 0 0 0 -select c20, c20 is not true, c20 is not false, c20 is not null, c20 is not unknown from t1; -c20 c20 is not true c20 is not false c20 is not null c20 is not unknown -0000-00-00 1 0 1 1 -0000-00-00 1 0 1 1 -0001-01-01 0 1 1 1 -2019-12-01 0 1 1 1 -select c21, c21 is true, c21 is false, c21 is null, c21 is unknown from t1; -c21 c21 is true c21 is false c21 is null c21 is unknown -NULL 0 0 1 1 -0000-00-00 00:00:00 0 1 0 0 -0001-01-01 00:00:00 1 0 0 0 -2019-12-01 12:00:00 1 0 0 0 -select c21, c21 is not true, c21 is not false, c21 is not null, c21 is not unknown from t1; -c21 c21 is not true c21 is not false c21 is not null c21 is not unknown -NULL 1 1 0 0 -0000-00-00 00:00:00 1 0 1 1 -0001-01-01 00:00:00 0 1 1 1 -2019-12-01 12:00:00 0 1 1 1 -select c22, c22 is true, c22 is false, c22 is null, c22 is unknown from t1; -c22 c22 is true c22 is false c22 is null c22 is unknown -0000-00-00 00:00:00 0 1 0 0 -0000-00-00 00:00:00 0 1 0 0 -0001-01-01 00:00:00 1 0 0 0 -2019-12-01 12:00:00 1 0 0 0 -select c22, c22 is not true, c22 is not false, c22 is not null, c22 is not unknown from t1; -c22 c22 is not true c22 is not false c22 is not null c22 is not unknown -0000-00-00 00:00:00 1 0 1 1 -0000-00-00 00:00:00 1 0 1 1 -0001-01-01 00:00:00 0 1 1 1 -2019-12-01 12:00:00 0 1 1 1 -select c23, c23 is true, c23 is false, c23 is null, c23 is unknown from t1; -c23 c23 is true c23 is false c23 is null c23 is unknown -NULL 0 0 1 1 -0000-00-00 00:00:00 0 1 0 0 -0001-01-01 00:00:00 1 0 0 0 -2019-12-01 12:00:00 1 0 0 0 -select c23, c23 is not true, c23 is not false, c23 is not null, c23 is not unknown from t1; -c23 c23 is not true c23 is not false c23 is not null c23 is not unknown -NULL 1 1 0 0 -0000-00-00 00:00:00 1 0 1 1 -0001-01-01 00:00:00 0 1 1 1 -2019-12-01 12:00:00 0 1 1 1 -select c24, c24 is true, c24 is false, c24 is null, c24 is unknown from t1; -c24 c24 is true c24 is false c24 is null c24 is unknown -0000-00-00 00:00:00 0 1 0 0 -0000-00-00 00:00:00 0 1 0 0 -0001-01-01 00:00:00 1 0 0 0 -2019-12-01 12:00:00 1 0 0 0 -select c24, c24 is not true, c24 is not false, c24 is not null, c24 is not unknown from t1; -c24 c24 is not true c24 is not false c24 is not null c24 is not unknown -0000-00-00 00:00:00 1 0 1 1 -0000-00-00 00:00:00 1 0 1 1 -0001-01-01 00:00:00 0 1 1 1 -2019-12-01 12:00:00 0 1 1 1 -select c25, c25 is true, c25 is false, c25 is null, c25 is unknown from t1; -c25 c25 is true c25 is false c25 is null c25 is unknown -NULL 0 0 1 1 -0 0 1 0 0 -1 1 0 0 0 -11 1 0 0 0 -select c25, c25 is not true, c25 is not false, c25 is not null, c25 is not unknown from t1; -c25 c25 is not true c25 is not false c25 is not null c25 is not unknown -NULL 1 1 0 0 -0 1 0 1 1 -1 0 1 1 1 -11 0 1 1 1 -select c26, c26 is true, c26 is false, c26 is null, c26 is unknown from t1; -c26 c26 is true c26 is false c26 is null c26 is unknown -NULL 0 0 1 1 -0.0 0 1 0 0 -1.0 1 0 0 0 -11.0 1 0 0 0 -select c26, c26 is not true, c26 is not false, c26 is not null, c26 is not unknown from t1; -c26 c26 is not true c26 is not false c26 is not null c26 is not unknown -NULL 1 1 0 0 -0.0 1 0 1 1 -1.0 0 1 1 1 -11.0 0 1 1 1 -drop table t1; -connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_is_serving_tenant.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_is_serving_tenant.result deleted file mode 100644 index 4b2b5ab00..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_is_serving_tenant.result +++ /dev/null @@ -1,23 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select is_serving_tenant(host_ip(), rpc_port(), effective_tenant_id()); -is_serving_tenant(host_ip(), rpc_port(), effective_tenant_id()) -1 -select is_serving_tenant(host_ip(), rpc_port(), 1); -is_serving_tenant(host_ip(), rpc_port(), 1) -1 -select is_serving_tenant(host_ip(), rpc_port(), 888); -is_serving_tenant(host_ip(), rpc_port(), 888) -0 -select is_serving_tenant('abc', rpc_port(), effective_tenant_id()); -is_serving_tenant('abc', rpc_port(), effective_tenant_id()) -0 -select is_serving_tenant('abc', rpc_port(), 1); -is_serving_tenant('abc', rpc_port(), 1) -1 -select is_serving_tenant('abc', rpc_port(), 888); -is_serving_tenant('abc', rpc_port(), 888) -0 -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_length.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_length.result deleted file mode 100644 index 783475581..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_length.result +++ /dev/null @@ -1,143 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -connection default; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 bigint, c6 bigint unsigned, -c7 float, c8 float unsigned, -c9 double, c10 double unsigned, -c11 decimal, c12 decimal unsigned, -c13 date, c14 datetime, c15 timestamp, -c16 varchar(30), c17 char(30)); -select * from t1; -c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 -insert into t1 values(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); -insert into t1 values(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0000-00-00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', ''); -insert into t1 values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '0013-01-01', '0014-01-01', '0015-01-01', '16', '17'); -insert into t1 values(-1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, '0013-01-01', '0014-01-01 00:00:00', '0015-01-01 00:00:00', '-16', '-17'); -insert into t1 values(1234567, 7654321, -33, 44, 555555555, 666666666, 777.777, 8888.888, 99999.999999, 10000.00000, 1111, 121212121, '0013-01-01', '0014-01-01 00:00:11', '0015-01-01 00:00:11', 'sadfsadfdsafasasdf', 'asdffdsafadsfdsafsad'); -connection conn_admin; -connection default; -set @@ob_enable_plan_cache = 0; -select c1, length(c1) from t1; -c1 length(c1) -NULL NULL -0 1 -1 1 --1 2 -1234567 7 -select c2, length(c2) from t1; -c2 length(c2) -NULL NULL -0 1 -2 1 -2 1 -7654321 7 -select c3, length(c3) from t1; -c3 length(c3) -NULL NULL -0 1 -3 1 --3 2 --33 3 -select c4, length(c4) from t1; -c4 length(c4) -NULL NULL -0 1 -4 1 -4 1 -44 2 -select c5, length(c5) from t1; -c5 length(c5) -NULL NULL -0 1 -5 1 --5 2 -555555555 9 -select c6, length(c6) from t1; -c6 length(c6) -NULL NULL -0 1 -6 1 -6 1 -666666666 9 -select c7, length(c7) from t1; -c7 length(c7) -NULL NULL -0 1 -7 1 --7 2 -777.777 7 -select c8, length(c8) from t1; -c8 length(c8) -NULL NULL -0 1 -8 1 -8 1 -8888.89 7 -select c9, length(c9) from t1; -c9 length(c9) -NULL NULL -0 1 -9 1 --9 2 -99999.999999 12 -select c10, length(c10) from t1; -c10 length(c10) -NULL NULL -0 1 -10 2 -10 2 -10000 5 -select c11, length(c11) from t1; -c11 length(c11) -NULL NULL -0 1 -11 2 --11 3 -1111 4 -select c12, length(c12) from t1; -c12 length(c12) -NULL NULL -0 1 -12 2 -12 2 -121212121 9 -select c13, length(c13) from t1; -c13 length(c13) -NULL NULL -0000-00-00 10 -0013-01-01 10 -0013-01-01 10 -0013-01-01 10 -select c14, length(c14) from t1; -c14 length(c14) -NULL NULL -0000-00-00 00:00:00 19 -0014-01-01 00:00:00 19 -0014-01-01 00:00:00 19 -0014-01-01 00:00:11 19 -select c15, length(c15) from t1; -c15 length(c15) -NULL NULL -0000-00-00 00:00:00 19 -0015-01-01 00:00:00 19 -0015-01-01 00:00:00 19 -0015-01-01 00:00:11 19 -select c16, length(c16) from t1; -c16 length(c16) -NULL NULL - 0 -16 2 --16 3 -sadfsadfdsafasasdf 18 -select c17, length(c17) from t1; -c17 length(c17) -NULL NULL - 0 -17 2 --17 3 -asdffdsafadsfdsafsad 20 -drop table t1; -connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_lnnvl.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_lnnvl.result deleted file mode 100644 index e36da4a00..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_lnnvl.result +++ /dev/null @@ -1,20 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select lnnvl(1) from dual; -lnnvl(1) -0 -select lnnvl(-1) from dual; -lnnvl(-1) -0 -select lnnvl(0) from dual; -lnnvl(0) -1 -select lnnvl(NULL) from dual; -lnnvl(NULL) -1 -select lnnvl('abc') from dual; -lnnvl('abc') -1 -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_location.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_location.result deleted file mode 100644 index 33e778fda..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_location.result +++ /dev/null @@ -1,64 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -// locate(substr, oristr), instr(oristr, substr) -select locate(null, 'a'), locate('a', null), locate('a', 'a', null); -locate(null, 'a') locate('a', null) locate('a', 'a', null) -NULL NULL 0 -select locate('abc', 'a'), instr('abc', 'a'); -locate('abc', 'a') instr('abc', 'a') -0 1 -select locate('a', 'aaaa', 1), locate('a', 'aaaa', 0), locate('a', 'aaaa', -1); -locate('a', 'aaaa', 1) locate('a', 'aaaa', 0) locate('a', 'aaaa', -1) -1 0 0 -select locate('a', 'aaaa', '1.9'), locate('a', 'aaaa', '0.9'), locate('a', 'aaaa', '-1.9'); -locate('a', 'aaaa', '1.9') locate('a', 'aaaa', '0.9') locate('a', 'aaaa', '-1.9') -1 0 0 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '1.9' -Warning 1292 Truncated incorrect INTEGER value: '0.9' -Warning 1292 Truncated incorrect INTEGER value: '-1.9' -select locate('a', 'aaaa', '1.1'), locate('a', 'aaaa', '0.1'), locate('a', 'aaaa', '-1.1'); -locate('a', 'aaaa', '1.1') locate('a', 'aaaa', '0.1') locate('a', 'aaaa', '-1.1') -1 0 0 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '1.1' -Warning 1292 Truncated incorrect INTEGER value: '0.1' -Warning 1292 Truncated incorrect INTEGER value: '-1.1' -select locate('中', 'a中测试', 1); -locate('中', 'a中测试', 1) -2 -select locate('a', 'abcdabcd', '2.a'); -locate('a', 'abcdabcd', '2.a') -5 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '2.a' -select locate('a', 'abcdabcd', 'a'); -locate('a', 'abcdabcd', 'a') -0 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: 'a' -select locate('a', 'abcdabcd', '-2.a'); -locate('a', 'abcdabcd', '-2.a') -0 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '-2.a' -select locate('a', 'a', 10000); -locate('a', 'a', 10000) -0 -select locate('a', 'a', 1000000000000000000000000000000000000000000000000000000000000000); -locate('a', 'a', 1000000000000000000000000000000000000000000000000000000000000000) -0 -select instr('abc', 'a'), instr('aaaa','a'), instr('a中测试', '中'), instr(null, 'a'), instr('a', null); -instr('abc', 'a') instr('aaaa','a') instr('a中测试', '中') instr(null, 'a') instr('a', null) -1 1 2 NULL NULL -select reverse(''), reverse(null), reverse('你好abc中文'), reverse(12345.123), reverse(null); -reverse('') reverse(null) reverse('你好abc中文') reverse(12345.123) reverse(null) - NULL 文中cba好你 321.54321 NULL -drop table if exists t1; -create table t1(c1 bigint unsigned); -insert into t1 values(locate('a','b',9223372036854775808)); -select * from t1; -c1 -0 -drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_lower_upper.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_lower_upper.result deleted file mode 100644 index c2a5e8532..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_lower_upper.result +++ /dev/null @@ -1,143 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -connection default; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 bigint, c6 bigint unsigned, -c7 float, c8 float unsigned, -c9 double, c10 double unsigned, -c11 decimal, c12 decimal unsigned, -c13 date, c14 datetime, c15 timestamp, -c16 varchar(60), c17 char(60)); -select * from t1; -c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 -insert into t1 values(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); -insert into t1 values(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0000-00-00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', ''); -insert into t1 values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '0013-01-01', '0014-01-01', '0015-01-01', '16abcDeFG00', '16abcDeFG00'); -insert into t1 values(-1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, '0013-01-01', '0014-01-01 00:00:00', '0015-01-01 00:00:00', '=[]-+,/;<>?.*~!@#$%^&*()', '=[]-+,/;<>?.*~!@#$%^&*()'); -insert into t1 values(1234567, 7654321, -33, 44, 555555555, 666666666, 777.777, 8888.888, 99999.999999, 10000.00000, 1111, 121212121, '0013-01-01', '0014-01-01 00:00:11', '0015-01-01 00:00:11', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); -connection conn_admin; -connection default; -set @@ob_enable_plan_cache = 0; -select c1, lower(c1), upper(c1) from t1; -c1 lower(c1) upper(c1) -NULL NULL NULL -0 0 0 -1 1 1 --1 -1 -1 -1234567 1234567 1234567 -select c2, lower(c2), upper(c2) from t1; -c2 lower(c2) upper(c2) -NULL NULL NULL -0 0 0 -2 2 2 -2 2 2 -7654321 7654321 7654321 -select c3, lower(c3), upper(c3) from t1; -c3 lower(c3) upper(c3) -NULL NULL NULL -0 0 0 -3 3 3 --3 -3 -3 --33 -33 -33 -select c4, lower(c4), upper(c4) from t1; -c4 lower(c4) upper(c4) -NULL NULL NULL -0 0 0 -4 4 4 -4 4 4 -44 44 44 -select c5, lower(c5), upper(c5) from t1; -c5 lower(c5) upper(c5) -NULL NULL NULL -0 0 0 -5 5 5 --5 -5 -5 -555555555 555555555 555555555 -select c6, lower(c6), upper(c6) from t1; -c6 lower(c6) upper(c6) -NULL NULL NULL -0 0 0 -6 6 6 -6 6 6 -666666666 666666666 666666666 -select c7, lower(c7), upper(c7) from t1; -c7 lower(c7) upper(c7) -NULL NULL NULL -0 0 0 -7 7 7 --7 -7 -7 -777.777 777.777 777.777 -select c8, lower(c8), upper(c8) from t1; -c8 lower(c8) upper(c8) -NULL NULL NULL -0 0 0 -8 8 8 -8 8 8 -8888.89 8888.89 8888.89 -select c9, lower(c9), upper(c9) from t1; -c9 lower(c9) upper(c9) -NULL NULL NULL -0 0 0 -9 9 9 --9 -9 -9 -99999.999999 99999.999999 99999.999999 -select c10, lower(c10), upper(c10) from t1; -c10 lower(c10) upper(c10) -NULL NULL NULL -0 0 0 -10 10 10 -10 10 10 -10000 10000 10000 -select c11, lower(c11), upper(c11) from t1; -c11 lower(c11) upper(c11) -NULL NULL NULL -0 0 0 -11 11 11 --11 -11 -11 -1111 1111 1111 -select c12, lower(c12), upper(c12) from t1; -c12 lower(c12) upper(c12) -NULL NULL NULL -0 0 0 -12 12 12 -12 12 12 -121212121 121212121 121212121 -select c13, lower(c13), upper(c13) from t1; -c13 lower(c13) upper(c13) -NULL NULL NULL -0000-00-00 0000-00-00 0000-00-00 -0013-01-01 0013-01-01 0013-01-01 -0013-01-01 0013-01-01 0013-01-01 -0013-01-01 0013-01-01 0013-01-01 -select c14, lower(c14), upper(c14) from t1; -c14 lower(c14) upper(c14) -NULL NULL NULL -0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 -0014-01-01 00:00:00 0014-01-01 00:00:00 0014-01-01 00:00:00 -0014-01-01 00:00:00 0014-01-01 00:00:00 0014-01-01 00:00:00 -0014-01-01 00:00:11 0014-01-01 00:00:11 0014-01-01 00:00:11 -select c15, lower(c15), upper(c15) from t1; -c15 lower(c15) upper(c15) -NULL NULL NULL -0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 00:00:00 -0015-01-01 00:00:00 0015-01-01 00:00:00 0015-01-01 00:00:00 -0015-01-01 00:00:00 0015-01-01 00:00:00 0015-01-01 00:00:00 -0015-01-01 00:00:11 0015-01-01 00:00:11 0015-01-01 00:00:11 -select c16, lower(c16), upper(c16) from t1; -c16 lower(c16) upper(c16) -NULL NULL NULL - -16abcDeFG00 16abcdefg00 16ABCDEFG00 -=[]-+,/;<>?.*~!@#$%^&*() =[]-+,/;<>?.*~!@#$%^&*() =[]-+,/;<>?.*~!@#$%^&*() -abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ -select c17, lower(c17), upper(c17) from t1; -c17 lower(c17) upper(c17) -NULL NULL NULL - -16abcDeFG00 16abcdefg00 16ABCDEFG00 -=[]-+,/;<>?.*~!@#$%^&*() =[]-+,/;<>?.*~!@#$%^&*() =[]-+,/;<>?.*~!@#$%^&*() -abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ -drop table t1; -connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_not.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_not.result deleted file mode 100644 index 2e5785f94..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_not.result +++ /dev/null @@ -1,172 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -alter system flush plan cache global; -connection default; -drop table if exists t; -create table t (t1 tinyint, -t2 smallint, -t3 mediumint, -t4 integer, -t5 bigint, -t6 tinyint unsigned, -t7 smallint unsigned, -t8 mediumint unsigned, -t9 integer unsigned, -t10 bigint unsigned, -t11 float, -t12 float unsigned, -t13 double, -t14 double unsigned, -t15 number, -t16 number unsigned, -t17 datetime, -t18 timestamp, -t19 date, -t20 time, -t21 year, -t22 varchar(255), -t23 char(255), -t24 tinytext, -t25 mediumtext, -t26 longtext, -t27 bit, -t28 enum('a', 'b', 'c'), -t29 set('a', 'b', 'c')); -insert into t values (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, -'1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '0.8', '0.9', '1.0', '1.1', -'1.2', 1, 'b', 'b'); -insert into t(t1) values (null); -connection conn_admin; -alter system flush plan cache global; -connection default; -set ob_enable_plan_cache = false; -select not 1 from dual; -not 1 -0 -select not 1.0 from dual; -not 1.0 -0 -select not null from dual; -not null -NULL -select not 'hello' from dual; -not 'hello' -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'hello' -select not t1 from t; -not t1 -0 -NULL -select not t2 from t; -not t2 -0 -NULL -select not t3 from t; -not t3 -0 -NULL -select not t4 from t; -not t4 -0 -NULL -select not t5 from t; -not t5 -0 -NULL -select not t6 from t; -not t6 -0 -NULL -select not t7 from t; -not t7 -0 -NULL -select not t8 from t; -not t8 -0 -NULL -select not t9 from t; -not t9 -0 -NULL -select not t10 from t; -not t10 -0 -NULL -select not t11 from t; -not t11 -0 -NULL -select not t12 from t; -not t12 -0 -NULL -select not t13 from t; -not t13 -0 -NULL -select not t14 from t; -not t14 -0 -NULL -select not t15 from t; -not t15 -0 -NULL -select not t16 from t; -not t16 -0 -NULL -select not t17 from t; -not t17 -0 -NULL -select not t18 from t; -not t18 -0 -NULL -select not t19 from t; -not t19 -0 -NULL -select not t20 from t; -not t20 -0 -NULL -select not t21 from t; -not t21 -0 -NULL -select not t22 from t; -not t22 -0 -NULL -select not t23 from t; -not t23 -0 -NULL -select not t24 from t; -not t24 -0 -NULL -select not t25 from t; -not t25 -0 -NULL -select not t26 from t; -not t26 -0 -NULL -select not t27 from t; -not t27 -0 -NULL -select not t28 from t; -not t28 -0 -NULL -select not t29 from t; -not t29 -0 -NULL diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_nullif_ifnull.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_nullif_ifnull.result deleted file mode 100644 index abf385aba..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_nullif_ifnull.result +++ /dev/null @@ -1,4044 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30), c_null int); -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5', null); -insert into t1 values(-1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --3.5, 4.5, --5.5, 6.5, --7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'-9.5', '10.5', null); -select nullif(null, null), nullif(1, null), nullif(null, 1); -nullif(null, null) nullif(1, null) nullif(null, 1) -NULL 1 NULL -select ifnull(null, null), ifnull(1, null), ifnull(null, 1); -ifnull(null, null) ifnull(1, null) ifnull(null, 1) -NULL 1 1 -select c1, c1, nullif(c1, c1), ifnull(c1, c1) from t1; -c1 c1 nullif(c1, c1) ifnull(c1, c1) -1 1 NULL 1 --1 -1 NULL -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c2, nullif(c1, c2), ifnull(c1, c2) from t1; -c1 c2 nullif(c1, c2) ifnull(c1, c2) -1 2 1 1 --1 2 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c3, nullif(c1, c3), ifnull(c1, c3) from t1; -c1 c3 nullif(c1, c3) ifnull(c1, c3) -1 1 NULL 1 --1 -1 NULL -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c4, nullif(c1, c4), ifnull(c1, c4) from t1; -c1 c4 nullif(c1, c4) ifnull(c1, c4) -1 2 1 1 --1 2 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c5, nullif(c1, c5), ifnull(c1, c5) from t1; -c1 c5 nullif(c1, c5) ifnull(c1, c5) -1 1 NULL 1 --1 -1 NULL -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c6, nullif(c1, c6), ifnull(c1, c6) from t1; -c1 c6 nullif(c1, c6) ifnull(c1, c6) -1 2 1 1 --1 2 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c7, nullif(c1, c7), ifnull(c1, c7) from t1; -c1 c7 nullif(c1, c7) ifnull(c1, c7) -1 1 NULL 1 --1 -1 NULL -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c8, nullif(c1, c8), ifnull(c1, c8) from t1; -c1 c8 nullif(c1, c8) ifnull(c1, c8) -1 2 1 1 --1 2 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c9, nullif(c1, c9), ifnull(c1, c9) from t1; -c1 c9 nullif(c1, c9) ifnull(c1, c9) -1 1 NULL 1 --1 -1 NULL -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c10, nullif(c1, c10), ifnull(c1, c10) from t1; -c1 c10 nullif(c1, c10) ifnull(c1, c10) -1 2 1 1 --1 2 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c11, nullif(c1, c11), ifnull(c1, c11) from t1; -c1 c11 nullif(c1, c11) ifnull(c1, c11) -1 1 NULL 1 --1 -1 NULL -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c12, nullif(c1, c12), ifnull(c1, c12) from t1; -c1 c12 nullif(c1, c12) ifnull(c1, c12) -1 2 1 1 --1 2 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c13, nullif(c1, c13), ifnull(c1, c13) from t1; -c1 c13 nullif(c1, c13) ifnull(c1, c13) -1 3.5 1 1 --1 -3.5 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c14, nullif(c1, c14), ifnull(c1, c14) from t1; -c1 c14 nullif(c1, c14) ifnull(c1, c14) -1 4.5 1 1 --1 4.5 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c15, nullif(c1, c15), ifnull(c1, c15) from t1; -c1 c15 nullif(c1, c15) ifnull(c1, c15) -1 5.5 1 1 --1 -5.5 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c16, nullif(c1, c16), ifnull(c1, c16) from t1; -c1 c16 nullif(c1, c16) ifnull(c1, c16) -1 6.5 1 1 --1 6.5 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c17, nullif(c1, c17), ifnull(c1, c17) from t1; -c1 c17 nullif(c1, c17) ifnull(c1, c17) -1 8 1 1 --1 -8 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c18, nullif(c1, c18), ifnull(c1, c18) from t1; -c1 c18 nullif(c1, c18) ifnull(c1, c18) -1 9 1 1 --1 9 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c19, nullif(c1, c19), ifnull(c1, c19) from t1; -c1 c19 nullif(c1, c19) ifnull(c1, c19) -1 2019-12-01 12:00:00 1 1 --1 2019-12-01 12:00:00 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c20, nullif(c1, c20), ifnull(c1, c20) from t1; -c1 c20 nullif(c1, c20) ifnull(c1, c20) -1 2019-12-03 06:00:00 1 1 --1 2019-12-03 06:00:00 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c21, nullif(c1, c21), ifnull(c1, c21) from t1; -c1 c21 nullif(c1, c21) ifnull(c1, c21) -1 9.5 1 1 --1 -9.5 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c1, c22, nullif(c1, c22), ifnull(c1, c22) from t1; -c1 c22 nullif(c1, c22) ifnull(c1, c22) -1 10.5 1 1 --1 10.5 -1 -1 -select c1, nullif(c1, c1) from t1; -c1 nullif(c1, c1) -1 NULL --1 NULL -select c2, c1, nullif(c2, c1), ifnull(c2, c1) from t1; -c2 c1 nullif(c2, c1) ifnull(c2, c1) -2 1 2 2 -2 -1 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c2, nullif(c2, c2), ifnull(c2, c2) from t1; -c2 c2 nullif(c2, c2) ifnull(c2, c2) -2 2 NULL 2 -2 2 NULL 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c3, nullif(c2, c3), ifnull(c2, c3) from t1; -c2 c3 nullif(c2, c3) ifnull(c2, c3) -2 1 2 2 -2 -1 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c4, nullif(c2, c4), ifnull(c2, c4) from t1; -c2 c4 nullif(c2, c4) ifnull(c2, c4) -2 2 NULL 2 -2 2 NULL 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c5, nullif(c2, c5), ifnull(c2, c5) from t1; -c2 c5 nullif(c2, c5) ifnull(c2, c5) -2 1 2 2 -2 -1 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c6, nullif(c2, c6), ifnull(c2, c6) from t1; -c2 c6 nullif(c2, c6) ifnull(c2, c6) -2 2 NULL 2 -2 2 NULL 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c7, nullif(c2, c7), ifnull(c2, c7) from t1; -c2 c7 nullif(c2, c7) ifnull(c2, c7) -2 1 2 2 -2 -1 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c8, nullif(c2, c8), ifnull(c2, c8) from t1; -c2 c8 nullif(c2, c8) ifnull(c2, c8) -2 2 NULL 2 -2 2 NULL 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c9, nullif(c2, c9), ifnull(c2, c9) from t1; -c2 c9 nullif(c2, c9) ifnull(c2, c9) -2 1 2 2 -2 -1 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c10, nullif(c2, c10), ifnull(c2, c10) from t1; -c2 c10 nullif(c2, c10) ifnull(c2, c10) -2 2 NULL 2 -2 2 NULL 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c11, nullif(c2, c11), ifnull(c2, c11) from t1; -c2 c11 nullif(c2, c11) ifnull(c2, c11) -2 1 2 2 -2 -1 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c12, nullif(c2, c12), ifnull(c2, c12) from t1; -c2 c12 nullif(c2, c12) ifnull(c2, c12) -2 2 NULL 2 -2 2 NULL 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c13, nullif(c2, c13), ifnull(c2, c13) from t1; -c2 c13 nullif(c2, c13) ifnull(c2, c13) -2 3.5 2 2 -2 -3.5 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c14, nullif(c2, c14), ifnull(c2, c14) from t1; -c2 c14 nullif(c2, c14) ifnull(c2, c14) -2 4.5 2 2 -2 4.5 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c15, nullif(c2, c15), ifnull(c2, c15) from t1; -c2 c15 nullif(c2, c15) ifnull(c2, c15) -2 5.5 2 2 -2 -5.5 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c16, nullif(c2, c16), ifnull(c2, c16) from t1; -c2 c16 nullif(c2, c16) ifnull(c2, c16) -2 6.5 2 2 -2 6.5 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c17, nullif(c2, c17), ifnull(c2, c17) from t1; -c2 c17 nullif(c2, c17) ifnull(c2, c17) -2 8 2 2 -2 -8 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c18, nullif(c2, c18), ifnull(c2, c18) from t1; -c2 c18 nullif(c2, c18) ifnull(c2, c18) -2 9 2 2 -2 9 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c19, nullif(c2, c19), ifnull(c2, c19) from t1; -c2 c19 nullif(c2, c19) ifnull(c2, c19) -2 2019-12-01 12:00:00 2 2 -2 2019-12-01 12:00:00 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c20, nullif(c2, c20), ifnull(c2, c20) from t1; -c2 c20 nullif(c2, c20) ifnull(c2, c20) -2 2019-12-03 06:00:00 2 2 -2 2019-12-03 06:00:00 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c21, nullif(c2, c21), ifnull(c2, c21) from t1; -c2 c21 nullif(c2, c21) ifnull(c2, c21) -2 9.5 2 2 -2 -9.5 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c2, c22, nullif(c2, c22), ifnull(c2, c22) from t1; -c2 c22 nullif(c2, c22) ifnull(c2, c22) -2 10.5 2 2 -2 10.5 2 2 -select c2, nullif(c2, c2) from t1; -c2 nullif(c2, c2) -2 NULL -2 NULL -select c3, c1, nullif(c3, c1), ifnull(c3, c1) from t1; -c3 c1 nullif(c3, c1) ifnull(c3, c1) -1 1 NULL 1 --1 -1 NULL -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c2, nullif(c3, c2), ifnull(c3, c2) from t1; -c3 c2 nullif(c3, c2) ifnull(c3, c2) -1 2 1 1 --1 2 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c3, nullif(c3, c3), ifnull(c3, c3) from t1; -c3 c3 nullif(c3, c3) ifnull(c3, c3) -1 1 NULL 1 --1 -1 NULL -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c4, nullif(c3, c4), ifnull(c3, c4) from t1; -c3 c4 nullif(c3, c4) ifnull(c3, c4) -1 2 1 1 --1 2 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c5, nullif(c3, c5), ifnull(c3, c5) from t1; -c3 c5 nullif(c3, c5) ifnull(c3, c5) -1 1 NULL 1 --1 -1 NULL -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c6, nullif(c3, c6), ifnull(c3, c6) from t1; -c3 c6 nullif(c3, c6) ifnull(c3, c6) -1 2 1 1 --1 2 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c7, nullif(c3, c7), ifnull(c3, c7) from t1; -c3 c7 nullif(c3, c7) ifnull(c3, c7) -1 1 NULL 1 --1 -1 NULL -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c8, nullif(c3, c8), ifnull(c3, c8) from t1; -c3 c8 nullif(c3, c8) ifnull(c3, c8) -1 2 1 1 --1 2 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c9, nullif(c3, c9), ifnull(c3, c9) from t1; -c3 c9 nullif(c3, c9) ifnull(c3, c9) -1 1 NULL 1 --1 -1 NULL -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c10, nullif(c3, c10), ifnull(c3, c10) from t1; -c3 c10 nullif(c3, c10) ifnull(c3, c10) -1 2 1 1 --1 2 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c11, nullif(c3, c11), ifnull(c3, c11) from t1; -c3 c11 nullif(c3, c11) ifnull(c3, c11) -1 1 NULL 1 --1 -1 NULL -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c12, nullif(c3, c12), ifnull(c3, c12) from t1; -c3 c12 nullif(c3, c12) ifnull(c3, c12) -1 2 1 1 --1 2 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c13, nullif(c3, c13), ifnull(c3, c13) from t1; -c3 c13 nullif(c3, c13) ifnull(c3, c13) -1 3.5 1 1 --1 -3.5 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c14, nullif(c3, c14), ifnull(c3, c14) from t1; -c3 c14 nullif(c3, c14) ifnull(c3, c14) -1 4.5 1 1 --1 4.5 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c15, nullif(c3, c15), ifnull(c3, c15) from t1; -c3 c15 nullif(c3, c15) ifnull(c3, c15) -1 5.5 1 1 --1 -5.5 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c16, nullif(c3, c16), ifnull(c3, c16) from t1; -c3 c16 nullif(c3, c16) ifnull(c3, c16) -1 6.5 1 1 --1 6.5 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c17, nullif(c3, c17), ifnull(c3, c17) from t1; -c3 c17 nullif(c3, c17) ifnull(c3, c17) -1 8 1 1 --1 -8 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c18, nullif(c3, c18), ifnull(c3, c18) from t1; -c3 c18 nullif(c3, c18) ifnull(c3, c18) -1 9 1 1 --1 9 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c19, nullif(c3, c19), ifnull(c3, c19) from t1; -c3 c19 nullif(c3, c19) ifnull(c3, c19) -1 2019-12-01 12:00:00 1 1 --1 2019-12-01 12:00:00 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c20, nullif(c3, c20), ifnull(c3, c20) from t1; -c3 c20 nullif(c3, c20) ifnull(c3, c20) -1 2019-12-03 06:00:00 1 1 --1 2019-12-03 06:00:00 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c21, nullif(c3, c21), ifnull(c3, c21) from t1; -c3 c21 nullif(c3, c21) ifnull(c3, c21) -1 9.5 1 1 --1 -9.5 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c3, c22, nullif(c3, c22), ifnull(c3, c22) from t1; -c3 c22 nullif(c3, c22) ifnull(c3, c22) -1 10.5 1 1 --1 10.5 -1 -1 -select c3, nullif(c3, c3) from t1; -c3 nullif(c3, c3) -1 NULL --1 NULL -select c4, c1, nullif(c4, c1), ifnull(c4, c1) from t1; -c4 c1 nullif(c4, c1) ifnull(c4, c1) -2 1 2 2 -2 -1 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c2, nullif(c4, c2), ifnull(c4, c2) from t1; -c4 c2 nullif(c4, c2) ifnull(c4, c2) -2 2 NULL 2 -2 2 NULL 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c3, nullif(c4, c3), ifnull(c4, c3) from t1; -c4 c3 nullif(c4, c3) ifnull(c4, c3) -2 1 2 2 -2 -1 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c4, nullif(c4, c4), ifnull(c4, c4) from t1; -c4 c4 nullif(c4, c4) ifnull(c4, c4) -2 2 NULL 2 -2 2 NULL 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c5, nullif(c4, c5), ifnull(c4, c5) from t1; -c4 c5 nullif(c4, c5) ifnull(c4, c5) -2 1 2 2 -2 -1 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c6, nullif(c4, c6), ifnull(c4, c6) from t1; -c4 c6 nullif(c4, c6) ifnull(c4, c6) -2 2 NULL 2 -2 2 NULL 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c7, nullif(c4, c7), ifnull(c4, c7) from t1; -c4 c7 nullif(c4, c7) ifnull(c4, c7) -2 1 2 2 -2 -1 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c8, nullif(c4, c8), ifnull(c4, c8) from t1; -c4 c8 nullif(c4, c8) ifnull(c4, c8) -2 2 NULL 2 -2 2 NULL 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c9, nullif(c4, c9), ifnull(c4, c9) from t1; -c4 c9 nullif(c4, c9) ifnull(c4, c9) -2 1 2 2 -2 -1 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c10, nullif(c4, c10), ifnull(c4, c10) from t1; -c4 c10 nullif(c4, c10) ifnull(c4, c10) -2 2 NULL 2 -2 2 NULL 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c11, nullif(c4, c11), ifnull(c4, c11) from t1; -c4 c11 nullif(c4, c11) ifnull(c4, c11) -2 1 2 2 -2 -1 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c12, nullif(c4, c12), ifnull(c4, c12) from t1; -c4 c12 nullif(c4, c12) ifnull(c4, c12) -2 2 NULL 2 -2 2 NULL 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c13, nullif(c4, c13), ifnull(c4, c13) from t1; -c4 c13 nullif(c4, c13) ifnull(c4, c13) -2 3.5 2 2 -2 -3.5 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c14, nullif(c4, c14), ifnull(c4, c14) from t1; -c4 c14 nullif(c4, c14) ifnull(c4, c14) -2 4.5 2 2 -2 4.5 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c15, nullif(c4, c15), ifnull(c4, c15) from t1; -c4 c15 nullif(c4, c15) ifnull(c4, c15) -2 5.5 2 2 -2 -5.5 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c16, nullif(c4, c16), ifnull(c4, c16) from t1; -c4 c16 nullif(c4, c16) ifnull(c4, c16) -2 6.5 2 2 -2 6.5 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c17, nullif(c4, c17), ifnull(c4, c17) from t1; -c4 c17 nullif(c4, c17) ifnull(c4, c17) -2 8 2 2 -2 -8 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c18, nullif(c4, c18), ifnull(c4, c18) from t1; -c4 c18 nullif(c4, c18) ifnull(c4, c18) -2 9 2 2 -2 9 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c19, nullif(c4, c19), ifnull(c4, c19) from t1; -c4 c19 nullif(c4, c19) ifnull(c4, c19) -2 2019-12-01 12:00:00 2 2 -2 2019-12-01 12:00:00 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c20, nullif(c4, c20), ifnull(c4, c20) from t1; -c4 c20 nullif(c4, c20) ifnull(c4, c20) -2 2019-12-03 06:00:00 2 2 -2 2019-12-03 06:00:00 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c21, nullif(c4, c21), ifnull(c4, c21) from t1; -c4 c21 nullif(c4, c21) ifnull(c4, c21) -2 9.5 2 2 -2 -9.5 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c4, c22, nullif(c4, c22), ifnull(c4, c22) from t1; -c4 c22 nullif(c4, c22) ifnull(c4, c22) -2 10.5 2 2 -2 10.5 2 2 -select c4, nullif(c4, c4) from t1; -c4 nullif(c4, c4) -2 NULL -2 NULL -select c5, c1, nullif(c5, c1), ifnull(c5, c1) from t1; -c5 c1 nullif(c5, c1) ifnull(c5, c1) -1 1 NULL 1 --1 -1 NULL -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c2, nullif(c5, c2), ifnull(c5, c2) from t1; -c5 c2 nullif(c5, c2) ifnull(c5, c2) -1 2 1 1 --1 2 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c3, nullif(c5, c3), ifnull(c5, c3) from t1; -c5 c3 nullif(c5, c3) ifnull(c5, c3) -1 1 NULL 1 --1 -1 NULL -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c4, nullif(c5, c4), ifnull(c5, c4) from t1; -c5 c4 nullif(c5, c4) ifnull(c5, c4) -1 2 1 1 --1 2 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c5, nullif(c5, c5), ifnull(c5, c5) from t1; -c5 c5 nullif(c5, c5) ifnull(c5, c5) -1 1 NULL 1 --1 -1 NULL -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c6, nullif(c5, c6), ifnull(c5, c6) from t1; -c5 c6 nullif(c5, c6) ifnull(c5, c6) -1 2 1 1 --1 2 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c7, nullif(c5, c7), ifnull(c5, c7) from t1; -c5 c7 nullif(c5, c7) ifnull(c5, c7) -1 1 NULL 1 --1 -1 NULL -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c8, nullif(c5, c8), ifnull(c5, c8) from t1; -c5 c8 nullif(c5, c8) ifnull(c5, c8) -1 2 1 1 --1 2 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c9, nullif(c5, c9), ifnull(c5, c9) from t1; -c5 c9 nullif(c5, c9) ifnull(c5, c9) -1 1 NULL 1 --1 -1 NULL -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c10, nullif(c5, c10), ifnull(c5, c10) from t1; -c5 c10 nullif(c5, c10) ifnull(c5, c10) -1 2 1 1 --1 2 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c11, nullif(c5, c11), ifnull(c5, c11) from t1; -c5 c11 nullif(c5, c11) ifnull(c5, c11) -1 1 NULL 1 --1 -1 NULL -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c12, nullif(c5, c12), ifnull(c5, c12) from t1; -c5 c12 nullif(c5, c12) ifnull(c5, c12) -1 2 1 1 --1 2 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c13, nullif(c5, c13), ifnull(c5, c13) from t1; -c5 c13 nullif(c5, c13) ifnull(c5, c13) -1 3.5 1 1 --1 -3.5 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c14, nullif(c5, c14), ifnull(c5, c14) from t1; -c5 c14 nullif(c5, c14) ifnull(c5, c14) -1 4.5 1 1 --1 4.5 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c15, nullif(c5, c15), ifnull(c5, c15) from t1; -c5 c15 nullif(c5, c15) ifnull(c5, c15) -1 5.5 1 1 --1 -5.5 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c16, nullif(c5, c16), ifnull(c5, c16) from t1; -c5 c16 nullif(c5, c16) ifnull(c5, c16) -1 6.5 1 1 --1 6.5 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c17, nullif(c5, c17), ifnull(c5, c17) from t1; -c5 c17 nullif(c5, c17) ifnull(c5, c17) -1 8 1 1 --1 -8 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c18, nullif(c5, c18), ifnull(c5, c18) from t1; -c5 c18 nullif(c5, c18) ifnull(c5, c18) -1 9 1 1 --1 9 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c19, nullif(c5, c19), ifnull(c5, c19) from t1; -c5 c19 nullif(c5, c19) ifnull(c5, c19) -1 2019-12-01 12:00:00 1 1 --1 2019-12-01 12:00:00 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c20, nullif(c5, c20), ifnull(c5, c20) from t1; -c5 c20 nullif(c5, c20) ifnull(c5, c20) -1 2019-12-03 06:00:00 1 1 --1 2019-12-03 06:00:00 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c21, nullif(c5, c21), ifnull(c5, c21) from t1; -c5 c21 nullif(c5, c21) ifnull(c5, c21) -1 9.5 1 1 --1 -9.5 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c5, c22, nullif(c5, c22), ifnull(c5, c22) from t1; -c5 c22 nullif(c5, c22) ifnull(c5, c22) -1 10.5 1 1 --1 10.5 -1 -1 -select c5, nullif(c5, c5) from t1; -c5 nullif(c5, c5) -1 NULL --1 NULL -select c6, c1, nullif(c6, c1), ifnull(c6, c1) from t1; -c6 c1 nullif(c6, c1) ifnull(c6, c1) -2 1 2 2 -2 -1 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c2, nullif(c6, c2), ifnull(c6, c2) from t1; -c6 c2 nullif(c6, c2) ifnull(c6, c2) -2 2 NULL 2 -2 2 NULL 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c3, nullif(c6, c3), ifnull(c6, c3) from t1; -c6 c3 nullif(c6, c3) ifnull(c6, c3) -2 1 2 2 -2 -1 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c4, nullif(c6, c4), ifnull(c6, c4) from t1; -c6 c4 nullif(c6, c4) ifnull(c6, c4) -2 2 NULL 2 -2 2 NULL 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c5, nullif(c6, c5), ifnull(c6, c5) from t1; -c6 c5 nullif(c6, c5) ifnull(c6, c5) -2 1 2 2 -2 -1 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c6, nullif(c6, c6), ifnull(c6, c6) from t1; -c6 c6 nullif(c6, c6) ifnull(c6, c6) -2 2 NULL 2 -2 2 NULL 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c7, nullif(c6, c7), ifnull(c6, c7) from t1; -c6 c7 nullif(c6, c7) ifnull(c6, c7) -2 1 2 2 -2 -1 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c8, nullif(c6, c8), ifnull(c6, c8) from t1; -c6 c8 nullif(c6, c8) ifnull(c6, c8) -2 2 NULL 2 -2 2 NULL 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c9, nullif(c6, c9), ifnull(c6, c9) from t1; -c6 c9 nullif(c6, c9) ifnull(c6, c9) -2 1 2 2 -2 -1 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c10, nullif(c6, c10), ifnull(c6, c10) from t1; -c6 c10 nullif(c6, c10) ifnull(c6, c10) -2 2 NULL 2 -2 2 NULL 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c11, nullif(c6, c11), ifnull(c6, c11) from t1; -c6 c11 nullif(c6, c11) ifnull(c6, c11) -2 1 2 2 -2 -1 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c12, nullif(c6, c12), ifnull(c6, c12) from t1; -c6 c12 nullif(c6, c12) ifnull(c6, c12) -2 2 NULL 2 -2 2 NULL 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c13, nullif(c6, c13), ifnull(c6, c13) from t1; -c6 c13 nullif(c6, c13) ifnull(c6, c13) -2 3.5 2 2 -2 -3.5 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c14, nullif(c6, c14), ifnull(c6, c14) from t1; -c6 c14 nullif(c6, c14) ifnull(c6, c14) -2 4.5 2 2 -2 4.5 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c15, nullif(c6, c15), ifnull(c6, c15) from t1; -c6 c15 nullif(c6, c15) ifnull(c6, c15) -2 5.5 2 2 -2 -5.5 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c16, nullif(c6, c16), ifnull(c6, c16) from t1; -c6 c16 nullif(c6, c16) ifnull(c6, c16) -2 6.5 2 2 -2 6.5 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c17, nullif(c6, c17), ifnull(c6, c17) from t1; -c6 c17 nullif(c6, c17) ifnull(c6, c17) -2 8 2 2 -2 -8 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c18, nullif(c6, c18), ifnull(c6, c18) from t1; -c6 c18 nullif(c6, c18) ifnull(c6, c18) -2 9 2 2 -2 9 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c19, nullif(c6, c19), ifnull(c6, c19) from t1; -c6 c19 nullif(c6, c19) ifnull(c6, c19) -2 2019-12-01 12:00:00 2 2 -2 2019-12-01 12:00:00 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c20, nullif(c6, c20), ifnull(c6, c20) from t1; -c6 c20 nullif(c6, c20) ifnull(c6, c20) -2 2019-12-03 06:00:00 2 2 -2 2019-12-03 06:00:00 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c21, nullif(c6, c21), ifnull(c6, c21) from t1; -c6 c21 nullif(c6, c21) ifnull(c6, c21) -2 9.5 2 2 -2 -9.5 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c6, c22, nullif(c6, c22), ifnull(c6, c22) from t1; -c6 c22 nullif(c6, c22) ifnull(c6, c22) -2 10.5 2 2 -2 10.5 2 2 -select c6, nullif(c6, c6) from t1; -c6 nullif(c6, c6) -2 NULL -2 NULL -select c7, c1, nullif(c7, c1), ifnull(c7, c1) from t1; -c7 c1 nullif(c7, c1) ifnull(c7, c1) -1 1 NULL 1 --1 -1 NULL -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c2, nullif(c7, c2), ifnull(c7, c2) from t1; -c7 c2 nullif(c7, c2) ifnull(c7, c2) -1 2 1 1 --1 2 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c3, nullif(c7, c3), ifnull(c7, c3) from t1; -c7 c3 nullif(c7, c3) ifnull(c7, c3) -1 1 NULL 1 --1 -1 NULL -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c4, nullif(c7, c4), ifnull(c7, c4) from t1; -c7 c4 nullif(c7, c4) ifnull(c7, c4) -1 2 1 1 --1 2 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c5, nullif(c7, c5), ifnull(c7, c5) from t1; -c7 c5 nullif(c7, c5) ifnull(c7, c5) -1 1 NULL 1 --1 -1 NULL -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c6, nullif(c7, c6), ifnull(c7, c6) from t1; -c7 c6 nullif(c7, c6) ifnull(c7, c6) -1 2 1 1 --1 2 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c7, nullif(c7, c7), ifnull(c7, c7) from t1; -c7 c7 nullif(c7, c7) ifnull(c7, c7) -1 1 NULL 1 --1 -1 NULL -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c8, nullif(c7, c8), ifnull(c7, c8) from t1; -c7 c8 nullif(c7, c8) ifnull(c7, c8) -1 2 1 1 --1 2 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c9, nullif(c7, c9), ifnull(c7, c9) from t1; -c7 c9 nullif(c7, c9) ifnull(c7, c9) -1 1 NULL 1 --1 -1 NULL -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c10, nullif(c7, c10), ifnull(c7, c10) from t1; -c7 c10 nullif(c7, c10) ifnull(c7, c10) -1 2 1 1 --1 2 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c11, nullif(c7, c11), ifnull(c7, c11) from t1; -c7 c11 nullif(c7, c11) ifnull(c7, c11) -1 1 NULL 1 --1 -1 NULL -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c12, nullif(c7, c12), ifnull(c7, c12) from t1; -c7 c12 nullif(c7, c12) ifnull(c7, c12) -1 2 1 1 --1 2 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c13, nullif(c7, c13), ifnull(c7, c13) from t1; -c7 c13 nullif(c7, c13) ifnull(c7, c13) -1 3.5 1 1 --1 -3.5 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c14, nullif(c7, c14), ifnull(c7, c14) from t1; -c7 c14 nullif(c7, c14) ifnull(c7, c14) -1 4.5 1 1 --1 4.5 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c15, nullif(c7, c15), ifnull(c7, c15) from t1; -c7 c15 nullif(c7, c15) ifnull(c7, c15) -1 5.5 1 1 --1 -5.5 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c16, nullif(c7, c16), ifnull(c7, c16) from t1; -c7 c16 nullif(c7, c16) ifnull(c7, c16) -1 6.5 1 1 --1 6.5 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c17, nullif(c7, c17), ifnull(c7, c17) from t1; -c7 c17 nullif(c7, c17) ifnull(c7, c17) -1 8 1 1 --1 -8 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c18, nullif(c7, c18), ifnull(c7, c18) from t1; -c7 c18 nullif(c7, c18) ifnull(c7, c18) -1 9 1 1 --1 9 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c19, nullif(c7, c19), ifnull(c7, c19) from t1; -c7 c19 nullif(c7, c19) ifnull(c7, c19) -1 2019-12-01 12:00:00 1 1 --1 2019-12-01 12:00:00 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c20, nullif(c7, c20), ifnull(c7, c20) from t1; -c7 c20 nullif(c7, c20) ifnull(c7, c20) -1 2019-12-03 06:00:00 1 1 --1 2019-12-03 06:00:00 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c21, nullif(c7, c21), ifnull(c7, c21) from t1; -c7 c21 nullif(c7, c21) ifnull(c7, c21) -1 9.5 1 1 --1 -9.5 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c7, c22, nullif(c7, c22), ifnull(c7, c22) from t1; -c7 c22 nullif(c7, c22) ifnull(c7, c22) -1 10.5 1 1 --1 10.5 -1 -1 -select c7, nullif(c7, c7) from t1; -c7 nullif(c7, c7) -1 NULL --1 NULL -select c8, c1, nullif(c8, c1), ifnull(c8, c1) from t1; -c8 c1 nullif(c8, c1) ifnull(c8, c1) -2 1 2 2 -2 -1 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c2, nullif(c8, c2), ifnull(c8, c2) from t1; -c8 c2 nullif(c8, c2) ifnull(c8, c2) -2 2 NULL 2 -2 2 NULL 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c3, nullif(c8, c3), ifnull(c8, c3) from t1; -c8 c3 nullif(c8, c3) ifnull(c8, c3) -2 1 2 2 -2 -1 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c4, nullif(c8, c4), ifnull(c8, c4) from t1; -c8 c4 nullif(c8, c4) ifnull(c8, c4) -2 2 NULL 2 -2 2 NULL 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c5, nullif(c8, c5), ifnull(c8, c5) from t1; -c8 c5 nullif(c8, c5) ifnull(c8, c5) -2 1 2 2 -2 -1 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c6, nullif(c8, c6), ifnull(c8, c6) from t1; -c8 c6 nullif(c8, c6) ifnull(c8, c6) -2 2 NULL 2 -2 2 NULL 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c7, nullif(c8, c7), ifnull(c8, c7) from t1; -c8 c7 nullif(c8, c7) ifnull(c8, c7) -2 1 2 2 -2 -1 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c8, nullif(c8, c8), ifnull(c8, c8) from t1; -c8 c8 nullif(c8, c8) ifnull(c8, c8) -2 2 NULL 2 -2 2 NULL 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c9, nullif(c8, c9), ifnull(c8, c9) from t1; -c8 c9 nullif(c8, c9) ifnull(c8, c9) -2 1 2 2 -2 -1 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c10, nullif(c8, c10), ifnull(c8, c10) from t1; -c8 c10 nullif(c8, c10) ifnull(c8, c10) -2 2 NULL 2 -2 2 NULL 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c11, nullif(c8, c11), ifnull(c8, c11) from t1; -c8 c11 nullif(c8, c11) ifnull(c8, c11) -2 1 2 2 -2 -1 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c12, nullif(c8, c12), ifnull(c8, c12) from t1; -c8 c12 nullif(c8, c12) ifnull(c8, c12) -2 2 NULL 2 -2 2 NULL 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c13, nullif(c8, c13), ifnull(c8, c13) from t1; -c8 c13 nullif(c8, c13) ifnull(c8, c13) -2 3.5 2 2 -2 -3.5 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c14, nullif(c8, c14), ifnull(c8, c14) from t1; -c8 c14 nullif(c8, c14) ifnull(c8, c14) -2 4.5 2 2 -2 4.5 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c15, nullif(c8, c15), ifnull(c8, c15) from t1; -c8 c15 nullif(c8, c15) ifnull(c8, c15) -2 5.5 2 2 -2 -5.5 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c16, nullif(c8, c16), ifnull(c8, c16) from t1; -c8 c16 nullif(c8, c16) ifnull(c8, c16) -2 6.5 2 2 -2 6.5 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c17, nullif(c8, c17), ifnull(c8, c17) from t1; -c8 c17 nullif(c8, c17) ifnull(c8, c17) -2 8 2 2 -2 -8 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c18, nullif(c8, c18), ifnull(c8, c18) from t1; -c8 c18 nullif(c8, c18) ifnull(c8, c18) -2 9 2 2 -2 9 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c19, nullif(c8, c19), ifnull(c8, c19) from t1; -c8 c19 nullif(c8, c19) ifnull(c8, c19) -2 2019-12-01 12:00:00 2 2 -2 2019-12-01 12:00:00 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c20, nullif(c8, c20), ifnull(c8, c20) from t1; -c8 c20 nullif(c8, c20) ifnull(c8, c20) -2 2019-12-03 06:00:00 2 2 -2 2019-12-03 06:00:00 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c21, nullif(c8, c21), ifnull(c8, c21) from t1; -c8 c21 nullif(c8, c21) ifnull(c8, c21) -2 9.5 2 2 -2 -9.5 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c8, c22, nullif(c8, c22), ifnull(c8, c22) from t1; -c8 c22 nullif(c8, c22) ifnull(c8, c22) -2 10.5 2 2 -2 10.5 2 2 -select c8, nullif(c8, c8) from t1; -c8 nullif(c8, c8) -2 NULL -2 NULL -select c9, c1, nullif(c9, c1), ifnull(c9, c1) from t1; -c9 c1 nullif(c9, c1) ifnull(c9, c1) -1 1 NULL 1 --1 -1 NULL -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c2, nullif(c9, c2), ifnull(c9, c2) from t1; -c9 c2 nullif(c9, c2) ifnull(c9, c2) -1 2 1 1 --1 2 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c3, nullif(c9, c3), ifnull(c9, c3) from t1; -c9 c3 nullif(c9, c3) ifnull(c9, c3) -1 1 NULL 1 --1 -1 NULL -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c4, nullif(c9, c4), ifnull(c9, c4) from t1; -c9 c4 nullif(c9, c4) ifnull(c9, c4) -1 2 1 1 --1 2 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c5, nullif(c9, c5), ifnull(c9, c5) from t1; -c9 c5 nullif(c9, c5) ifnull(c9, c5) -1 1 NULL 1 --1 -1 NULL -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c6, nullif(c9, c6), ifnull(c9, c6) from t1; -c9 c6 nullif(c9, c6) ifnull(c9, c6) -1 2 1 1 --1 2 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c7, nullif(c9, c7), ifnull(c9, c7) from t1; -c9 c7 nullif(c9, c7) ifnull(c9, c7) -1 1 NULL 1 --1 -1 NULL -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c8, nullif(c9, c8), ifnull(c9, c8) from t1; -c9 c8 nullif(c9, c8) ifnull(c9, c8) -1 2 1 1 --1 2 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c9, nullif(c9, c9), ifnull(c9, c9) from t1; -c9 c9 nullif(c9, c9) ifnull(c9, c9) -1 1 NULL 1 --1 -1 NULL -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c10, nullif(c9, c10), ifnull(c9, c10) from t1; -c9 c10 nullif(c9, c10) ifnull(c9, c10) -1 2 1 1 --1 2 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c11, nullif(c9, c11), ifnull(c9, c11) from t1; -c9 c11 nullif(c9, c11) ifnull(c9, c11) -1 1 NULL 1 --1 -1 NULL -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c12, nullif(c9, c12), ifnull(c9, c12) from t1; -c9 c12 nullif(c9, c12) ifnull(c9, c12) -1 2 1 1 --1 2 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c13, nullif(c9, c13), ifnull(c9, c13) from t1; -c9 c13 nullif(c9, c13) ifnull(c9, c13) -1 3.5 1 1 --1 -3.5 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c14, nullif(c9, c14), ifnull(c9, c14) from t1; -c9 c14 nullif(c9, c14) ifnull(c9, c14) -1 4.5 1 1 --1 4.5 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c15, nullif(c9, c15), ifnull(c9, c15) from t1; -c9 c15 nullif(c9, c15) ifnull(c9, c15) -1 5.5 1 1 --1 -5.5 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c16, nullif(c9, c16), ifnull(c9, c16) from t1; -c9 c16 nullif(c9, c16) ifnull(c9, c16) -1 6.5 1 1 --1 6.5 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c17, nullif(c9, c17), ifnull(c9, c17) from t1; -c9 c17 nullif(c9, c17) ifnull(c9, c17) -1 8 1 1 --1 -8 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c18, nullif(c9, c18), ifnull(c9, c18) from t1; -c9 c18 nullif(c9, c18) ifnull(c9, c18) -1 9 1 1 --1 9 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c19, nullif(c9, c19), ifnull(c9, c19) from t1; -c9 c19 nullif(c9, c19) ifnull(c9, c19) -1 2019-12-01 12:00:00 1 1 --1 2019-12-01 12:00:00 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c20, nullif(c9, c20), ifnull(c9, c20) from t1; -c9 c20 nullif(c9, c20) ifnull(c9, c20) -1 2019-12-03 06:00:00 1 1 --1 2019-12-03 06:00:00 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c21, nullif(c9, c21), ifnull(c9, c21) from t1; -c9 c21 nullif(c9, c21) ifnull(c9, c21) -1 9.5 1 1 --1 -9.5 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c9, c22, nullif(c9, c22), ifnull(c9, c22) from t1; -c9 c22 nullif(c9, c22) ifnull(c9, c22) -1 10.5 1 1 --1 10.5 -1 -1 -select c9, nullif(c9, c9) from t1; -c9 nullif(c9, c9) -1 NULL --1 NULL -select c10, c1, nullif(c10, c1), ifnull(c10, c1) from t1; -c10 c1 nullif(c10, c1) ifnull(c10, c1) -2 1 2 2 -2 -1 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c2, nullif(c10, c2), ifnull(c10, c2) from t1; -c10 c2 nullif(c10, c2) ifnull(c10, c2) -2 2 NULL 2 -2 2 NULL 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c3, nullif(c10, c3), ifnull(c10, c3) from t1; -c10 c3 nullif(c10, c3) ifnull(c10, c3) -2 1 2 2 -2 -1 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c4, nullif(c10, c4), ifnull(c10, c4) from t1; -c10 c4 nullif(c10, c4) ifnull(c10, c4) -2 2 NULL 2 -2 2 NULL 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c5, nullif(c10, c5), ifnull(c10, c5) from t1; -c10 c5 nullif(c10, c5) ifnull(c10, c5) -2 1 2 2 -2 -1 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c6, nullif(c10, c6), ifnull(c10, c6) from t1; -c10 c6 nullif(c10, c6) ifnull(c10, c6) -2 2 NULL 2 -2 2 NULL 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c7, nullif(c10, c7), ifnull(c10, c7) from t1; -c10 c7 nullif(c10, c7) ifnull(c10, c7) -2 1 2 2 -2 -1 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c8, nullif(c10, c8), ifnull(c10, c8) from t1; -c10 c8 nullif(c10, c8) ifnull(c10, c8) -2 2 NULL 2 -2 2 NULL 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c9, nullif(c10, c9), ifnull(c10, c9) from t1; -c10 c9 nullif(c10, c9) ifnull(c10, c9) -2 1 2 2 -2 -1 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c10, nullif(c10, c10), ifnull(c10, c10) from t1; -c10 c10 nullif(c10, c10) ifnull(c10, c10) -2 2 NULL 2 -2 2 NULL 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c11, nullif(c10, c11), ifnull(c10, c11) from t1; -c10 c11 nullif(c10, c11) ifnull(c10, c11) -2 1 2 2 -2 -1 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c12, nullif(c10, c12), ifnull(c10, c12) from t1; -c10 c12 nullif(c10, c12) ifnull(c10, c12) -2 2 NULL 2 -2 2 NULL 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c13, nullif(c10, c13), ifnull(c10, c13) from t1; -c10 c13 nullif(c10, c13) ifnull(c10, c13) -2 3.5 2 2 -2 -3.5 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c14, nullif(c10, c14), ifnull(c10, c14) from t1; -c10 c14 nullif(c10, c14) ifnull(c10, c14) -2 4.5 2 2 -2 4.5 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c15, nullif(c10, c15), ifnull(c10, c15) from t1; -c10 c15 nullif(c10, c15) ifnull(c10, c15) -2 5.5 2 2 -2 -5.5 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c16, nullif(c10, c16), ifnull(c10, c16) from t1; -c10 c16 nullif(c10, c16) ifnull(c10, c16) -2 6.5 2 2 -2 6.5 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c17, nullif(c10, c17), ifnull(c10, c17) from t1; -c10 c17 nullif(c10, c17) ifnull(c10, c17) -2 8 2 2 -2 -8 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c18, nullif(c10, c18), ifnull(c10, c18) from t1; -c10 c18 nullif(c10, c18) ifnull(c10, c18) -2 9 2 2 -2 9 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c19, nullif(c10, c19), ifnull(c10, c19) from t1; -c10 c19 nullif(c10, c19) ifnull(c10, c19) -2 2019-12-01 12:00:00 2 2 -2 2019-12-01 12:00:00 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c20, nullif(c10, c20), ifnull(c10, c20) from t1; -c10 c20 nullif(c10, c20) ifnull(c10, c20) -2 2019-12-03 06:00:00 2 2 -2 2019-12-03 06:00:00 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c21, nullif(c10, c21), ifnull(c10, c21) from t1; -c10 c21 nullif(c10, c21) ifnull(c10, c21) -2 9.5 2 2 -2 -9.5 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c10, c22, nullif(c10, c22), ifnull(c10, c22) from t1; -c10 c22 nullif(c10, c22) ifnull(c10, c22) -2 10.5 2 2 -2 10.5 2 2 -select c10, nullif(c10, c10) from t1; -c10 nullif(c10, c10) -2 NULL -2 NULL -select c11, c1, nullif(c11, c1), ifnull(c11, c1) from t1; -c11 c1 nullif(c11, c1) ifnull(c11, c1) -1 1 NULL 1 --1 -1 NULL -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c2, nullif(c11, c2), ifnull(c11, c2) from t1; -c11 c2 nullif(c11, c2) ifnull(c11, c2) -1 2 1 1 --1 2 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c3, nullif(c11, c3), ifnull(c11, c3) from t1; -c11 c3 nullif(c11, c3) ifnull(c11, c3) -1 1 NULL 1 --1 -1 NULL -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c4, nullif(c11, c4), ifnull(c11, c4) from t1; -c11 c4 nullif(c11, c4) ifnull(c11, c4) -1 2 1 1 --1 2 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c5, nullif(c11, c5), ifnull(c11, c5) from t1; -c11 c5 nullif(c11, c5) ifnull(c11, c5) -1 1 NULL 1 --1 -1 NULL -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c6, nullif(c11, c6), ifnull(c11, c6) from t1; -c11 c6 nullif(c11, c6) ifnull(c11, c6) -1 2 1 1 --1 2 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c7, nullif(c11, c7), ifnull(c11, c7) from t1; -c11 c7 nullif(c11, c7) ifnull(c11, c7) -1 1 NULL 1 --1 -1 NULL -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c8, nullif(c11, c8), ifnull(c11, c8) from t1; -c11 c8 nullif(c11, c8) ifnull(c11, c8) -1 2 1 1 --1 2 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c9, nullif(c11, c9), ifnull(c11, c9) from t1; -c11 c9 nullif(c11, c9) ifnull(c11, c9) -1 1 NULL 1 --1 -1 NULL -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c10, nullif(c11, c10), ifnull(c11, c10) from t1; -c11 c10 nullif(c11, c10) ifnull(c11, c10) -1 2 1 1 --1 2 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c11, nullif(c11, c11), ifnull(c11, c11) from t1; -c11 c11 nullif(c11, c11) ifnull(c11, c11) -1 1 NULL 1 --1 -1 NULL -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c12, nullif(c11, c12), ifnull(c11, c12) from t1; -c11 c12 nullif(c11, c12) ifnull(c11, c12) -1 2 1 1 --1 2 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c13, nullif(c11, c13), ifnull(c11, c13) from t1; -c11 c13 nullif(c11, c13) ifnull(c11, c13) -1 3.5 1 1 --1 -3.5 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c14, nullif(c11, c14), ifnull(c11, c14) from t1; -c11 c14 nullif(c11, c14) ifnull(c11, c14) -1 4.5 1 1 --1 4.5 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c15, nullif(c11, c15), ifnull(c11, c15) from t1; -c11 c15 nullif(c11, c15) ifnull(c11, c15) -1 5.5 1 1 --1 -5.5 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c16, nullif(c11, c16), ifnull(c11, c16) from t1; -c11 c16 nullif(c11, c16) ifnull(c11, c16) -1 6.5 1 1 --1 6.5 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c17, nullif(c11, c17), ifnull(c11, c17) from t1; -c11 c17 nullif(c11, c17) ifnull(c11, c17) -1 8 1 1 --1 -8 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c18, nullif(c11, c18), ifnull(c11, c18) from t1; -c11 c18 nullif(c11, c18) ifnull(c11, c18) -1 9 1 1 --1 9 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c19, nullif(c11, c19), ifnull(c11, c19) from t1; -c11 c19 nullif(c11, c19) ifnull(c11, c19) -1 2019-12-01 12:00:00 1 1 --1 2019-12-01 12:00:00 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c20, nullif(c11, c20), ifnull(c11, c20) from t1; -c11 c20 nullif(c11, c20) ifnull(c11, c20) -1 2019-12-03 06:00:00 1 1 --1 2019-12-03 06:00:00 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c21, nullif(c11, c21), ifnull(c11, c21) from t1; -c11 c21 nullif(c11, c21) ifnull(c11, c21) -1 9.5 1 1 --1 -9.5 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c11, c22, nullif(c11, c22), ifnull(c11, c22) from t1; -c11 c22 nullif(c11, c22) ifnull(c11, c22) -1 10.5 1 1 --1 10.5 -1 -1 -select c11, nullif(c11, c11) from t1; -c11 nullif(c11, c11) -1 NULL --1 NULL -select c12, c1, nullif(c12, c1), ifnull(c12, c1) from t1; -c12 c1 nullif(c12, c1) ifnull(c12, c1) -2 1 2 2 -2 -1 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c2, nullif(c12, c2), ifnull(c12, c2) from t1; -c12 c2 nullif(c12, c2) ifnull(c12, c2) -2 2 NULL 2 -2 2 NULL 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c3, nullif(c12, c3), ifnull(c12, c3) from t1; -c12 c3 nullif(c12, c3) ifnull(c12, c3) -2 1 2 2 -2 -1 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c4, nullif(c12, c4), ifnull(c12, c4) from t1; -c12 c4 nullif(c12, c4) ifnull(c12, c4) -2 2 NULL 2 -2 2 NULL 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c5, nullif(c12, c5), ifnull(c12, c5) from t1; -c12 c5 nullif(c12, c5) ifnull(c12, c5) -2 1 2 2 -2 -1 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c6, nullif(c12, c6), ifnull(c12, c6) from t1; -c12 c6 nullif(c12, c6) ifnull(c12, c6) -2 2 NULL 2 -2 2 NULL 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c7, nullif(c12, c7), ifnull(c12, c7) from t1; -c12 c7 nullif(c12, c7) ifnull(c12, c7) -2 1 2 2 -2 -1 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c8, nullif(c12, c8), ifnull(c12, c8) from t1; -c12 c8 nullif(c12, c8) ifnull(c12, c8) -2 2 NULL 2 -2 2 NULL 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c9, nullif(c12, c9), ifnull(c12, c9) from t1; -c12 c9 nullif(c12, c9) ifnull(c12, c9) -2 1 2 2 -2 -1 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c10, nullif(c12, c10), ifnull(c12, c10) from t1; -c12 c10 nullif(c12, c10) ifnull(c12, c10) -2 2 NULL 2 -2 2 NULL 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c11, nullif(c12, c11), ifnull(c12, c11) from t1; -c12 c11 nullif(c12, c11) ifnull(c12, c11) -2 1 2 2 -2 -1 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c12, nullif(c12, c12), ifnull(c12, c12) from t1; -c12 c12 nullif(c12, c12) ifnull(c12, c12) -2 2 NULL 2 -2 2 NULL 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c13, nullif(c12, c13), ifnull(c12, c13) from t1; -c12 c13 nullif(c12, c13) ifnull(c12, c13) -2 3.5 2 2 -2 -3.5 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c14, nullif(c12, c14), ifnull(c12, c14) from t1; -c12 c14 nullif(c12, c14) ifnull(c12, c14) -2 4.5 2 2 -2 4.5 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c15, nullif(c12, c15), ifnull(c12, c15) from t1; -c12 c15 nullif(c12, c15) ifnull(c12, c15) -2 5.5 2 2 -2 -5.5 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c16, nullif(c12, c16), ifnull(c12, c16) from t1; -c12 c16 nullif(c12, c16) ifnull(c12, c16) -2 6.5 2 2 -2 6.5 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c17, nullif(c12, c17), ifnull(c12, c17) from t1; -c12 c17 nullif(c12, c17) ifnull(c12, c17) -2 8 2 2 -2 -8 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c18, nullif(c12, c18), ifnull(c12, c18) from t1; -c12 c18 nullif(c12, c18) ifnull(c12, c18) -2 9 2 2 -2 9 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c19, nullif(c12, c19), ifnull(c12, c19) from t1; -c12 c19 nullif(c12, c19) ifnull(c12, c19) -2 2019-12-01 12:00:00 2 2 -2 2019-12-01 12:00:00 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c20, nullif(c12, c20), ifnull(c12, c20) from t1; -c12 c20 nullif(c12, c20) ifnull(c12, c20) -2 2019-12-03 06:00:00 2 2 -2 2019-12-03 06:00:00 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c21, nullif(c12, c21), ifnull(c12, c21) from t1; -c12 c21 nullif(c12, c21) ifnull(c12, c21) -2 9.5 2 2 -2 -9.5 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c12, c22, nullif(c12, c22), ifnull(c12, c22) from t1; -c12 c22 nullif(c12, c22) ifnull(c12, c22) -2 10.5 2 2 -2 10.5 2 2 -select c12, nullif(c12, c12) from t1; -c12 nullif(c12, c12) -2 NULL -2 NULL -select c13, c1, nullif(c13, c1), ifnull(c13, c1) from t1; -c13 c1 nullif(c13, c1) ifnull(c13, c1) -3.5 1 3.5 3.5 --3.5 -1 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c2, nullif(c13, c2), ifnull(c13, c2) from t1; -c13 c2 nullif(c13, c2) ifnull(c13, c2) -3.5 2 3.5 3.5 --3.5 2 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c3, nullif(c13, c3), ifnull(c13, c3) from t1; -c13 c3 nullif(c13, c3) ifnull(c13, c3) -3.5 1 3.5 3.5 --3.5 -1 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c4, nullif(c13, c4), ifnull(c13, c4) from t1; -c13 c4 nullif(c13, c4) ifnull(c13, c4) -3.5 2 3.5 3.5 --3.5 2 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c5, nullif(c13, c5), ifnull(c13, c5) from t1; -c13 c5 nullif(c13, c5) ifnull(c13, c5) -3.5 1 3.5 3.5 --3.5 -1 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c6, nullif(c13, c6), ifnull(c13, c6) from t1; -c13 c6 nullif(c13, c6) ifnull(c13, c6) -3.5 2 3.5 3.5 --3.5 2 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c7, nullif(c13, c7), ifnull(c13, c7) from t1; -c13 c7 nullif(c13, c7) ifnull(c13, c7) -3.5 1 3.5 3.5 --3.5 -1 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c8, nullif(c13, c8), ifnull(c13, c8) from t1; -c13 c8 nullif(c13, c8) ifnull(c13, c8) -3.5 2 3.5 3.5 --3.5 2 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c9, nullif(c13, c9), ifnull(c13, c9) from t1; -c13 c9 nullif(c13, c9) ifnull(c13, c9) -3.5 1 3.5 3.5 --3.5 -1 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c10, nullif(c13, c10), ifnull(c13, c10) from t1; -c13 c10 nullif(c13, c10) ifnull(c13, c10) -3.5 2 3.5 3.5 --3.5 2 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c11, nullif(c13, c11), ifnull(c13, c11) from t1; -c13 c11 nullif(c13, c11) ifnull(c13, c11) -3.5 1 3.5 3.5 --3.5 -1 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c12, nullif(c13, c12), ifnull(c13, c12) from t1; -c13 c12 nullif(c13, c12) ifnull(c13, c12) -3.5 2 3.5 3.5 --3.5 2 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c13, nullif(c13, c13), ifnull(c13, c13) from t1; -c13 c13 nullif(c13, c13) ifnull(c13, c13) -3.5 3.5 NULL 3.5 --3.5 -3.5 NULL -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c14, nullif(c13, c14), ifnull(c13, c14) from t1; -c13 c14 nullif(c13, c14) ifnull(c13, c14) -3.5 4.5 3.5 3.5 --3.5 4.5 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c15, nullif(c13, c15), ifnull(c13, c15) from t1; -c13 c15 nullif(c13, c15) ifnull(c13, c15) -3.5 5.5 3.5 3.5 --3.5 -5.5 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c16, nullif(c13, c16), ifnull(c13, c16) from t1; -c13 c16 nullif(c13, c16) ifnull(c13, c16) -3.5 6.5 3.5 3.5 --3.5 6.5 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c17, nullif(c13, c17), ifnull(c13, c17) from t1; -c13 c17 nullif(c13, c17) ifnull(c13, c17) -3.5 8 3.5 3.5 --3.5 -8 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c18, nullif(c13, c18), ifnull(c13, c18) from t1; -c13 c18 nullif(c13, c18) ifnull(c13, c18) -3.5 9 3.5 3.5 --3.5 9 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c19, nullif(c13, c19), ifnull(c13, c19) from t1; -c13 c19 nullif(c13, c19) ifnull(c13, c19) -3.5 2019-12-01 12:00:00 3.5 3.5 --3.5 2019-12-01 12:00:00 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c20, nullif(c13, c20), ifnull(c13, c20) from t1; -c13 c20 nullif(c13, c20) ifnull(c13, c20) -3.5 2019-12-03 06:00:00 3.5 3.5 --3.5 2019-12-03 06:00:00 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c21, nullif(c13, c21), ifnull(c13, c21) from t1; -c13 c21 nullif(c13, c21) ifnull(c13, c21) -3.5 9.5 3.5 3.5 --3.5 -9.5 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c13, c22, nullif(c13, c22), ifnull(c13, c22) from t1; -c13 c22 nullif(c13, c22) ifnull(c13, c22) -3.5 10.5 3.5 3.5 --3.5 10.5 -3.5 -3.5 -select c13, nullif(c13, c13) from t1; -c13 nullif(c13, c13) -3.5 NULL --3.5 NULL -select c14, c1, nullif(c14, c1), ifnull(c14, c1) from t1; -c14 c1 nullif(c14, c1) ifnull(c14, c1) -4.5 1 4.5 4.5 -4.5 -1 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c2, nullif(c14, c2), ifnull(c14, c2) from t1; -c14 c2 nullif(c14, c2) ifnull(c14, c2) -4.5 2 4.5 4.5 -4.5 2 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c3, nullif(c14, c3), ifnull(c14, c3) from t1; -c14 c3 nullif(c14, c3) ifnull(c14, c3) -4.5 1 4.5 4.5 -4.5 -1 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c4, nullif(c14, c4), ifnull(c14, c4) from t1; -c14 c4 nullif(c14, c4) ifnull(c14, c4) -4.5 2 4.5 4.5 -4.5 2 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c5, nullif(c14, c5), ifnull(c14, c5) from t1; -c14 c5 nullif(c14, c5) ifnull(c14, c5) -4.5 1 4.5 4.5 -4.5 -1 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c6, nullif(c14, c6), ifnull(c14, c6) from t1; -c14 c6 nullif(c14, c6) ifnull(c14, c6) -4.5 2 4.5 4.5 -4.5 2 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c7, nullif(c14, c7), ifnull(c14, c7) from t1; -c14 c7 nullif(c14, c7) ifnull(c14, c7) -4.5 1 4.5 4.5 -4.5 -1 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c8, nullif(c14, c8), ifnull(c14, c8) from t1; -c14 c8 nullif(c14, c8) ifnull(c14, c8) -4.5 2 4.5 4.5 -4.5 2 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c9, nullif(c14, c9), ifnull(c14, c9) from t1; -c14 c9 nullif(c14, c9) ifnull(c14, c9) -4.5 1 4.5 4.5 -4.5 -1 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c10, nullif(c14, c10), ifnull(c14, c10) from t1; -c14 c10 nullif(c14, c10) ifnull(c14, c10) -4.5 2 4.5 4.5 -4.5 2 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c11, nullif(c14, c11), ifnull(c14, c11) from t1; -c14 c11 nullif(c14, c11) ifnull(c14, c11) -4.5 1 4.5 4.5 -4.5 -1 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c12, nullif(c14, c12), ifnull(c14, c12) from t1; -c14 c12 nullif(c14, c12) ifnull(c14, c12) -4.5 2 4.5 4.5 -4.5 2 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c13, nullif(c14, c13), ifnull(c14, c13) from t1; -c14 c13 nullif(c14, c13) ifnull(c14, c13) -4.5 3.5 4.5 4.5 -4.5 -3.5 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c14, nullif(c14, c14), ifnull(c14, c14) from t1; -c14 c14 nullif(c14, c14) ifnull(c14, c14) -4.5 4.5 NULL 4.5 -4.5 4.5 NULL 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c15, nullif(c14, c15), ifnull(c14, c15) from t1; -c14 c15 nullif(c14, c15) ifnull(c14, c15) -4.5 5.5 4.5 4.5 -4.5 -5.5 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c16, nullif(c14, c16), ifnull(c14, c16) from t1; -c14 c16 nullif(c14, c16) ifnull(c14, c16) -4.5 6.5 4.5 4.5 -4.5 6.5 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c17, nullif(c14, c17), ifnull(c14, c17) from t1; -c14 c17 nullif(c14, c17) ifnull(c14, c17) -4.5 8 4.5 4.5 -4.5 -8 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c18, nullif(c14, c18), ifnull(c14, c18) from t1; -c14 c18 nullif(c14, c18) ifnull(c14, c18) -4.5 9 4.5 4.5 -4.5 9 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c19, nullif(c14, c19), ifnull(c14, c19) from t1; -c14 c19 nullif(c14, c19) ifnull(c14, c19) -4.5 2019-12-01 12:00:00 4.5 4.5 -4.5 2019-12-01 12:00:00 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c20, nullif(c14, c20), ifnull(c14, c20) from t1; -c14 c20 nullif(c14, c20) ifnull(c14, c20) -4.5 2019-12-03 06:00:00 4.5 4.5 -4.5 2019-12-03 06:00:00 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c21, nullif(c14, c21), ifnull(c14, c21) from t1; -c14 c21 nullif(c14, c21) ifnull(c14, c21) -4.5 9.5 4.5 4.5 -4.5 -9.5 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c14, c22, nullif(c14, c22), ifnull(c14, c22) from t1; -c14 c22 nullif(c14, c22) ifnull(c14, c22) -4.5 10.5 4.5 4.5 -4.5 10.5 4.5 4.5 -select c14, nullif(c14, c14) from t1; -c14 nullif(c14, c14) -4.5 NULL -4.5 NULL -select c15, c1, nullif(c15, c1), ifnull(c15, c1) from t1; -c15 c1 nullif(c15, c1) ifnull(c15, c1) -5.5 1 5.5 5.5 --5.5 -1 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c2, nullif(c15, c2), ifnull(c15, c2) from t1; -c15 c2 nullif(c15, c2) ifnull(c15, c2) -5.5 2 5.5 5.5 --5.5 2 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c3, nullif(c15, c3), ifnull(c15, c3) from t1; -c15 c3 nullif(c15, c3) ifnull(c15, c3) -5.5 1 5.5 5.5 --5.5 -1 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c4, nullif(c15, c4), ifnull(c15, c4) from t1; -c15 c4 nullif(c15, c4) ifnull(c15, c4) -5.5 2 5.5 5.5 --5.5 2 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c5, nullif(c15, c5), ifnull(c15, c5) from t1; -c15 c5 nullif(c15, c5) ifnull(c15, c5) -5.5 1 5.5 5.5 --5.5 -1 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c6, nullif(c15, c6), ifnull(c15, c6) from t1; -c15 c6 nullif(c15, c6) ifnull(c15, c6) -5.5 2 5.5 5.5 --5.5 2 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c7, nullif(c15, c7), ifnull(c15, c7) from t1; -c15 c7 nullif(c15, c7) ifnull(c15, c7) -5.5 1 5.5 5.5 --5.5 -1 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c8, nullif(c15, c8), ifnull(c15, c8) from t1; -c15 c8 nullif(c15, c8) ifnull(c15, c8) -5.5 2 5.5 5.5 --5.5 2 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c9, nullif(c15, c9), ifnull(c15, c9) from t1; -c15 c9 nullif(c15, c9) ifnull(c15, c9) -5.5 1 5.5 5.5 --5.5 -1 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c10, nullif(c15, c10), ifnull(c15, c10) from t1; -c15 c10 nullif(c15, c10) ifnull(c15, c10) -5.5 2 5.5 5.5 --5.5 2 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c11, nullif(c15, c11), ifnull(c15, c11) from t1; -c15 c11 nullif(c15, c11) ifnull(c15, c11) -5.5 1 5.5 5.5 --5.5 -1 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c12, nullif(c15, c12), ifnull(c15, c12) from t1; -c15 c12 nullif(c15, c12) ifnull(c15, c12) -5.5 2 5.5 5.5 --5.5 2 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c13, nullif(c15, c13), ifnull(c15, c13) from t1; -c15 c13 nullif(c15, c13) ifnull(c15, c13) -5.5 3.5 5.5 5.5 --5.5 -3.5 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c14, nullif(c15, c14), ifnull(c15, c14) from t1; -c15 c14 nullif(c15, c14) ifnull(c15, c14) -5.5 4.5 5.5 5.5 --5.5 4.5 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c15, nullif(c15, c15), ifnull(c15, c15) from t1; -c15 c15 nullif(c15, c15) ifnull(c15, c15) -5.5 5.5 NULL 5.5 --5.5 -5.5 NULL -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c16, nullif(c15, c16), ifnull(c15, c16) from t1; -c15 c16 nullif(c15, c16) ifnull(c15, c16) -5.5 6.5 5.5 5.5 --5.5 6.5 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c17, nullif(c15, c17), ifnull(c15, c17) from t1; -c15 c17 nullif(c15, c17) ifnull(c15, c17) -5.5 8 5.5 5.5 --5.5 -8 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c18, nullif(c15, c18), ifnull(c15, c18) from t1; -c15 c18 nullif(c15, c18) ifnull(c15, c18) -5.5 9 5.5 5.5 --5.5 9 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c19, nullif(c15, c19), ifnull(c15, c19) from t1; -c15 c19 nullif(c15, c19) ifnull(c15, c19) -5.5 2019-12-01 12:00:00 5.5 5.5 --5.5 2019-12-01 12:00:00 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c20, nullif(c15, c20), ifnull(c15, c20) from t1; -c15 c20 nullif(c15, c20) ifnull(c15, c20) -5.5 2019-12-03 06:00:00 5.5 5.5 --5.5 2019-12-03 06:00:00 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c21, nullif(c15, c21), ifnull(c15, c21) from t1; -c15 c21 nullif(c15, c21) ifnull(c15, c21) -5.5 9.5 5.5 5.5 --5.5 -9.5 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c15, c22, nullif(c15, c22), ifnull(c15, c22) from t1; -c15 c22 nullif(c15, c22) ifnull(c15, c22) -5.5 10.5 5.5 5.5 --5.5 10.5 -5.5 -5.5 -select c15, nullif(c15, c15) from t1; -c15 nullif(c15, c15) -5.5 NULL --5.5 NULL -select c16, c1, nullif(c16, c1), ifnull(c16, c1) from t1; -c16 c1 nullif(c16, c1) ifnull(c16, c1) -6.5 1 6.5 6.5 -6.5 -1 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c2, nullif(c16, c2), ifnull(c16, c2) from t1; -c16 c2 nullif(c16, c2) ifnull(c16, c2) -6.5 2 6.5 6.5 -6.5 2 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c3, nullif(c16, c3), ifnull(c16, c3) from t1; -c16 c3 nullif(c16, c3) ifnull(c16, c3) -6.5 1 6.5 6.5 -6.5 -1 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c4, nullif(c16, c4), ifnull(c16, c4) from t1; -c16 c4 nullif(c16, c4) ifnull(c16, c4) -6.5 2 6.5 6.5 -6.5 2 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c5, nullif(c16, c5), ifnull(c16, c5) from t1; -c16 c5 nullif(c16, c5) ifnull(c16, c5) -6.5 1 6.5 6.5 -6.5 -1 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c6, nullif(c16, c6), ifnull(c16, c6) from t1; -c16 c6 nullif(c16, c6) ifnull(c16, c6) -6.5 2 6.5 6.5 -6.5 2 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c7, nullif(c16, c7), ifnull(c16, c7) from t1; -c16 c7 nullif(c16, c7) ifnull(c16, c7) -6.5 1 6.5 6.5 -6.5 -1 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c8, nullif(c16, c8), ifnull(c16, c8) from t1; -c16 c8 nullif(c16, c8) ifnull(c16, c8) -6.5 2 6.5 6.5 -6.5 2 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c9, nullif(c16, c9), ifnull(c16, c9) from t1; -c16 c9 nullif(c16, c9) ifnull(c16, c9) -6.5 1 6.5 6.5 -6.5 -1 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c10, nullif(c16, c10), ifnull(c16, c10) from t1; -c16 c10 nullif(c16, c10) ifnull(c16, c10) -6.5 2 6.5 6.5 -6.5 2 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c11, nullif(c16, c11), ifnull(c16, c11) from t1; -c16 c11 nullif(c16, c11) ifnull(c16, c11) -6.5 1 6.5 6.5 -6.5 -1 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c12, nullif(c16, c12), ifnull(c16, c12) from t1; -c16 c12 nullif(c16, c12) ifnull(c16, c12) -6.5 2 6.5 6.5 -6.5 2 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c13, nullif(c16, c13), ifnull(c16, c13) from t1; -c16 c13 nullif(c16, c13) ifnull(c16, c13) -6.5 3.5 6.5 6.5 -6.5 -3.5 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c14, nullif(c16, c14), ifnull(c16, c14) from t1; -c16 c14 nullif(c16, c14) ifnull(c16, c14) -6.5 4.5 6.5 6.5 -6.5 4.5 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c15, nullif(c16, c15), ifnull(c16, c15) from t1; -c16 c15 nullif(c16, c15) ifnull(c16, c15) -6.5 5.5 6.5 6.5 -6.5 -5.5 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c16, nullif(c16, c16), ifnull(c16, c16) from t1; -c16 c16 nullif(c16, c16) ifnull(c16, c16) -6.5 6.5 NULL 6.5 -6.5 6.5 NULL 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c17, nullif(c16, c17), ifnull(c16, c17) from t1; -c16 c17 nullif(c16, c17) ifnull(c16, c17) -6.5 8 6.5 6.5 -6.5 -8 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c18, nullif(c16, c18), ifnull(c16, c18) from t1; -c16 c18 nullif(c16, c18) ifnull(c16, c18) -6.5 9 6.5 6.5 -6.5 9 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c19, nullif(c16, c19), ifnull(c16, c19) from t1; -c16 c19 nullif(c16, c19) ifnull(c16, c19) -6.5 2019-12-01 12:00:00 6.5 6.5 -6.5 2019-12-01 12:00:00 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c20, nullif(c16, c20), ifnull(c16, c20) from t1; -c16 c20 nullif(c16, c20) ifnull(c16, c20) -6.5 2019-12-03 06:00:00 6.5 6.5 -6.5 2019-12-03 06:00:00 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c21, nullif(c16, c21), ifnull(c16, c21) from t1; -c16 c21 nullif(c16, c21) ifnull(c16, c21) -6.5 9.5 6.5 6.5 -6.5 -9.5 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c16, c22, nullif(c16, c22), ifnull(c16, c22) from t1; -c16 c22 nullif(c16, c22) ifnull(c16, c22) -6.5 10.5 6.5 6.5 -6.5 10.5 6.5 6.5 -select c16, nullif(c16, c16) from t1; -c16 nullif(c16, c16) -6.5 NULL -6.5 NULL -select c17, c1, nullif(c17, c1), ifnull(c17, c1) from t1; -c17 c1 nullif(c17, c1) ifnull(c17, c1) -8 1 8 8 --8 -1 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c2, nullif(c17, c2), ifnull(c17, c2) from t1; -c17 c2 nullif(c17, c2) ifnull(c17, c2) -8 2 8 8 --8 2 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c3, nullif(c17, c3), ifnull(c17, c3) from t1; -c17 c3 nullif(c17, c3) ifnull(c17, c3) -8 1 8 8 --8 -1 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c4, nullif(c17, c4), ifnull(c17, c4) from t1; -c17 c4 nullif(c17, c4) ifnull(c17, c4) -8 2 8 8 --8 2 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c5, nullif(c17, c5), ifnull(c17, c5) from t1; -c17 c5 nullif(c17, c5) ifnull(c17, c5) -8 1 8 8 --8 -1 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c6, nullif(c17, c6), ifnull(c17, c6) from t1; -c17 c6 nullif(c17, c6) ifnull(c17, c6) -8 2 8 8 --8 2 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c7, nullif(c17, c7), ifnull(c17, c7) from t1; -c17 c7 nullif(c17, c7) ifnull(c17, c7) -8 1 8 8 --8 -1 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c8, nullif(c17, c8), ifnull(c17, c8) from t1; -c17 c8 nullif(c17, c8) ifnull(c17, c8) -8 2 8 8 --8 2 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c9, nullif(c17, c9), ifnull(c17, c9) from t1; -c17 c9 nullif(c17, c9) ifnull(c17, c9) -8 1 8 8 --8 -1 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c10, nullif(c17, c10), ifnull(c17, c10) from t1; -c17 c10 nullif(c17, c10) ifnull(c17, c10) -8 2 8 8 --8 2 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c11, nullif(c17, c11), ifnull(c17, c11) from t1; -c17 c11 nullif(c17, c11) ifnull(c17, c11) -8 1 8 8 --8 -1 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c12, nullif(c17, c12), ifnull(c17, c12) from t1; -c17 c12 nullif(c17, c12) ifnull(c17, c12) -8 2 8 8 --8 2 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c13, nullif(c17, c13), ifnull(c17, c13) from t1; -c17 c13 nullif(c17, c13) ifnull(c17, c13) -8 3.5 8 8 --8 -3.5 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c14, nullif(c17, c14), ifnull(c17, c14) from t1; -c17 c14 nullif(c17, c14) ifnull(c17, c14) -8 4.5 8 8 --8 4.5 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c15, nullif(c17, c15), ifnull(c17, c15) from t1; -c17 c15 nullif(c17, c15) ifnull(c17, c15) -8 5.5 8 8 --8 -5.5 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c16, nullif(c17, c16), ifnull(c17, c16) from t1; -c17 c16 nullif(c17, c16) ifnull(c17, c16) -8 6.5 8 8 --8 6.5 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c17, nullif(c17, c17), ifnull(c17, c17) from t1; -c17 c17 nullif(c17, c17) ifnull(c17, c17) -8 8 NULL 8 --8 -8 NULL -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c18, nullif(c17, c18), ifnull(c17, c18) from t1; -c17 c18 nullif(c17, c18) ifnull(c17, c18) -8 9 8 8 --8 9 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c19, nullif(c17, c19), ifnull(c17, c19) from t1; -c17 c19 nullif(c17, c19) ifnull(c17, c19) -8 2019-12-01 12:00:00 8 8 --8 2019-12-01 12:00:00 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c20, nullif(c17, c20), ifnull(c17, c20) from t1; -c17 c20 nullif(c17, c20) ifnull(c17, c20) -8 2019-12-03 06:00:00 8 8 --8 2019-12-03 06:00:00 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c21, nullif(c17, c21), ifnull(c17, c21) from t1; -c17 c21 nullif(c17, c21) ifnull(c17, c21) -8 9.5 8 8 --8 -9.5 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c17, c22, nullif(c17, c22), ifnull(c17, c22) from t1; -c17 c22 nullif(c17, c22) ifnull(c17, c22) -8 10.5 8 8 --8 10.5 -8 -8 -select c17, nullif(c17, c17) from t1; -c17 nullif(c17, c17) -8 NULL --8 NULL -select c18, c1, nullif(c18, c1), ifnull(c18, c1) from t1; -c18 c1 nullif(c18, c1) ifnull(c18, c1) -9 1 9 9 -9 -1 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c2, nullif(c18, c2), ifnull(c18, c2) from t1; -c18 c2 nullif(c18, c2) ifnull(c18, c2) -9 2 9 9 -9 2 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c3, nullif(c18, c3), ifnull(c18, c3) from t1; -c18 c3 nullif(c18, c3) ifnull(c18, c3) -9 1 9 9 -9 -1 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c4, nullif(c18, c4), ifnull(c18, c4) from t1; -c18 c4 nullif(c18, c4) ifnull(c18, c4) -9 2 9 9 -9 2 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c5, nullif(c18, c5), ifnull(c18, c5) from t1; -c18 c5 nullif(c18, c5) ifnull(c18, c5) -9 1 9 9 -9 -1 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c6, nullif(c18, c6), ifnull(c18, c6) from t1; -c18 c6 nullif(c18, c6) ifnull(c18, c6) -9 2 9 9 -9 2 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c7, nullif(c18, c7), ifnull(c18, c7) from t1; -c18 c7 nullif(c18, c7) ifnull(c18, c7) -9 1 9 9 -9 -1 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c8, nullif(c18, c8), ifnull(c18, c8) from t1; -c18 c8 nullif(c18, c8) ifnull(c18, c8) -9 2 9 9 -9 2 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c9, nullif(c18, c9), ifnull(c18, c9) from t1; -c18 c9 nullif(c18, c9) ifnull(c18, c9) -9 1 9 9 -9 -1 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c10, nullif(c18, c10), ifnull(c18, c10) from t1; -c18 c10 nullif(c18, c10) ifnull(c18, c10) -9 2 9 9 -9 2 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c11, nullif(c18, c11), ifnull(c18, c11) from t1; -c18 c11 nullif(c18, c11) ifnull(c18, c11) -9 1 9 9 -9 -1 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c12, nullif(c18, c12), ifnull(c18, c12) from t1; -c18 c12 nullif(c18, c12) ifnull(c18, c12) -9 2 9 9 -9 2 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c13, nullif(c18, c13), ifnull(c18, c13) from t1; -c18 c13 nullif(c18, c13) ifnull(c18, c13) -9 3.5 9 9 -9 -3.5 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c14, nullif(c18, c14), ifnull(c18, c14) from t1; -c18 c14 nullif(c18, c14) ifnull(c18, c14) -9 4.5 9 9 -9 4.5 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c15, nullif(c18, c15), ifnull(c18, c15) from t1; -c18 c15 nullif(c18, c15) ifnull(c18, c15) -9 5.5 9 9 -9 -5.5 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c16, nullif(c18, c16), ifnull(c18, c16) from t1; -c18 c16 nullif(c18, c16) ifnull(c18, c16) -9 6.5 9 9 -9 6.5 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c17, nullif(c18, c17), ifnull(c18, c17) from t1; -c18 c17 nullif(c18, c17) ifnull(c18, c17) -9 8 9 9 -9 -8 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c18, nullif(c18, c18), ifnull(c18, c18) from t1; -c18 c18 nullif(c18, c18) ifnull(c18, c18) -9 9 NULL 9 -9 9 NULL 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c19, nullif(c18, c19), ifnull(c18, c19) from t1; -c18 c19 nullif(c18, c19) ifnull(c18, c19) -9 2019-12-01 12:00:00 9 9 -9 2019-12-01 12:00:00 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c20, nullif(c18, c20), ifnull(c18, c20) from t1; -c18 c20 nullif(c18, c20) ifnull(c18, c20) -9 2019-12-03 06:00:00 9 9 -9 2019-12-03 06:00:00 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c21, nullif(c18, c21), ifnull(c18, c21) from t1; -c18 c21 nullif(c18, c21) ifnull(c18, c21) -9 9.5 9 9 -9 -9.5 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c18, c22, nullif(c18, c22), ifnull(c18, c22) from t1; -c18 c22 nullif(c18, c22) ifnull(c18, c22) -9 10.5 9 9 -9 10.5 9 9 -select c18, nullif(c18, c18) from t1; -c18 nullif(c18, c18) -9 NULL -9 NULL -select c19, c1, nullif(c19, c1), ifnull(c19, c1) from t1; -c19 c1 nullif(c19, c1) ifnull(c19, c1) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c2, nullif(c19, c2), ifnull(c19, c2) from t1; -c19 c2 nullif(c19, c2) ifnull(c19, c2) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c3, nullif(c19, c3), ifnull(c19, c3) from t1; -c19 c3 nullif(c19, c3) ifnull(c19, c3) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c4, nullif(c19, c4), ifnull(c19, c4) from t1; -c19 c4 nullif(c19, c4) ifnull(c19, c4) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c5, nullif(c19, c5), ifnull(c19, c5) from t1; -c19 c5 nullif(c19, c5) ifnull(c19, c5) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c6, nullif(c19, c6), ifnull(c19, c6) from t1; -c19 c6 nullif(c19, c6) ifnull(c19, c6) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c7, nullif(c19, c7), ifnull(c19, c7) from t1; -c19 c7 nullif(c19, c7) ifnull(c19, c7) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c8, nullif(c19, c8), ifnull(c19, c8) from t1; -c19 c8 nullif(c19, c8) ifnull(c19, c8) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c9, nullif(c19, c9), ifnull(c19, c9) from t1; -c19 c9 nullif(c19, c9) ifnull(c19, c9) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c10, nullif(c19, c10), ifnull(c19, c10) from t1; -c19 c10 nullif(c19, c10) ifnull(c19, c10) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c11, nullif(c19, c11), ifnull(c19, c11) from t1; -c19 c11 nullif(c19, c11) ifnull(c19, c11) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c12, nullif(c19, c12), ifnull(c19, c12) from t1; -c19 c12 nullif(c19, c12) ifnull(c19, c12) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c13, nullif(c19, c13), ifnull(c19, c13) from t1; -c19 c13 nullif(c19, c13) ifnull(c19, c13) -2019-12-01 12:00:00 3.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -3.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c14, nullif(c19, c14), ifnull(c19, c14) from t1; -c19 c14 nullif(c19, c14) ifnull(c19, c14) -2019-12-01 12:00:00 4.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 4.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c15, nullif(c19, c15), ifnull(c19, c15) from t1; -c19 c15 nullif(c19, c15) ifnull(c19, c15) -2019-12-01 12:00:00 5.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -5.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c16, nullif(c19, c16), ifnull(c19, c16) from t1; -c19 c16 nullif(c19, c16) ifnull(c19, c16) -2019-12-01 12:00:00 6.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 6.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c17, nullif(c19, c17), ifnull(c19, c17) from t1; -c19 c17 nullif(c19, c17) ifnull(c19, c17) -2019-12-01 12:00:00 8 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -8 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c18, nullif(c19, c18), ifnull(c19, c18) from t1; -c19 c18 nullif(c19, c18) ifnull(c19, c18) -2019-12-01 12:00:00 9 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 9 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c19, nullif(c19, c19), ifnull(c19, c19) from t1; -c19 c19 nullif(c19, c19) ifnull(c19, c19) -2019-12-01 12:00:00 2019-12-01 12:00:00 NULL 2019-12-01 12:00:00 -2019-12-01 12:00:00 2019-12-01 12:00:00 NULL 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c20, nullif(c19, c20), ifnull(c19, c20) from t1; -c19 c20 nullif(c19, c20) ifnull(c19, c20) -2019-12-01 12:00:00 2019-12-03 06:00:00 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2019-12-03 06:00:00 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c21, nullif(c19, c21), ifnull(c19, c21) from t1; -c19 c21 nullif(c19, c21) ifnull(c19, c21) -2019-12-01 12:00:00 9.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 -9.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c19, c22, nullif(c19, c22), ifnull(c19, c22) from t1; -c19 c22 nullif(c19, c22) ifnull(c19, c22) -2019-12-01 12:00:00 10.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 10.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, nullif(c19, c19) from t1; -c19 nullif(c19, c19) -2019-12-01 12:00:00 NULL -2019-12-01 12:00:00 NULL -select c20, c1, nullif(c20, c1), ifnull(c20, c1) from t1; -c20 c1 nullif(c20, c1) ifnull(c20, c1) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c2, nullif(c20, c2), ifnull(c20, c2) from t1; -c20 c2 nullif(c20, c2) ifnull(c20, c2) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c3, nullif(c20, c3), ifnull(c20, c3) from t1; -c20 c3 nullif(c20, c3) ifnull(c20, c3) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c4, nullif(c20, c4), ifnull(c20, c4) from t1; -c20 c4 nullif(c20, c4) ifnull(c20, c4) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c5, nullif(c20, c5), ifnull(c20, c5) from t1; -c20 c5 nullif(c20, c5) ifnull(c20, c5) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c6, nullif(c20, c6), ifnull(c20, c6) from t1; -c20 c6 nullif(c20, c6) ifnull(c20, c6) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c7, nullif(c20, c7), ifnull(c20, c7) from t1; -c20 c7 nullif(c20, c7) ifnull(c20, c7) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c8, nullif(c20, c8), ifnull(c20, c8) from t1; -c20 c8 nullif(c20, c8) ifnull(c20, c8) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c9, nullif(c20, c9), ifnull(c20, c9) from t1; -c20 c9 nullif(c20, c9) ifnull(c20, c9) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c10, nullif(c20, c10), ifnull(c20, c10) from t1; -c20 c10 nullif(c20, c10) ifnull(c20, c10) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c11, nullif(c20, c11), ifnull(c20, c11) from t1; -c20 c11 nullif(c20, c11) ifnull(c20, c11) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c12, nullif(c20, c12), ifnull(c20, c12) from t1; -c20 c12 nullif(c20, c12) ifnull(c20, c12) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c13, nullif(c20, c13), ifnull(c20, c13) from t1; -c20 c13 nullif(c20, c13) ifnull(c20, c13) -2019-12-03 06:00:00 3.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -3.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c14, nullif(c20, c14), ifnull(c20, c14) from t1; -c20 c14 nullif(c20, c14) ifnull(c20, c14) -2019-12-03 06:00:00 4.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 4.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c15, nullif(c20, c15), ifnull(c20, c15) from t1; -c20 c15 nullif(c20, c15) ifnull(c20, c15) -2019-12-03 06:00:00 5.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -5.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c16, nullif(c20, c16), ifnull(c20, c16) from t1; -c20 c16 nullif(c20, c16) ifnull(c20, c16) -2019-12-03 06:00:00 6.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 6.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c17, nullif(c20, c17), ifnull(c20, c17) from t1; -c20 c17 nullif(c20, c17) ifnull(c20, c17) -2019-12-03 06:00:00 8 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -8 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c18, nullif(c20, c18), ifnull(c20, c18) from t1; -c20 c18 nullif(c20, c18) ifnull(c20, c18) -2019-12-03 06:00:00 9 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 9 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c19, nullif(c20, c19), ifnull(c20, c19) from t1; -c20 c19 nullif(c20, c19) ifnull(c20, c19) -2019-12-03 06:00:00 2019-12-01 12:00:00 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2019-12-01 12:00:00 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c20, nullif(c20, c20), ifnull(c20, c20) from t1; -c20 c20 nullif(c20, c20) ifnull(c20, c20) -2019-12-03 06:00:00 2019-12-03 06:00:00 NULL 2019-12-03 06:00:00 -2019-12-03 06:00:00 2019-12-03 06:00:00 NULL 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c21, nullif(c20, c21), ifnull(c20, c21) from t1; -c20 c21 nullif(c20, c21) ifnull(c20, c21) -2019-12-03 06:00:00 9.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 -9.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c20, c22, nullif(c20, c22), ifnull(c20, c22) from t1; -c20 c22 nullif(c20, c22) ifnull(c20, c22) -2019-12-03 06:00:00 10.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 10.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, nullif(c20, c20) from t1; -c20 nullif(c20, c20) -2019-12-03 06:00:00 NULL -2019-12-03 06:00:00 NULL -select c21, c1, nullif(c21, c1), ifnull(c21, c1) from t1; -c21 c1 nullif(c21, c1) ifnull(c21, c1) -9.5 1 9.5 9.5 --9.5 -1 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c2, nullif(c21, c2), ifnull(c21, c2) from t1; -c21 c2 nullif(c21, c2) ifnull(c21, c2) -9.5 2 9.5 9.5 --9.5 2 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c3, nullif(c21, c3), ifnull(c21, c3) from t1; -c21 c3 nullif(c21, c3) ifnull(c21, c3) -9.5 1 9.5 9.5 --9.5 -1 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c4, nullif(c21, c4), ifnull(c21, c4) from t1; -c21 c4 nullif(c21, c4) ifnull(c21, c4) -9.5 2 9.5 9.5 --9.5 2 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c5, nullif(c21, c5), ifnull(c21, c5) from t1; -c21 c5 nullif(c21, c5) ifnull(c21, c5) -9.5 1 9.5 9.5 --9.5 -1 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c6, nullif(c21, c6), ifnull(c21, c6) from t1; -c21 c6 nullif(c21, c6) ifnull(c21, c6) -9.5 2 9.5 9.5 --9.5 2 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c7, nullif(c21, c7), ifnull(c21, c7) from t1; -c21 c7 nullif(c21, c7) ifnull(c21, c7) -9.5 1 9.5 9.5 --9.5 -1 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c8, nullif(c21, c8), ifnull(c21, c8) from t1; -c21 c8 nullif(c21, c8) ifnull(c21, c8) -9.5 2 9.5 9.5 --9.5 2 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c9, nullif(c21, c9), ifnull(c21, c9) from t1; -c21 c9 nullif(c21, c9) ifnull(c21, c9) -9.5 1 9.5 9.5 --9.5 -1 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c10, nullif(c21, c10), ifnull(c21, c10) from t1; -c21 c10 nullif(c21, c10) ifnull(c21, c10) -9.5 2 9.5 9.5 --9.5 2 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c11, nullif(c21, c11), ifnull(c21, c11) from t1; -c21 c11 nullif(c21, c11) ifnull(c21, c11) -9.5 1 9.5 9.5 --9.5 -1 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c12, nullif(c21, c12), ifnull(c21, c12) from t1; -c21 c12 nullif(c21, c12) ifnull(c21, c12) -9.5 2 9.5 9.5 --9.5 2 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c13, nullif(c21, c13), ifnull(c21, c13) from t1; -c21 c13 nullif(c21, c13) ifnull(c21, c13) -9.5 3.5 9.5 9.5 --9.5 -3.5 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c14, nullif(c21, c14), ifnull(c21, c14) from t1; -c21 c14 nullif(c21, c14) ifnull(c21, c14) -9.5 4.5 9.5 9.5 --9.5 4.5 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c15, nullif(c21, c15), ifnull(c21, c15) from t1; -c21 c15 nullif(c21, c15) ifnull(c21, c15) -9.5 5.5 9.5 9.5 --9.5 -5.5 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c16, nullif(c21, c16), ifnull(c21, c16) from t1; -c21 c16 nullif(c21, c16) ifnull(c21, c16) -9.5 6.5 9.5 9.5 --9.5 6.5 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c17, nullif(c21, c17), ifnull(c21, c17) from t1; -c21 c17 nullif(c21, c17) ifnull(c21, c17) -9.5 8 9.5 9.5 --9.5 -8 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c18, nullif(c21, c18), ifnull(c21, c18) from t1; -c21 c18 nullif(c21, c18) ifnull(c21, c18) -9.5 9 9.5 9.5 --9.5 9 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c19, nullif(c21, c19), ifnull(c21, c19) from t1; -c21 c19 nullif(c21, c19) ifnull(c21, c19) -9.5 2019-12-01 12:00:00 9.5 9.5 --9.5 2019-12-01 12:00:00 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c20, nullif(c21, c20), ifnull(c21, c20) from t1; -c21 c20 nullif(c21, c20) ifnull(c21, c20) -9.5 2019-12-03 06:00:00 9.5 9.5 --9.5 2019-12-03 06:00:00 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c21, nullif(c21, c21), ifnull(c21, c21) from t1; -c21 c21 nullif(c21, c21) ifnull(c21, c21) -9.5 9.5 NULL 9.5 --9.5 -9.5 NULL -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c21, c22, nullif(c21, c22), ifnull(c21, c22) from t1; -c21 c22 nullif(c21, c22) ifnull(c21, c22) -9.5 10.5 9.5 9.5 --9.5 10.5 -9.5 -9.5 -select c21, nullif(c21, c21) from t1; -c21 nullif(c21, c21) -9.5 NULL --9.5 NULL -select c22, c1, nullif(c22, c1), ifnull(c22, c1) from t1; -c22 c1 nullif(c22, c1) ifnull(c22, c1) -10.5 1 10.5 10.5 -10.5 -1 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c2, nullif(c22, c2), ifnull(c22, c2) from t1; -c22 c2 nullif(c22, c2) ifnull(c22, c2) -10.5 2 10.5 10.5 -10.5 2 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c3, nullif(c22, c3), ifnull(c22, c3) from t1; -c22 c3 nullif(c22, c3) ifnull(c22, c3) -10.5 1 10.5 10.5 -10.5 -1 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c4, nullif(c22, c4), ifnull(c22, c4) from t1; -c22 c4 nullif(c22, c4) ifnull(c22, c4) -10.5 2 10.5 10.5 -10.5 2 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c5, nullif(c22, c5), ifnull(c22, c5) from t1; -c22 c5 nullif(c22, c5) ifnull(c22, c5) -10.5 1 10.5 10.5 -10.5 -1 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c6, nullif(c22, c6), ifnull(c22, c6) from t1; -c22 c6 nullif(c22, c6) ifnull(c22, c6) -10.5 2 10.5 10.5 -10.5 2 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c7, nullif(c22, c7), ifnull(c22, c7) from t1; -c22 c7 nullif(c22, c7) ifnull(c22, c7) -10.5 1 10.5 10.5 -10.5 -1 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c8, nullif(c22, c8), ifnull(c22, c8) from t1; -c22 c8 nullif(c22, c8) ifnull(c22, c8) -10.5 2 10.5 10.5 -10.5 2 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c9, nullif(c22, c9), ifnull(c22, c9) from t1; -c22 c9 nullif(c22, c9) ifnull(c22, c9) -10.5 1 10.5 10.5 -10.5 -1 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c10, nullif(c22, c10), ifnull(c22, c10) from t1; -c22 c10 nullif(c22, c10) ifnull(c22, c10) -10.5 2 10.5 10.5 -10.5 2 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c11, nullif(c22, c11), ifnull(c22, c11) from t1; -c22 c11 nullif(c22, c11) ifnull(c22, c11) -10.5 1 10.5 10.5 -10.5 -1 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c12, nullif(c22, c12), ifnull(c22, c12) from t1; -c22 c12 nullif(c22, c12) ifnull(c22, c12) -10.5 2 10.5 10.5 -10.5 2 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c13, nullif(c22, c13), ifnull(c22, c13) from t1; -c22 c13 nullif(c22, c13) ifnull(c22, c13) -10.5 3.5 10.5 10.5 -10.5 -3.5 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c14, nullif(c22, c14), ifnull(c22, c14) from t1; -c22 c14 nullif(c22, c14) ifnull(c22, c14) -10.5 4.5 10.5 10.5 -10.5 4.5 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c15, nullif(c22, c15), ifnull(c22, c15) from t1; -c22 c15 nullif(c22, c15) ifnull(c22, c15) -10.5 5.5 10.5 10.5 -10.5 -5.5 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c16, nullif(c22, c16), ifnull(c22, c16) from t1; -c22 c16 nullif(c22, c16) ifnull(c22, c16) -10.5 6.5 10.5 10.5 -10.5 6.5 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c17, nullif(c22, c17), ifnull(c22, c17) from t1; -c22 c17 nullif(c22, c17) ifnull(c22, c17) -10.5 8 10.5 10.5 -10.5 -8 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c18, nullif(c22, c18), ifnull(c22, c18) from t1; -c22 c18 nullif(c22, c18) ifnull(c22, c18) -10.5 9 10.5 10.5 -10.5 9 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c19, nullif(c22, c19), ifnull(c22, c19) from t1; -c22 c19 nullif(c22, c19) ifnull(c22, c19) -10.5 2019-12-01 12:00:00 10.5 10.5 -10.5 2019-12-01 12:00:00 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c20, nullif(c22, c20), ifnull(c22, c20) from t1; -c22 c20 nullif(c22, c20) ifnull(c22, c20) -10.5 2019-12-03 06:00:00 10.5 10.5 -10.5 2019-12-03 06:00:00 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c21, nullif(c22, c21), ifnull(c22, c21) from t1; -c22 c21 nullif(c22, c21) ifnull(c22, c21) -10.5 9.5 10.5 10.5 -10.5 -9.5 10.5 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -select c22, c22, nullif(c22, c22), ifnull(c22, c22) from t1; -c22 c22 nullif(c22, c22) ifnull(c22, c22) -10.5 10.5 NULL 10.5 -10.5 10.5 NULL 10.5 -select c22, nullif(c22, c22) from t1; -c22 nullif(c22, c22) -10.5 NULL -10.5 NULL -drop table if exists t1; -drop view if exists v1; -create table t1 (c1 datetime(5), c2 year); -insert into t1 values('1901-01-01', 1901); -// transformed to case when expr -select nullif(c1, c2) from t1; -nullif(c1, c2) -1901-01-01 00:00:00.00000 -select nullif(c2, c1) from t1; -nullif(c2, c1) -1901 -select nullif(c1, c1) from t1; -nullif(c1, c1) -NULL -select nullif(c2, c2) from t1; -nullif(c2, c2) -NULL -// nullif改写不应该影响show create view,所以show create view还应该是nullif,而非case expr -create view v1 as select nullif(c1, c2) from t1; -show create view v1; -View Create View character_set_client collation_connection -v1 CREATE VIEW `v1` AS select nullif(`oceanbase`.`t1`.`c1`,`oceanbase`.`t1`.`c2`) AS `nullif(c1, c2)` from `oceanbase`.`t1` utf8mb4 utf8mb4_general_ci -// 类型应该是c1的类型(datetime) -desc v1; -Field Type Null Key Default Extra -nullif(c1, c2) datetime(5) YES NULL -select * from v1; -nullif(c1, c2) -1901-01-01 00:00:00.00000 -drop view v1; -create view v1 as select nullif(c2, c1) from t1; -show create view v1; -View Create View character_set_client collation_connection -v1 CREATE VIEW `v1` AS select nullif(`oceanbase`.`t1`.`c2`,`oceanbase`.`t1`.`c1`) AS `nullif(c2, c1)` from `oceanbase`.`t1` utf8mb4 utf8mb4_general_ci -// 类型应该是c1的类型(year) -desc v1; -Field Type Null Key Default Extra -nullif(c2, c1) year(4) YES NULL -select * from v1; -nullif(c2, c1) -1901 -drop view v1; -create view v1 as select nullif(c1, c1) from t1; -show create view v1; -View Create View character_set_client collation_connection -v1 CREATE VIEW `v1` AS select nullif(`oceanbase`.`t1`.`c1`,`oceanbase`.`t1`.`c1`) AS `nullif(c1, c1)` from `oceanbase`.`t1` utf8mb4 utf8mb4_general_ci -// 类型应该是c1的类型(datetime) -desc v1; -Field Type Null Key Default Extra -nullif(c1, c1) datetime(5) YES NULL -select * from v1; -nullif(c1, c1) -NULL -drop view v1; -create view v1 as select nullif(c2, c2) from t1; -show create view v1; -View Create View character_set_client collation_connection -v1 CREATE VIEW `v1` AS select nullif(`oceanbase`.`t1`.`c2`,`oceanbase`.`t1`.`c2`) AS `nullif(c2, c2)` from `oceanbase`.`t1` utf8mb4 utf8mb4_general_ci -// 类型应该是c1的类型(datetime) -desc v1; -Field Type Null Key Default Extra -nullif(c2, c2) year(4) YES NULL -select * from v1; -nullif(c2, c2) -NULL -select collation(nullif('a', binary'b')); -collation(nullif('a', binary'b')) -binary -select NULLIF(14152561829011783680, 1); -NULLIF(14152561829011783680, 1) -14152561829011783680 -drop table t1; -create table t1 ( -col_decimal_20_0_unsigned decimal(20,0) unsigned, -col_decimal_30_5_signed decimal(30,5) signed, -col_tinyint_unsigned tinyint unsigned); -select mod( nullif( col_decimal_20_0_unsigned, col_decimal_30_5_signed ), col_tinyint_unsigned ) from t1; -mod( nullif( col_decimal_20_0_unsigned, col_decimal_30_5_signed ), col_tinyint_unsigned ) -// check param num -select nullif(1) from dual; -ERROR 42000: Incorrect parameter count in the call to native function 'nullif' -select nullif(1, 2) from dual; -nullif(1, 2) -1 -select nullif(1, 2, 3) from dual; -ERROR 42000: Incorrect parameter count in the call to native function 'nullif' -select nullif(1, 2, 3, 4) from dual; -ERROR 42000: Incorrect parameter count in the call to native function 'nullif' -select nullif(1, 2, 3, 4, 5) from dual; -ERROR 42000: Incorrect parameter count in the call to native function 'nullif' -select nullif(1, 2, 3, 4, 5, 6) from dual; -ERROR 42000: Incorrect parameter count in the call to native function 'nullif' -select nullif(1, 2, 3, 4, 5, 6, 7) from dual; -ERROR 42000: Incorrect parameter count in the call to native function 'nullif' -drop table t1; -select 1 from dual where null <= nullif(null,null); -1 -select ifnull(null, 15531789214893998080); -ifnull(null, 15531789214893998080) -15531789214893998080 -select ifnull(15531789214893998080, 0); -ifnull(15531789214893998080, 0) -15531789214893998080 -SELECT trim(Ifnull(15531789214893998080, 0)) as X from dual; -X -15531789214893998080 -create table t1 as select ifnull(15531789214893998080, 0) ; -desc t1; -Field Type Null Key Default Extra -ifnull(15531789214893998080, 0) decimal(20,0) YES NULL -drop table t1; -create table t1(z0_test0 enum('中文字符','123456','ABCabc','!@#$%^&*','2020-10-10','2020-10-10 10:10:10','10:10:10') not NULL); -insert into t1 values('中文字符'); -insert into t1 values('123456'); -insert into t1 values('ABCabc'); -insert into t1 values('!@#$%^&*'); -insert into t1 values('2020-10-10'); -insert into t1 values('2020-10-10 10:10:10'); -insert into t1 values('10:10:10'); -select nullif(z0_test0,'中文字符') from t1; -nullif(z0_test0,'中文字符') -NULL -123456 -ABCabc -!@#$%^&* -2020-10-10 -2020-10-10 10:10:10 -10:10:10 -drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_nvl.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_nvl.result deleted file mode 100644 index 651833a32..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_nvl.result +++ /dev/null @@ -1,3917 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30), c_null int); -select * from t1; -c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c_null -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5', null); -insert into t1 values(-1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --3.5, 4.5, --5.5, 6.5, --7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'-9.5', '10.5', null); -select nvl(c_null, c_null) from t1; -nvl(c_null, c_null) -NULL -NULL -select nvl2(c_null, c_null, c_null) from t1; -ERROR 42000: FUNCTION nvl2 does not exist -select nvl(c1, c1) from t1; -nvl(c1, c1) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c2) from t1; -nvl(c1, c2) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c3) from t1; -nvl(c1, c3) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c4) from t1; -nvl(c1, c4) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c5) from t1; -nvl(c1, c5) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c6) from t1; -nvl(c1, c6) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c7) from t1; -nvl(c1, c7) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c8) from t1; -nvl(c1, c8) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c9) from t1; -nvl(c1, c9) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c10) from t1; -nvl(c1, c10) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c11) from t1; -nvl(c1, c11) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c12) from t1; -nvl(c1, c12) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c13) from t1; -nvl(c1, c13) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c14) from t1; -nvl(c1, c14) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c15) from t1; -nvl(c1, c15) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c16) from t1; -nvl(c1, c16) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c17) from t1; -nvl(c1, c17) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c18) from t1; -nvl(c1, c18) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c19) from t1; -nvl(c1, c19) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c20) from t1; -nvl(c1, c20) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c21) from t1; -nvl(c1, c21) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c1, c22) from t1; -nvl(c1, c22) -1 --1 -select nvl(null, c1) from t1; -nvl(null, c1) -1 --1 -select nvl(c2, c1) from t1; -nvl(c2, c1) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c2) from t1; -nvl(c2, c2) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c3) from t1; -nvl(c2, c3) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c4) from t1; -nvl(c2, c4) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c5) from t1; -nvl(c2, c5) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c6) from t1; -nvl(c2, c6) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c7) from t1; -nvl(c2, c7) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c8) from t1; -nvl(c2, c8) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c9) from t1; -nvl(c2, c9) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c10) from t1; -nvl(c2, c10) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c11) from t1; -nvl(c2, c11) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c12) from t1; -nvl(c2, c12) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c13) from t1; -nvl(c2, c13) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c14) from t1; -nvl(c2, c14) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c15) from t1; -nvl(c2, c15) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c16) from t1; -nvl(c2, c16) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c17) from t1; -nvl(c2, c17) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c18) from t1; -nvl(c2, c18) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c19) from t1; -nvl(c2, c19) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c20) from t1; -nvl(c2, c20) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c21) from t1; -nvl(c2, c21) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c2, c22) from t1; -nvl(c2, c22) -2 -2 -select nvl(null, c2) from t1; -nvl(null, c2) -2 -2 -select nvl(c3, c1) from t1; -nvl(c3, c1) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c2) from t1; -nvl(c3, c2) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c3) from t1; -nvl(c3, c3) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c4) from t1; -nvl(c3, c4) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c5) from t1; -nvl(c3, c5) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c6) from t1; -nvl(c3, c6) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c7) from t1; -nvl(c3, c7) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c8) from t1; -nvl(c3, c8) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c9) from t1; -nvl(c3, c9) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c10) from t1; -nvl(c3, c10) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c11) from t1; -nvl(c3, c11) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c12) from t1; -nvl(c3, c12) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c13) from t1; -nvl(c3, c13) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c14) from t1; -nvl(c3, c14) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c15) from t1; -nvl(c3, c15) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c16) from t1; -nvl(c3, c16) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c17) from t1; -nvl(c3, c17) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c18) from t1; -nvl(c3, c18) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c19) from t1; -nvl(c3, c19) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c20) from t1; -nvl(c3, c20) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c21) from t1; -nvl(c3, c21) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c3, c22) from t1; -nvl(c3, c22) -1 --1 -select nvl(null, c3) from t1; -nvl(null, c3) -1 --1 -select nvl(c4, c1) from t1; -nvl(c4, c1) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c2) from t1; -nvl(c4, c2) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c3) from t1; -nvl(c4, c3) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c4) from t1; -nvl(c4, c4) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c5) from t1; -nvl(c4, c5) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c6) from t1; -nvl(c4, c6) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c7) from t1; -nvl(c4, c7) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c8) from t1; -nvl(c4, c8) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c9) from t1; -nvl(c4, c9) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c10) from t1; -nvl(c4, c10) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c11) from t1; -nvl(c4, c11) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c12) from t1; -nvl(c4, c12) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c13) from t1; -nvl(c4, c13) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c14) from t1; -nvl(c4, c14) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c15) from t1; -nvl(c4, c15) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c16) from t1; -nvl(c4, c16) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c17) from t1; -nvl(c4, c17) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c18) from t1; -nvl(c4, c18) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c19) from t1; -nvl(c4, c19) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c20) from t1; -nvl(c4, c20) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c21) from t1; -nvl(c4, c21) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c4, c22) from t1; -nvl(c4, c22) -2 -2 -select nvl(null, c4) from t1; -nvl(null, c4) -2 -2 -select nvl(c5, c1) from t1; -nvl(c5, c1) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c2) from t1; -nvl(c5, c2) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c3) from t1; -nvl(c5, c3) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c4) from t1; -nvl(c5, c4) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c5) from t1; -nvl(c5, c5) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c6) from t1; -nvl(c5, c6) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c7) from t1; -nvl(c5, c7) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c8) from t1; -nvl(c5, c8) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c9) from t1; -nvl(c5, c9) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c10) from t1; -nvl(c5, c10) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c11) from t1; -nvl(c5, c11) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c12) from t1; -nvl(c5, c12) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c13) from t1; -nvl(c5, c13) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c14) from t1; -nvl(c5, c14) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c15) from t1; -nvl(c5, c15) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c16) from t1; -nvl(c5, c16) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c17) from t1; -nvl(c5, c17) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c18) from t1; -nvl(c5, c18) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c19) from t1; -nvl(c5, c19) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c20) from t1; -nvl(c5, c20) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c21) from t1; -nvl(c5, c21) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c5, c22) from t1; -nvl(c5, c22) -1 --1 -select nvl(null, c5) from t1; -nvl(null, c5) -1 --1 -select nvl(c6, c1) from t1; -nvl(c6, c1) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c2) from t1; -nvl(c6, c2) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c3) from t1; -nvl(c6, c3) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c4) from t1; -nvl(c6, c4) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c5) from t1; -nvl(c6, c5) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c6) from t1; -nvl(c6, c6) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c7) from t1; -nvl(c6, c7) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c8) from t1; -nvl(c6, c8) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c9) from t1; -nvl(c6, c9) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c10) from t1; -nvl(c6, c10) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c11) from t1; -nvl(c6, c11) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c12) from t1; -nvl(c6, c12) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c13) from t1; -nvl(c6, c13) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c14) from t1; -nvl(c6, c14) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c15) from t1; -nvl(c6, c15) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c16) from t1; -nvl(c6, c16) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c17) from t1; -nvl(c6, c17) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c18) from t1; -nvl(c6, c18) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c19) from t1; -nvl(c6, c19) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c20) from t1; -nvl(c6, c20) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c21) from t1; -nvl(c6, c21) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c6, c22) from t1; -nvl(c6, c22) -2 -2 -select nvl(null, c6) from t1; -nvl(null, c6) -2 -2 -select nvl(c7, c1) from t1; -nvl(c7, c1) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c2) from t1; -nvl(c7, c2) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c3) from t1; -nvl(c7, c3) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c4) from t1; -nvl(c7, c4) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c5) from t1; -nvl(c7, c5) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c6) from t1; -nvl(c7, c6) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c7) from t1; -nvl(c7, c7) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c8) from t1; -nvl(c7, c8) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c9) from t1; -nvl(c7, c9) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c10) from t1; -nvl(c7, c10) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c11) from t1; -nvl(c7, c11) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c12) from t1; -nvl(c7, c12) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c13) from t1; -nvl(c7, c13) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c14) from t1; -nvl(c7, c14) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c15) from t1; -nvl(c7, c15) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c16) from t1; -nvl(c7, c16) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c17) from t1; -nvl(c7, c17) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c18) from t1; -nvl(c7, c18) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c19) from t1; -nvl(c7, c19) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c20) from t1; -nvl(c7, c20) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c21) from t1; -nvl(c7, c21) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c7, c22) from t1; -nvl(c7, c22) -1 --1 -select nvl(null, c7) from t1; -nvl(null, c7) -1 --1 -select nvl(c8, c1) from t1; -nvl(c8, c1) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c2) from t1; -nvl(c8, c2) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c3) from t1; -nvl(c8, c3) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c4) from t1; -nvl(c8, c4) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c5) from t1; -nvl(c8, c5) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c6) from t1; -nvl(c8, c6) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c7) from t1; -nvl(c8, c7) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c8) from t1; -nvl(c8, c8) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c9) from t1; -nvl(c8, c9) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c10) from t1; -nvl(c8, c10) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c11) from t1; -nvl(c8, c11) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c12) from t1; -nvl(c8, c12) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c13) from t1; -nvl(c8, c13) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c14) from t1; -nvl(c8, c14) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c15) from t1; -nvl(c8, c15) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c16) from t1; -nvl(c8, c16) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c17) from t1; -nvl(c8, c17) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c18) from t1; -nvl(c8, c18) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c19) from t1; -nvl(c8, c19) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c20) from t1; -nvl(c8, c20) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c21) from t1; -nvl(c8, c21) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c8, c22) from t1; -nvl(c8, c22) -2 -2 -select nvl(null, c8) from t1; -nvl(null, c8) -2 -2 -select nvl(c9, c1) from t1; -nvl(c9, c1) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c2) from t1; -nvl(c9, c2) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c3) from t1; -nvl(c9, c3) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c4) from t1; -nvl(c9, c4) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c5) from t1; -nvl(c9, c5) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c6) from t1; -nvl(c9, c6) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c7) from t1; -nvl(c9, c7) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c8) from t1; -nvl(c9, c8) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c9) from t1; -nvl(c9, c9) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c10) from t1; -nvl(c9, c10) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c11) from t1; -nvl(c9, c11) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c12) from t1; -nvl(c9, c12) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c13) from t1; -nvl(c9, c13) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c14) from t1; -nvl(c9, c14) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c15) from t1; -nvl(c9, c15) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c16) from t1; -nvl(c9, c16) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c17) from t1; -nvl(c9, c17) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c18) from t1; -nvl(c9, c18) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c19) from t1; -nvl(c9, c19) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c20) from t1; -nvl(c9, c20) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c21) from t1; -nvl(c9, c21) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c9, c22) from t1; -nvl(c9, c22) -1 --1 -select nvl(null, c9) from t1; -nvl(null, c9) -1 --1 -select nvl(c10, c1) from t1; -nvl(c10, c1) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c2) from t1; -nvl(c10, c2) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c3) from t1; -nvl(c10, c3) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c4) from t1; -nvl(c10, c4) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c5) from t1; -nvl(c10, c5) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c6) from t1; -nvl(c10, c6) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c7) from t1; -nvl(c10, c7) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c8) from t1; -nvl(c10, c8) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c9) from t1; -nvl(c10, c9) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c10) from t1; -nvl(c10, c10) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c11) from t1; -nvl(c10, c11) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c12) from t1; -nvl(c10, c12) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c13) from t1; -nvl(c10, c13) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c14) from t1; -nvl(c10, c14) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c15) from t1; -nvl(c10, c15) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c16) from t1; -nvl(c10, c16) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c17) from t1; -nvl(c10, c17) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c18) from t1; -nvl(c10, c18) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c19) from t1; -nvl(c10, c19) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c20) from t1; -nvl(c10, c20) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c21) from t1; -nvl(c10, c21) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c10, c22) from t1; -nvl(c10, c22) -2 -2 -select nvl(null, c10) from t1; -nvl(null, c10) -2 -2 -select nvl(c11, c1) from t1; -nvl(c11, c1) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c2) from t1; -nvl(c11, c2) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c3) from t1; -nvl(c11, c3) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c4) from t1; -nvl(c11, c4) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c5) from t1; -nvl(c11, c5) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c6) from t1; -nvl(c11, c6) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c7) from t1; -nvl(c11, c7) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c8) from t1; -nvl(c11, c8) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c9) from t1; -nvl(c11, c9) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c10) from t1; -nvl(c11, c10) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c11) from t1; -nvl(c11, c11) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c12) from t1; -nvl(c11, c12) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c13) from t1; -nvl(c11, c13) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c14) from t1; -nvl(c11, c14) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c15) from t1; -nvl(c11, c15) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c16) from t1; -nvl(c11, c16) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c17) from t1; -nvl(c11, c17) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c18) from t1; -nvl(c11, c18) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c19) from t1; -nvl(c11, c19) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c20) from t1; -nvl(c11, c20) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c21) from t1; -nvl(c11, c21) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c11, c22) from t1; -nvl(c11, c22) -1 --1 -select nvl(null, c11) from t1; -nvl(null, c11) -1 --1 -select nvl(c12, c1) from t1; -nvl(c12, c1) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c2) from t1; -nvl(c12, c2) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c3) from t1; -nvl(c12, c3) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c4) from t1; -nvl(c12, c4) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c5) from t1; -nvl(c12, c5) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c6) from t1; -nvl(c12, c6) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c7) from t1; -nvl(c12, c7) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c8) from t1; -nvl(c12, c8) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c9) from t1; -nvl(c12, c9) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c10) from t1; -nvl(c12, c10) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c11) from t1; -nvl(c12, c11) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c12) from t1; -nvl(c12, c12) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c13) from t1; -nvl(c12, c13) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c14) from t1; -nvl(c12, c14) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c15) from t1; -nvl(c12, c15) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c16) from t1; -nvl(c12, c16) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c17) from t1; -nvl(c12, c17) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c18) from t1; -nvl(c12, c18) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c19) from t1; -nvl(c12, c19) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c20) from t1; -nvl(c12, c20) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c21) from t1; -nvl(c12, c21) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c12, c22) from t1; -nvl(c12, c22) -2 -2 -select nvl(null, c12) from t1; -nvl(null, c12) -2 -2 -select nvl(c13, c1) from t1; -nvl(c13, c1) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c2) from t1; -nvl(c13, c2) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c3) from t1; -nvl(c13, c3) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c4) from t1; -nvl(c13, c4) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c5) from t1; -nvl(c13, c5) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c6) from t1; -nvl(c13, c6) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c7) from t1; -nvl(c13, c7) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c8) from t1; -nvl(c13, c8) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c9) from t1; -nvl(c13, c9) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c10) from t1; -nvl(c13, c10) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c11) from t1; -nvl(c13, c11) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c12) from t1; -nvl(c13, c12) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c13) from t1; -nvl(c13, c13) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c14) from t1; -nvl(c13, c14) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c15) from t1; -nvl(c13, c15) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c16) from t1; -nvl(c13, c16) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c17) from t1; -nvl(c13, c17) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c18) from t1; -nvl(c13, c18) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c19) from t1; -nvl(c13, c19) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c20) from t1; -nvl(c13, c20) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c21) from t1; -nvl(c13, c21) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c13, c22) from t1; -nvl(c13, c22) -3.5 --3.5 -select nvl(null, c13) from t1; -nvl(null, c13) -3.5 --3.5 -select nvl(c14, c1) from t1; -nvl(c14, c1) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c2) from t1; -nvl(c14, c2) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c3) from t1; -nvl(c14, c3) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c4) from t1; -nvl(c14, c4) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c5) from t1; -nvl(c14, c5) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c6) from t1; -nvl(c14, c6) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c7) from t1; -nvl(c14, c7) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c8) from t1; -nvl(c14, c8) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c9) from t1; -nvl(c14, c9) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c10) from t1; -nvl(c14, c10) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c11) from t1; -nvl(c14, c11) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c12) from t1; -nvl(c14, c12) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c13) from t1; -nvl(c14, c13) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c14) from t1; -nvl(c14, c14) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c15) from t1; -nvl(c14, c15) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c16) from t1; -nvl(c14, c16) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c17) from t1; -nvl(c14, c17) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c18) from t1; -nvl(c14, c18) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c19) from t1; -nvl(c14, c19) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c20) from t1; -nvl(c14, c20) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c21) from t1; -nvl(c14, c21) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c14, c22) from t1; -nvl(c14, c22) -4.5 -4.5 -select nvl(null, c14) from t1; -nvl(null, c14) -4.5 -4.5 -select nvl(c15, c1) from t1; -nvl(c15, c1) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c2) from t1; -nvl(c15, c2) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c3) from t1; -nvl(c15, c3) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c4) from t1; -nvl(c15, c4) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c5) from t1; -nvl(c15, c5) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c6) from t1; -nvl(c15, c6) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c7) from t1; -nvl(c15, c7) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c8) from t1; -nvl(c15, c8) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c9) from t1; -nvl(c15, c9) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c10) from t1; -nvl(c15, c10) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c11) from t1; -nvl(c15, c11) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c12) from t1; -nvl(c15, c12) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c13) from t1; -nvl(c15, c13) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c14) from t1; -nvl(c15, c14) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c15) from t1; -nvl(c15, c15) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c16) from t1; -nvl(c15, c16) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c17) from t1; -nvl(c15, c17) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c18) from t1; -nvl(c15, c18) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c19) from t1; -nvl(c15, c19) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c20) from t1; -nvl(c15, c20) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c21) from t1; -nvl(c15, c21) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c15, c22) from t1; -nvl(c15, c22) -5.5 --5.5 -select nvl(null, c15) from t1; -nvl(null, c15) -5.5 --5.5 -select nvl(c16, c1) from t1; -nvl(c16, c1) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c2) from t1; -nvl(c16, c2) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c3) from t1; -nvl(c16, c3) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c4) from t1; -nvl(c16, c4) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c5) from t1; -nvl(c16, c5) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c6) from t1; -nvl(c16, c6) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c7) from t1; -nvl(c16, c7) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c8) from t1; -nvl(c16, c8) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c9) from t1; -nvl(c16, c9) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c10) from t1; -nvl(c16, c10) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c11) from t1; -nvl(c16, c11) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c12) from t1; -nvl(c16, c12) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c13) from t1; -nvl(c16, c13) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c14) from t1; -nvl(c16, c14) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c15) from t1; -nvl(c16, c15) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c16) from t1; -nvl(c16, c16) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c17) from t1; -nvl(c16, c17) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c18) from t1; -nvl(c16, c18) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c19) from t1; -nvl(c16, c19) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c20) from t1; -nvl(c16, c20) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c21) from t1; -nvl(c16, c21) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c16, c22) from t1; -nvl(c16, c22) -6.5 -6.5 -select nvl(null, c16) from t1; -nvl(null, c16) -6.5 -6.5 -select nvl(c17, c1) from t1; -nvl(c17, c1) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c2) from t1; -nvl(c17, c2) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c3) from t1; -nvl(c17, c3) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c4) from t1; -nvl(c17, c4) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c5) from t1; -nvl(c17, c5) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c6) from t1; -nvl(c17, c6) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c7) from t1; -nvl(c17, c7) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c8) from t1; -nvl(c17, c8) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c9) from t1; -nvl(c17, c9) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c10) from t1; -nvl(c17, c10) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c11) from t1; -nvl(c17, c11) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c12) from t1; -nvl(c17, c12) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c13) from t1; -nvl(c17, c13) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c14) from t1; -nvl(c17, c14) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c15) from t1; -nvl(c17, c15) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c16) from t1; -nvl(c17, c16) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c17) from t1; -nvl(c17, c17) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c18) from t1; -nvl(c17, c18) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c19) from t1; -nvl(c17, c19) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c20) from t1; -nvl(c17, c20) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c21) from t1; -nvl(c17, c21) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c17, c22) from t1; -nvl(c17, c22) -8 --8 -select nvl(null, c17) from t1; -nvl(null, c17) -8 --8 -select nvl(c18, c1) from t1; -nvl(c18, c1) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c2) from t1; -nvl(c18, c2) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c3) from t1; -nvl(c18, c3) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c4) from t1; -nvl(c18, c4) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c5) from t1; -nvl(c18, c5) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c6) from t1; -nvl(c18, c6) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c7) from t1; -nvl(c18, c7) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c8) from t1; -nvl(c18, c8) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c9) from t1; -nvl(c18, c9) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c10) from t1; -nvl(c18, c10) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c11) from t1; -nvl(c18, c11) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c12) from t1; -nvl(c18, c12) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c13) from t1; -nvl(c18, c13) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c14) from t1; -nvl(c18, c14) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c15) from t1; -nvl(c18, c15) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c16) from t1; -nvl(c18, c16) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c17) from t1; -nvl(c18, c17) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c18) from t1; -nvl(c18, c18) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c19) from t1; -nvl(c18, c19) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c20) from t1; -nvl(c18, c20) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c21) from t1; -nvl(c18, c21) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c18, c22) from t1; -nvl(c18, c22) -9 -9 -select nvl(null, c18) from t1; -nvl(null, c18) -9 -9 -select nvl(c19, c1) from t1; -nvl(c19, c1) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c2) from t1; -nvl(c19, c2) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c3) from t1; -nvl(c19, c3) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c4) from t1; -nvl(c19, c4) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c5) from t1; -nvl(c19, c5) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c6) from t1; -nvl(c19, c6) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c7) from t1; -nvl(c19, c7) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c8) from t1; -nvl(c19, c8) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c9) from t1; -nvl(c19, c9) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c10) from t1; -nvl(c19, c10) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c11) from t1; -nvl(c19, c11) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c12) from t1; -nvl(c19, c12) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c13) from t1; -nvl(c19, c13) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c14) from t1; -nvl(c19, c14) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c15) from t1; -nvl(c19, c15) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c16) from t1; -nvl(c19, c16) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c17) from t1; -nvl(c19, c17) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c18) from t1; -nvl(c19, c18) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c19) from t1; -nvl(c19, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c20) from t1; -nvl(c19, c20) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c21) from t1; -nvl(c19, c21) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c19, c22) from t1; -nvl(c19, c22) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(null, c19) from t1; -nvl(null, c19) -2019-12-01 12:00:00 -2019-12-01 12:00:00 -select nvl(c20, c1) from t1; -nvl(c20, c1) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c2) from t1; -nvl(c20, c2) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c3) from t1; -nvl(c20, c3) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c4) from t1; -nvl(c20, c4) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c5) from t1; -nvl(c20, c5) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c6) from t1; -nvl(c20, c6) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c7) from t1; -nvl(c20, c7) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c8) from t1; -nvl(c20, c8) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c9) from t1; -nvl(c20, c9) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c10) from t1; -nvl(c20, c10) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c11) from t1; -nvl(c20, c11) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c12) from t1; -nvl(c20, c12) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c13) from t1; -nvl(c20, c13) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c14) from t1; -nvl(c20, c14) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c15) from t1; -nvl(c20, c15) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c16) from t1; -nvl(c20, c16) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c17) from t1; -nvl(c20, c17) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c18) from t1; -nvl(c20, c18) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c19) from t1; -nvl(c20, c19) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c20) from t1; -nvl(c20, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c21) from t1; -nvl(c20, c21) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c20, c22) from t1; -nvl(c20, c22) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(null, c20) from t1; -nvl(null, c20) -2019-12-03 06:00:00 -2019-12-03 06:00:00 -select nvl(c21, c1) from t1; -nvl(c21, c1) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c2) from t1; -nvl(c21, c2) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c3) from t1; -nvl(c21, c3) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c4) from t1; -nvl(c21, c4) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c5) from t1; -nvl(c21, c5) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c6) from t1; -nvl(c21, c6) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c7) from t1; -nvl(c21, c7) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c8) from t1; -nvl(c21, c8) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c9) from t1; -nvl(c21, c9) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c10) from t1; -nvl(c21, c10) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c11) from t1; -nvl(c21, c11) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c12) from t1; -nvl(c21, c12) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c13) from t1; -nvl(c21, c13) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c14) from t1; -nvl(c21, c14) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c15) from t1; -nvl(c21, c15) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c16) from t1; -nvl(c21, c16) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c17) from t1; -nvl(c21, c17) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c18) from t1; -nvl(c21, c18) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c19) from t1; -nvl(c21, c19) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c20) from t1; -nvl(c21, c20) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c21) from t1; -nvl(c21, c21) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c21, c22) from t1; -nvl(c21, c22) -9.5 --9.5 -select nvl(null, c21) from t1; -nvl(null, c21) -9.5 --9.5 -select nvl(c22, c1) from t1; -nvl(c22, c1) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c2) from t1; -nvl(c22, c2) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c3) from t1; -nvl(c22, c3) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c4) from t1; -nvl(c22, c4) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c5) from t1; -nvl(c22, c5) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c6) from t1; -nvl(c22, c6) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c7) from t1; -nvl(c22, c7) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c8) from t1; -nvl(c22, c8) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c9) from t1; -nvl(c22, c9) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c10) from t1; -nvl(c22, c10) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c11) from t1; -nvl(c22, c11) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c12) from t1; -nvl(c22, c12) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c13) from t1; -nvl(c22, c13) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c14) from t1; -nvl(c22, c14) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c15) from t1; -nvl(c22, c15) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c16) from t1; -nvl(c22, c16) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c17) from t1; -nvl(c22, c17) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c18) from t1; -nvl(c22, c18) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c19) from t1; -nvl(c22, c19) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c20) from t1; -nvl(c22, c20) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c21) from t1; -nvl(c22, c21) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 -select nvl(c22, c22) from t1; -nvl(c22, c22) -10.5 -10.5 -select nvl(null, c22) from t1; -nvl(null, c22) -10.5 -10.5 diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_pad.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_pad.result deleted file mode 100644 index 3da61a8b7..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_pad.result +++ /dev/null @@ -1,3267 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30)); -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5'); -// Case1: normal test.测试各种类型组合, 跟不开新引擎开关进行对比 -alter system flush plan cache global; -set @@ob_enable_plan_cache = 0; -select rpad(null, null, null), rpad('a', 1, null), rpad(null, 1, 'a') from dual; -rpad(null, null, null) rpad('a', 1, null) rpad(null, 1, 'a') -NULL NULL NULL -select lpad(null, null, null), lpad('a', 1, null), lpad(null, 1, 'a') from dual; -lpad(null, null, null) lpad('a', 1, null) lpad(null, 1, 'a') -NULL NULL NULL -select c1, c1, rpad(c1, c1, c1), lpad(c1, c1, c1) from t1; -c1 c1 rpad(c1, c1, c1) lpad(c1, c1, c1) -1 1 1 1 -select c1, c1, pad(c1, c1, c1) from t1; -c1 c1 pad(c1, c1, c1) -1 1 1 -select c1, c2, rpad(c1, c1, c2), lpad(c1, c1, c2) from t1; -c1 c2 rpad(c1, c1, c2) lpad(c1, c1, c2) -1 2 1 1 -select c1, c2, pad(c1, c1, c2) from t1; -c1 c2 pad(c1, c1, c2) -1 2 11 -select c1, c3, rpad(c1, c1, c3), lpad(c1, c1, c3) from t1; -c1 c3 rpad(c1, c1, c3) lpad(c1, c1, c3) -1 1 1 1 -select c1, c3, pad(c1, c1, c3) from t1; -c1 c3 pad(c1, c1, c3) -1 1 1 -select c1, c4, rpad(c1, c1, c4), lpad(c1, c1, c4) from t1; -c1 c4 rpad(c1, c1, c4) lpad(c1, c1, c4) -1 2 1 1 -select c1, c4, pad(c1, c1, c4) from t1; -c1 c4 pad(c1, c1, c4) -1 2 11 -select c1, c5, rpad(c1, c1, c5), lpad(c1, c1, c5) from t1; -c1 c5 rpad(c1, c1, c5) lpad(c1, c1, c5) -1 1 1 1 -select c1, c5, pad(c1, c1, c5) from t1; -c1 c5 pad(c1, c1, c5) -1 1 1 -select c1, c6, rpad(c1, c1, c6), lpad(c1, c1, c6) from t1; -c1 c6 rpad(c1, c1, c6) lpad(c1, c1, c6) -1 2 1 1 -select c1, c6, pad(c1, c1, c6) from t1; -c1 c6 pad(c1, c1, c6) -1 2 11 -select c1, c7, rpad(c1, c1, c7), lpad(c1, c1, c7) from t1; -c1 c7 rpad(c1, c1, c7) lpad(c1, c1, c7) -1 1 1 1 -select c1, c7, pad(c1, c1, c7) from t1; -c1 c7 pad(c1, c1, c7) -1 1 1 -select c1, c8, rpad(c1, c1, c8), lpad(c1, c1, c8) from t1; -c1 c8 rpad(c1, c1, c8) lpad(c1, c1, c8) -1 2 1 1 -select c1, c8, pad(c1, c1, c8) from t1; -c1 c8 pad(c1, c1, c8) -1 2 11 -select c1, c9, rpad(c1, c1, c9), lpad(c1, c1, c9) from t1; -c1 c9 rpad(c1, c1, c9) lpad(c1, c1, c9) -1 1 1 1 -select c1, c9, pad(c1, c1, c9) from t1; -c1 c9 pad(c1, c1, c9) -1 1 1 -select c1, c10, rpad(c1, c1, c10), lpad(c1, c1, c10) from t1; -c1 c10 rpad(c1, c1, c10) lpad(c1, c1, c10) -1 2 1 1 -select c1, c10, pad(c1, c1, c10) from t1; -c1 c10 pad(c1, c1, c10) -1 2 11 -select c1, c11, rpad(c1, c1, c11), lpad(c1, c1, c11) from t1; -c1 c11 rpad(c1, c1, c11) lpad(c1, c1, c11) -1 1 1 1 -select c1, c11, pad(c1, c1, c11) from t1; -c1 c11 pad(c1, c1, c11) -1 1 1 -select c1, c12, rpad(c1, c1, c12), lpad(c1, c1, c12) from t1; -c1 c12 rpad(c1, c1, c12) lpad(c1, c1, c12) -1 2 1 1 -select c1, c12, pad(c1, c1, c12) from t1; -c1 c12 pad(c1, c1, c12) -1 2 11 -select c1, c13, rpad(c1, c1, c13), lpad(c1, c1, c13) from t1; -c1 c13 rpad(c1, c1, c13) lpad(c1, c1, c13) -1 3.5 1 1 -select c1, c13, pad(c1, c1, c13) from t1; -c1 c13 pad(c1, c1, c13) -1 3.5 1111 -select c1, c14, rpad(c1, c1, c14), lpad(c1, c1, c14) from t1; -c1 c14 rpad(c1, c1, c14) lpad(c1, c1, c14) -1 4.5 1 1 -select c1, c14, pad(c1, c1, c14) from t1; -c1 c14 pad(c1, c1, c14) -1 4.5 1111 -select c1, c15, rpad(c1, c1, c15), lpad(c1, c1, c15) from t1; -c1 c15 rpad(c1, c1, c15) lpad(c1, c1, c15) -1 5.5 1 1 -select c1, c15, pad(c1, c1, c15) from t1; -c1 c15 pad(c1, c1, c15) -1 5.5 111111 -select c1, c16, rpad(c1, c1, c16), lpad(c1, c1, c16) from t1; -c1 c16 rpad(c1, c1, c16) lpad(c1, c1, c16) -1 6.5 1 1 -select c1, c16, pad(c1, c1, c16) from t1; -c1 c16 pad(c1, c1, c16) -1 6.5 111111 -select c1, c17, rpad(c1, c1, c17), lpad(c1, c1, c17) from t1; -c1 c17 rpad(c1, c1, c17) lpad(c1, c1, c17) -1 8 1 1 -select c1, c17, pad(c1, c1, c17) from t1; -c1 c17 pad(c1, c1, c17) -1 8 11111111 -select c1, c18, rpad(c1, c1, c18), lpad(c1, c1, c18) from t1; -c1 c18 rpad(c1, c1, c18) lpad(c1, c1, c18) -1 9 1 1 -select c1, c18, pad(c1, c1, c18) from t1; -c1 c18 pad(c1, c1, c18) -1 9 111111111 -select c1, c19, rpad(c1, c1, c19), lpad(c1, c1, c19) from t1; -c1 c19 rpad(c1, c1, c19) lpad(c1, c1, c19) -1 2019-12-01 12:00:00 1 1 -select c1, c19, pad(c1, c1, c19) from t1; -c1 c19 pad(c1, c1, c19) -1 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c1, c20, rpad(c1, c1, c20), lpad(c1, c1, c20) from t1; -c1 c20 rpad(c1, c1, c20) lpad(c1, c1, c20) -1 2019-12-03 06:00:00 1 1 -select c1, c20, pad(c1, c1, c20) from t1; -c1 c20 pad(c1, c1, c20) -1 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c1, c21, rpad(c1, c1, c21), lpad(c1, c1, c21) from t1; -c1 c21 rpad(c1, c1, c21) lpad(c1, c1, c21) -1 9.5 1 1 -select c1, c21, pad(c1, c1, c21) from t1; -c1 c21 pad(c1, c1, c21) -1 9.5 1111111111 -select c1, c22, rpad(c1, c1, c22), lpad(c1, c1, c22) from t1; -c1 c22 rpad(c1, c1, c22) lpad(c1, c1, c22) -1 10.5 1 1 -select c1, c22, pad(c1, c1, c22) from t1; -c1 c22 pad(c1, c1, c22) -1 10.5 11111111111 -select c2, c1, rpad(c2, c2, c1), lpad(c2, c2, c1) from t1; -c2 c1 rpad(c2, c2, c1) lpad(c2, c2, c1) -2 1 21 12 -select c2, c1, pad(c2, c2, c1) from t1; -c2 c1 pad(c2, c2, c1) -2 1 2 -select c2, c2, rpad(c2, c2, c2), lpad(c2, c2, c2) from t1; -c2 c2 rpad(c2, c2, c2) lpad(c2, c2, c2) -2 2 22 22 -select c2, c2, pad(c2, c2, c2) from t1; -c2 c2 pad(c2, c2, c2) -2 2 22 -select c2, c3, rpad(c2, c2, c3), lpad(c2, c2, c3) from t1; -c2 c3 rpad(c2, c2, c3) lpad(c2, c2, c3) -2 1 21 12 -select c2, c3, pad(c2, c2, c3) from t1; -c2 c3 pad(c2, c2, c3) -2 1 2 -select c2, c4, rpad(c2, c2, c4), lpad(c2, c2, c4) from t1; -c2 c4 rpad(c2, c2, c4) lpad(c2, c2, c4) -2 2 22 22 -select c2, c4, pad(c2, c2, c4) from t1; -c2 c4 pad(c2, c2, c4) -2 2 22 -select c2, c5, rpad(c2, c2, c5), lpad(c2, c2, c5) from t1; -c2 c5 rpad(c2, c2, c5) lpad(c2, c2, c5) -2 1 21 12 -select c2, c5, pad(c2, c2, c5) from t1; -c2 c5 pad(c2, c2, c5) -2 1 2 -select c2, c6, rpad(c2, c2, c6), lpad(c2, c2, c6) from t1; -c2 c6 rpad(c2, c2, c6) lpad(c2, c2, c6) -2 2 22 22 -select c2, c6, pad(c2, c2, c6) from t1; -c2 c6 pad(c2, c2, c6) -2 2 22 -select c2, c7, rpad(c2, c2, c7), lpad(c2, c2, c7) from t1; -c2 c7 rpad(c2, c2, c7) lpad(c2, c2, c7) -2 1 21 12 -select c2, c7, pad(c2, c2, c7) from t1; -c2 c7 pad(c2, c2, c7) -2 1 2 -select c2, c8, rpad(c2, c2, c8), lpad(c2, c2, c8) from t1; -c2 c8 rpad(c2, c2, c8) lpad(c2, c2, c8) -2 2 22 22 -select c2, c8, pad(c2, c2, c8) from t1; -c2 c8 pad(c2, c2, c8) -2 2 22 -select c2, c9, rpad(c2, c2, c9), lpad(c2, c2, c9) from t1; -c2 c9 rpad(c2, c2, c9) lpad(c2, c2, c9) -2 1 21 12 -select c2, c9, pad(c2, c2, c9) from t1; -c2 c9 pad(c2, c2, c9) -2 1 2 -select c2, c10, rpad(c2, c2, c10), lpad(c2, c2, c10) from t1; -c2 c10 rpad(c2, c2, c10) lpad(c2, c2, c10) -2 2 22 22 -select c2, c10, pad(c2, c2, c10) from t1; -c2 c10 pad(c2, c2, c10) -2 2 22 -select c2, c11, rpad(c2, c2, c11), lpad(c2, c2, c11) from t1; -c2 c11 rpad(c2, c2, c11) lpad(c2, c2, c11) -2 1 21 12 -select c2, c11, pad(c2, c2, c11) from t1; -c2 c11 pad(c2, c2, c11) -2 1 2 -select c2, c12, rpad(c2, c2, c12), lpad(c2, c2, c12) from t1; -c2 c12 rpad(c2, c2, c12) lpad(c2, c2, c12) -2 2 22 22 -select c2, c12, pad(c2, c2, c12) from t1; -c2 c12 pad(c2, c2, c12) -2 2 22 -select c2, c13, rpad(c2, c2, c13), lpad(c2, c2, c13) from t1; -c2 c13 rpad(c2, c2, c13) lpad(c2, c2, c13) -2 3.5 23 32 -select c2, c13, pad(c2, c2, c13) from t1; -c2 c13 pad(c2, c2, c13) -2 3.5 2222 -select c2, c14, rpad(c2, c2, c14), lpad(c2, c2, c14) from t1; -c2 c14 rpad(c2, c2, c14) lpad(c2, c2, c14) -2 4.5 24 42 -select c2, c14, pad(c2, c2, c14) from t1; -c2 c14 pad(c2, c2, c14) -2 4.5 2222 -select c2, c15, rpad(c2, c2, c15), lpad(c2, c2, c15) from t1; -c2 c15 rpad(c2, c2, c15) lpad(c2, c2, c15) -2 5.5 25 52 -select c2, c15, pad(c2, c2, c15) from t1; -c2 c15 pad(c2, c2, c15) -2 5.5 222222 -select c2, c16, rpad(c2, c2, c16), lpad(c2, c2, c16) from t1; -c2 c16 rpad(c2, c2, c16) lpad(c2, c2, c16) -2 6.5 26 62 -select c2, c16, pad(c2, c2, c16) from t1; -c2 c16 pad(c2, c2, c16) -2 6.5 222222 -select c2, c17, rpad(c2, c2, c17), lpad(c2, c2, c17) from t1; -c2 c17 rpad(c2, c2, c17) lpad(c2, c2, c17) -2 8 28 82 -select c2, c17, pad(c2, c2, c17) from t1; -c2 c17 pad(c2, c2, c17) -2 8 22222222 -select c2, c18, rpad(c2, c2, c18), lpad(c2, c2, c18) from t1; -c2 c18 rpad(c2, c2, c18) lpad(c2, c2, c18) -2 9 29 92 -select c2, c18, pad(c2, c2, c18) from t1; -c2 c18 pad(c2, c2, c18) -2 9 222222222 -select c2, c19, rpad(c2, c2, c19), lpad(c2, c2, c19) from t1; -c2 c19 rpad(c2, c2, c19) lpad(c2, c2, c19) -2 2019-12-01 12:00:00 22 22 -select c2, c19, pad(c2, c2, c19) from t1; -c2 c19 pad(c2, c2, c19) -2 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c2, c20, rpad(c2, c2, c20), lpad(c2, c2, c20) from t1; -c2 c20 rpad(c2, c2, c20) lpad(c2, c2, c20) -2 2019-12-03 06:00:00 22 22 -select c2, c20, pad(c2, c2, c20) from t1; -c2 c20 pad(c2, c2, c20) -2 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c2, c21, rpad(c2, c2, c21), lpad(c2, c2, c21) from t1; -c2 c21 rpad(c2, c2, c21) lpad(c2, c2, c21) -2 9.5 29 92 -select c2, c21, pad(c2, c2, c21) from t1; -c2 c21 pad(c2, c2, c21) -2 9.5 2222222222 -select c2, c22, rpad(c2, c2, c22), lpad(c2, c2, c22) from t1; -c2 c22 rpad(c2, c2, c22) lpad(c2, c2, c22) -2 10.5 21 12 -select c2, c22, pad(c2, c2, c22) from t1; -c2 c22 pad(c2, c2, c22) -2 10.5 22222222222 -select c3, c1, rpad(c3, c3, c1), lpad(c3, c3, c1) from t1; -c3 c1 rpad(c3, c3, c1) lpad(c3, c3, c1) -1 1 1 1 -select c3, c1, pad(c3, c3, c1) from t1; -c3 c1 pad(c3, c3, c1) -1 1 1 -select c3, c2, rpad(c3, c3, c2), lpad(c3, c3, c2) from t1; -c3 c2 rpad(c3, c3, c2) lpad(c3, c3, c2) -1 2 1 1 -select c3, c2, pad(c3, c3, c2) from t1; -c3 c2 pad(c3, c3, c2) -1 2 11 -select c3, c3, rpad(c3, c3, c3), lpad(c3, c3, c3) from t1; -c3 c3 rpad(c3, c3, c3) lpad(c3, c3, c3) -1 1 1 1 -select c3, c3, pad(c3, c3, c3) from t1; -c3 c3 pad(c3, c3, c3) -1 1 1 -select c3, c4, rpad(c3, c3, c4), lpad(c3, c3, c4) from t1; -c3 c4 rpad(c3, c3, c4) lpad(c3, c3, c4) -1 2 1 1 -select c3, c4, pad(c3, c3, c4) from t1; -c3 c4 pad(c3, c3, c4) -1 2 11 -select c3, c5, rpad(c3, c3, c5), lpad(c3, c3, c5) from t1; -c3 c5 rpad(c3, c3, c5) lpad(c3, c3, c5) -1 1 1 1 -select c3, c5, pad(c3, c3, c5) from t1; -c3 c5 pad(c3, c3, c5) -1 1 1 -select c3, c6, rpad(c3, c3, c6), lpad(c3, c3, c6) from t1; -c3 c6 rpad(c3, c3, c6) lpad(c3, c3, c6) -1 2 1 1 -select c3, c6, pad(c3, c3, c6) from t1; -c3 c6 pad(c3, c3, c6) -1 2 11 -select c3, c7, rpad(c3, c3, c7), lpad(c3, c3, c7) from t1; -c3 c7 rpad(c3, c3, c7) lpad(c3, c3, c7) -1 1 1 1 -select c3, c7, pad(c3, c3, c7) from t1; -c3 c7 pad(c3, c3, c7) -1 1 1 -select c3, c8, rpad(c3, c3, c8), lpad(c3, c3, c8) from t1; -c3 c8 rpad(c3, c3, c8) lpad(c3, c3, c8) -1 2 1 1 -select c3, c8, pad(c3, c3, c8) from t1; -c3 c8 pad(c3, c3, c8) -1 2 11 -select c3, c9, rpad(c3, c3, c9), lpad(c3, c3, c9) from t1; -c3 c9 rpad(c3, c3, c9) lpad(c3, c3, c9) -1 1 1 1 -select c3, c9, pad(c3, c3, c9) from t1; -c3 c9 pad(c3, c3, c9) -1 1 1 -select c3, c10, rpad(c3, c3, c10), lpad(c3, c3, c10) from t1; -c3 c10 rpad(c3, c3, c10) lpad(c3, c3, c10) -1 2 1 1 -select c3, c10, pad(c3, c3, c10) from t1; -c3 c10 pad(c3, c3, c10) -1 2 11 -select c3, c11, rpad(c3, c3, c11), lpad(c3, c3, c11) from t1; -c3 c11 rpad(c3, c3, c11) lpad(c3, c3, c11) -1 1 1 1 -select c3, c11, pad(c3, c3, c11) from t1; -c3 c11 pad(c3, c3, c11) -1 1 1 -select c3, c12, rpad(c3, c3, c12), lpad(c3, c3, c12) from t1; -c3 c12 rpad(c3, c3, c12) lpad(c3, c3, c12) -1 2 1 1 -select c3, c12, pad(c3, c3, c12) from t1; -c3 c12 pad(c3, c3, c12) -1 2 11 -select c3, c13, rpad(c3, c3, c13), lpad(c3, c3, c13) from t1; -c3 c13 rpad(c3, c3, c13) lpad(c3, c3, c13) -1 3.5 1 1 -select c3, c13, pad(c3, c3, c13) from t1; -c3 c13 pad(c3, c3, c13) -1 3.5 1111 -select c3, c14, rpad(c3, c3, c14), lpad(c3, c3, c14) from t1; -c3 c14 rpad(c3, c3, c14) lpad(c3, c3, c14) -1 4.5 1 1 -select c3, c14, pad(c3, c3, c14) from t1; -c3 c14 pad(c3, c3, c14) -1 4.5 1111 -select c3, c15, rpad(c3, c3, c15), lpad(c3, c3, c15) from t1; -c3 c15 rpad(c3, c3, c15) lpad(c3, c3, c15) -1 5.5 1 1 -select c3, c15, pad(c3, c3, c15) from t1; -c3 c15 pad(c3, c3, c15) -1 5.5 111111 -select c3, c16, rpad(c3, c3, c16), lpad(c3, c3, c16) from t1; -c3 c16 rpad(c3, c3, c16) lpad(c3, c3, c16) -1 6.5 1 1 -select c3, c16, pad(c3, c3, c16) from t1; -c3 c16 pad(c3, c3, c16) -1 6.5 111111 -select c3, c17, rpad(c3, c3, c17), lpad(c3, c3, c17) from t1; -c3 c17 rpad(c3, c3, c17) lpad(c3, c3, c17) -1 8 1 1 -select c3, c17, pad(c3, c3, c17) from t1; -c3 c17 pad(c3, c3, c17) -1 8 11111111 -select c3, c18, rpad(c3, c3, c18), lpad(c3, c3, c18) from t1; -c3 c18 rpad(c3, c3, c18) lpad(c3, c3, c18) -1 9 1 1 -select c3, c18, pad(c3, c3, c18) from t1; -c3 c18 pad(c3, c3, c18) -1 9 111111111 -select c3, c19, rpad(c3, c3, c19), lpad(c3, c3, c19) from t1; -c3 c19 rpad(c3, c3, c19) lpad(c3, c3, c19) -1 2019-12-01 12:00:00 1 1 -select c3, c19, pad(c3, c3, c19) from t1; -c3 c19 pad(c3, c3, c19) -1 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c3, c20, rpad(c3, c3, c20), lpad(c3, c3, c20) from t1; -c3 c20 rpad(c3, c3, c20) lpad(c3, c3, c20) -1 2019-12-03 06:00:00 1 1 -select c3, c20, pad(c3, c3, c20) from t1; -c3 c20 pad(c3, c3, c20) -1 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c3, c21, rpad(c3, c3, c21), lpad(c3, c3, c21) from t1; -c3 c21 rpad(c3, c3, c21) lpad(c3, c3, c21) -1 9.5 1 1 -select c3, c21, pad(c3, c3, c21) from t1; -c3 c21 pad(c3, c3, c21) -1 9.5 1111111111 -select c3, c22, rpad(c3, c3, c22), lpad(c3, c3, c22) from t1; -c3 c22 rpad(c3, c3, c22) lpad(c3, c3, c22) -1 10.5 1 1 -select c3, c22, pad(c3, c3, c22) from t1; -c3 c22 pad(c3, c3, c22) -1 10.5 11111111111 -select c4, c1, rpad(c4, c4, c1), lpad(c4, c4, c1) from t1; -c4 c1 rpad(c4, c4, c1) lpad(c4, c4, c1) -2 1 21 12 -select c4, c1, pad(c4, c4, c1) from t1; -c4 c1 pad(c4, c4, c1) -2 1 2 -select c4, c2, rpad(c4, c4, c2), lpad(c4, c4, c2) from t1; -c4 c2 rpad(c4, c4, c2) lpad(c4, c4, c2) -2 2 22 22 -select c4, c2, pad(c4, c4, c2) from t1; -c4 c2 pad(c4, c4, c2) -2 2 22 -select c4, c3, rpad(c4, c4, c3), lpad(c4, c4, c3) from t1; -c4 c3 rpad(c4, c4, c3) lpad(c4, c4, c3) -2 1 21 12 -select c4, c3, pad(c4, c4, c3) from t1; -c4 c3 pad(c4, c4, c3) -2 1 2 -select c4, c4, rpad(c4, c4, c4), lpad(c4, c4, c4) from t1; -c4 c4 rpad(c4, c4, c4) lpad(c4, c4, c4) -2 2 22 22 -select c4, c4, pad(c4, c4, c4) from t1; -c4 c4 pad(c4, c4, c4) -2 2 22 -select c4, c5, rpad(c4, c4, c5), lpad(c4, c4, c5) from t1; -c4 c5 rpad(c4, c4, c5) lpad(c4, c4, c5) -2 1 21 12 -select c4, c5, pad(c4, c4, c5) from t1; -c4 c5 pad(c4, c4, c5) -2 1 2 -select c4, c6, rpad(c4, c4, c6), lpad(c4, c4, c6) from t1; -c4 c6 rpad(c4, c4, c6) lpad(c4, c4, c6) -2 2 22 22 -select c4, c6, pad(c4, c4, c6) from t1; -c4 c6 pad(c4, c4, c6) -2 2 22 -select c4, c7, rpad(c4, c4, c7), lpad(c4, c4, c7) from t1; -c4 c7 rpad(c4, c4, c7) lpad(c4, c4, c7) -2 1 21 12 -select c4, c7, pad(c4, c4, c7) from t1; -c4 c7 pad(c4, c4, c7) -2 1 2 -select c4, c8, rpad(c4, c4, c8), lpad(c4, c4, c8) from t1; -c4 c8 rpad(c4, c4, c8) lpad(c4, c4, c8) -2 2 22 22 -select c4, c8, pad(c4, c4, c8) from t1; -c4 c8 pad(c4, c4, c8) -2 2 22 -select c4, c9, rpad(c4, c4, c9), lpad(c4, c4, c9) from t1; -c4 c9 rpad(c4, c4, c9) lpad(c4, c4, c9) -2 1 21 12 -select c4, c9, pad(c4, c4, c9) from t1; -c4 c9 pad(c4, c4, c9) -2 1 2 -select c4, c10, rpad(c4, c4, c10), lpad(c4, c4, c10) from t1; -c4 c10 rpad(c4, c4, c10) lpad(c4, c4, c10) -2 2 22 22 -select c4, c10, pad(c4, c4, c10) from t1; -c4 c10 pad(c4, c4, c10) -2 2 22 -select c4, c11, rpad(c4, c4, c11), lpad(c4, c4, c11) from t1; -c4 c11 rpad(c4, c4, c11) lpad(c4, c4, c11) -2 1 21 12 -select c4, c11, pad(c4, c4, c11) from t1; -c4 c11 pad(c4, c4, c11) -2 1 2 -select c4, c12, rpad(c4, c4, c12), lpad(c4, c4, c12) from t1; -c4 c12 rpad(c4, c4, c12) lpad(c4, c4, c12) -2 2 22 22 -select c4, c12, pad(c4, c4, c12) from t1; -c4 c12 pad(c4, c4, c12) -2 2 22 -select c4, c13, rpad(c4, c4, c13), lpad(c4, c4, c13) from t1; -c4 c13 rpad(c4, c4, c13) lpad(c4, c4, c13) -2 3.5 23 32 -select c4, c13, pad(c4, c4, c13) from t1; -c4 c13 pad(c4, c4, c13) -2 3.5 2222 -select c4, c14, rpad(c4, c4, c14), lpad(c4, c4, c14) from t1; -c4 c14 rpad(c4, c4, c14) lpad(c4, c4, c14) -2 4.5 24 42 -select c4, c14, pad(c4, c4, c14) from t1; -c4 c14 pad(c4, c4, c14) -2 4.5 2222 -select c4, c15, rpad(c4, c4, c15), lpad(c4, c4, c15) from t1; -c4 c15 rpad(c4, c4, c15) lpad(c4, c4, c15) -2 5.5 25 52 -select c4, c15, pad(c4, c4, c15) from t1; -c4 c15 pad(c4, c4, c15) -2 5.5 222222 -select c4, c16, rpad(c4, c4, c16), lpad(c4, c4, c16) from t1; -c4 c16 rpad(c4, c4, c16) lpad(c4, c4, c16) -2 6.5 26 62 -select c4, c16, pad(c4, c4, c16) from t1; -c4 c16 pad(c4, c4, c16) -2 6.5 222222 -select c4, c17, rpad(c4, c4, c17), lpad(c4, c4, c17) from t1; -c4 c17 rpad(c4, c4, c17) lpad(c4, c4, c17) -2 8 28 82 -select c4, c17, pad(c4, c4, c17) from t1; -c4 c17 pad(c4, c4, c17) -2 8 22222222 -select c4, c18, rpad(c4, c4, c18), lpad(c4, c4, c18) from t1; -c4 c18 rpad(c4, c4, c18) lpad(c4, c4, c18) -2 9 29 92 -select c4, c18, pad(c4, c4, c18) from t1; -c4 c18 pad(c4, c4, c18) -2 9 222222222 -select c4, c19, rpad(c4, c4, c19), lpad(c4, c4, c19) from t1; -c4 c19 rpad(c4, c4, c19) lpad(c4, c4, c19) -2 2019-12-01 12:00:00 22 22 -select c4, c19, pad(c4, c4, c19) from t1; -c4 c19 pad(c4, c4, c19) -2 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c4, c20, rpad(c4, c4, c20), lpad(c4, c4, c20) from t1; -c4 c20 rpad(c4, c4, c20) lpad(c4, c4, c20) -2 2019-12-03 06:00:00 22 22 -select c4, c20, pad(c4, c4, c20) from t1; -c4 c20 pad(c4, c4, c20) -2 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c4, c21, rpad(c4, c4, c21), lpad(c4, c4, c21) from t1; -c4 c21 rpad(c4, c4, c21) lpad(c4, c4, c21) -2 9.5 29 92 -select c4, c21, pad(c4, c4, c21) from t1; -c4 c21 pad(c4, c4, c21) -2 9.5 2222222222 -select c4, c22, rpad(c4, c4, c22), lpad(c4, c4, c22) from t1; -c4 c22 rpad(c4, c4, c22) lpad(c4, c4, c22) -2 10.5 21 12 -select c4, c22, pad(c4, c4, c22) from t1; -c4 c22 pad(c4, c4, c22) -2 10.5 22222222222 -select c5, c1, rpad(c5, c5, c1), lpad(c5, c5, c1) from t1; -c5 c1 rpad(c5, c5, c1) lpad(c5, c5, c1) -1 1 1 1 -select c5, c1, pad(c5, c5, c1) from t1; -c5 c1 pad(c5, c5, c1) -1 1 1 -select c5, c2, rpad(c5, c5, c2), lpad(c5, c5, c2) from t1; -c5 c2 rpad(c5, c5, c2) lpad(c5, c5, c2) -1 2 1 1 -select c5, c2, pad(c5, c5, c2) from t1; -c5 c2 pad(c5, c5, c2) -1 2 11 -select c5, c3, rpad(c5, c5, c3), lpad(c5, c5, c3) from t1; -c5 c3 rpad(c5, c5, c3) lpad(c5, c5, c3) -1 1 1 1 -select c5, c3, pad(c5, c5, c3) from t1; -c5 c3 pad(c5, c5, c3) -1 1 1 -select c5, c4, rpad(c5, c5, c4), lpad(c5, c5, c4) from t1; -c5 c4 rpad(c5, c5, c4) lpad(c5, c5, c4) -1 2 1 1 -select c5, c4, pad(c5, c5, c4) from t1; -c5 c4 pad(c5, c5, c4) -1 2 11 -select c5, c5, rpad(c5, c5, c5), lpad(c5, c5, c5) from t1; -c5 c5 rpad(c5, c5, c5) lpad(c5, c5, c5) -1 1 1 1 -select c5, c5, pad(c5, c5, c5) from t1; -c5 c5 pad(c5, c5, c5) -1 1 1 -select c5, c6, rpad(c5, c5, c6), lpad(c5, c5, c6) from t1; -c5 c6 rpad(c5, c5, c6) lpad(c5, c5, c6) -1 2 1 1 -select c5, c6, pad(c5, c5, c6) from t1; -c5 c6 pad(c5, c5, c6) -1 2 11 -select c5, c7, rpad(c5, c5, c7), lpad(c5, c5, c7) from t1; -c5 c7 rpad(c5, c5, c7) lpad(c5, c5, c7) -1 1 1 1 -select c5, c7, pad(c5, c5, c7) from t1; -c5 c7 pad(c5, c5, c7) -1 1 1 -select c5, c8, rpad(c5, c5, c8), lpad(c5, c5, c8) from t1; -c5 c8 rpad(c5, c5, c8) lpad(c5, c5, c8) -1 2 1 1 -select c5, c8, pad(c5, c5, c8) from t1; -c5 c8 pad(c5, c5, c8) -1 2 11 -select c5, c9, rpad(c5, c5, c9), lpad(c5, c5, c9) from t1; -c5 c9 rpad(c5, c5, c9) lpad(c5, c5, c9) -1 1 1 1 -select c5, c9, pad(c5, c5, c9) from t1; -c5 c9 pad(c5, c5, c9) -1 1 1 -select c5, c10, rpad(c5, c5, c10), lpad(c5, c5, c10) from t1; -c5 c10 rpad(c5, c5, c10) lpad(c5, c5, c10) -1 2 1 1 -select c5, c10, pad(c5, c5, c10) from t1; -c5 c10 pad(c5, c5, c10) -1 2 11 -select c5, c11, rpad(c5, c5, c11), lpad(c5, c5, c11) from t1; -c5 c11 rpad(c5, c5, c11) lpad(c5, c5, c11) -1 1 1 1 -select c5, c11, pad(c5, c5, c11) from t1; -c5 c11 pad(c5, c5, c11) -1 1 1 -select c5, c12, rpad(c5, c5, c12), lpad(c5, c5, c12) from t1; -c5 c12 rpad(c5, c5, c12) lpad(c5, c5, c12) -1 2 1 1 -select c5, c12, pad(c5, c5, c12) from t1; -c5 c12 pad(c5, c5, c12) -1 2 11 -select c5, c13, rpad(c5, c5, c13), lpad(c5, c5, c13) from t1; -c5 c13 rpad(c5, c5, c13) lpad(c5, c5, c13) -1 3.5 1 1 -select c5, c13, pad(c5, c5, c13) from t1; -c5 c13 pad(c5, c5, c13) -1 3.5 1111 -select c5, c14, rpad(c5, c5, c14), lpad(c5, c5, c14) from t1; -c5 c14 rpad(c5, c5, c14) lpad(c5, c5, c14) -1 4.5 1 1 -select c5, c14, pad(c5, c5, c14) from t1; -c5 c14 pad(c5, c5, c14) -1 4.5 1111 -select c5, c15, rpad(c5, c5, c15), lpad(c5, c5, c15) from t1; -c5 c15 rpad(c5, c5, c15) lpad(c5, c5, c15) -1 5.5 1 1 -select c5, c15, pad(c5, c5, c15) from t1; -c5 c15 pad(c5, c5, c15) -1 5.5 111111 -select c5, c16, rpad(c5, c5, c16), lpad(c5, c5, c16) from t1; -c5 c16 rpad(c5, c5, c16) lpad(c5, c5, c16) -1 6.5 1 1 -select c5, c16, pad(c5, c5, c16) from t1; -c5 c16 pad(c5, c5, c16) -1 6.5 111111 -select c5, c17, rpad(c5, c5, c17), lpad(c5, c5, c17) from t1; -c5 c17 rpad(c5, c5, c17) lpad(c5, c5, c17) -1 8 1 1 -select c5, c17, pad(c5, c5, c17) from t1; -c5 c17 pad(c5, c5, c17) -1 8 11111111 -select c5, c18, rpad(c5, c5, c18), lpad(c5, c5, c18) from t1; -c5 c18 rpad(c5, c5, c18) lpad(c5, c5, c18) -1 9 1 1 -select c5, c18, pad(c5, c5, c18) from t1; -c5 c18 pad(c5, c5, c18) -1 9 111111111 -select c5, c19, rpad(c5, c5, c19), lpad(c5, c5, c19) from t1; -c5 c19 rpad(c5, c5, c19) lpad(c5, c5, c19) -1 2019-12-01 12:00:00 1 1 -select c5, c19, pad(c5, c5, c19) from t1; -c5 c19 pad(c5, c5, c19) -1 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c5, c20, rpad(c5, c5, c20), lpad(c5, c5, c20) from t1; -c5 c20 rpad(c5, c5, c20) lpad(c5, c5, c20) -1 2019-12-03 06:00:00 1 1 -select c5, c20, pad(c5, c5, c20) from t1; -c5 c20 pad(c5, c5, c20) -1 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c5, c21, rpad(c5, c5, c21), lpad(c5, c5, c21) from t1; -c5 c21 rpad(c5, c5, c21) lpad(c5, c5, c21) -1 9.5 1 1 -select c5, c21, pad(c5, c5, c21) from t1; -c5 c21 pad(c5, c5, c21) -1 9.5 1111111111 -select c5, c22, rpad(c5, c5, c22), lpad(c5, c5, c22) from t1; -c5 c22 rpad(c5, c5, c22) lpad(c5, c5, c22) -1 10.5 1 1 -select c5, c22, pad(c5, c5, c22) from t1; -c5 c22 pad(c5, c5, c22) -1 10.5 11111111111 -select c6, c1, rpad(c6, c6, c1), lpad(c6, c6, c1) from t1; -c6 c1 rpad(c6, c6, c1) lpad(c6, c6, c1) -2 1 21 12 -select c6, c1, pad(c6, c6, c1) from t1; -c6 c1 pad(c6, c6, c1) -2 1 2 -select c6, c2, rpad(c6, c6, c2), lpad(c6, c6, c2) from t1; -c6 c2 rpad(c6, c6, c2) lpad(c6, c6, c2) -2 2 22 22 -select c6, c2, pad(c6, c6, c2) from t1; -c6 c2 pad(c6, c6, c2) -2 2 22 -select c6, c3, rpad(c6, c6, c3), lpad(c6, c6, c3) from t1; -c6 c3 rpad(c6, c6, c3) lpad(c6, c6, c3) -2 1 21 12 -select c6, c3, pad(c6, c6, c3) from t1; -c6 c3 pad(c6, c6, c3) -2 1 2 -select c6, c4, rpad(c6, c6, c4), lpad(c6, c6, c4) from t1; -c6 c4 rpad(c6, c6, c4) lpad(c6, c6, c4) -2 2 22 22 -select c6, c4, pad(c6, c6, c4) from t1; -c6 c4 pad(c6, c6, c4) -2 2 22 -select c6, c5, rpad(c6, c6, c5), lpad(c6, c6, c5) from t1; -c6 c5 rpad(c6, c6, c5) lpad(c6, c6, c5) -2 1 21 12 -select c6, c5, pad(c6, c6, c5) from t1; -c6 c5 pad(c6, c6, c5) -2 1 2 -select c6, c6, rpad(c6, c6, c6), lpad(c6, c6, c6) from t1; -c6 c6 rpad(c6, c6, c6) lpad(c6, c6, c6) -2 2 22 22 -select c6, c6, pad(c6, c6, c6) from t1; -c6 c6 pad(c6, c6, c6) -2 2 22 -select c6, c7, rpad(c6, c6, c7), lpad(c6, c6, c7) from t1; -c6 c7 rpad(c6, c6, c7) lpad(c6, c6, c7) -2 1 21 12 -select c6, c7, pad(c6, c6, c7) from t1; -c6 c7 pad(c6, c6, c7) -2 1 2 -select c6, c8, rpad(c6, c6, c8), lpad(c6, c6, c8) from t1; -c6 c8 rpad(c6, c6, c8) lpad(c6, c6, c8) -2 2 22 22 -select c6, c8, pad(c6, c6, c8) from t1; -c6 c8 pad(c6, c6, c8) -2 2 22 -select c6, c9, rpad(c6, c6, c9), lpad(c6, c6, c9) from t1; -c6 c9 rpad(c6, c6, c9) lpad(c6, c6, c9) -2 1 21 12 -select c6, c9, pad(c6, c6, c9) from t1; -c6 c9 pad(c6, c6, c9) -2 1 2 -select c6, c10, rpad(c6, c6, c10), lpad(c6, c6, c10) from t1; -c6 c10 rpad(c6, c6, c10) lpad(c6, c6, c10) -2 2 22 22 -select c6, c10, pad(c6, c6, c10) from t1; -c6 c10 pad(c6, c6, c10) -2 2 22 -select c6, c11, rpad(c6, c6, c11), lpad(c6, c6, c11) from t1; -c6 c11 rpad(c6, c6, c11) lpad(c6, c6, c11) -2 1 21 12 -select c6, c11, pad(c6, c6, c11) from t1; -c6 c11 pad(c6, c6, c11) -2 1 2 -select c6, c12, rpad(c6, c6, c12), lpad(c6, c6, c12) from t1; -c6 c12 rpad(c6, c6, c12) lpad(c6, c6, c12) -2 2 22 22 -select c6, c12, pad(c6, c6, c12) from t1; -c6 c12 pad(c6, c6, c12) -2 2 22 -select c6, c13, rpad(c6, c6, c13), lpad(c6, c6, c13) from t1; -c6 c13 rpad(c6, c6, c13) lpad(c6, c6, c13) -2 3.5 23 32 -select c6, c13, pad(c6, c6, c13) from t1; -c6 c13 pad(c6, c6, c13) -2 3.5 2222 -select c6, c14, rpad(c6, c6, c14), lpad(c6, c6, c14) from t1; -c6 c14 rpad(c6, c6, c14) lpad(c6, c6, c14) -2 4.5 24 42 -select c6, c14, pad(c6, c6, c14) from t1; -c6 c14 pad(c6, c6, c14) -2 4.5 2222 -select c6, c15, rpad(c6, c6, c15), lpad(c6, c6, c15) from t1; -c6 c15 rpad(c6, c6, c15) lpad(c6, c6, c15) -2 5.5 25 52 -select c6, c15, pad(c6, c6, c15) from t1; -c6 c15 pad(c6, c6, c15) -2 5.5 222222 -select c6, c16, rpad(c6, c6, c16), lpad(c6, c6, c16) from t1; -c6 c16 rpad(c6, c6, c16) lpad(c6, c6, c16) -2 6.5 26 62 -select c6, c16, pad(c6, c6, c16) from t1; -c6 c16 pad(c6, c6, c16) -2 6.5 222222 -select c6, c17, rpad(c6, c6, c17), lpad(c6, c6, c17) from t1; -c6 c17 rpad(c6, c6, c17) lpad(c6, c6, c17) -2 8 28 82 -select c6, c17, pad(c6, c6, c17) from t1; -c6 c17 pad(c6, c6, c17) -2 8 22222222 -select c6, c18, rpad(c6, c6, c18), lpad(c6, c6, c18) from t1; -c6 c18 rpad(c6, c6, c18) lpad(c6, c6, c18) -2 9 29 92 -select c6, c18, pad(c6, c6, c18) from t1; -c6 c18 pad(c6, c6, c18) -2 9 222222222 -select c6, c19, rpad(c6, c6, c19), lpad(c6, c6, c19) from t1; -c6 c19 rpad(c6, c6, c19) lpad(c6, c6, c19) -2 2019-12-01 12:00:00 22 22 -select c6, c19, pad(c6, c6, c19) from t1; -c6 c19 pad(c6, c6, c19) -2 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c6, c20, rpad(c6, c6, c20), lpad(c6, c6, c20) from t1; -c6 c20 rpad(c6, c6, c20) lpad(c6, c6, c20) -2 2019-12-03 06:00:00 22 22 -select c6, c20, pad(c6, c6, c20) from t1; -c6 c20 pad(c6, c6, c20) -2 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c6, c21, rpad(c6, c6, c21), lpad(c6, c6, c21) from t1; -c6 c21 rpad(c6, c6, c21) lpad(c6, c6, c21) -2 9.5 29 92 -select c6, c21, pad(c6, c6, c21) from t1; -c6 c21 pad(c6, c6, c21) -2 9.5 2222222222 -select c6, c22, rpad(c6, c6, c22), lpad(c6, c6, c22) from t1; -c6 c22 rpad(c6, c6, c22) lpad(c6, c6, c22) -2 10.5 21 12 -select c6, c22, pad(c6, c6, c22) from t1; -c6 c22 pad(c6, c6, c22) -2 10.5 22222222222 -select c7, c1, rpad(c7, c7, c1), lpad(c7, c7, c1) from t1; -c7 c1 rpad(c7, c7, c1) lpad(c7, c7, c1) -1 1 1 1 -select c7, c1, pad(c7, c7, c1) from t1; -c7 c1 pad(c7, c7, c1) -1 1 1 -select c7, c2, rpad(c7, c7, c2), lpad(c7, c7, c2) from t1; -c7 c2 rpad(c7, c7, c2) lpad(c7, c7, c2) -1 2 1 1 -select c7, c2, pad(c7, c7, c2) from t1; -c7 c2 pad(c7, c7, c2) -1 2 11 -select c7, c3, rpad(c7, c7, c3), lpad(c7, c7, c3) from t1; -c7 c3 rpad(c7, c7, c3) lpad(c7, c7, c3) -1 1 1 1 -select c7, c3, pad(c7, c7, c3) from t1; -c7 c3 pad(c7, c7, c3) -1 1 1 -select c7, c4, rpad(c7, c7, c4), lpad(c7, c7, c4) from t1; -c7 c4 rpad(c7, c7, c4) lpad(c7, c7, c4) -1 2 1 1 -select c7, c4, pad(c7, c7, c4) from t1; -c7 c4 pad(c7, c7, c4) -1 2 11 -select c7, c5, rpad(c7, c7, c5), lpad(c7, c7, c5) from t1; -c7 c5 rpad(c7, c7, c5) lpad(c7, c7, c5) -1 1 1 1 -select c7, c5, pad(c7, c7, c5) from t1; -c7 c5 pad(c7, c7, c5) -1 1 1 -select c7, c6, rpad(c7, c7, c6), lpad(c7, c7, c6) from t1; -c7 c6 rpad(c7, c7, c6) lpad(c7, c7, c6) -1 2 1 1 -select c7, c6, pad(c7, c7, c6) from t1; -c7 c6 pad(c7, c7, c6) -1 2 11 -select c7, c7, rpad(c7, c7, c7), lpad(c7, c7, c7) from t1; -c7 c7 rpad(c7, c7, c7) lpad(c7, c7, c7) -1 1 1 1 -select c7, c7, pad(c7, c7, c7) from t1; -c7 c7 pad(c7, c7, c7) -1 1 1 -select c7, c8, rpad(c7, c7, c8), lpad(c7, c7, c8) from t1; -c7 c8 rpad(c7, c7, c8) lpad(c7, c7, c8) -1 2 1 1 -select c7, c8, pad(c7, c7, c8) from t1; -c7 c8 pad(c7, c7, c8) -1 2 11 -select c7, c9, rpad(c7, c7, c9), lpad(c7, c7, c9) from t1; -c7 c9 rpad(c7, c7, c9) lpad(c7, c7, c9) -1 1 1 1 -select c7, c9, pad(c7, c7, c9) from t1; -c7 c9 pad(c7, c7, c9) -1 1 1 -select c7, c10, rpad(c7, c7, c10), lpad(c7, c7, c10) from t1; -c7 c10 rpad(c7, c7, c10) lpad(c7, c7, c10) -1 2 1 1 -select c7, c10, pad(c7, c7, c10) from t1; -c7 c10 pad(c7, c7, c10) -1 2 11 -select c7, c11, rpad(c7, c7, c11), lpad(c7, c7, c11) from t1; -c7 c11 rpad(c7, c7, c11) lpad(c7, c7, c11) -1 1 1 1 -select c7, c11, pad(c7, c7, c11) from t1; -c7 c11 pad(c7, c7, c11) -1 1 1 -select c7, c12, rpad(c7, c7, c12), lpad(c7, c7, c12) from t1; -c7 c12 rpad(c7, c7, c12) lpad(c7, c7, c12) -1 2 1 1 -select c7, c12, pad(c7, c7, c12) from t1; -c7 c12 pad(c7, c7, c12) -1 2 11 -select c7, c13, rpad(c7, c7, c13), lpad(c7, c7, c13) from t1; -c7 c13 rpad(c7, c7, c13) lpad(c7, c7, c13) -1 3.5 1 1 -select c7, c13, pad(c7, c7, c13) from t1; -c7 c13 pad(c7, c7, c13) -1 3.5 1111 -select c7, c14, rpad(c7, c7, c14), lpad(c7, c7, c14) from t1; -c7 c14 rpad(c7, c7, c14) lpad(c7, c7, c14) -1 4.5 1 1 -select c7, c14, pad(c7, c7, c14) from t1; -c7 c14 pad(c7, c7, c14) -1 4.5 1111 -select c7, c15, rpad(c7, c7, c15), lpad(c7, c7, c15) from t1; -c7 c15 rpad(c7, c7, c15) lpad(c7, c7, c15) -1 5.5 1 1 -select c7, c15, pad(c7, c7, c15) from t1; -c7 c15 pad(c7, c7, c15) -1 5.5 111111 -select c7, c16, rpad(c7, c7, c16), lpad(c7, c7, c16) from t1; -c7 c16 rpad(c7, c7, c16) lpad(c7, c7, c16) -1 6.5 1 1 -select c7, c16, pad(c7, c7, c16) from t1; -c7 c16 pad(c7, c7, c16) -1 6.5 111111 -select c7, c17, rpad(c7, c7, c17), lpad(c7, c7, c17) from t1; -c7 c17 rpad(c7, c7, c17) lpad(c7, c7, c17) -1 8 1 1 -select c7, c17, pad(c7, c7, c17) from t1; -c7 c17 pad(c7, c7, c17) -1 8 11111111 -select c7, c18, rpad(c7, c7, c18), lpad(c7, c7, c18) from t1; -c7 c18 rpad(c7, c7, c18) lpad(c7, c7, c18) -1 9 1 1 -select c7, c18, pad(c7, c7, c18) from t1; -c7 c18 pad(c7, c7, c18) -1 9 111111111 -select c7, c19, rpad(c7, c7, c19), lpad(c7, c7, c19) from t1; -c7 c19 rpad(c7, c7, c19) lpad(c7, c7, c19) -1 2019-12-01 12:00:00 1 1 -select c7, c19, pad(c7, c7, c19) from t1; -c7 c19 pad(c7, c7, c19) -1 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c7, c20, rpad(c7, c7, c20), lpad(c7, c7, c20) from t1; -c7 c20 rpad(c7, c7, c20) lpad(c7, c7, c20) -1 2019-12-03 06:00:00 1 1 -select c7, c20, pad(c7, c7, c20) from t1; -c7 c20 pad(c7, c7, c20) -1 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c7, c21, rpad(c7, c7, c21), lpad(c7, c7, c21) from t1; -c7 c21 rpad(c7, c7, c21) lpad(c7, c7, c21) -1 9.5 1 1 -select c7, c21, pad(c7, c7, c21) from t1; -c7 c21 pad(c7, c7, c21) -1 9.5 1111111111 -select c7, c22, rpad(c7, c7, c22), lpad(c7, c7, c22) from t1; -c7 c22 rpad(c7, c7, c22) lpad(c7, c7, c22) -1 10.5 1 1 -select c7, c22, pad(c7, c7, c22) from t1; -c7 c22 pad(c7, c7, c22) -1 10.5 11111111111 -select c8, c1, rpad(c8, c8, c1), lpad(c8, c8, c1) from t1; -c8 c1 rpad(c8, c8, c1) lpad(c8, c8, c1) -2 1 21 12 -select c8, c1, pad(c8, c8, c1) from t1; -c8 c1 pad(c8, c8, c1) -2 1 2 -select c8, c2, rpad(c8, c8, c2), lpad(c8, c8, c2) from t1; -c8 c2 rpad(c8, c8, c2) lpad(c8, c8, c2) -2 2 22 22 -select c8, c2, pad(c8, c8, c2) from t1; -c8 c2 pad(c8, c8, c2) -2 2 22 -select c8, c3, rpad(c8, c8, c3), lpad(c8, c8, c3) from t1; -c8 c3 rpad(c8, c8, c3) lpad(c8, c8, c3) -2 1 21 12 -select c8, c3, pad(c8, c8, c3) from t1; -c8 c3 pad(c8, c8, c3) -2 1 2 -select c8, c4, rpad(c8, c8, c4), lpad(c8, c8, c4) from t1; -c8 c4 rpad(c8, c8, c4) lpad(c8, c8, c4) -2 2 22 22 -select c8, c4, pad(c8, c8, c4) from t1; -c8 c4 pad(c8, c8, c4) -2 2 22 -select c8, c5, rpad(c8, c8, c5), lpad(c8, c8, c5) from t1; -c8 c5 rpad(c8, c8, c5) lpad(c8, c8, c5) -2 1 21 12 -select c8, c5, pad(c8, c8, c5) from t1; -c8 c5 pad(c8, c8, c5) -2 1 2 -select c8, c6, rpad(c8, c8, c6), lpad(c8, c8, c6) from t1; -c8 c6 rpad(c8, c8, c6) lpad(c8, c8, c6) -2 2 22 22 -select c8, c6, pad(c8, c8, c6) from t1; -c8 c6 pad(c8, c8, c6) -2 2 22 -select c8, c7, rpad(c8, c8, c7), lpad(c8, c8, c7) from t1; -c8 c7 rpad(c8, c8, c7) lpad(c8, c8, c7) -2 1 21 12 -select c8, c7, pad(c8, c8, c7) from t1; -c8 c7 pad(c8, c8, c7) -2 1 2 -select c8, c8, rpad(c8, c8, c8), lpad(c8, c8, c8) from t1; -c8 c8 rpad(c8, c8, c8) lpad(c8, c8, c8) -2 2 22 22 -select c8, c8, pad(c8, c8, c8) from t1; -c8 c8 pad(c8, c8, c8) -2 2 22 -select c8, c9, rpad(c8, c8, c9), lpad(c8, c8, c9) from t1; -c8 c9 rpad(c8, c8, c9) lpad(c8, c8, c9) -2 1 21 12 -select c8, c9, pad(c8, c8, c9) from t1; -c8 c9 pad(c8, c8, c9) -2 1 2 -select c8, c10, rpad(c8, c8, c10), lpad(c8, c8, c10) from t1; -c8 c10 rpad(c8, c8, c10) lpad(c8, c8, c10) -2 2 22 22 -select c8, c10, pad(c8, c8, c10) from t1; -c8 c10 pad(c8, c8, c10) -2 2 22 -select c8, c11, rpad(c8, c8, c11), lpad(c8, c8, c11) from t1; -c8 c11 rpad(c8, c8, c11) lpad(c8, c8, c11) -2 1 21 12 -select c8, c11, pad(c8, c8, c11) from t1; -c8 c11 pad(c8, c8, c11) -2 1 2 -select c8, c12, rpad(c8, c8, c12), lpad(c8, c8, c12) from t1; -c8 c12 rpad(c8, c8, c12) lpad(c8, c8, c12) -2 2 22 22 -select c8, c12, pad(c8, c8, c12) from t1; -c8 c12 pad(c8, c8, c12) -2 2 22 -select c8, c13, rpad(c8, c8, c13), lpad(c8, c8, c13) from t1; -c8 c13 rpad(c8, c8, c13) lpad(c8, c8, c13) -2 3.5 23 32 -select c8, c13, pad(c8, c8, c13) from t1; -c8 c13 pad(c8, c8, c13) -2 3.5 2222 -select c8, c14, rpad(c8, c8, c14), lpad(c8, c8, c14) from t1; -c8 c14 rpad(c8, c8, c14) lpad(c8, c8, c14) -2 4.5 24 42 -select c8, c14, pad(c8, c8, c14) from t1; -c8 c14 pad(c8, c8, c14) -2 4.5 2222 -select c8, c15, rpad(c8, c8, c15), lpad(c8, c8, c15) from t1; -c8 c15 rpad(c8, c8, c15) lpad(c8, c8, c15) -2 5.5 25 52 -select c8, c15, pad(c8, c8, c15) from t1; -c8 c15 pad(c8, c8, c15) -2 5.5 222222 -select c8, c16, rpad(c8, c8, c16), lpad(c8, c8, c16) from t1; -c8 c16 rpad(c8, c8, c16) lpad(c8, c8, c16) -2 6.5 26 62 -select c8, c16, pad(c8, c8, c16) from t1; -c8 c16 pad(c8, c8, c16) -2 6.5 222222 -select c8, c17, rpad(c8, c8, c17), lpad(c8, c8, c17) from t1; -c8 c17 rpad(c8, c8, c17) lpad(c8, c8, c17) -2 8 28 82 -select c8, c17, pad(c8, c8, c17) from t1; -c8 c17 pad(c8, c8, c17) -2 8 22222222 -select c8, c18, rpad(c8, c8, c18), lpad(c8, c8, c18) from t1; -c8 c18 rpad(c8, c8, c18) lpad(c8, c8, c18) -2 9 29 92 -select c8, c18, pad(c8, c8, c18) from t1; -c8 c18 pad(c8, c8, c18) -2 9 222222222 -select c8, c19, rpad(c8, c8, c19), lpad(c8, c8, c19) from t1; -c8 c19 rpad(c8, c8, c19) lpad(c8, c8, c19) -2 2019-12-01 12:00:00 22 22 -select c8, c19, pad(c8, c8, c19) from t1; -c8 c19 pad(c8, c8, c19) -2 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c8, c20, rpad(c8, c8, c20), lpad(c8, c8, c20) from t1; -c8 c20 rpad(c8, c8, c20) lpad(c8, c8, c20) -2 2019-12-03 06:00:00 22 22 -select c8, c20, pad(c8, c8, c20) from t1; -c8 c20 pad(c8, c8, c20) -2 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c8, c21, rpad(c8, c8, c21), lpad(c8, c8, c21) from t1; -c8 c21 rpad(c8, c8, c21) lpad(c8, c8, c21) -2 9.5 29 92 -select c8, c21, pad(c8, c8, c21) from t1; -c8 c21 pad(c8, c8, c21) -2 9.5 2222222222 -select c8, c22, rpad(c8, c8, c22), lpad(c8, c8, c22) from t1; -c8 c22 rpad(c8, c8, c22) lpad(c8, c8, c22) -2 10.5 21 12 -select c8, c22, pad(c8, c8, c22) from t1; -c8 c22 pad(c8, c8, c22) -2 10.5 22222222222 -select c9, c1, rpad(c9, c9, c1), lpad(c9, c9, c1) from t1; -c9 c1 rpad(c9, c9, c1) lpad(c9, c9, c1) -1 1 1 1 -select c9, c1, pad(c9, c9, c1) from t1; -c9 c1 pad(c9, c9, c1) -1 1 1 -select c9, c2, rpad(c9, c9, c2), lpad(c9, c9, c2) from t1; -c9 c2 rpad(c9, c9, c2) lpad(c9, c9, c2) -1 2 1 1 -select c9, c2, pad(c9, c9, c2) from t1; -c9 c2 pad(c9, c9, c2) -1 2 11 -select c9, c3, rpad(c9, c9, c3), lpad(c9, c9, c3) from t1; -c9 c3 rpad(c9, c9, c3) lpad(c9, c9, c3) -1 1 1 1 -select c9, c3, pad(c9, c9, c3) from t1; -c9 c3 pad(c9, c9, c3) -1 1 1 -select c9, c4, rpad(c9, c9, c4), lpad(c9, c9, c4) from t1; -c9 c4 rpad(c9, c9, c4) lpad(c9, c9, c4) -1 2 1 1 -select c9, c4, pad(c9, c9, c4) from t1; -c9 c4 pad(c9, c9, c4) -1 2 11 -select c9, c5, rpad(c9, c9, c5), lpad(c9, c9, c5) from t1; -c9 c5 rpad(c9, c9, c5) lpad(c9, c9, c5) -1 1 1 1 -select c9, c5, pad(c9, c9, c5) from t1; -c9 c5 pad(c9, c9, c5) -1 1 1 -select c9, c6, rpad(c9, c9, c6), lpad(c9, c9, c6) from t1; -c9 c6 rpad(c9, c9, c6) lpad(c9, c9, c6) -1 2 1 1 -select c9, c6, pad(c9, c9, c6) from t1; -c9 c6 pad(c9, c9, c6) -1 2 11 -select c9, c7, rpad(c9, c9, c7), lpad(c9, c9, c7) from t1; -c9 c7 rpad(c9, c9, c7) lpad(c9, c9, c7) -1 1 1 1 -select c9, c7, pad(c9, c9, c7) from t1; -c9 c7 pad(c9, c9, c7) -1 1 1 -select c9, c8, rpad(c9, c9, c8), lpad(c9, c9, c8) from t1; -c9 c8 rpad(c9, c9, c8) lpad(c9, c9, c8) -1 2 1 1 -select c9, c8, pad(c9, c9, c8) from t1; -c9 c8 pad(c9, c9, c8) -1 2 11 -select c9, c9, rpad(c9, c9, c9), lpad(c9, c9, c9) from t1; -c9 c9 rpad(c9, c9, c9) lpad(c9, c9, c9) -1 1 1 1 -select c9, c9, pad(c9, c9, c9) from t1; -c9 c9 pad(c9, c9, c9) -1 1 1 -select c9, c10, rpad(c9, c9, c10), lpad(c9, c9, c10) from t1; -c9 c10 rpad(c9, c9, c10) lpad(c9, c9, c10) -1 2 1 1 -select c9, c10, pad(c9, c9, c10) from t1; -c9 c10 pad(c9, c9, c10) -1 2 11 -select c9, c11, rpad(c9, c9, c11), lpad(c9, c9, c11) from t1; -c9 c11 rpad(c9, c9, c11) lpad(c9, c9, c11) -1 1 1 1 -select c9, c11, pad(c9, c9, c11) from t1; -c9 c11 pad(c9, c9, c11) -1 1 1 -select c9, c12, rpad(c9, c9, c12), lpad(c9, c9, c12) from t1; -c9 c12 rpad(c9, c9, c12) lpad(c9, c9, c12) -1 2 1 1 -select c9, c12, pad(c9, c9, c12) from t1; -c9 c12 pad(c9, c9, c12) -1 2 11 -select c9, c13, rpad(c9, c9, c13), lpad(c9, c9, c13) from t1; -c9 c13 rpad(c9, c9, c13) lpad(c9, c9, c13) -1 3.5 1 1 -select c9, c13, pad(c9, c9, c13) from t1; -c9 c13 pad(c9, c9, c13) -1 3.5 1111 -select c9, c14, rpad(c9, c9, c14), lpad(c9, c9, c14) from t1; -c9 c14 rpad(c9, c9, c14) lpad(c9, c9, c14) -1 4.5 1 1 -select c9, c14, pad(c9, c9, c14) from t1; -c9 c14 pad(c9, c9, c14) -1 4.5 1111 -select c9, c15, rpad(c9, c9, c15), lpad(c9, c9, c15) from t1; -c9 c15 rpad(c9, c9, c15) lpad(c9, c9, c15) -1 5.5 1 1 -select c9, c15, pad(c9, c9, c15) from t1; -c9 c15 pad(c9, c9, c15) -1 5.5 111111 -select c9, c16, rpad(c9, c9, c16), lpad(c9, c9, c16) from t1; -c9 c16 rpad(c9, c9, c16) lpad(c9, c9, c16) -1 6.5 1 1 -select c9, c16, pad(c9, c9, c16) from t1; -c9 c16 pad(c9, c9, c16) -1 6.5 111111 -select c9, c17, rpad(c9, c9, c17), lpad(c9, c9, c17) from t1; -c9 c17 rpad(c9, c9, c17) lpad(c9, c9, c17) -1 8 1 1 -select c9, c17, pad(c9, c9, c17) from t1; -c9 c17 pad(c9, c9, c17) -1 8 11111111 -select c9, c18, rpad(c9, c9, c18), lpad(c9, c9, c18) from t1; -c9 c18 rpad(c9, c9, c18) lpad(c9, c9, c18) -1 9 1 1 -select c9, c18, pad(c9, c9, c18) from t1; -c9 c18 pad(c9, c9, c18) -1 9 111111111 -select c9, c19, rpad(c9, c9, c19), lpad(c9, c9, c19) from t1; -c9 c19 rpad(c9, c9, c19) lpad(c9, c9, c19) -1 2019-12-01 12:00:00 1 1 -select c9, c19, pad(c9, c9, c19) from t1; -c9 c19 pad(c9, c9, c19) -1 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c9, c20, rpad(c9, c9, c20), lpad(c9, c9, c20) from t1; -c9 c20 rpad(c9, c9, c20) lpad(c9, c9, c20) -1 2019-12-03 06:00:00 1 1 -select c9, c20, pad(c9, c9, c20) from t1; -c9 c20 pad(c9, c9, c20) -1 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c9, c21, rpad(c9, c9, c21), lpad(c9, c9, c21) from t1; -c9 c21 rpad(c9, c9, c21) lpad(c9, c9, c21) -1 9.5 1 1 -select c9, c21, pad(c9, c9, c21) from t1; -c9 c21 pad(c9, c9, c21) -1 9.5 1111111111 -select c9, c22, rpad(c9, c9, c22), lpad(c9, c9, c22) from t1; -c9 c22 rpad(c9, c9, c22) lpad(c9, c9, c22) -1 10.5 1 1 -select c9, c22, pad(c9, c9, c22) from t1; -c9 c22 pad(c9, c9, c22) -1 10.5 11111111111 -select c10, c1, rpad(c10, c10, c1), lpad(c10, c10, c1) from t1; -c10 c1 rpad(c10, c10, c1) lpad(c10, c10, c1) -2 1 21 12 -select c10, c1, pad(c10, c10, c1) from t1; -c10 c1 pad(c10, c10, c1) -2 1 2 -select c10, c2, rpad(c10, c10, c2), lpad(c10, c10, c2) from t1; -c10 c2 rpad(c10, c10, c2) lpad(c10, c10, c2) -2 2 22 22 -select c10, c2, pad(c10, c10, c2) from t1; -c10 c2 pad(c10, c10, c2) -2 2 22 -select c10, c3, rpad(c10, c10, c3), lpad(c10, c10, c3) from t1; -c10 c3 rpad(c10, c10, c3) lpad(c10, c10, c3) -2 1 21 12 -select c10, c3, pad(c10, c10, c3) from t1; -c10 c3 pad(c10, c10, c3) -2 1 2 -select c10, c4, rpad(c10, c10, c4), lpad(c10, c10, c4) from t1; -c10 c4 rpad(c10, c10, c4) lpad(c10, c10, c4) -2 2 22 22 -select c10, c4, pad(c10, c10, c4) from t1; -c10 c4 pad(c10, c10, c4) -2 2 22 -select c10, c5, rpad(c10, c10, c5), lpad(c10, c10, c5) from t1; -c10 c5 rpad(c10, c10, c5) lpad(c10, c10, c5) -2 1 21 12 -select c10, c5, pad(c10, c10, c5) from t1; -c10 c5 pad(c10, c10, c5) -2 1 2 -select c10, c6, rpad(c10, c10, c6), lpad(c10, c10, c6) from t1; -c10 c6 rpad(c10, c10, c6) lpad(c10, c10, c6) -2 2 22 22 -select c10, c6, pad(c10, c10, c6) from t1; -c10 c6 pad(c10, c10, c6) -2 2 22 -select c10, c7, rpad(c10, c10, c7), lpad(c10, c10, c7) from t1; -c10 c7 rpad(c10, c10, c7) lpad(c10, c10, c7) -2 1 21 12 -select c10, c7, pad(c10, c10, c7) from t1; -c10 c7 pad(c10, c10, c7) -2 1 2 -select c10, c8, rpad(c10, c10, c8), lpad(c10, c10, c8) from t1; -c10 c8 rpad(c10, c10, c8) lpad(c10, c10, c8) -2 2 22 22 -select c10, c8, pad(c10, c10, c8) from t1; -c10 c8 pad(c10, c10, c8) -2 2 22 -select c10, c9, rpad(c10, c10, c9), lpad(c10, c10, c9) from t1; -c10 c9 rpad(c10, c10, c9) lpad(c10, c10, c9) -2 1 21 12 -select c10, c9, pad(c10, c10, c9) from t1; -c10 c9 pad(c10, c10, c9) -2 1 2 -select c10, c10, rpad(c10, c10, c10), lpad(c10, c10, c10) from t1; -c10 c10 rpad(c10, c10, c10) lpad(c10, c10, c10) -2 2 22 22 -select c10, c10, pad(c10, c10, c10) from t1; -c10 c10 pad(c10, c10, c10) -2 2 22 -select c10, c11, rpad(c10, c10, c11), lpad(c10, c10, c11) from t1; -c10 c11 rpad(c10, c10, c11) lpad(c10, c10, c11) -2 1 21 12 -select c10, c11, pad(c10, c10, c11) from t1; -c10 c11 pad(c10, c10, c11) -2 1 2 -select c10, c12, rpad(c10, c10, c12), lpad(c10, c10, c12) from t1; -c10 c12 rpad(c10, c10, c12) lpad(c10, c10, c12) -2 2 22 22 -select c10, c12, pad(c10, c10, c12) from t1; -c10 c12 pad(c10, c10, c12) -2 2 22 -select c10, c13, rpad(c10, c10, c13), lpad(c10, c10, c13) from t1; -c10 c13 rpad(c10, c10, c13) lpad(c10, c10, c13) -2 3.5 23 32 -select c10, c13, pad(c10, c10, c13) from t1; -c10 c13 pad(c10, c10, c13) -2 3.5 2222 -select c10, c14, rpad(c10, c10, c14), lpad(c10, c10, c14) from t1; -c10 c14 rpad(c10, c10, c14) lpad(c10, c10, c14) -2 4.5 24 42 -select c10, c14, pad(c10, c10, c14) from t1; -c10 c14 pad(c10, c10, c14) -2 4.5 2222 -select c10, c15, rpad(c10, c10, c15), lpad(c10, c10, c15) from t1; -c10 c15 rpad(c10, c10, c15) lpad(c10, c10, c15) -2 5.5 25 52 -select c10, c15, pad(c10, c10, c15) from t1; -c10 c15 pad(c10, c10, c15) -2 5.5 222222 -select c10, c16, rpad(c10, c10, c16), lpad(c10, c10, c16) from t1; -c10 c16 rpad(c10, c10, c16) lpad(c10, c10, c16) -2 6.5 26 62 -select c10, c16, pad(c10, c10, c16) from t1; -c10 c16 pad(c10, c10, c16) -2 6.5 222222 -select c10, c17, rpad(c10, c10, c17), lpad(c10, c10, c17) from t1; -c10 c17 rpad(c10, c10, c17) lpad(c10, c10, c17) -2 8 28 82 -select c10, c17, pad(c10, c10, c17) from t1; -c10 c17 pad(c10, c10, c17) -2 8 22222222 -select c10, c18, rpad(c10, c10, c18), lpad(c10, c10, c18) from t1; -c10 c18 rpad(c10, c10, c18) lpad(c10, c10, c18) -2 9 29 92 -select c10, c18, pad(c10, c10, c18) from t1; -c10 c18 pad(c10, c10, c18) -2 9 222222222 -select c10, c19, rpad(c10, c10, c19), lpad(c10, c10, c19) from t1; -c10 c19 rpad(c10, c10, c19) lpad(c10, c10, c19) -2 2019-12-01 12:00:00 22 22 -select c10, c19, pad(c10, c10, c19) from t1; -c10 c19 pad(c10, c10, c19) -2 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c10, c20, rpad(c10, c10, c20), lpad(c10, c10, c20) from t1; -c10 c20 rpad(c10, c10, c20) lpad(c10, c10, c20) -2 2019-12-03 06:00:00 22 22 -select c10, c20, pad(c10, c10, c20) from t1; -c10 c20 pad(c10, c10, c20) -2 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c10, c21, rpad(c10, c10, c21), lpad(c10, c10, c21) from t1; -c10 c21 rpad(c10, c10, c21) lpad(c10, c10, c21) -2 9.5 29 92 -select c10, c21, pad(c10, c10, c21) from t1; -c10 c21 pad(c10, c10, c21) -2 9.5 2222222222 -select c10, c22, rpad(c10, c10, c22), lpad(c10, c10, c22) from t1; -c10 c22 rpad(c10, c10, c22) lpad(c10, c10, c22) -2 10.5 21 12 -select c10, c22, pad(c10, c10, c22) from t1; -c10 c22 pad(c10, c10, c22) -2 10.5 22222222222 -select c11, c1, rpad(c11, c11, c1), lpad(c11, c11, c1) from t1; -c11 c1 rpad(c11, c11, c1) lpad(c11, c11, c1) -1 1 1 1 -select c11, c1, pad(c11, c11, c1) from t1; -c11 c1 pad(c11, c11, c1) -1 1 1 -select c11, c2, rpad(c11, c11, c2), lpad(c11, c11, c2) from t1; -c11 c2 rpad(c11, c11, c2) lpad(c11, c11, c2) -1 2 1 1 -select c11, c2, pad(c11, c11, c2) from t1; -c11 c2 pad(c11, c11, c2) -1 2 11 -select c11, c3, rpad(c11, c11, c3), lpad(c11, c11, c3) from t1; -c11 c3 rpad(c11, c11, c3) lpad(c11, c11, c3) -1 1 1 1 -select c11, c3, pad(c11, c11, c3) from t1; -c11 c3 pad(c11, c11, c3) -1 1 1 -select c11, c4, rpad(c11, c11, c4), lpad(c11, c11, c4) from t1; -c11 c4 rpad(c11, c11, c4) lpad(c11, c11, c4) -1 2 1 1 -select c11, c4, pad(c11, c11, c4) from t1; -c11 c4 pad(c11, c11, c4) -1 2 11 -select c11, c5, rpad(c11, c11, c5), lpad(c11, c11, c5) from t1; -c11 c5 rpad(c11, c11, c5) lpad(c11, c11, c5) -1 1 1 1 -select c11, c5, pad(c11, c11, c5) from t1; -c11 c5 pad(c11, c11, c5) -1 1 1 -select c11, c6, rpad(c11, c11, c6), lpad(c11, c11, c6) from t1; -c11 c6 rpad(c11, c11, c6) lpad(c11, c11, c6) -1 2 1 1 -select c11, c6, pad(c11, c11, c6) from t1; -c11 c6 pad(c11, c11, c6) -1 2 11 -select c11, c7, rpad(c11, c11, c7), lpad(c11, c11, c7) from t1; -c11 c7 rpad(c11, c11, c7) lpad(c11, c11, c7) -1 1 1 1 -select c11, c7, pad(c11, c11, c7) from t1; -c11 c7 pad(c11, c11, c7) -1 1 1 -select c11, c8, rpad(c11, c11, c8), lpad(c11, c11, c8) from t1; -c11 c8 rpad(c11, c11, c8) lpad(c11, c11, c8) -1 2 1 1 -select c11, c8, pad(c11, c11, c8) from t1; -c11 c8 pad(c11, c11, c8) -1 2 11 -select c11, c9, rpad(c11, c11, c9), lpad(c11, c11, c9) from t1; -c11 c9 rpad(c11, c11, c9) lpad(c11, c11, c9) -1 1 1 1 -select c11, c9, pad(c11, c11, c9) from t1; -c11 c9 pad(c11, c11, c9) -1 1 1 -select c11, c10, rpad(c11, c11, c10), lpad(c11, c11, c10) from t1; -c11 c10 rpad(c11, c11, c10) lpad(c11, c11, c10) -1 2 1 1 -select c11, c10, pad(c11, c11, c10) from t1; -c11 c10 pad(c11, c11, c10) -1 2 11 -select c11, c11, rpad(c11, c11, c11), lpad(c11, c11, c11) from t1; -c11 c11 rpad(c11, c11, c11) lpad(c11, c11, c11) -1 1 1 1 -select c11, c11, pad(c11, c11, c11) from t1; -c11 c11 pad(c11, c11, c11) -1 1 1 -select c11, c12, rpad(c11, c11, c12), lpad(c11, c11, c12) from t1; -c11 c12 rpad(c11, c11, c12) lpad(c11, c11, c12) -1 2 1 1 -select c11, c12, pad(c11, c11, c12) from t1; -c11 c12 pad(c11, c11, c12) -1 2 11 -select c11, c13, rpad(c11, c11, c13), lpad(c11, c11, c13) from t1; -c11 c13 rpad(c11, c11, c13) lpad(c11, c11, c13) -1 3.5 1 1 -select c11, c13, pad(c11, c11, c13) from t1; -c11 c13 pad(c11, c11, c13) -1 3.5 1111 -select c11, c14, rpad(c11, c11, c14), lpad(c11, c11, c14) from t1; -c11 c14 rpad(c11, c11, c14) lpad(c11, c11, c14) -1 4.5 1 1 -select c11, c14, pad(c11, c11, c14) from t1; -c11 c14 pad(c11, c11, c14) -1 4.5 1111 -select c11, c15, rpad(c11, c11, c15), lpad(c11, c11, c15) from t1; -c11 c15 rpad(c11, c11, c15) lpad(c11, c11, c15) -1 5.5 1 1 -select c11, c15, pad(c11, c11, c15) from t1; -c11 c15 pad(c11, c11, c15) -1 5.5 111111 -select c11, c16, rpad(c11, c11, c16), lpad(c11, c11, c16) from t1; -c11 c16 rpad(c11, c11, c16) lpad(c11, c11, c16) -1 6.5 1 1 -select c11, c16, pad(c11, c11, c16) from t1; -c11 c16 pad(c11, c11, c16) -1 6.5 111111 -select c11, c17, rpad(c11, c11, c17), lpad(c11, c11, c17) from t1; -c11 c17 rpad(c11, c11, c17) lpad(c11, c11, c17) -1 8 1 1 -select c11, c17, pad(c11, c11, c17) from t1; -c11 c17 pad(c11, c11, c17) -1 8 11111111 -select c11, c18, rpad(c11, c11, c18), lpad(c11, c11, c18) from t1; -c11 c18 rpad(c11, c11, c18) lpad(c11, c11, c18) -1 9 1 1 -select c11, c18, pad(c11, c11, c18) from t1; -c11 c18 pad(c11, c11, c18) -1 9 111111111 -select c11, c19, rpad(c11, c11, c19), lpad(c11, c11, c19) from t1; -c11 c19 rpad(c11, c11, c19) lpad(c11, c11, c19) -1 2019-12-01 12:00:00 1 1 -select c11, c19, pad(c11, c11, c19) from t1; -c11 c19 pad(c11, c11, c19) -1 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c11, c20, rpad(c11, c11, c20), lpad(c11, c11, c20) from t1; -c11 c20 rpad(c11, c11, c20) lpad(c11, c11, c20) -1 2019-12-03 06:00:00 1 1 -select c11, c20, pad(c11, c11, c20) from t1; -c11 c20 pad(c11, c11, c20) -1 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c11, c21, rpad(c11, c11, c21), lpad(c11, c11, c21) from t1; -c11 c21 rpad(c11, c11, c21) lpad(c11, c11, c21) -1 9.5 1 1 -select c11, c21, pad(c11, c11, c21) from t1; -c11 c21 pad(c11, c11, c21) -1 9.5 1111111111 -select c11, c22, rpad(c11, c11, c22), lpad(c11, c11, c22) from t1; -c11 c22 rpad(c11, c11, c22) lpad(c11, c11, c22) -1 10.5 1 1 -select c11, c22, pad(c11, c11, c22) from t1; -c11 c22 pad(c11, c11, c22) -1 10.5 11111111111 -select c12, c1, rpad(c12, c12, c1), lpad(c12, c12, c1) from t1; -c12 c1 rpad(c12, c12, c1) lpad(c12, c12, c1) -2 1 21 12 -select c12, c1, pad(c12, c12, c1) from t1; -c12 c1 pad(c12, c12, c1) -2 1 2 -select c12, c2, rpad(c12, c12, c2), lpad(c12, c12, c2) from t1; -c12 c2 rpad(c12, c12, c2) lpad(c12, c12, c2) -2 2 22 22 -select c12, c2, pad(c12, c12, c2) from t1; -c12 c2 pad(c12, c12, c2) -2 2 22 -select c12, c3, rpad(c12, c12, c3), lpad(c12, c12, c3) from t1; -c12 c3 rpad(c12, c12, c3) lpad(c12, c12, c3) -2 1 21 12 -select c12, c3, pad(c12, c12, c3) from t1; -c12 c3 pad(c12, c12, c3) -2 1 2 -select c12, c4, rpad(c12, c12, c4), lpad(c12, c12, c4) from t1; -c12 c4 rpad(c12, c12, c4) lpad(c12, c12, c4) -2 2 22 22 -select c12, c4, pad(c12, c12, c4) from t1; -c12 c4 pad(c12, c12, c4) -2 2 22 -select c12, c5, rpad(c12, c12, c5), lpad(c12, c12, c5) from t1; -c12 c5 rpad(c12, c12, c5) lpad(c12, c12, c5) -2 1 21 12 -select c12, c5, pad(c12, c12, c5) from t1; -c12 c5 pad(c12, c12, c5) -2 1 2 -select c12, c6, rpad(c12, c12, c6), lpad(c12, c12, c6) from t1; -c12 c6 rpad(c12, c12, c6) lpad(c12, c12, c6) -2 2 22 22 -select c12, c6, pad(c12, c12, c6) from t1; -c12 c6 pad(c12, c12, c6) -2 2 22 -select c12, c7, rpad(c12, c12, c7), lpad(c12, c12, c7) from t1; -c12 c7 rpad(c12, c12, c7) lpad(c12, c12, c7) -2 1 21 12 -select c12, c7, pad(c12, c12, c7) from t1; -c12 c7 pad(c12, c12, c7) -2 1 2 -select c12, c8, rpad(c12, c12, c8), lpad(c12, c12, c8) from t1; -c12 c8 rpad(c12, c12, c8) lpad(c12, c12, c8) -2 2 22 22 -select c12, c8, pad(c12, c12, c8) from t1; -c12 c8 pad(c12, c12, c8) -2 2 22 -select c12, c9, rpad(c12, c12, c9), lpad(c12, c12, c9) from t1; -c12 c9 rpad(c12, c12, c9) lpad(c12, c12, c9) -2 1 21 12 -select c12, c9, pad(c12, c12, c9) from t1; -c12 c9 pad(c12, c12, c9) -2 1 2 -select c12, c10, rpad(c12, c12, c10), lpad(c12, c12, c10) from t1; -c12 c10 rpad(c12, c12, c10) lpad(c12, c12, c10) -2 2 22 22 -select c12, c10, pad(c12, c12, c10) from t1; -c12 c10 pad(c12, c12, c10) -2 2 22 -select c12, c11, rpad(c12, c12, c11), lpad(c12, c12, c11) from t1; -c12 c11 rpad(c12, c12, c11) lpad(c12, c12, c11) -2 1 21 12 -select c12, c11, pad(c12, c12, c11) from t1; -c12 c11 pad(c12, c12, c11) -2 1 2 -select c12, c12, rpad(c12, c12, c12), lpad(c12, c12, c12) from t1; -c12 c12 rpad(c12, c12, c12) lpad(c12, c12, c12) -2 2 22 22 -select c12, c12, pad(c12, c12, c12) from t1; -c12 c12 pad(c12, c12, c12) -2 2 22 -select c12, c13, rpad(c12, c12, c13), lpad(c12, c12, c13) from t1; -c12 c13 rpad(c12, c12, c13) lpad(c12, c12, c13) -2 3.5 23 32 -select c12, c13, pad(c12, c12, c13) from t1; -c12 c13 pad(c12, c12, c13) -2 3.5 2222 -select c12, c14, rpad(c12, c12, c14), lpad(c12, c12, c14) from t1; -c12 c14 rpad(c12, c12, c14) lpad(c12, c12, c14) -2 4.5 24 42 -select c12, c14, pad(c12, c12, c14) from t1; -c12 c14 pad(c12, c12, c14) -2 4.5 2222 -select c12, c15, rpad(c12, c12, c15), lpad(c12, c12, c15) from t1; -c12 c15 rpad(c12, c12, c15) lpad(c12, c12, c15) -2 5.5 25 52 -select c12, c15, pad(c12, c12, c15) from t1; -c12 c15 pad(c12, c12, c15) -2 5.5 222222 -select c12, c16, rpad(c12, c12, c16), lpad(c12, c12, c16) from t1; -c12 c16 rpad(c12, c12, c16) lpad(c12, c12, c16) -2 6.5 26 62 -select c12, c16, pad(c12, c12, c16) from t1; -c12 c16 pad(c12, c12, c16) -2 6.5 222222 -select c12, c17, rpad(c12, c12, c17), lpad(c12, c12, c17) from t1; -c12 c17 rpad(c12, c12, c17) lpad(c12, c12, c17) -2 8 28 82 -select c12, c17, pad(c12, c12, c17) from t1; -c12 c17 pad(c12, c12, c17) -2 8 22222222 -select c12, c18, rpad(c12, c12, c18), lpad(c12, c12, c18) from t1; -c12 c18 rpad(c12, c12, c18) lpad(c12, c12, c18) -2 9 29 92 -select c12, c18, pad(c12, c12, c18) from t1; -c12 c18 pad(c12, c12, c18) -2 9 222222222 -select c12, c19, rpad(c12, c12, c19), lpad(c12, c12, c19) from t1; -c12 c19 rpad(c12, c12, c19) lpad(c12, c12, c19) -2 2019-12-01 12:00:00 22 22 -select c12, c19, pad(c12, c12, c19) from t1; -c12 c19 pad(c12, c12, c19) -2 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c12, c20, rpad(c12, c12, c20), lpad(c12, c12, c20) from t1; -c12 c20 rpad(c12, c12, c20) lpad(c12, c12, c20) -2 2019-12-03 06:00:00 22 22 -select c12, c20, pad(c12, c12, c20) from t1; -c12 c20 pad(c12, c12, c20) -2 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c12, c21, rpad(c12, c12, c21), lpad(c12, c12, c21) from t1; -c12 c21 rpad(c12, c12, c21) lpad(c12, c12, c21) -2 9.5 29 92 -select c12, c21, pad(c12, c12, c21) from t1; -c12 c21 pad(c12, c12, c21) -2 9.5 2222222222 -select c12, c22, rpad(c12, c12, c22), lpad(c12, c12, c22) from t1; -c12 c22 rpad(c12, c12, c22) lpad(c12, c12, c22) -2 10.5 21 12 -select c12, c22, pad(c12, c12, c22) from t1; -c12 c22 pad(c12, c12, c22) -2 10.5 22222222222 -select c13, c1, rpad(c13, c13, c1), lpad(c13, c13, c1) from t1; -c13 c1 rpad(c13, c13, c1) lpad(c13, c13, c1) -3.5 1 3.51 13.5 -select c13, c1, pad(c13, c13, c1) from t1; -c13 c1 pad(c13, c13, c1) -3.5 1 3.5 -select c13, c2, rpad(c13, c13, c2), lpad(c13, c13, c2) from t1; -c13 c2 rpad(c13, c13, c2) lpad(c13, c13, c2) -3.5 2 3.52 23.5 -select c13, c2, pad(c13, c13, c2) from t1; -c13 c2 pad(c13, c13, c2) -3.5 2 3.5 -select c13, c3, rpad(c13, c13, c3), lpad(c13, c13, c3) from t1; -c13 c3 rpad(c13, c13, c3) lpad(c13, c13, c3) -3.5 1 3.51 13.5 -select c13, c3, pad(c13, c13, c3) from t1; -c13 c3 pad(c13, c13, c3) -3.5 1 3.5 -select c13, c4, rpad(c13, c13, c4), lpad(c13, c13, c4) from t1; -c13 c4 rpad(c13, c13, c4) lpad(c13, c13, c4) -3.5 2 3.52 23.5 -select c13, c4, pad(c13, c13, c4) from t1; -c13 c4 pad(c13, c13, c4) -3.5 2 3.5 -select c13, c5, rpad(c13, c13, c5), lpad(c13, c13, c5) from t1; -c13 c5 rpad(c13, c13, c5) lpad(c13, c13, c5) -3.5 1 3.51 13.5 -select c13, c5, pad(c13, c13, c5) from t1; -c13 c5 pad(c13, c13, c5) -3.5 1 3.5 -select c13, c6, rpad(c13, c13, c6), lpad(c13, c13, c6) from t1; -c13 c6 rpad(c13, c13, c6) lpad(c13, c13, c6) -3.5 2 3.52 23.5 -select c13, c6, pad(c13, c13, c6) from t1; -c13 c6 pad(c13, c13, c6) -3.5 2 3.5 -select c13, c7, rpad(c13, c13, c7), lpad(c13, c13, c7) from t1; -c13 c7 rpad(c13, c13, c7) lpad(c13, c13, c7) -3.5 1 3.51 13.5 -select c13, c7, pad(c13, c13, c7) from t1; -c13 c7 pad(c13, c13, c7) -3.5 1 3.5 -select c13, c8, rpad(c13, c13, c8), lpad(c13, c13, c8) from t1; -c13 c8 rpad(c13, c13, c8) lpad(c13, c13, c8) -3.5 2 3.52 23.5 -select c13, c8, pad(c13, c13, c8) from t1; -c13 c8 pad(c13, c13, c8) -3.5 2 3.5 -select c13, c9, rpad(c13, c13, c9), lpad(c13, c13, c9) from t1; -c13 c9 rpad(c13, c13, c9) lpad(c13, c13, c9) -3.5 1 3.51 13.5 -select c13, c9, pad(c13, c13, c9) from t1; -c13 c9 pad(c13, c13, c9) -3.5 1 3.5 -select c13, c10, rpad(c13, c13, c10), lpad(c13, c13, c10) from t1; -c13 c10 rpad(c13, c13, c10) lpad(c13, c13, c10) -3.5 2 3.52 23.5 -select c13, c10, pad(c13, c13, c10) from t1; -c13 c10 pad(c13, c13, c10) -3.5 2 3.5 -select c13, c11, rpad(c13, c13, c11), lpad(c13, c13, c11) from t1; -c13 c11 rpad(c13, c13, c11) lpad(c13, c13, c11) -3.5 1 3.51 13.5 -select c13, c11, pad(c13, c13, c11) from t1; -c13 c11 pad(c13, c13, c11) -3.5 1 3.5 -select c13, c12, rpad(c13, c13, c12), lpad(c13, c13, c12) from t1; -c13 c12 rpad(c13, c13, c12) lpad(c13, c13, c12) -3.5 2 3.52 23.5 -select c13, c12, pad(c13, c13, c12) from t1; -c13 c12 pad(c13, c13, c12) -3.5 2 3.5 -select c13, c13, rpad(c13, c13, c13), lpad(c13, c13, c13) from t1; -c13 c13 rpad(c13, c13, c13) lpad(c13, c13, c13) -3.5 3.5 3.53 33.5 -select c13, c13, pad(c13, c13, c13) from t1; -c13 c13 pad(c13, c13, c13) -3.5 3.5 3.53 -select c13, c14, rpad(c13, c13, c14), lpad(c13, c13, c14) from t1; -c13 c14 rpad(c13, c13, c14) lpad(c13, c13, c14) -3.5 4.5 3.54 43.5 -select c13, c14, pad(c13, c13, c14) from t1; -c13 c14 pad(c13, c13, c14) -3.5 4.5 3.53 -select c13, c15, rpad(c13, c13, c15), lpad(c13, c13, c15) from t1; -c13 c15 rpad(c13, c13, c15) lpad(c13, c13, c15) -3.5 5.5 3.55 53.5 -select c13, c15, pad(c13, c13, c15) from t1; -c13 c15 pad(c13, c13, c15) -3.5 5.5 3.53.5 -select c13, c16, rpad(c13, c13, c16), lpad(c13, c13, c16) from t1; -c13 c16 rpad(c13, c13, c16) lpad(c13, c13, c16) -3.5 6.5 3.56 63.5 -select c13, c16, pad(c13, c13, c16) from t1; -c13 c16 pad(c13, c13, c16) -3.5 6.5 3.53.5 -select c13, c17, rpad(c13, c13, c17), lpad(c13, c13, c17) from t1; -c13 c17 rpad(c13, c13, c17) lpad(c13, c13, c17) -3.5 8 3.58 83.5 -select c13, c17, pad(c13, c13, c17) from t1; -c13 c17 pad(c13, c13, c17) -3.5 8 3.53.53. -select c13, c18, rpad(c13, c13, c18), lpad(c13, c13, c18) from t1; -c13 c18 rpad(c13, c13, c18) lpad(c13, c13, c18) -3.5 9 3.59 93.5 -select c13, c18, pad(c13, c13, c18) from t1; -c13 c18 pad(c13, c13, c18) -3.5 9 3.53.53.5 -select c13, c19, rpad(c13, c13, c19), lpad(c13, c13, c19) from t1; -c13 c19 rpad(c13, c13, c19) lpad(c13, c13, c19) -3.5 2019-12-01 12:00:00 3.52 23.5 -select c13, c19, pad(c13, c13, c19) from t1; -c13 c19 pad(c13, c13, c19) -3.5 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c13, c20, rpad(c13, c13, c20), lpad(c13, c13, c20) from t1; -c13 c20 rpad(c13, c13, c20) lpad(c13, c13, c20) -3.5 2019-12-03 06:00:00 3.52 23.5 -select c13, c20, pad(c13, c13, c20) from t1; -c13 c20 pad(c13, c13, c20) -3.5 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c13, c21, rpad(c13, c13, c21), lpad(c13, c13, c21) from t1; -c13 c21 rpad(c13, c13, c21) lpad(c13, c13, c21) -3.5 9.5 3.59 93.5 -select c13, c21, pad(c13, c13, c21) from t1; -c13 c21 pad(c13, c13, c21) -3.5 9.5 3.53.53.53 -select c13, c22, rpad(c13, c13, c22), lpad(c13, c13, c22) from t1; -c13 c22 rpad(c13, c13, c22) lpad(c13, c13, c22) -3.5 10.5 3.51 13.5 -select c13, c22, pad(c13, c13, c22) from t1; -c13 c22 pad(c13, c13, c22) -3.5 10.5 3.53.53.53. -select c14, c1, rpad(c14, c14, c1), lpad(c14, c14, c1) from t1; -c14 c1 rpad(c14, c14, c1) lpad(c14, c14, c1) -4.5 1 4.51 14.5 -select c14, c1, pad(c14, c14, c1) from t1; -c14 c1 pad(c14, c14, c1) -4.5 1 4.5 -select c14, c2, rpad(c14, c14, c2), lpad(c14, c14, c2) from t1; -c14 c2 rpad(c14, c14, c2) lpad(c14, c14, c2) -4.5 2 4.52 24.5 -select c14, c2, pad(c14, c14, c2) from t1; -c14 c2 pad(c14, c14, c2) -4.5 2 4.5 -select c14, c3, rpad(c14, c14, c3), lpad(c14, c14, c3) from t1; -c14 c3 rpad(c14, c14, c3) lpad(c14, c14, c3) -4.5 1 4.51 14.5 -select c14, c3, pad(c14, c14, c3) from t1; -c14 c3 pad(c14, c14, c3) -4.5 1 4.5 -select c14, c4, rpad(c14, c14, c4), lpad(c14, c14, c4) from t1; -c14 c4 rpad(c14, c14, c4) lpad(c14, c14, c4) -4.5 2 4.52 24.5 -select c14, c4, pad(c14, c14, c4) from t1; -c14 c4 pad(c14, c14, c4) -4.5 2 4.5 -select c14, c5, rpad(c14, c14, c5), lpad(c14, c14, c5) from t1; -c14 c5 rpad(c14, c14, c5) lpad(c14, c14, c5) -4.5 1 4.51 14.5 -select c14, c5, pad(c14, c14, c5) from t1; -c14 c5 pad(c14, c14, c5) -4.5 1 4.5 -select c14, c6, rpad(c14, c14, c6), lpad(c14, c14, c6) from t1; -c14 c6 rpad(c14, c14, c6) lpad(c14, c14, c6) -4.5 2 4.52 24.5 -select c14, c6, pad(c14, c14, c6) from t1; -c14 c6 pad(c14, c14, c6) -4.5 2 4.5 -select c14, c7, rpad(c14, c14, c7), lpad(c14, c14, c7) from t1; -c14 c7 rpad(c14, c14, c7) lpad(c14, c14, c7) -4.5 1 4.51 14.5 -select c14, c7, pad(c14, c14, c7) from t1; -c14 c7 pad(c14, c14, c7) -4.5 1 4.5 -select c14, c8, rpad(c14, c14, c8), lpad(c14, c14, c8) from t1; -c14 c8 rpad(c14, c14, c8) lpad(c14, c14, c8) -4.5 2 4.52 24.5 -select c14, c8, pad(c14, c14, c8) from t1; -c14 c8 pad(c14, c14, c8) -4.5 2 4.5 -select c14, c9, rpad(c14, c14, c9), lpad(c14, c14, c9) from t1; -c14 c9 rpad(c14, c14, c9) lpad(c14, c14, c9) -4.5 1 4.51 14.5 -select c14, c9, pad(c14, c14, c9) from t1; -c14 c9 pad(c14, c14, c9) -4.5 1 4.5 -select c14, c10, rpad(c14, c14, c10), lpad(c14, c14, c10) from t1; -c14 c10 rpad(c14, c14, c10) lpad(c14, c14, c10) -4.5 2 4.52 24.5 -select c14, c10, pad(c14, c14, c10) from t1; -c14 c10 pad(c14, c14, c10) -4.5 2 4.5 -select c14, c11, rpad(c14, c14, c11), lpad(c14, c14, c11) from t1; -c14 c11 rpad(c14, c14, c11) lpad(c14, c14, c11) -4.5 1 4.51 14.5 -select c14, c11, pad(c14, c14, c11) from t1; -c14 c11 pad(c14, c14, c11) -4.5 1 4.5 -select c14, c12, rpad(c14, c14, c12), lpad(c14, c14, c12) from t1; -c14 c12 rpad(c14, c14, c12) lpad(c14, c14, c12) -4.5 2 4.52 24.5 -select c14, c12, pad(c14, c14, c12) from t1; -c14 c12 pad(c14, c14, c12) -4.5 2 4.5 -select c14, c13, rpad(c14, c14, c13), lpad(c14, c14, c13) from t1; -c14 c13 rpad(c14, c14, c13) lpad(c14, c14, c13) -4.5 3.5 4.53 34.5 -select c14, c13, pad(c14, c14, c13) from t1; -c14 c13 pad(c14, c14, c13) -4.5 3.5 4.54 -select c14, c14, rpad(c14, c14, c14), lpad(c14, c14, c14) from t1; -c14 c14 rpad(c14, c14, c14) lpad(c14, c14, c14) -4.5 4.5 4.54 44.5 -select c14, c14, pad(c14, c14, c14) from t1; -c14 c14 pad(c14, c14, c14) -4.5 4.5 4.54 -select c14, c15, rpad(c14, c14, c15), lpad(c14, c14, c15) from t1; -c14 c15 rpad(c14, c14, c15) lpad(c14, c14, c15) -4.5 5.5 4.55 54.5 -select c14, c15, pad(c14, c14, c15) from t1; -c14 c15 pad(c14, c14, c15) -4.5 5.5 4.54.5 -select c14, c16, rpad(c14, c14, c16), lpad(c14, c14, c16) from t1; -c14 c16 rpad(c14, c14, c16) lpad(c14, c14, c16) -4.5 6.5 4.56 64.5 -select c14, c16, pad(c14, c14, c16) from t1; -c14 c16 pad(c14, c14, c16) -4.5 6.5 4.54.5 -select c14, c17, rpad(c14, c14, c17), lpad(c14, c14, c17) from t1; -c14 c17 rpad(c14, c14, c17) lpad(c14, c14, c17) -4.5 8 4.58 84.5 -select c14, c17, pad(c14, c14, c17) from t1; -c14 c17 pad(c14, c14, c17) -4.5 8 4.54.54. -select c14, c18, rpad(c14, c14, c18), lpad(c14, c14, c18) from t1; -c14 c18 rpad(c14, c14, c18) lpad(c14, c14, c18) -4.5 9 4.59 94.5 -select c14, c18, pad(c14, c14, c18) from t1; -c14 c18 pad(c14, c14, c18) -4.5 9 4.54.54.5 -select c14, c19, rpad(c14, c14, c19), lpad(c14, c14, c19) from t1; -c14 c19 rpad(c14, c14, c19) lpad(c14, c14, c19) -4.5 2019-12-01 12:00:00 4.52 24.5 -select c14, c19, pad(c14, c14, c19) from t1; -c14 c19 pad(c14, c14, c19) -4.5 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c14, c20, rpad(c14, c14, c20), lpad(c14, c14, c20) from t1; -c14 c20 rpad(c14, c14, c20) lpad(c14, c14, c20) -4.5 2019-12-03 06:00:00 4.52 24.5 -select c14, c20, pad(c14, c14, c20) from t1; -c14 c20 pad(c14, c14, c20) -4.5 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c14, c21, rpad(c14, c14, c21), lpad(c14, c14, c21) from t1; -c14 c21 rpad(c14, c14, c21) lpad(c14, c14, c21) -4.5 9.5 4.59 94.5 -select c14, c21, pad(c14, c14, c21) from t1; -c14 c21 pad(c14, c14, c21) -4.5 9.5 4.54.54.54 -select c14, c22, rpad(c14, c14, c22), lpad(c14, c14, c22) from t1; -c14 c22 rpad(c14, c14, c22) lpad(c14, c14, c22) -4.5 10.5 4.51 14.5 -select c14, c22, pad(c14, c14, c22) from t1; -c14 c22 pad(c14, c14, c22) -4.5 10.5 4.54.54.54. -select c15, c1, rpad(c15, c15, c1), lpad(c15, c15, c1) from t1; -c15 c1 rpad(c15, c15, c1) lpad(c15, c15, c1) -5.5 1 5.5111 1115.5 -select c15, c1, pad(c15, c15, c1) from t1; -c15 c1 pad(c15, c15, c1) -5.5 1 5.5 -select c15, c2, rpad(c15, c15, c2), lpad(c15, c15, c2) from t1; -c15 c2 rpad(c15, c15, c2) lpad(c15, c15, c2) -5.5 2 5.5222 2225.5 -select c15, c2, pad(c15, c15, c2) from t1; -c15 c2 pad(c15, c15, c2) -5.5 2 5.5 -select c15, c3, rpad(c15, c15, c3), lpad(c15, c15, c3) from t1; -c15 c3 rpad(c15, c15, c3) lpad(c15, c15, c3) -5.5 1 5.5111 1115.5 -select c15, c3, pad(c15, c15, c3) from t1; -c15 c3 pad(c15, c15, c3) -5.5 1 5.5 -select c15, c4, rpad(c15, c15, c4), lpad(c15, c15, c4) from t1; -c15 c4 rpad(c15, c15, c4) lpad(c15, c15, c4) -5.5 2 5.5222 2225.5 -select c15, c4, pad(c15, c15, c4) from t1; -c15 c4 pad(c15, c15, c4) -5.5 2 5.5 -select c15, c5, rpad(c15, c15, c5), lpad(c15, c15, c5) from t1; -c15 c5 rpad(c15, c15, c5) lpad(c15, c15, c5) -5.5 1 5.5111 1115.5 -select c15, c5, pad(c15, c15, c5) from t1; -c15 c5 pad(c15, c15, c5) -5.5 1 5.5 -select c15, c6, rpad(c15, c15, c6), lpad(c15, c15, c6) from t1; -c15 c6 rpad(c15, c15, c6) lpad(c15, c15, c6) -5.5 2 5.5222 2225.5 -select c15, c6, pad(c15, c15, c6) from t1; -c15 c6 pad(c15, c15, c6) -5.5 2 5.5 -select c15, c7, rpad(c15, c15, c7), lpad(c15, c15, c7) from t1; -c15 c7 rpad(c15, c15, c7) lpad(c15, c15, c7) -5.5 1 5.5111 1115.5 -select c15, c7, pad(c15, c15, c7) from t1; -c15 c7 pad(c15, c15, c7) -5.5 1 5.5 -select c15, c8, rpad(c15, c15, c8), lpad(c15, c15, c8) from t1; -c15 c8 rpad(c15, c15, c8) lpad(c15, c15, c8) -5.5 2 5.5222 2225.5 -select c15, c8, pad(c15, c15, c8) from t1; -c15 c8 pad(c15, c15, c8) -5.5 2 5.5 -select c15, c9, rpad(c15, c15, c9), lpad(c15, c15, c9) from t1; -c15 c9 rpad(c15, c15, c9) lpad(c15, c15, c9) -5.5 1 5.5111 1115.5 -select c15, c9, pad(c15, c15, c9) from t1; -c15 c9 pad(c15, c15, c9) -5.5 1 5.5 -select c15, c10, rpad(c15, c15, c10), lpad(c15, c15, c10) from t1; -c15 c10 rpad(c15, c15, c10) lpad(c15, c15, c10) -5.5 2 5.5222 2225.5 -select c15, c10, pad(c15, c15, c10) from t1; -c15 c10 pad(c15, c15, c10) -5.5 2 5.5 -select c15, c11, rpad(c15, c15, c11), lpad(c15, c15, c11) from t1; -c15 c11 rpad(c15, c15, c11) lpad(c15, c15, c11) -5.5 1 5.5111 1115.5 -select c15, c11, pad(c15, c15, c11) from t1; -c15 c11 pad(c15, c15, c11) -5.5 1 5.5 -select c15, c12, rpad(c15, c15, c12), lpad(c15, c15, c12) from t1; -c15 c12 rpad(c15, c15, c12) lpad(c15, c15, c12) -5.5 2 5.5222 2225.5 -select c15, c12, pad(c15, c15, c12) from t1; -c15 c12 pad(c15, c15, c12) -5.5 2 5.5 -select c15, c13, rpad(c15, c15, c13), lpad(c15, c15, c13) from t1; -c15 c13 rpad(c15, c15, c13) lpad(c15, c15, c13) -5.5 3.5 5.53.5 3.55.5 -select c15, c13, pad(c15, c15, c13) from t1; -c15 c13 pad(c15, c15, c13) -5.5 3.5 5.55 -select c15, c14, rpad(c15, c15, c14), lpad(c15, c15, c14) from t1; -c15 c14 rpad(c15, c15, c14) lpad(c15, c15, c14) -5.5 4.5 5.54.5 4.55.5 -select c15, c14, pad(c15, c15, c14) from t1; -c15 c14 pad(c15, c15, c14) -5.5 4.5 5.55 -select c15, c15, rpad(c15, c15, c15), lpad(c15, c15, c15) from t1; -c15 c15 rpad(c15, c15, c15) lpad(c15, c15, c15) -5.5 5.5 5.55.5 5.55.5 -select c15, c15, pad(c15, c15, c15) from t1; -c15 c15 pad(c15, c15, c15) -5.5 5.5 5.55.5 -select c15, c16, rpad(c15, c15, c16), lpad(c15, c15, c16) from t1; -c15 c16 rpad(c15, c15, c16) lpad(c15, c15, c16) -5.5 6.5 5.56.5 6.55.5 -select c15, c16, pad(c15, c15, c16) from t1; -c15 c16 pad(c15, c15, c16) -5.5 6.5 5.55.5 -select c15, c17, rpad(c15, c15, c17), lpad(c15, c15, c17) from t1; -c15 c17 rpad(c15, c15, c17) lpad(c15, c15, c17) -5.5 8 5.5888 8885.5 -select c15, c17, pad(c15, c15, c17) from t1; -c15 c17 pad(c15, c15, c17) -5.5 8 5.55.55. -select c15, c18, rpad(c15, c15, c18), lpad(c15, c15, c18) from t1; -c15 c18 rpad(c15, c15, c18) lpad(c15, c15, c18) -5.5 9 5.5999 9995.5 -select c15, c18, pad(c15, c15, c18) from t1; -c15 c18 pad(c15, c15, c18) -5.5 9 5.55.55.5 -select c15, c19, rpad(c15, c15, c19), lpad(c15, c15, c19) from t1; -c15 c19 rpad(c15, c15, c19) lpad(c15, c15, c19) -5.5 2019-12-01 12:00:00 5.5201 2015.5 -select c15, c19, pad(c15, c15, c19) from t1; -c15 c19 pad(c15, c15, c19) -5.5 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c15, c20, rpad(c15, c15, c20), lpad(c15, c15, c20) from t1; -c15 c20 rpad(c15, c15, c20) lpad(c15, c15, c20) -5.5 2019-12-03 06:00:00 5.5201 2015.5 -select c15, c20, pad(c15, c15, c20) from t1; -c15 c20 pad(c15, c15, c20) -5.5 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c15, c21, rpad(c15, c15, c21), lpad(c15, c15, c21) from t1; -c15 c21 rpad(c15, c15, c21) lpad(c15, c15, c21) -5.5 9.5 5.59.5 9.55.5 -select c15, c21, pad(c15, c15, c21) from t1; -c15 c21 pad(c15, c15, c21) -5.5 9.5 5.55.55.55 -select c15, c22, rpad(c15, c15, c22), lpad(c15, c15, c22) from t1; -c15 c22 rpad(c15, c15, c22) lpad(c15, c15, c22) -5.5 10.5 5.510. 10.5.5 -select c15, c22, pad(c15, c15, c22) from t1; -c15 c22 pad(c15, c15, c22) -5.5 10.5 5.55.55.55. -select c16, c1, rpad(c16, c16, c1), lpad(c16, c16, c1) from t1; -c16 c1 rpad(c16, c16, c1) lpad(c16, c16, c1) -6.5 1 6.5111 1116.5 -select c16, c1, pad(c16, c16, c1) from t1; -c16 c1 pad(c16, c16, c1) -6.5 1 6.5 -select c16, c2, rpad(c16, c16, c2), lpad(c16, c16, c2) from t1; -c16 c2 rpad(c16, c16, c2) lpad(c16, c16, c2) -6.5 2 6.5222 2226.5 -select c16, c2, pad(c16, c16, c2) from t1; -c16 c2 pad(c16, c16, c2) -6.5 2 6.5 -select c16, c3, rpad(c16, c16, c3), lpad(c16, c16, c3) from t1; -c16 c3 rpad(c16, c16, c3) lpad(c16, c16, c3) -6.5 1 6.5111 1116.5 -select c16, c3, pad(c16, c16, c3) from t1; -c16 c3 pad(c16, c16, c3) -6.5 1 6.5 -select c16, c4, rpad(c16, c16, c4), lpad(c16, c16, c4) from t1; -c16 c4 rpad(c16, c16, c4) lpad(c16, c16, c4) -6.5 2 6.5222 2226.5 -select c16, c4, pad(c16, c16, c4) from t1; -c16 c4 pad(c16, c16, c4) -6.5 2 6.5 -select c16, c5, rpad(c16, c16, c5), lpad(c16, c16, c5) from t1; -c16 c5 rpad(c16, c16, c5) lpad(c16, c16, c5) -6.5 1 6.5111 1116.5 -select c16, c5, pad(c16, c16, c5) from t1; -c16 c5 pad(c16, c16, c5) -6.5 1 6.5 -select c16, c6, rpad(c16, c16, c6), lpad(c16, c16, c6) from t1; -c16 c6 rpad(c16, c16, c6) lpad(c16, c16, c6) -6.5 2 6.5222 2226.5 -select c16, c6, pad(c16, c16, c6) from t1; -c16 c6 pad(c16, c16, c6) -6.5 2 6.5 -select c16, c7, rpad(c16, c16, c7), lpad(c16, c16, c7) from t1; -c16 c7 rpad(c16, c16, c7) lpad(c16, c16, c7) -6.5 1 6.5111 1116.5 -select c16, c7, pad(c16, c16, c7) from t1; -c16 c7 pad(c16, c16, c7) -6.5 1 6.5 -select c16, c8, rpad(c16, c16, c8), lpad(c16, c16, c8) from t1; -c16 c8 rpad(c16, c16, c8) lpad(c16, c16, c8) -6.5 2 6.5222 2226.5 -select c16, c8, pad(c16, c16, c8) from t1; -c16 c8 pad(c16, c16, c8) -6.5 2 6.5 -select c16, c9, rpad(c16, c16, c9), lpad(c16, c16, c9) from t1; -c16 c9 rpad(c16, c16, c9) lpad(c16, c16, c9) -6.5 1 6.5111 1116.5 -select c16, c9, pad(c16, c16, c9) from t1; -c16 c9 pad(c16, c16, c9) -6.5 1 6.5 -select c16, c10, rpad(c16, c16, c10), lpad(c16, c16, c10) from t1; -c16 c10 rpad(c16, c16, c10) lpad(c16, c16, c10) -6.5 2 6.5222 2226.5 -select c16, c10, pad(c16, c16, c10) from t1; -c16 c10 pad(c16, c16, c10) -6.5 2 6.5 -select c16, c11, rpad(c16, c16, c11), lpad(c16, c16, c11) from t1; -c16 c11 rpad(c16, c16, c11) lpad(c16, c16, c11) -6.5 1 6.5111 1116.5 -select c16, c11, pad(c16, c16, c11) from t1; -c16 c11 pad(c16, c16, c11) -6.5 1 6.5 -select c16, c12, rpad(c16, c16, c12), lpad(c16, c16, c12) from t1; -c16 c12 rpad(c16, c16, c12) lpad(c16, c16, c12) -6.5 2 6.5222 2226.5 -select c16, c12, pad(c16, c16, c12) from t1; -c16 c12 pad(c16, c16, c12) -6.5 2 6.5 -select c16, c13, rpad(c16, c16, c13), lpad(c16, c16, c13) from t1; -c16 c13 rpad(c16, c16, c13) lpad(c16, c16, c13) -6.5 3.5 6.53.5 3.56.5 -select c16, c13, pad(c16, c16, c13) from t1; -c16 c13 pad(c16, c16, c13) -6.5 3.5 6.56 -select c16, c14, rpad(c16, c16, c14), lpad(c16, c16, c14) from t1; -c16 c14 rpad(c16, c16, c14) lpad(c16, c16, c14) -6.5 4.5 6.54.5 4.56.5 -select c16, c14, pad(c16, c16, c14) from t1; -c16 c14 pad(c16, c16, c14) -6.5 4.5 6.56 -select c16, c15, rpad(c16, c16, c15), lpad(c16, c16, c15) from t1; -c16 c15 rpad(c16, c16, c15) lpad(c16, c16, c15) -6.5 5.5 6.55.5 5.56.5 -select c16, c15, pad(c16, c16, c15) from t1; -c16 c15 pad(c16, c16, c15) -6.5 5.5 6.56.5 -select c16, c16, rpad(c16, c16, c16), lpad(c16, c16, c16) from t1; -c16 c16 rpad(c16, c16, c16) lpad(c16, c16, c16) -6.5 6.5 6.56.5 6.56.5 -select c16, c16, pad(c16, c16, c16) from t1; -c16 c16 pad(c16, c16, c16) -6.5 6.5 6.56.5 -select c16, c17, rpad(c16, c16, c17), lpad(c16, c16, c17) from t1; -c16 c17 rpad(c16, c16, c17) lpad(c16, c16, c17) -6.5 8 6.5888 8886.5 -select c16, c17, pad(c16, c16, c17) from t1; -c16 c17 pad(c16, c16, c17) -6.5 8 6.56.56. -select c16, c18, rpad(c16, c16, c18), lpad(c16, c16, c18) from t1; -c16 c18 rpad(c16, c16, c18) lpad(c16, c16, c18) -6.5 9 6.5999 9996.5 -select c16, c18, pad(c16, c16, c18) from t1; -c16 c18 pad(c16, c16, c18) -6.5 9 6.56.56.5 -select c16, c19, rpad(c16, c16, c19), lpad(c16, c16, c19) from t1; -c16 c19 rpad(c16, c16, c19) lpad(c16, c16, c19) -6.5 2019-12-01 12:00:00 6.5201 2016.5 -select c16, c19, pad(c16, c16, c19) from t1; -c16 c19 pad(c16, c16, c19) -6.5 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c16, c20, rpad(c16, c16, c20), lpad(c16, c16, c20) from t1; -c16 c20 rpad(c16, c16, c20) lpad(c16, c16, c20) -6.5 2019-12-03 06:00:00 6.5201 2016.5 -select c16, c20, pad(c16, c16, c20) from t1; -c16 c20 pad(c16, c16, c20) -6.5 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c16, c21, rpad(c16, c16, c21), lpad(c16, c16, c21) from t1; -c16 c21 rpad(c16, c16, c21) lpad(c16, c16, c21) -6.5 9.5 6.59.5 9.56.5 -select c16, c21, pad(c16, c16, c21) from t1; -c16 c21 pad(c16, c16, c21) -6.5 9.5 6.56.56.56 -select c16, c22, rpad(c16, c16, c22), lpad(c16, c16, c22) from t1; -c16 c22 rpad(c16, c16, c22) lpad(c16, c16, c22) -6.5 10.5 6.510. 10.6.5 -select c16, c22, pad(c16, c16, c22) from t1; -c16 c22 pad(c16, c16, c22) -6.5 10.5 6.56.56.56. -select c17, c1, rpad(c17, c17, c1), lpad(c17, c17, c1) from t1; -c17 c1 rpad(c17, c17, c1) lpad(c17, c17, c1) -8 1 81111111 11111118 -select c17, c1, pad(c17, c17, c1) from t1; -c17 c1 pad(c17, c17, c1) -8 1 8 -select c17, c2, rpad(c17, c17, c2), lpad(c17, c17, c2) from t1; -c17 c2 rpad(c17, c17, c2) lpad(c17, c17, c2) -8 2 82222222 22222228 -select c17, c2, pad(c17, c17, c2) from t1; -c17 c2 pad(c17, c17, c2) -8 2 88 -select c17, c3, rpad(c17, c17, c3), lpad(c17, c17, c3) from t1; -c17 c3 rpad(c17, c17, c3) lpad(c17, c17, c3) -8 1 81111111 11111118 -select c17, c3, pad(c17, c17, c3) from t1; -c17 c3 pad(c17, c17, c3) -8 1 8 -select c17, c4, rpad(c17, c17, c4), lpad(c17, c17, c4) from t1; -c17 c4 rpad(c17, c17, c4) lpad(c17, c17, c4) -8 2 82222222 22222228 -select c17, c4, pad(c17, c17, c4) from t1; -c17 c4 pad(c17, c17, c4) -8 2 88 -select c17, c5, rpad(c17, c17, c5), lpad(c17, c17, c5) from t1; -c17 c5 rpad(c17, c17, c5) lpad(c17, c17, c5) -8 1 81111111 11111118 -select c17, c5, pad(c17, c17, c5) from t1; -c17 c5 pad(c17, c17, c5) -8 1 8 -select c17, c6, rpad(c17, c17, c6), lpad(c17, c17, c6) from t1; -c17 c6 rpad(c17, c17, c6) lpad(c17, c17, c6) -8 2 82222222 22222228 -select c17, c6, pad(c17, c17, c6) from t1; -c17 c6 pad(c17, c17, c6) -8 2 88 -select c17, c7, rpad(c17, c17, c7), lpad(c17, c17, c7) from t1; -c17 c7 rpad(c17, c17, c7) lpad(c17, c17, c7) -8 1 81111111 11111118 -select c17, c7, pad(c17, c17, c7) from t1; -c17 c7 pad(c17, c17, c7) -8 1 8 -select c17, c8, rpad(c17, c17, c8), lpad(c17, c17, c8) from t1; -c17 c8 rpad(c17, c17, c8) lpad(c17, c17, c8) -8 2 82222222 22222228 -select c17, c8, pad(c17, c17, c8) from t1; -c17 c8 pad(c17, c17, c8) -8 2 88 -select c17, c9, rpad(c17, c17, c9), lpad(c17, c17, c9) from t1; -c17 c9 rpad(c17, c17, c9) lpad(c17, c17, c9) -8 1 81111111 11111118 -select c17, c9, pad(c17, c17, c9) from t1; -c17 c9 pad(c17, c17, c9) -8 1 8 -select c17, c10, rpad(c17, c17, c10), lpad(c17, c17, c10) from t1; -c17 c10 rpad(c17, c17, c10) lpad(c17, c17, c10) -8 2 82222222 22222228 -select c17, c10, pad(c17, c17, c10) from t1; -c17 c10 pad(c17, c17, c10) -8 2 88 -select c17, c11, rpad(c17, c17, c11), lpad(c17, c17, c11) from t1; -c17 c11 rpad(c17, c17, c11) lpad(c17, c17, c11) -8 1 81111111 11111118 -select c17, c11, pad(c17, c17, c11) from t1; -c17 c11 pad(c17, c17, c11) -8 1 8 -select c17, c12, rpad(c17, c17, c12), lpad(c17, c17, c12) from t1; -c17 c12 rpad(c17, c17, c12) lpad(c17, c17, c12) -8 2 82222222 22222228 -select c17, c12, pad(c17, c17, c12) from t1; -c17 c12 pad(c17, c17, c12) -8 2 88 -select c17, c13, rpad(c17, c17, c13), lpad(c17, c17, c13) from t1; -c17 c13 rpad(c17, c17, c13) lpad(c17, c17, c13) -8 3.5 83.53.53 3.53.538 -select c17, c13, pad(c17, c17, c13) from t1; -c17 c13 pad(c17, c17, c13) -8 3.5 8888 -select c17, c14, rpad(c17, c17, c14), lpad(c17, c17, c14) from t1; -c17 c14 rpad(c17, c17, c14) lpad(c17, c17, c14) -8 4.5 84.54.54 4.54.548 -select c17, c14, pad(c17, c17, c14) from t1; -c17 c14 pad(c17, c17, c14) -8 4.5 8888 -select c17, c15, rpad(c17, c17, c15), lpad(c17, c17, c15) from t1; -c17 c15 rpad(c17, c17, c15) lpad(c17, c17, c15) -8 5.5 85.55.55 5.55.558 -select c17, c15, pad(c17, c17, c15) from t1; -c17 c15 pad(c17, c17, c15) -8 5.5 888888 -select c17, c16, rpad(c17, c17, c16), lpad(c17, c17, c16) from t1; -c17 c16 rpad(c17, c17, c16) lpad(c17, c17, c16) -8 6.5 86.56.56 6.56.568 -select c17, c16, pad(c17, c17, c16) from t1; -c17 c16 pad(c17, c17, c16) -8 6.5 888888 -select c17, c17, rpad(c17, c17, c17), lpad(c17, c17, c17) from t1; -c17 c17 rpad(c17, c17, c17) lpad(c17, c17, c17) -8 8 88888888 88888888 -select c17, c17, pad(c17, c17, c17) from t1; -c17 c17 pad(c17, c17, c17) -8 8 88888888 -select c17, c18, rpad(c17, c17, c18), lpad(c17, c17, c18) from t1; -c17 c18 rpad(c17, c17, c18) lpad(c17, c17, c18) -8 9 89999999 99999998 -select c17, c18, pad(c17, c17, c18) from t1; -c17 c18 pad(c17, c17, c18) -8 9 888888888 -select c17, c19, rpad(c17, c17, c19), lpad(c17, c17, c19) from t1; -c17 c19 rpad(c17, c17, c19) lpad(c17, c17, c19) -8 2019-12-01 12:00:00 82019-12 2019-128 -select c17, c19, pad(c17, c17, c19) from t1; -c17 c19 pad(c17, c17, c19) -8 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c17, c20, rpad(c17, c17, c20), lpad(c17, c17, c20) from t1; -c17 c20 rpad(c17, c17, c20) lpad(c17, c17, c20) -8 2019-12-03 06:00:00 82019-12 2019-128 -select c17, c20, pad(c17, c17, c20) from t1; -c17 c20 pad(c17, c17, c20) -8 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c17, c21, rpad(c17, c17, c21), lpad(c17, c17, c21) from t1; -c17 c21 rpad(c17, c17, c21) lpad(c17, c17, c21) -8 9.5 89.59.59 9.59.598 -select c17, c21, pad(c17, c17, c21) from t1; -c17 c21 pad(c17, c17, c21) -8 9.5 8888888888 -select c17, c22, rpad(c17, c17, c22), lpad(c17, c17, c22) from t1; -c17 c22 rpad(c17, c17, c22) lpad(c17, c17, c22) -8 10.5 810.510. 10.510.8 -select c17, c22, pad(c17, c17, c22) from t1; -c17 c22 pad(c17, c17, c22) -8 10.5 88888888888 -select c18, c1, rpad(c18, c18, c1), lpad(c18, c18, c1) from t1; -c18 c1 rpad(c18, c18, c1) lpad(c18, c18, c1) -9 1 911111111 111111119 -select c18, c1, pad(c18, c18, c1) from t1; -c18 c1 pad(c18, c18, c1) -9 1 9 -select c18, c2, rpad(c18, c18, c2), lpad(c18, c18, c2) from t1; -c18 c2 rpad(c18, c18, c2) lpad(c18, c18, c2) -9 2 922222222 222222229 -select c18, c2, pad(c18, c18, c2) from t1; -c18 c2 pad(c18, c18, c2) -9 2 99 -select c18, c3, rpad(c18, c18, c3), lpad(c18, c18, c3) from t1; -c18 c3 rpad(c18, c18, c3) lpad(c18, c18, c3) -9 1 911111111 111111119 -select c18, c3, pad(c18, c18, c3) from t1; -c18 c3 pad(c18, c18, c3) -9 1 9 -select c18, c4, rpad(c18, c18, c4), lpad(c18, c18, c4) from t1; -c18 c4 rpad(c18, c18, c4) lpad(c18, c18, c4) -9 2 922222222 222222229 -select c18, c4, pad(c18, c18, c4) from t1; -c18 c4 pad(c18, c18, c4) -9 2 99 -select c18, c5, rpad(c18, c18, c5), lpad(c18, c18, c5) from t1; -c18 c5 rpad(c18, c18, c5) lpad(c18, c18, c5) -9 1 911111111 111111119 -select c18, c5, pad(c18, c18, c5) from t1; -c18 c5 pad(c18, c18, c5) -9 1 9 -select c18, c6, rpad(c18, c18, c6), lpad(c18, c18, c6) from t1; -c18 c6 rpad(c18, c18, c6) lpad(c18, c18, c6) -9 2 922222222 222222229 -select c18, c6, pad(c18, c18, c6) from t1; -c18 c6 pad(c18, c18, c6) -9 2 99 -select c18, c7, rpad(c18, c18, c7), lpad(c18, c18, c7) from t1; -c18 c7 rpad(c18, c18, c7) lpad(c18, c18, c7) -9 1 911111111 111111119 -select c18, c7, pad(c18, c18, c7) from t1; -c18 c7 pad(c18, c18, c7) -9 1 9 -select c18, c8, rpad(c18, c18, c8), lpad(c18, c18, c8) from t1; -c18 c8 rpad(c18, c18, c8) lpad(c18, c18, c8) -9 2 922222222 222222229 -select c18, c8, pad(c18, c18, c8) from t1; -c18 c8 pad(c18, c18, c8) -9 2 99 -select c18, c9, rpad(c18, c18, c9), lpad(c18, c18, c9) from t1; -c18 c9 rpad(c18, c18, c9) lpad(c18, c18, c9) -9 1 911111111 111111119 -select c18, c9, pad(c18, c18, c9) from t1; -c18 c9 pad(c18, c18, c9) -9 1 9 -select c18, c10, rpad(c18, c18, c10), lpad(c18, c18, c10) from t1; -c18 c10 rpad(c18, c18, c10) lpad(c18, c18, c10) -9 2 922222222 222222229 -select c18, c10, pad(c18, c18, c10) from t1; -c18 c10 pad(c18, c18, c10) -9 2 99 -select c18, c11, rpad(c18, c18, c11), lpad(c18, c18, c11) from t1; -c18 c11 rpad(c18, c18, c11) lpad(c18, c18, c11) -9 1 911111111 111111119 -select c18, c11, pad(c18, c18, c11) from t1; -c18 c11 pad(c18, c18, c11) -9 1 9 -select c18, c12, rpad(c18, c18, c12), lpad(c18, c18, c12) from t1; -c18 c12 rpad(c18, c18, c12) lpad(c18, c18, c12) -9 2 922222222 222222229 -select c18, c12, pad(c18, c18, c12) from t1; -c18 c12 pad(c18, c18, c12) -9 2 99 -select c18, c13, rpad(c18, c18, c13), lpad(c18, c18, c13) from t1; -c18 c13 rpad(c18, c18, c13) lpad(c18, c18, c13) -9 3.5 93.53.53. 3.53.53.9 -select c18, c13, pad(c18, c18, c13) from t1; -c18 c13 pad(c18, c18, c13) -9 3.5 9999 -select c18, c14, rpad(c18, c18, c14), lpad(c18, c18, c14) from t1; -c18 c14 rpad(c18, c18, c14) lpad(c18, c18, c14) -9 4.5 94.54.54. 4.54.54.9 -select c18, c14, pad(c18, c18, c14) from t1; -c18 c14 pad(c18, c18, c14) -9 4.5 9999 -select c18, c15, rpad(c18, c18, c15), lpad(c18, c18, c15) from t1; -c18 c15 rpad(c18, c18, c15) lpad(c18, c18, c15) -9 5.5 95.55.55. 5.55.55.9 -select c18, c15, pad(c18, c18, c15) from t1; -c18 c15 pad(c18, c18, c15) -9 5.5 999999 -select c18, c16, rpad(c18, c18, c16), lpad(c18, c18, c16) from t1; -c18 c16 rpad(c18, c18, c16) lpad(c18, c18, c16) -9 6.5 96.56.56. 6.56.56.9 -select c18, c16, pad(c18, c18, c16) from t1; -c18 c16 pad(c18, c18, c16) -9 6.5 999999 -select c18, c17, rpad(c18, c18, c17), lpad(c18, c18, c17) from t1; -c18 c17 rpad(c18, c18, c17) lpad(c18, c18, c17) -9 8 988888888 888888889 -select c18, c17, pad(c18, c18, c17) from t1; -c18 c17 pad(c18, c18, c17) -9 8 99999999 -select c18, c18, rpad(c18, c18, c18), lpad(c18, c18, c18) from t1; -c18 c18 rpad(c18, c18, c18) lpad(c18, c18, c18) -9 9 999999999 999999999 -select c18, c18, pad(c18, c18, c18) from t1; -c18 c18 pad(c18, c18, c18) -9 9 999999999 -select c18, c19, rpad(c18, c18, c19), lpad(c18, c18, c19) from t1; -c18 c19 rpad(c18, c18, c19) lpad(c18, c18, c19) -9 2019-12-01 12:00:00 92019-12- 2019-12-9 -select c18, c19, pad(c18, c18, c19) from t1; -c18 c19 pad(c18, c18, c19) -9 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c18, c20, rpad(c18, c18, c20), lpad(c18, c18, c20) from t1; -c18 c20 rpad(c18, c18, c20) lpad(c18, c18, c20) -9 2019-12-03 06:00:00 92019-12- 2019-12-9 -select c18, c20, pad(c18, c18, c20) from t1; -c18 c20 pad(c18, c18, c20) -9 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c18, c21, rpad(c18, c18, c21), lpad(c18, c18, c21) from t1; -c18 c21 rpad(c18, c18, c21) lpad(c18, c18, c21) -9 9.5 99.59.59. 9.59.59.9 -select c18, c21, pad(c18, c18, c21) from t1; -c18 c21 pad(c18, c18, c21) -9 9.5 9999999999 -select c18, c22, rpad(c18, c18, c22), lpad(c18, c18, c22) from t1; -c18 c22 rpad(c18, c18, c22) lpad(c18, c18, c22) -9 10.5 910.510.5 10.510.59 -select c18, c22, pad(c18, c18, c22) from t1; -c18 c22 pad(c18, c18, c22) -9 10.5 99999999999 -select c19, c1, rpad(c19, c19, c1), lpad(c19, c19, c1) from t1; -c19 c1 rpad(c19, c19, c1) lpad(c19, c19, c1) -2019-12-01 12:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c1, pad(c19, c19, c1) from t1; -c19 c1 pad(c19, c19, c1) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 -select c19, c2, rpad(c19, c19, c2), lpad(c19, c19, c2) from t1; -c19 c2 rpad(c19, c19, c2) lpad(c19, c19, c2) -2019-12-01 12:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c2, pad(c19, c19, c2) from t1; -c19 c2 pad(c19, c19, c2) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 -select c19, c3, rpad(c19, c19, c3), lpad(c19, c19, c3) from t1; -c19 c3 rpad(c19, c19, c3) lpad(c19, c19, c3) -2019-12-01 12:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c3, pad(c19, c19, c3) from t1; -c19 c3 pad(c19, c19, c3) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 -select c19, c4, rpad(c19, c19, c4), lpad(c19, c19, c4) from t1; -c19 c4 rpad(c19, c19, c4) lpad(c19, c19, c4) -2019-12-01 12:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c4, pad(c19, c19, c4) from t1; -c19 c4 pad(c19, c19, c4) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 -select c19, c5, rpad(c19, c19, c5), lpad(c19, c19, c5) from t1; -c19 c5 rpad(c19, c19, c5) lpad(c19, c19, c5) -2019-12-01 12:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c5, pad(c19, c19, c5) from t1; -c19 c5 pad(c19, c19, c5) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 -select c19, c6, rpad(c19, c19, c6), lpad(c19, c19, c6) from t1; -c19 c6 rpad(c19, c19, c6) lpad(c19, c19, c6) -2019-12-01 12:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c6, pad(c19, c19, c6) from t1; -c19 c6 pad(c19, c19, c6) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 -select c19, c7, rpad(c19, c19, c7), lpad(c19, c19, c7) from t1; -c19 c7 rpad(c19, c19, c7) lpad(c19, c19, c7) -2019-12-01 12:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c7, pad(c19, c19, c7) from t1; -c19 c7 pad(c19, c19, c7) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 -select c19, c8, rpad(c19, c19, c8), lpad(c19, c19, c8) from t1; -c19 c8 rpad(c19, c19, c8) lpad(c19, c19, c8) -2019-12-01 12:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c8, pad(c19, c19, c8) from t1; -c19 c8 pad(c19, c19, c8) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 -select c19, c9, rpad(c19, c19, c9), lpad(c19, c19, c9) from t1; -c19 c9 rpad(c19, c19, c9) lpad(c19, c19, c9) -2019-12-01 12:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c9, pad(c19, c19, c9) from t1; -c19 c9 pad(c19, c19, c9) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 -select c19, c10, rpad(c19, c19, c10), lpad(c19, c19, c10) from t1; -c19 c10 rpad(c19, c19, c10) lpad(c19, c19, c10) -2019-12-01 12:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c10, pad(c19, c19, c10) from t1; -c19 c10 pad(c19, c19, c10) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 -select c19, c11, rpad(c19, c19, c11), lpad(c19, c19, c11) from t1; -c19 c11 rpad(c19, c19, c11) lpad(c19, c19, c11) -2019-12-01 12:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c11, pad(c19, c19, c11) from t1; -c19 c11 pad(c19, c19, c11) -2019-12-01 12:00:00 1 2019-12-01 12:00:00 -select c19, c12, rpad(c19, c19, c12), lpad(c19, c19, c12) from t1; -c19 c12 rpad(c19, c19, c12) lpad(c19, c19, c12) -2019-12-01 12:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c12, pad(c19, c19, c12) from t1; -c19 c12 pad(c19, c19, c12) -2019-12-01 12:00:00 2 2019-12-01 12:00:00 -select c19, c13, rpad(c19, c19, c13), lpad(c19, c19, c13) from t1; -c19 c13 rpad(c19, c19, c13) lpad(c19, c19, c13) -2019-12-01 12:00:00 3.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c13, pad(c19, c19, c13) from t1; -c19 c13 pad(c19, c19, c13) -2019-12-01 12:00:00 3.5 2019-12-01 12:00:00 -select c19, c14, rpad(c19, c19, c14), lpad(c19, c19, c14) from t1; -c19 c14 rpad(c19, c19, c14) lpad(c19, c19, c14) -2019-12-01 12:00:00 4.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c14, pad(c19, c19, c14) from t1; -c19 c14 pad(c19, c19, c14) -2019-12-01 12:00:00 4.5 2019-12-01 12:00:00 -select c19, c15, rpad(c19, c19, c15), lpad(c19, c19, c15) from t1; -c19 c15 rpad(c19, c19, c15) lpad(c19, c19, c15) -2019-12-01 12:00:00 5.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c15, pad(c19, c19, c15) from t1; -c19 c15 pad(c19, c19, c15) -2019-12-01 12:00:00 5.5 2019-12-01 12:00:00 -select c19, c16, rpad(c19, c19, c16), lpad(c19, c19, c16) from t1; -c19 c16 rpad(c19, c19, c16) lpad(c19, c19, c16) -2019-12-01 12:00:00 6.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c16, pad(c19, c19, c16) from t1; -c19 c16 pad(c19, c19, c16) -2019-12-01 12:00:00 6.5 2019-12-01 12:00:00 -select c19, c17, rpad(c19, c19, c17), lpad(c19, c19, c17) from t1; -c19 c17 rpad(c19, c19, c17) lpad(c19, c19, c17) -2019-12-01 12:00:00 8 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c17, pad(c19, c19, c17) from t1; -c19 c17 pad(c19, c19, c17) -2019-12-01 12:00:00 8 2019-12-01 12:00:00 -select c19, c18, rpad(c19, c19, c18), lpad(c19, c19, c18) from t1; -c19 c18 rpad(c19, c19, c18) lpad(c19, c19, c18) -2019-12-01 12:00:00 9 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c18, pad(c19, c19, c18) from t1; -c19 c18 pad(c19, c19, c18) -2019-12-01 12:00:00 9 2019-12-01 12:00:00 -select c19, c19, rpad(c19, c19, c19), lpad(c19, c19, c19) from t1; -c19 c19 rpad(c19, c19, c19) lpad(c19, c19, c19) -2019-12-01 12:00:00 2019-12-01 12:00:00 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c19, pad(c19, c19, c19) from t1; -c19 c19 pad(c19, c19, c19) -2019-12-01 12:00:00 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c20, rpad(c19, c19, c20), lpad(c19, c19, c20) from t1; -c19 c20 rpad(c19, c19, c20) lpad(c19, c19, c20) -2019-12-01 12:00:00 2019-12-03 06:00:00 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c20, pad(c19, c19, c20) from t1; -c19 c20 pad(c19, c19, c20) -2019-12-01 12:00:00 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c21, rpad(c19, c19, c21), lpad(c19, c19, c21) from t1; -c19 c21 rpad(c19, c19, c21) lpad(c19, c19, c21) -2019-12-01 12:00:00 9.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c21, pad(c19, c19, c21) from t1; -c19 c21 pad(c19, c19, c21) -2019-12-01 12:00:00 9.5 2019-12-01 12:00:00 -select c19, c22, rpad(c19, c19, c22), lpad(c19, c19, c22) from t1; -c19 c22 rpad(c19, c19, c22) lpad(c19, c19, c22) -2019-12-01 12:00:00 10.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c19, c22, pad(c19, c19, c22) from t1; -c19 c22 pad(c19, c19, c22) -2019-12-01 12:00:00 10.5 2019-12-01 12:00:00 -select c20, c1, rpad(c20, c20, c1), lpad(c20, c20, c1) from t1; -c20 c1 rpad(c20, c20, c1) lpad(c20, c20, c1) -2019-12-03 06:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c1, pad(c20, c20, c1) from t1; -c20 c1 pad(c20, c20, c1) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 -select c20, c2, rpad(c20, c20, c2), lpad(c20, c20, c2) from t1; -c20 c2 rpad(c20, c20, c2) lpad(c20, c20, c2) -2019-12-03 06:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c2, pad(c20, c20, c2) from t1; -c20 c2 pad(c20, c20, c2) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 -select c20, c3, rpad(c20, c20, c3), lpad(c20, c20, c3) from t1; -c20 c3 rpad(c20, c20, c3) lpad(c20, c20, c3) -2019-12-03 06:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c3, pad(c20, c20, c3) from t1; -c20 c3 pad(c20, c20, c3) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 -select c20, c4, rpad(c20, c20, c4), lpad(c20, c20, c4) from t1; -c20 c4 rpad(c20, c20, c4) lpad(c20, c20, c4) -2019-12-03 06:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c4, pad(c20, c20, c4) from t1; -c20 c4 pad(c20, c20, c4) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 -select c20, c5, rpad(c20, c20, c5), lpad(c20, c20, c5) from t1; -c20 c5 rpad(c20, c20, c5) lpad(c20, c20, c5) -2019-12-03 06:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c5, pad(c20, c20, c5) from t1; -c20 c5 pad(c20, c20, c5) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 -select c20, c6, rpad(c20, c20, c6), lpad(c20, c20, c6) from t1; -c20 c6 rpad(c20, c20, c6) lpad(c20, c20, c6) -2019-12-03 06:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c6, pad(c20, c20, c6) from t1; -c20 c6 pad(c20, c20, c6) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 -select c20, c7, rpad(c20, c20, c7), lpad(c20, c20, c7) from t1; -c20 c7 rpad(c20, c20, c7) lpad(c20, c20, c7) -2019-12-03 06:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c7, pad(c20, c20, c7) from t1; -c20 c7 pad(c20, c20, c7) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 -select c20, c8, rpad(c20, c20, c8), lpad(c20, c20, c8) from t1; -c20 c8 rpad(c20, c20, c8) lpad(c20, c20, c8) -2019-12-03 06:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c8, pad(c20, c20, c8) from t1; -c20 c8 pad(c20, c20, c8) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 -select c20, c9, rpad(c20, c20, c9), lpad(c20, c20, c9) from t1; -c20 c9 rpad(c20, c20, c9) lpad(c20, c20, c9) -2019-12-03 06:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c9, pad(c20, c20, c9) from t1; -c20 c9 pad(c20, c20, c9) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 -select c20, c10, rpad(c20, c20, c10), lpad(c20, c20, c10) from t1; -c20 c10 rpad(c20, c20, c10) lpad(c20, c20, c10) -2019-12-03 06:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c10, pad(c20, c20, c10) from t1; -c20 c10 pad(c20, c20, c10) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 -select c20, c11, rpad(c20, c20, c11), lpad(c20, c20, c11) from t1; -c20 c11 rpad(c20, c20, c11) lpad(c20, c20, c11) -2019-12-03 06:00:00 1 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c11, pad(c20, c20, c11) from t1; -c20 c11 pad(c20, c20, c11) -2019-12-03 06:00:00 1 2019-12-03 06:00:00 -select c20, c12, rpad(c20, c20, c12), lpad(c20, c20, c12) from t1; -c20 c12 rpad(c20, c20, c12) lpad(c20, c20, c12) -2019-12-03 06:00:00 2 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c12, pad(c20, c20, c12) from t1; -c20 c12 pad(c20, c20, c12) -2019-12-03 06:00:00 2 2019-12-03 06:00:00 -select c20, c13, rpad(c20, c20, c13), lpad(c20, c20, c13) from t1; -c20 c13 rpad(c20, c20, c13) lpad(c20, c20, c13) -2019-12-03 06:00:00 3.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c13, pad(c20, c20, c13) from t1; -c20 c13 pad(c20, c20, c13) -2019-12-03 06:00:00 3.5 2019-12-03 06:00:00 -select c20, c14, rpad(c20, c20, c14), lpad(c20, c20, c14) from t1; -c20 c14 rpad(c20, c20, c14) lpad(c20, c20, c14) -2019-12-03 06:00:00 4.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c14, pad(c20, c20, c14) from t1; -c20 c14 pad(c20, c20, c14) -2019-12-03 06:00:00 4.5 2019-12-03 06:00:00 -select c20, c15, rpad(c20, c20, c15), lpad(c20, c20, c15) from t1; -c20 c15 rpad(c20, c20, c15) lpad(c20, c20, c15) -2019-12-03 06:00:00 5.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c15, pad(c20, c20, c15) from t1; -c20 c15 pad(c20, c20, c15) -2019-12-03 06:00:00 5.5 2019-12-03 06:00:00 -select c20, c16, rpad(c20, c20, c16), lpad(c20, c20, c16) from t1; -c20 c16 rpad(c20, c20, c16) lpad(c20, c20, c16) -2019-12-03 06:00:00 6.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c16, pad(c20, c20, c16) from t1; -c20 c16 pad(c20, c20, c16) -2019-12-03 06:00:00 6.5 2019-12-03 06:00:00 -select c20, c17, rpad(c20, c20, c17), lpad(c20, c20, c17) from t1; -c20 c17 rpad(c20, c20, c17) lpad(c20, c20, c17) -2019-12-03 06:00:00 8 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c17, pad(c20, c20, c17) from t1; -c20 c17 pad(c20, c20, c17) -2019-12-03 06:00:00 8 2019-12-03 06:00:00 -select c20, c18, rpad(c20, c20, c18), lpad(c20, c20, c18) from t1; -c20 c18 rpad(c20, c20, c18) lpad(c20, c20, c18) -2019-12-03 06:00:00 9 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c18, pad(c20, c20, c18) from t1; -c20 c18 pad(c20, c20, c18) -2019-12-03 06:00:00 9 2019-12-03 06:00:00 -select c20, c19, rpad(c20, c20, c19), lpad(c20, c20, c19) from t1; -c20 c19 rpad(c20, c20, c19) lpad(c20, c20, c19) -2019-12-03 06:00:00 2019-12-01 12:00:00 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c19, pad(c20, c20, c19) from t1; -c20 c19 pad(c20, c20, c19) -2019-12-03 06:00:00 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c20, rpad(c20, c20, c20), lpad(c20, c20, c20) from t1; -c20 c20 rpad(c20, c20, c20) lpad(c20, c20, c20) -2019-12-03 06:00:00 2019-12-03 06:00:00 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c20, pad(c20, c20, c20) from t1; -c20 c20 pad(c20, c20, c20) -2019-12-03 06:00:00 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c21, rpad(c20, c20, c21), lpad(c20, c20, c21) from t1; -c20 c21 rpad(c20, c20, c21) lpad(c20, c20, c21) -2019-12-03 06:00:00 9.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c21, pad(c20, c20, c21) from t1; -c20 c21 pad(c20, c20, c21) -2019-12-03 06:00:00 9.5 2019-12-03 06:00:00 -select c20, c22, rpad(c20, c20, c22), lpad(c20, c20, c22) from t1; -c20 c22 rpad(c20, c20, c22) lpad(c20, c20, c22) -2019-12-03 06:00:00 10.5 NULL NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated -select c20, c22, pad(c20, c20, c22) from t1; -c20 c22 pad(c20, c20, c22) -2019-12-03 06:00:00 10.5 2019-12-03 06:00:00 -select c21, c1, rpad(c21, c21, c1), lpad(c21, c21, c1) from t1; -c21 c1 rpad(c21, c21, c1) lpad(c21, c21, c1) -9.5 1 9.51111111 11111119.5 -select c21, c1, pad(c21, c21, c1) from t1; -c21 c1 pad(c21, c21, c1) -9.5 1 9.5 -select c21, c2, rpad(c21, c21, c2), lpad(c21, c21, c2) from t1; -c21 c2 rpad(c21, c21, c2) lpad(c21, c21, c2) -9.5 2 9.52222222 22222229.5 -select c21, c2, pad(c21, c21, c2) from t1; -c21 c2 pad(c21, c21, c2) -9.5 2 9.5 -select c21, c3, rpad(c21, c21, c3), lpad(c21, c21, c3) from t1; -c21 c3 rpad(c21, c21, c3) lpad(c21, c21, c3) -9.5 1 9.51111111 11111119.5 -select c21, c3, pad(c21, c21, c3) from t1; -c21 c3 pad(c21, c21, c3) -9.5 1 9.5 -select c21, c4, rpad(c21, c21, c4), lpad(c21, c21, c4) from t1; -c21 c4 rpad(c21, c21, c4) lpad(c21, c21, c4) -9.5 2 9.52222222 22222229.5 -select c21, c4, pad(c21, c21, c4) from t1; -c21 c4 pad(c21, c21, c4) -9.5 2 9.5 -select c21, c5, rpad(c21, c21, c5), lpad(c21, c21, c5) from t1; -c21 c5 rpad(c21, c21, c5) lpad(c21, c21, c5) -9.5 1 9.51111111 11111119.5 -select c21, c5, pad(c21, c21, c5) from t1; -c21 c5 pad(c21, c21, c5) -9.5 1 9.5 -select c21, c6, rpad(c21, c21, c6), lpad(c21, c21, c6) from t1; -c21 c6 rpad(c21, c21, c6) lpad(c21, c21, c6) -9.5 2 9.52222222 22222229.5 -select c21, c6, pad(c21, c21, c6) from t1; -c21 c6 pad(c21, c21, c6) -9.5 2 9.5 -select c21, c7, rpad(c21, c21, c7), lpad(c21, c21, c7) from t1; -c21 c7 rpad(c21, c21, c7) lpad(c21, c21, c7) -9.5 1 9.51111111 11111119.5 -select c21, c7, pad(c21, c21, c7) from t1; -c21 c7 pad(c21, c21, c7) -9.5 1 9.5 -select c21, c8, rpad(c21, c21, c8), lpad(c21, c21, c8) from t1; -c21 c8 rpad(c21, c21, c8) lpad(c21, c21, c8) -9.5 2 9.52222222 22222229.5 -select c21, c8, pad(c21, c21, c8) from t1; -c21 c8 pad(c21, c21, c8) -9.5 2 9.5 -select c21, c9, rpad(c21, c21, c9), lpad(c21, c21, c9) from t1; -c21 c9 rpad(c21, c21, c9) lpad(c21, c21, c9) -9.5 1 9.51111111 11111119.5 -select c21, c9, pad(c21, c21, c9) from t1; -c21 c9 pad(c21, c21, c9) -9.5 1 9.5 -select c21, c10, rpad(c21, c21, c10), lpad(c21, c21, c10) from t1; -c21 c10 rpad(c21, c21, c10) lpad(c21, c21, c10) -9.5 2 9.52222222 22222229.5 -select c21, c10, pad(c21, c21, c10) from t1; -c21 c10 pad(c21, c21, c10) -9.5 2 9.5 -select c21, c11, rpad(c21, c21, c11), lpad(c21, c21, c11) from t1; -c21 c11 rpad(c21, c21, c11) lpad(c21, c21, c11) -9.5 1 9.51111111 11111119.5 -select c21, c11, pad(c21, c21, c11) from t1; -c21 c11 pad(c21, c21, c11) -9.5 1 9.5 -select c21, c12, rpad(c21, c21, c12), lpad(c21, c21, c12) from t1; -c21 c12 rpad(c21, c21, c12) lpad(c21, c21, c12) -9.5 2 9.52222222 22222229.5 -select c21, c12, pad(c21, c21, c12) from t1; -c21 c12 pad(c21, c21, c12) -9.5 2 9.5 -select c21, c13, rpad(c21, c21, c13), lpad(c21, c21, c13) from t1; -c21 c13 rpad(c21, c21, c13) lpad(c21, c21, c13) -9.5 3.5 9.53.53.53 3.53.539.5 -select c21, c13, pad(c21, c21, c13) from t1; -c21 c13 pad(c21, c21, c13) -9.5 3.5 9.59 -select c21, c14, rpad(c21, c21, c14), lpad(c21, c21, c14) from t1; -c21 c14 rpad(c21, c21, c14) lpad(c21, c21, c14) -9.5 4.5 9.54.54.54 4.54.549.5 -select c21, c14, pad(c21, c21, c14) from t1; -c21 c14 pad(c21, c21, c14) -9.5 4.5 9.59 -select c21, c15, rpad(c21, c21, c15), lpad(c21, c21, c15) from t1; -c21 c15 rpad(c21, c21, c15) lpad(c21, c21, c15) -9.5 5.5 9.55.55.55 5.55.559.5 -select c21, c15, pad(c21, c21, c15) from t1; -c21 c15 pad(c21, c21, c15) -9.5 5.5 9.59.5 -select c21, c16, rpad(c21, c21, c16), lpad(c21, c21, c16) from t1; -c21 c16 rpad(c21, c21, c16) lpad(c21, c21, c16) -9.5 6.5 9.56.56.56 6.56.569.5 -select c21, c16, pad(c21, c21, c16) from t1; -c21 c16 pad(c21, c21, c16) -9.5 6.5 9.59.5 -select c21, c17, rpad(c21, c21, c17), lpad(c21, c21, c17) from t1; -c21 c17 rpad(c21, c21, c17) lpad(c21, c21, c17) -9.5 8 9.58888888 88888889.5 -select c21, c17, pad(c21, c21, c17) from t1; -c21 c17 pad(c21, c21, c17) -9.5 8 9.59.59. -select c21, c18, rpad(c21, c21, c18), lpad(c21, c21, c18) from t1; -c21 c18 rpad(c21, c21, c18) lpad(c21, c21, c18) -9.5 9 9.59999999 99999999.5 -select c21, c18, pad(c21, c21, c18) from t1; -c21 c18 pad(c21, c21, c18) -9.5 9 9.59.59.5 -select c21, c19, rpad(c21, c21, c19), lpad(c21, c21, c19) from t1; -c21 c19 rpad(c21, c21, c19) lpad(c21, c21, c19) -9.5 2019-12-01 12:00:00 9.52019-12 2019-129.5 -select c21, c19, pad(c21, c21, c19) from t1; -c21 c19 pad(c21, c21, c19) -9.5 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c21, c20, rpad(c21, c21, c20), lpad(c21, c21, c20) from t1; -c21 c20 rpad(c21, c21, c20) lpad(c21, c21, c20) -9.5 2019-12-03 06:00:00 9.52019-12 2019-129.5 -select c21, c20, pad(c21, c21, c20) from t1; -c21 c20 pad(c21, c21, c20) -9.5 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c21, c21, rpad(c21, c21, c21), lpad(c21, c21, c21) from t1; -c21 c21 rpad(c21, c21, c21) lpad(c21, c21, c21) -9.5 9.5 9.59.59.59 9.59.599.5 -select c21, c21, pad(c21, c21, c21) from t1; -c21 c21 pad(c21, c21, c21) -9.5 9.5 9.59.59.59 -select c21, c22, rpad(c21, c21, c22), lpad(c21, c21, c22) from t1; -c21 c22 rpad(c21, c21, c22) lpad(c21, c21, c22) -9.5 10.5 9.510.510. 10.510.9.5 -select c21, c22, pad(c21, c21, c22) from t1; -c21 c22 pad(c21, c21, c22) -9.5 10.5 9.59.59.59. -select c22, c1, rpad(c22, c22, c1), lpad(c22, c22, c1) from t1; -c22 c1 rpad(c22, c22, c1) lpad(c22, c22, c1) -10.5 1 10.51111111 111111110.5 -select c22, c1, pad(c22, c22, c1) from t1; -c22 c1 pad(c22, c22, c1) -10.5 1 10.5 -select c22, c2, rpad(c22, c22, c2), lpad(c22, c22, c2) from t1; -c22 c2 rpad(c22, c22, c2) lpad(c22, c22, c2) -10.5 2 10.52222222 222222210.5 -select c22, c2, pad(c22, c22, c2) from t1; -c22 c2 pad(c22, c22, c2) -10.5 2 10.5 -select c22, c3, rpad(c22, c22, c3), lpad(c22, c22, c3) from t1; -c22 c3 rpad(c22, c22, c3) lpad(c22, c22, c3) -10.5 1 10.51111111 111111110.5 -select c22, c3, pad(c22, c22, c3) from t1; -c22 c3 pad(c22, c22, c3) -10.5 1 10.5 -select c22, c4, rpad(c22, c22, c4), lpad(c22, c22, c4) from t1; -c22 c4 rpad(c22, c22, c4) lpad(c22, c22, c4) -10.5 2 10.52222222 222222210.5 -select c22, c4, pad(c22, c22, c4) from t1; -c22 c4 pad(c22, c22, c4) -10.5 2 10.5 -select c22, c5, rpad(c22, c22, c5), lpad(c22, c22, c5) from t1; -c22 c5 rpad(c22, c22, c5) lpad(c22, c22, c5) -10.5 1 10.51111111 111111110.5 -select c22, c5, pad(c22, c22, c5) from t1; -c22 c5 pad(c22, c22, c5) -10.5 1 10.5 -select c22, c6, rpad(c22, c22, c6), lpad(c22, c22, c6) from t1; -c22 c6 rpad(c22, c22, c6) lpad(c22, c22, c6) -10.5 2 10.52222222 222222210.5 -select c22, c6, pad(c22, c22, c6) from t1; -c22 c6 pad(c22, c22, c6) -10.5 2 10.5 -select c22, c7, rpad(c22, c22, c7), lpad(c22, c22, c7) from t1; -c22 c7 rpad(c22, c22, c7) lpad(c22, c22, c7) -10.5 1 10.51111111 111111110.5 -select c22, c7, pad(c22, c22, c7) from t1; -c22 c7 pad(c22, c22, c7) -10.5 1 10.5 -select c22, c8, rpad(c22, c22, c8), lpad(c22, c22, c8) from t1; -c22 c8 rpad(c22, c22, c8) lpad(c22, c22, c8) -10.5 2 10.52222222 222222210.5 -select c22, c8, pad(c22, c22, c8) from t1; -c22 c8 pad(c22, c22, c8) -10.5 2 10.5 -select c22, c9, rpad(c22, c22, c9), lpad(c22, c22, c9) from t1; -c22 c9 rpad(c22, c22, c9) lpad(c22, c22, c9) -10.5 1 10.51111111 111111110.5 -select c22, c9, pad(c22, c22, c9) from t1; -c22 c9 pad(c22, c22, c9) -10.5 1 10.5 -select c22, c10, rpad(c22, c22, c10), lpad(c22, c22, c10) from t1; -c22 c10 rpad(c22, c22, c10) lpad(c22, c22, c10) -10.5 2 10.52222222 222222210.5 -select c22, c10, pad(c22, c22, c10) from t1; -c22 c10 pad(c22, c22, c10) -10.5 2 10.5 -select c22, c11, rpad(c22, c22, c11), lpad(c22, c22, c11) from t1; -c22 c11 rpad(c22, c22, c11) lpad(c22, c22, c11) -10.5 1 10.51111111 111111110.5 -select c22, c11, pad(c22, c22, c11) from t1; -c22 c11 pad(c22, c22, c11) -10.5 1 10.5 -select c22, c12, rpad(c22, c22, c12), lpad(c22, c22, c12) from t1; -c22 c12 rpad(c22, c22, c12) lpad(c22, c22, c12) -10.5 2 10.52222222 222222210.5 -select c22, c12, pad(c22, c22, c12) from t1; -c22 c12 pad(c22, c22, c12) -10.5 2 10.5 -select c22, c13, rpad(c22, c22, c13), lpad(c22, c22, c13) from t1; -c22 c13 rpad(c22, c22, c13) lpad(c22, c22, c13) -10.5 3.5 10.53.53.53 3.53.5310.5 -select c22, c13, pad(c22, c22, c13) from t1; -c22 c13 pad(c22, c22, c13) -10.5 3.5 10.5 -select c22, c14, rpad(c22, c22, c14), lpad(c22, c22, c14) from t1; -c22 c14 rpad(c22, c22, c14) lpad(c22, c22, c14) -10.5 4.5 10.54.54.54 4.54.5410.5 -select c22, c14, pad(c22, c22, c14) from t1; -c22 c14 pad(c22, c22, c14) -10.5 4.5 10.5 -select c22, c15, rpad(c22, c22, c15), lpad(c22, c22, c15) from t1; -c22 c15 rpad(c22, c22, c15) lpad(c22, c22, c15) -10.5 5.5 10.55.55.55 5.55.5510.5 -select c22, c15, pad(c22, c22, c15) from t1; -c22 c15 pad(c22, c22, c15) -10.5 5.5 10.510 -select c22, c16, rpad(c22, c22, c16), lpad(c22, c22, c16) from t1; -c22 c16 rpad(c22, c22, c16) lpad(c22, c22, c16) -10.5 6.5 10.56.56.56 6.56.5610.5 -select c22, c16, pad(c22, c22, c16) from t1; -c22 c16 pad(c22, c22, c16) -10.5 6.5 10.510 -select c22, c17, rpad(c22, c22, c17), lpad(c22, c22, c17) from t1; -c22 c17 rpad(c22, c22, c17) lpad(c22, c22, c17) -10.5 8 10.58888888 888888810.5 -select c22, c17, pad(c22, c22, c17) from t1; -c22 c17 pad(c22, c22, c17) -10.5 8 10.510.5 -select c22, c18, rpad(c22, c22, c18), lpad(c22, c22, c18) from t1; -c22 c18 rpad(c22, c22, c18) lpad(c22, c22, c18) -10.5 9 10.59999999 999999910.5 -select c22, c18, pad(c22, c22, c18) from t1; -c22 c18 pad(c22, c22, c18) -10.5 9 10.510.51 -select c22, c19, rpad(c22, c22, c19), lpad(c22, c22, c19) from t1; -c22 c19 rpad(c22, c22, c19) lpad(c22, c22, c19) -10.5 2019-12-01 12:00:00 10.52019-12 2019-1210.5 -select c22, c19, pad(c22, c22, c19) from t1; -c22 c19 pad(c22, c22, c19) -10.5 2019-12-01 12:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c22, c20, rpad(c22, c22, c20), lpad(c22, c22, c20) from t1; -c22 c20 rpad(c22, c22, c20) lpad(c22, c22, c20) -10.5 2019-12-03 06:00:00 10.52019-12 2019-1210.5 -select c22, c20, pad(c22, c22, c20) from t1; -c22 c20 pad(c22, c22, c20) -10.5 2019-12-03 06:00:00 NULL -Warnings: -Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated -select c22, c21, rpad(c22, c22, c21), lpad(c22, c22, c21) from t1; -c22 c21 rpad(c22, c22, c21) lpad(c22, c22, c21) -10.5 9.5 10.59.59.59 9.59.5910.5 -select c22, c21, pad(c22, c22, c21) from t1; -c22 c21 pad(c22, c22, c21) -10.5 9.5 10.510.510 -select c22, c22, rpad(c22, c22, c22), lpad(c22, c22, c22) from t1; -c22 c22 rpad(c22, c22, c22) lpad(c22, c22, c22) -10.5 10.5 10.510.510. 10.510.10.5 -select c22, c22, pad(c22, c22, c22) from t1; -c22 c22 pad(c22, c22, c22) -10.5 10.5 10.510.510. -select lpad(); -ERROR 42000: Incorrect parameter count in the call to native function 'lpad' -select lpad(2, 2); -ERROR 42000: Incorrect parameter count in the call to native function 'lpad' -select lpad(2, 2, 2, 2); -ERROR 42000: Incorrect parameter count in the call to native function 'lpad' -select lpad(2, 2, 2); -lpad(2, 2, 2) -22 -select lpad('a', 5, 'b'); -lpad('a', 5, 'b') -bbbba -select lpad('a', 5, '12'); -lpad('a', 5, '12') -1212a -select lpad('a', '5', 12); -lpad('a', '5', 12) -1212a -select lpad('bb', 0, 'c'); -lpad('bb', 0, 'c') - -select lpad('bb', -1, 'c'); -lpad('bb', -1, 'c') -NULL -select lpad('a', 5, NULL); -lpad('a', 5, NULL) -NULL -select lpad('a', 5, ''); -lpad('a', 5, '') -NULL -select lpad(NULL, 5, 'a'); -lpad(NULL, 5, 'a') -NULL -select lpad('', 5, 'a'); -lpad('', 5, 'a') -aaaaa -select lpad('a', 0.49, 'b'); -lpad('a', 0.49, 'b') - -select lpad('a', 0.5, 'b'); -lpad('a', 0.5, 'b') -a -select lpad('a', -0.49, 'b'); -lpad('a', -0.49, 'b') - -select lpad('a', -0.5, 'b'); -lpad('a', -0.5, 'b') -NULL -set character_set_client=utf8; -set character_set_connection=utf8; -set character_set_database=utf8; -set character_set_results=utf8; -set character_set_server=utf8; -set character_set_connection=binary; -select hex(lpad('钡', 2, 'c')); -hex(lpad('钡', 2, 'c')) -E992 -set character_set_connection=utf8; -select hex(lpad('钡', 2, 'c')); -hex(lpad('钡', 2, 'c')) -63E992A1 -select lpad('a', 1, '阿斯'), length(lpad('a', 1, '阿斯')) from dual; -lpad('a', 1, '阿斯') length(lpad('a', 1, '阿斯')) -a 1 -select lpad('a', 2, '阿斯'), length(lpad('a', 2, '阿斯')) from dual; -lpad('a', 2, '阿斯') length(lpad('a', 2, '阿斯')) -阿a 4 -select lpad('a', 3, '阿斯'), length(lpad('a', 3, '阿斯')) from dual; -lpad('a', 3, '阿斯') length(lpad('a', 3, '阿斯')) -阿斯a 7 -select lpad('a', 4, '阿斯'), length(lpad('a', 4, '阿斯')) from dual; -lpad('a', 4, '阿斯') length(lpad('a', 4, '阿斯')) -阿斯阿a 10 -select lpad('a', 5, '阿斯'), length(lpad('a', 5, '阿斯')) from dual; -lpad('a', 5, '阿斯') length(lpad('a', 5, '阿斯')) -阿斯阿斯a 13 -select lpad('a', 6, '阿斯'), length(lpad('a', 6, '阿斯')) from dual; -lpad('a', 6, '阿斯') length(lpad('a', 6, '阿斯')) -阿斯阿斯阿a 16 -select lpad('a', 7, '阿斯'), length(lpad('a', 7, '阿斯')) from dual; -lpad('a', 7, '阿斯') length(lpad('a', 7, '阿斯')) -阿斯阿斯阿斯a 19 -select lpad('a', 8, '阿斯'), length(lpad('a', 8, '阿斯')) from dual; -lpad('a', 8, '阿斯') length(lpad('a', 8, '阿斯')) -阿斯阿斯阿斯阿a 22 -select rpad('a', 1, '阿斯'), length(rpad('a', 1, '阿斯')) from dual; -rpad('a', 1, '阿斯') length(rpad('a', 1, '阿斯')) -a 1 -select rpad('a', 2, '阿斯'), length(rpad('a', 2, '阿斯')) from dual; -rpad('a', 2, '阿斯') length(rpad('a', 2, '阿斯')) -a阿 4 -select rpad('a', 3, '阿斯'), length(rpad('a', 3, '阿斯')) from dual; -rpad('a', 3, '阿斯') length(rpad('a', 3, '阿斯')) -a阿斯 7 -select rpad('a', 4, '阿斯'), length(rpad('a', 4, '阿斯')) from dual; -rpad('a', 4, '阿斯') length(rpad('a', 4, '阿斯')) -a阿斯阿 10 -select rpad('a', 5, '阿斯'), length(rpad('a', 5, '阿斯')) from dual; -rpad('a', 5, '阿斯') length(rpad('a', 5, '阿斯')) -a阿斯阿斯 13 -select rpad('a', 6, '阿斯'), length(rpad('a', 6, '阿斯')) from dual; -rpad('a', 6, '阿斯') length(rpad('a', 6, '阿斯')) -a阿斯阿斯阿 16 -select rpad('a', 7, '阿斯'), length(rpad('a', 7, '阿斯')) from dual; -rpad('a', 7, '阿斯') length(rpad('a', 7, '阿斯')) -a阿斯阿斯阿斯 19 -select rpad('a', 8, '阿斯'), length(rpad('a', 8, '阿斯')) from dual; -rpad('a', 8, '阿斯') length(rpad('a', 8, '阿斯')) -a阿斯阿斯阿斯阿 22 diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_part_hash.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_part_hash.result deleted file mode 100644 index 25e21a767..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_part_hash.result +++ /dev/null @@ -1,25 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -create table t1 (c1 int, c2 bigint, c3 decimal); -insert into t1 (c1, c2, c3) values (1, NULL, 1); -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select c1, partition_hash(c1) from t1; -c1 partition_hash(c1) -1 1 -select c2, partition_hash(c2) from t1; -c2 partition_hash(c2) -NULL 0 -select c3, partition_hash(c3) from t1; -ERROR HY000: The PARTITION function returns the wrong type -select partition_hash(c1, c2) from t1; -ERROR HY000: Internal error -select partition_hash(10) from t1; -partition_hash(10) -10 -select partition_hash(-10) from t1; -partition_hash(-10) -10 -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_part_key.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_part_key.result deleted file mode 100644 index 2baade4de..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_part_key.result +++ /dev/null @@ -1,76 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; -drop table if exists t1; -create table t1 (c1 int, c2 bigint, c3 decimal, c4 char(20), c5 varchar(20), c6 date, c7 datetime, c8 timestamp); -insert into t1 (c1, c2, c3, c4, c5, c6, c7, c8) values (1, NULL, 1, "abc ", "abc ", '2020-01-01', '2020-01-01 01:01:01', '2020-01-01 01:01:01'); -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select c1, partition_key(c1) from t1; -c1 partition_key(c1) -1 294837134935570197 -select c2, partition_key(c2) from t1; -c2 partition_key(c2) -NULL 6960269033020761575 -select c3, partition_key(c3) from t1; -c3 partition_key(c3) -1 4095890315155992887 -select c4, partition_key(c4) from t1; -c4 partition_key(c4) -abc 1801346201538688951 -select c5, partition_key(c5) from t1; -c5 partition_key(c5) -abc 1801346201538688951 -select c6, partition_key(c6) from t1; -c6 partition_key(c6) -2020-01-01 3780289746228831367 -select c7, partition_key(c7) from t1; -c7 partition_key(c7) -2020-01-01 01:01:01 6488855144877179734 -select c8, partition_key(c8) from t1; -c8 partition_key(c8) -2020-01-01 01:01:01 6375794890780556234 -select partition_key(c1, c2) from t1; -partition_key(c1, c2) -319562542098195289 -select partition_key(c1, c2, c3) from t1; -partition_key(c1, c2, c3) -3093204954362125526 -select partition_key(c1, c3) from t1; -partition_key(c1, c3) -9006715823204485749 -select c1, partition_key_v2(c1) from t1; -c1 partition_key_v2(c1) -1 8089716718896805586 -select c2, partition_key_v2(c2) from t1; -c2 partition_key_v2(c2) -NULL 6960269033020761575 -select c3, partition_key_v2(c3) from t1; -c3 partition_key_v2(c3) -1 5958971315933813165 -select c4, partition_key_v2(c4) from t1; -c4 partition_key_v2(c4) -abc 258901174748407223 -select c5, partition_key_v2(c5) from t1; -c5 partition_key_v2(c5) -abc 258901174748407223 -select c6, partition_key_v2(c6) from t1; -c6 partition_key_v2(c6) -2020-01-01 5558489265225801925 -select c7, partition_key_v2(c7) from t1; -c7 partition_key_v2(c7) -2020-01-01 01:01:01 3406840642020255355 -select c8, partition_key_v2(c8) from t1; -c8 partition_key_v2(c8) -2020-01-01 01:01:01 8121525409574338685 -select partition_key_v2(c1, c2) from t1; -partition_key_v2(c1, c2) -3042015303219230768 -select partition_key_v2(c1, c2, c3) from t1; -partition_key_v2(c1, c2, c3) -2899520937750054785 -select partition_key_v2(c1, c3) from t1; -partition_key_v2(c1, c3) -4685265492491719863 -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_regexp.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_regexp.result deleted file mode 100644 index 625266f0c..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_regexp.result +++ /dev/null @@ -1,42 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -create table t1 (c1 varchar(50), c2 varchar(50)); -insert into t1 (c1, c2) values ('abc1', '^abc[0-9]?$'); -insert into t1 (c1, c2) values ('abc1', '^abd'); -drop table if exists t2; -create table t2 (a varchar(50)); -insert into t2 values ("abc1"); -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select 'abcdef' regexp '^abc.*'; -'abcdef' regexp '^abc.*' -1 -select 'abcdef' regexp '^abd.*'; -'abcdef' regexp '^abd.*' -0 -select '' regexp '^$'; -'' regexp '^$' -1 -select 'a' regexp ''; -ERROR 42000: Got error 'empty (sub)expression' from regexp -select NULL regexp 'a'; -NULL regexp 'a' -NULL -select 'a' regexp NULL; -'a' regexp NULL -NULL -select c2, c2 regexp 'abc' from t1; -c2 c2 regexp 'abc' -^abc[0-9]?$ 1 -^abd 0 -select c2, (select a regexp c2 from t2) from t1; -c2 (select a regexp c2 from t2) -^abc[0-9]?$ 1 -^abd 0 -select c1, c2, c1 regexp c2 from t1; -c1 c2 c1 regexp c2 -abc1 ^abc[0-9]?$ 1 -abc1 ^abd 0 -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_regexp_func.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_regexp_func.result deleted file mode 100644 index 0bb56b323..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_regexp_func.result +++ /dev/null @@ -1,165 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -set @@ob_enable_plan_cache = 0; -select regexp_like('abc', 'a.*') from dual; -regexp_like('abc', 'a.*') -1 -select regexp_like('abc', 'a.* ') from dual; -regexp_like('abc', 'a.* ') -0 -select regexp_like('abc', 'a.* ', NULL) from dual; -regexp_like('abc', 'a.* ', NULL) -NULL -select regexp_like('abc', 'a.* ', 'x') from dual; -ERROR HY000: Invalid argument -select regexp_like('abc', NULL) from dual; -regexp_like('abc', NULL) -NULL -select regexp_like(NULL, 'a.*') from dual; -regexp_like(NULL, 'a.*') -NULL -select regexp_like(123, 123) from dual; -regexp_like(123, 123) -1 -select regexp_like('我是好人', '.是.*') from dual; -regexp_like('我是好人', '.是.*') -1 -select regexp_instr('abcadef', 'a.') from dual; -regexp_instr('abcadef', 'a.') -1 -select regexp_instr('abcadef', 'a.', 1, 2) from dual; -regexp_instr('abcadef', 'a.', 1, 2) -4 -select regexp_instr('abcadef', 'a.', 1, 2, 0) from dual; -regexp_instr('abcadef', 'a.', 1, 2, 0) -4 -select regexp_instr('abcadef', 'a.', 1, 2, 1) from dual; -regexp_instr('abcadef', 'a.', 1, 2, 1) -6 -select regexp_instr('abcadef', 'a.', 0, 2, 1) from dual; -ERROR HY000: Invalid argument -select regexp_instr('abcadef', 'a.', 1, 0, 1) from dual; -ERROR HY000: Invalid argument -select regexp_instr('abcadef', 'a.', 1, 2, -1) from dual; -ERROR HY000: Invalid argument -select regexp_instr('abcadef', 'a.', 100, 2) from dual; -regexp_instr('abcadef', 'a.', 100, 2) -0 -select regexp_instr('abcadef', 'a.', 1, 200) from dual; -regexp_instr('abcadef', 'a.', 1, 200) -0 -select regexp_instr('abcadef', 'a. ', 1, 2, 1, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_instr('', 'a. ', 1, 2, 1, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_instr('abcadef', '', 1, 2, 1, 'x') from dual; -ERROR 42000: Got error 'empty (sub)expression' from regexp -select regexp_instr('abcadef', 'a. ', NULL, 2, 1, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_instr('abcadef', 'a. ', 1, NULL, 1, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_instr('abcadef', 'a. ', 1, 2, NULL, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_instr('abcadef', 'a. ', 1, 2, 1, NULL) from dual; -regexp_instr('abcadef', 'a. ', 1, 2, 1, NULL) -NULL -select regexp_instr(12341834, 1.3, '1', '2', 1) from dual; -regexp_instr(12341834, 1.3, '1', '2', 1) -8 -select regexp_instr('我是好人', '是.') from dual; -regexp_instr('我是好人', '是.') -2 -select regexp_substr('abcadef', 'a.', 1) from dual; -regexp_substr('abcadef', 'a.', 1) -ab -select regexp_substr('abcadef', 'a.', 1, 2) from dual; -regexp_substr('abcadef', 'a.', 1, 2) -ad -select regexp_substr('abcadef', 'a.', 0, 2) from dual; -ERROR HY000: Invalid argument -select regexp_substr('abcadef', 'a.', 1, 0) from dual; -ERROR HY000: Invalid argument -select regexp_substr('abcadef', 'a.', 10, 2) from dual; -regexp_substr('abcadef', 'a.', 10, 2) -NULL -select regexp_substr('abcadef', 'a.', 1, 10) from dual; -regexp_substr('abcadef', 'a.', 1, 10) -NULL -select regexp_substr('abcadef', 'a. ', 1, 2, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_substr('', 'a. ', 1, 2, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_substr('abcadef', '', 1, 2, 'x') from dual; -ERROR 42000: Got error 'empty (sub)expression' from regexp -select regexp_substr('abcadef', 'a. ', NULL, 2, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_substr('abcadef', 'a. ', 1, NULL, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_substr('abcadef', 'a. ', 1, 2, NULL) from dual; -regexp_substr('abcadef', 'a. ', 1, 2, NULL) -NULL -select regexp_substr(12341834, 1.3, '1.9', '2') from dual; -regexp_substr(12341834, 1.3, '1.9', '2') -183 -Warnings: -Warning 1292 Truncated incorrect INTEGER value: '1.9' -select regexp_replace('我是好人', '是.') from dual; -regexp_replace('我是好人', '是.') -我人 -select regexp_replace('abcadef', 'a.') from dual; -regexp_replace('abcadef', 'a.') -cef -select regexp_replace('abcadef', 'a.*') from dual; -regexp_replace('abcadef', 'a.*') - -select regexp_replace('abcadef', 'a.', 'X') from dual; -regexp_replace('abcadef', 'a.', 'X') -XcXef -select regexp_replace('abcadef', 'a.', 'X', 1) from dual; -regexp_replace('abcadef', 'a.', 'X', 1) -XcXef -select regexp_replace('abcadef', 'a.', 'X', 1, 2) from dual; -regexp_replace('abcadef', 'a.', 'X', 1, 2) -abcXef -select regexp_replace('abcadef', 'a.', 'X', 2, 1) from dual; -regexp_replace('abcadef', 'a.', 'X', 2, 1) -abcXef -select regexp_replace('abcadef', 'a.', 'X', 2, 2) from dual; -regexp_replace('abcadef', 'a.', 'X', 2, 2) -abcadef -select regexp_replace('abcadef', 'a.', 'X', 1, 0) from dual; -regexp_replace('abcadef', 'a.', 'X', 1, 0) -XcXef -select regexp_replace('abcadef', 'a.', 'X', 1, -1) from dual; -ERROR HY000: Invalid argument -select regexp_replace('abcadef', 'a.', 'X', 10, 2) from dual; -regexp_replace('abcadef', 'a.', 'X', 10, 2) -abcadef -select regexp_replace('abcadef', 'a.', 'X', 1, 100) from dual; -regexp_replace('abcadef', 'a.', 'X', 1, 100) -abcadef -select regexp_replace('abcadef', 'a. ', 'X', 1, 2) from dual; -regexp_replace('abcadef', 'a. ', 'X', 1, 2) -abcadef -select regexp_replace('abcadef', 'a. ', 'X', 1, 2, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_replace('', 'a. ', 'X', 1, 2, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_replace('abcadef', '', 'X', 1, 2, 'x') from dual; -ERROR 42000: Got error 'empty (sub)expression' from regexp -select regexp_replace('abcadef', 'a. ', NULL, 1, 2, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_replace('abcadef', 'a. ', 'X', NULL, 2, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_replace('abcadef', 'a. ', 'X', 1, NULL, 'x') from dual; -ERROR HY000: Invalid argument -select regexp_replace('abcadef', 'a. ', 'X', 1, 2, NULL) from dual; -regexp_replace('abcadef', 'a. ', 'X', 1, 2, NULL) -NULL -select regexp_replace(12341834, 1.3, 99, '1', '2') from dual; -regexp_replace(12341834, 1.3, 99, '1', '2') -1234994 -select regexp_replace('我是好人', '是.', '.....') from dual; -regexp_replace('我是好人', '是.', '.....') -我.....人 -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_repeat.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_repeat.result deleted file mode 100644 index a4c885c3d..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_repeat.result +++ /dev/null @@ -1,44 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select repeat("abc", -1); -repeat("abc", -1) - -select repeat("abc", 0); -repeat("abc", 0) - -select repeat("abc", 1); -repeat("abc", 1) -abc -select repeat("abc", 2); -repeat("abc", 2) -abcabc -select repeat("abc", 3); -repeat("abc", 3) -abcabcabc -select repeat("abc", "2.1"); -repeat("abc", "2.1") -abcabc -select repeat("abc", "2.9"); -repeat("abc", "2.9") -abcabc -select repeat("", 2); -repeat("", 2) - -select repeat(NULL, 2); -repeat(NULL, 2) -NULL -select repeat("abc", NULL); -repeat("abc", NULL) -NULL -select repeat(1.414, 1); -repeat(1.414, 1) -1.414 -select repeat(1.414, 2); -repeat(1.414, 2) -1.4141.414 -select repeat("abc", 200000000); -repeat("abc", 200000000) -NULL -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_replace.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_replace.result deleted file mode 100644 index 8faa6ef4d..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_replace.result +++ /dev/null @@ -1,33 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select replace('abcdbf', 'b', 'cc'); -replace('abcdbf', 'b', 'cc') -acccdccf -select replace('abcdbf', 'b'); -ERROR 42000: Incorrect parameter count in the call to native function 'replace' -select replace('abcdbf', 'b', ''); -replace('abcdbf', 'b', '') -acdf -select replace('abcdbf', '', 'cc'); -replace('abcdbf', '', 'cc') -abcdbf -select replace('', 'b', 'cc'); -replace('', 'b', 'cc') - -select replace(NULL, 'b', 'cc'); -replace(NULL, 'b', 'cc') -NULL -select replace('abcdbf', NULL, 'cc'); -replace('abcdbf', NULL, 'cc') -NULL -select replace('abcdbf', 'b', NULL); -replace('abcdbf', 'b', NULL) -NULL -select replace('abc', 'abc', ''); -replace('abc', 'abc', '') - -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_sign.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_sign.result deleted file mode 100644 index 11983ee4f..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_sign.result +++ /dev/null @@ -1,746 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -drop table if exists t1, t2; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30), c_null int); -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5', null); -insert into t1 values(-1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --3.5, 4.5, --5.5, 6.5, --7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'-9.5', '10.5', null); -create table t2( -a1 char(3) primary key, -a2 int, -a3 char(3), -a4 float, -a5 datetime -); -insert into t2 values('AME',0,'SEA',0.100,date'1942-02-19'); -insert into t2 values('HBR',1,'SEA',0.085,date'1948-03-05'); -insert into t2 values('BOT',-2,'SEA',-0.085,date'1951-11-29'); -insert into t2 values('BMC',3,'SEA',-0.085,date'1958-09-08'); -insert into t2 values('TWU',+0,'LAX',-0.080,date'1969-10-05'); -insert into t2 values('BDL',-0,'DEN',-0.080,date'1960-11-27'); -insert into t2 values('DTX',1,'NYC',0.080,date'1961-05-04'); -insert into t2 values('PLS',-1,'WDC',-0.075,date'1949-01-02'); -insert into t2 values('ZAJ',2,'CHI',-0.075,date'1960-06-15'); -insert into t2 values('VVV',-2,'MON',0.075,date'1959-06-28'); -insert into t2 values('GTM',3,'DAL',-0.070,date'1977-09-23'); -insert into t2 values('SSJ',null,'CHI',null,date'1974-03-19'); -insert into t2 values('KKK',-3,'ATL',null,null); -insert into t2 values('XXX',null,'MIN',null,null); -insert into t2 values('WWW',1,'LED',null,null); -insert into t2 values('GG3',-3,'DD3',-0.051,date'1974-03-19'); -insert into t2 values('GG2',-3,'DD2',0.052,date'1974-03-19'); -insert into t2 values('GG1',3,'DD1',0.053,date'1974-03-19'); -select sign(null) from dual; -sign(null) -NULL -select c1, sign(c1) from t1; -c1 sign(c1) -1 1 --1 -1 -select c2, sign(c2) from t1; -c2 sign(c2) -2 1 -2 1 -select c3, sign(c3) from t1; -c3 sign(c3) -1 1 --1 -1 -select c4, sign(c4) from t1; -c4 sign(c4) -2 1 -2 1 -select c5, sign(c5) from t1; -c5 sign(c5) -1 1 --1 -1 -select c6, sign(c6) from t1; -c6 sign(c6) -2 1 -2 1 -select c7, sign(c7) from t1; -c7 sign(c7) -1 1 --1 -1 -select c8, sign(c8) from t1; -c8 sign(c8) -2 1 -2 1 -select c9, sign(c9) from t1; -c9 sign(c9) -1 1 --1 -1 -select c10, sign(c10) from t1; -c10 sign(c10) -2 1 -2 1 -select c11, sign(c11) from t1; -c11 sign(c11) -1 1 --1 -1 -select c12, sign(c12) from t1; -c12 sign(c12) -2 1 -2 1 -select c13, sign(c13) from t1; -c13 sign(c13) -3.5 1 --3.5 -1 -select c14, sign(c14) from t1; -c14 sign(c14) -4.5 1 -4.5 1 -select c15, sign(c15) from t1; -c15 sign(c15) -5.5 1 --5.5 -1 -select c16, sign(c16) from t1; -c16 sign(c16) -6.5 1 -6.5 1 -select c17, sign(c17) from t1; -c17 sign(c17) -8 1 --8 -1 -select c18, sign(c18) from t1; -c18 sign(c18) -9 1 -9 1 -select c19, sign(c19) from t1; -c19 sign(c19) -2019-12-01 12:00:00 1 -2019-12-01 12:00:00 1 -select c20, sign(c20) from t1; -c20 sign(c20) -2019-12-03 06:00:00 1 -2019-12-03 06:00:00 1 -select c21, sign(c21) from t1; -c21 sign(c21) -9.5 1 --9.5 -1 -select c22, sign(c22) from t1; -c22 sign(c22) -10.5 1 -10.5 1 -select sign(a1) from t2; -sign(a1) -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'AME' -Warning 1292 Truncated incorrect DOUBLE value: 'BDL' -Warning 1292 Truncated incorrect DOUBLE value: 'BMC' -Warning 1292 Truncated incorrect DOUBLE value: 'BOT' -Warning 1292 Truncated incorrect DOUBLE value: 'DTX' -Warning 1292 Truncated incorrect DOUBLE value: 'GG1' -Warning 1292 Truncated incorrect DOUBLE value: 'GG2' -Warning 1292 Truncated incorrect DOUBLE value: 'GG3' -Warning 1292 Truncated incorrect DOUBLE value: 'GTM' -Warning 1292 Truncated incorrect DOUBLE value: 'HBR' -Warning 1292 Truncated incorrect DOUBLE value: 'KKK' -Warning 1292 Truncated incorrect DOUBLE value: 'PLS' -Warning 1292 Truncated incorrect DOUBLE value: 'SSJ' -Warning 1292 Truncated incorrect DOUBLE value: 'TWU' -Warning 1292 Truncated incorrect DOUBLE value: 'VVV' -Warning 1292 Truncated incorrect DOUBLE value: 'WWW' -Warning 1292 Truncated incorrect DOUBLE value: 'XXX' -Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ' -select sign(a3) from t2; -sign(a3) -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'DEN' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'NYC' -Warning 1292 Truncated incorrect DOUBLE value: 'DD1' -Warning 1292 Truncated incorrect DOUBLE value: 'DD2' -Warning 1292 Truncated incorrect DOUBLE value: 'DD3' -Warning 1292 Truncated incorrect DOUBLE value: 'DAL' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'ATL' -Warning 1292 Truncated incorrect DOUBLE value: 'WDC' -Warning 1292 Truncated incorrect DOUBLE value: 'CHI' -Warning 1292 Truncated incorrect DOUBLE value: 'LAX' -Warning 1292 Truncated incorrect DOUBLE value: 'MON' -Warning 1292 Truncated incorrect DOUBLE value: 'LED' -Warning 1292 Truncated incorrect DOUBLE value: 'MIN' -Warning 1292 Truncated incorrect DOUBLE value: 'CHI' -select sign(a1),a2 from t2; -sign(a1) a2 -0 0 -0 0 -0 3 -0 -2 -0 1 -0 3 -0 -3 -0 -3 -0 3 -0 1 -0 -3 -0 -1 -0 NULL -0 0 -0 -2 -0 1 -0 NULL -0 2 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'AME' -Warning 1292 Truncated incorrect DOUBLE value: 'BDL' -Warning 1292 Truncated incorrect DOUBLE value: 'BMC' -Warning 1292 Truncated incorrect DOUBLE value: 'BOT' -Warning 1292 Truncated incorrect DOUBLE value: 'DTX' -Warning 1292 Truncated incorrect DOUBLE value: 'GG1' -Warning 1292 Truncated incorrect DOUBLE value: 'GG2' -Warning 1292 Truncated incorrect DOUBLE value: 'GG3' -Warning 1292 Truncated incorrect DOUBLE value: 'GTM' -Warning 1292 Truncated incorrect DOUBLE value: 'HBR' -Warning 1292 Truncated incorrect DOUBLE value: 'KKK' -Warning 1292 Truncated incorrect DOUBLE value: 'PLS' -Warning 1292 Truncated incorrect DOUBLE value: 'SSJ' -Warning 1292 Truncated incorrect DOUBLE value: 'TWU' -Warning 1292 Truncated incorrect DOUBLE value: 'VVV' -Warning 1292 Truncated incorrect DOUBLE value: 'WWW' -Warning 1292 Truncated incorrect DOUBLE value: 'XXX' -Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ' -select sign(a2) from t2 where sign(a4) >= 0; -sign(a2) -0 -1 -1 --1 -1 --1 -select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2; -sign(a4) -1 --1 --1 -1 --1 -NULL --1 --1 -1 -select * from t2 group by sign(a2); -a1 a2 a3 a4 a5 -AME 0 SEA 0.1 timestamp -BMC 3 SEA -0.085 timestamp -BOT -2 SEA -0.085 timestamp -SSJ NULL CHI NULL timestamp -select * from t2 order by sign(a4) ; -a1 a2 a3 a4 a5 -XXX NULL MIN NULL timestamp -WWW 1 LED NULL timestamp -SSJ NULL CHI NULL timestamp -KKK -3 ATL NULL timestamp -BDL 0 DEN -0.08 timestamp -ZAJ 2 CHI -0.075 timestamp -TWU 0 LAX -0.08 timestamp -PLS -1 WDC -0.075 timestamp -GTM 3 DAL -0.07 timestamp -GG3 -3 DD3 -0.051 timestamp -BOT -2 SEA -0.085 timestamp -BMC 3 SEA -0.085 timestamp -HBR 1 SEA 0.085 timestamp -GG2 -3 DD2 0.052 timestamp -GG1 3 DD1 0.053 timestamp -DTX 1 NYC 0.08 timestamp -VVV -2 MON 0.075 timestamp -AME 0 SEA 0.1 timestamp -select * from t2 order by sign(a4) , a4 ; -a1 a2 a3 a4 a5 -XXX NULL MIN NULL timestamp -WWW 1 LED NULL timestamp -SSJ NULL CHI NULL timestamp -KKK -3 ATL NULL timestamp -BMC 3 SEA -0.085 timestamp -BOT -2 SEA -0.085 timestamp -BDL 0 DEN -0.08 timestamp -TWU 0 LAX -0.08 timestamp -ZAJ 2 CHI -0.075 timestamp -PLS -1 WDC -0.075 timestamp -GTM 3 DAL -0.07 timestamp -GG3 -3 DD3 -0.051 timestamp -GG2 -3 DD2 0.052 timestamp -GG1 3 DD1 0.053 timestamp -VVV -2 MON 0.075 timestamp -DTX 1 NYC 0.08 timestamp -HBR 1 SEA 0.085 timestamp -AME 0 SEA 0.1 timestamp -select * from t2 order by sign(a4) , a1 ; -a1 a2 a3 a4 a5 -KKK -3 ATL NULL timestamp -SSJ NULL CHI NULL timestamp -WWW 1 LED NULL timestamp -XXX NULL MIN NULL timestamp -BDL 0 DEN -0.08 timestamp -BMC 3 SEA -0.085 timestamp -BOT -2 SEA -0.085 timestamp -GG3 -3 DD3 -0.051 timestamp -GTM 3 DAL -0.07 timestamp -PLS -1 WDC -0.075 timestamp -TWU 0 LAX -0.08 timestamp -ZAJ 2 CHI -0.075 timestamp -AME 0 SEA 0.1 timestamp -DTX 1 NYC 0.08 timestamp -GG1 3 DD1 0.053 timestamp -GG2 -3 DD2 0.052 timestamp -HBR 1 SEA 0.085 timestamp -VVV -2 MON 0.075 timestamp -select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0; -abs(a2) sum(a4) -1 0.08999999612569809 -select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) ); -a1 a2 a3 a4 a5 -DTX 1 NYC 0.08 timestamp -HBR 1 SEA 0.085 timestamp -WWW 1 LED NULL timestamp -select sign( sum(a2) ) , sign( sum(a4) ) from t2; -sign( sum(a2) ) sign( sum(a4) ) -0 -1 -select sign( avg(a2) ) , sign( avg(a4) ) from t2; -sign( avg(a2) ) sign( avg(a4) ) -0 -1 -select sign( max(a2) ) , sign( min(a4) ) from t2; -sign( max(a2) ) sign( min(a4) ) -1 -1 -select sign(count(*)) from t2; -sign(count(*)) -1 -select * from t2 where sign( length(a1) ) = 1; -a1 a2 a3 a4 a5 -AME 0 SEA 0.1 timestamp -BDL 0 DEN -0.08 timestamp -BMC 3 SEA -0.085 timestamp -BOT -2 SEA -0.085 timestamp -DTX 1 NYC 0.08 timestamp -GG1 3 DD1 0.053 timestamp -GG2 -3 DD2 0.052 timestamp -GG3 -3 DD3 -0.051 timestamp -GTM 3 DAL -0.07 timestamp -HBR 1 SEA 0.085 timestamp -KKK -3 ATL NULL timestamp -PLS -1 WDC -0.075 timestamp -SSJ NULL CHI NULL timestamp -TWU 0 LAX -0.08 timestamp -VVV -2 MON 0.075 timestamp -WWW 1 LED NULL timestamp -XXX NULL MIN NULL timestamp -ZAJ 2 CHI -0.075 timestamp -select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2; -sign( cast(a1 as char(1024)) ) sign( cast(a3 as char(1024)) ) -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'AME' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'BDL' -Warning 1292 Truncated incorrect DOUBLE value: 'DEN' -Warning 1292 Truncated incorrect DOUBLE value: 'BMC' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'BOT' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'DTX' -Warning 1292 Truncated incorrect DOUBLE value: 'NYC' -Warning 1292 Truncated incorrect DOUBLE value: 'GG1' -Warning 1292 Truncated incorrect DOUBLE value: 'DD1' -Warning 1292 Truncated incorrect DOUBLE value: 'GG2' -Warning 1292 Truncated incorrect DOUBLE value: 'DD2' -Warning 1292 Truncated incorrect DOUBLE value: 'GG3' -Warning 1292 Truncated incorrect DOUBLE value: 'DD3' -Warning 1292 Truncated incorrect DOUBLE value: 'GTM' -Warning 1292 Truncated incorrect DOUBLE value: 'DAL' -Warning 1292 Truncated incorrect DOUBLE value: 'HBR' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'KKK' -Warning 1292 Truncated incorrect DOUBLE value: 'ATL' -Warning 1292 Truncated incorrect DOUBLE value: 'PLS' -Warning 1292 Truncated incorrect DOUBLE value: 'WDC' -Warning 1292 Truncated incorrect DOUBLE value: 'SSJ' -Warning 1292 Truncated incorrect DOUBLE value: 'CHI' -Warning 1292 Truncated incorrect DOUBLE value: 'TWU' -Warning 1292 Truncated incorrect DOUBLE value: 'LAX' -Warning 1292 Truncated incorrect DOUBLE value: 'VVV' -Warning 1292 Truncated incorrect DOUBLE value: 'MON' -Warning 1292 Truncated incorrect DOUBLE value: 'WWW' -Warning 1292 Truncated incorrect DOUBLE value: 'LED' -Warning 1292 Truncated incorrect DOUBLE value: 'XXX' -Warning 1292 Truncated incorrect DOUBLE value: 'MIN' -Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ' -Warning 1292 Truncated incorrect DOUBLE value: 'CHI' -select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2; -sign( cast(a2 as char(1024)) ) sign( cast(a4 as char(1024)) ) -0 1 -0 -1 -1 -1 --1 -1 -1 1 -1 1 --1 1 --1 -1 -1 -1 -1 1 --1 NULL --1 -1 -NULL NULL -0 -1 --1 1 -1 NULL -NULL NULL -1 -1 -select * from t2 as t21 join t2 as t22 on sign(t21.a2) = sign(t22.a4); -a1 a2 a3 a4 a5 a1 a2 a3 a4 a5 -ZAJ 2 CHI -0.075 1960-06-15 00:00:00 AME 0 SEA 0.1 1942-02-19 00:00:00 -WWW 1 LED NULL NULL AME 0 SEA 0.1 1942-02-19 00:00:00 -HBR 1 SEA 0.085 1948-03-05 00:00:00 AME 0 SEA 0.1 1942-02-19 00:00:00 -GTM 3 DAL -0.07 1977-09-23 00:00:00 AME 0 SEA 0.1 1942-02-19 00:00:00 -GG1 3 DD1 0.053 1974-03-19 00:00:00 AME 0 SEA 0.1 1942-02-19 00:00:00 -DTX 1 NYC 0.08 1961-05-04 00:00:00 AME 0 SEA 0.1 1942-02-19 00:00:00 -BMC 3 SEA -0.085 1958-09-08 00:00:00 AME 0 SEA 0.1 1942-02-19 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 BDL 0 DEN -0.08 1960-11-27 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 BDL 0 DEN -0.08 1960-11-27 00:00:00 -KKK -3 ATL NULL NULL BDL 0 DEN -0.08 1960-11-27 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 BDL 0 DEN -0.08 1960-11-27 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 BDL 0 DEN -0.08 1960-11-27 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 BDL 0 DEN -0.08 1960-11-27 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 BMC 3 SEA -0.085 1958-09-08 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 BMC 3 SEA -0.085 1958-09-08 00:00:00 -KKK -3 ATL NULL NULL BMC 3 SEA -0.085 1958-09-08 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 BMC 3 SEA -0.085 1958-09-08 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 BMC 3 SEA -0.085 1958-09-08 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 BMC 3 SEA -0.085 1958-09-08 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 BOT -2 SEA -0.085 1951-11-29 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 BOT -2 SEA -0.085 1951-11-29 00:00:00 -KKK -3 ATL NULL NULL BOT -2 SEA -0.085 1951-11-29 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 BOT -2 SEA -0.085 1951-11-29 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 BOT -2 SEA -0.085 1951-11-29 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 BOT -2 SEA -0.085 1951-11-29 00:00:00 -ZAJ 2 CHI -0.075 1960-06-15 00:00:00 DTX 1 NYC 0.08 1961-05-04 00:00:00 -WWW 1 LED NULL NULL DTX 1 NYC 0.08 1961-05-04 00:00:00 -HBR 1 SEA 0.085 1948-03-05 00:00:00 DTX 1 NYC 0.08 1961-05-04 00:00:00 -GTM 3 DAL -0.07 1977-09-23 00:00:00 DTX 1 NYC 0.08 1961-05-04 00:00:00 -GG1 3 DD1 0.053 1974-03-19 00:00:00 DTX 1 NYC 0.08 1961-05-04 00:00:00 -DTX 1 NYC 0.08 1961-05-04 00:00:00 DTX 1 NYC 0.08 1961-05-04 00:00:00 -BMC 3 SEA -0.085 1958-09-08 00:00:00 DTX 1 NYC 0.08 1961-05-04 00:00:00 -ZAJ 2 CHI -0.075 1960-06-15 00:00:00 GG1 3 DD1 0.053 1974-03-19 00:00:00 -WWW 1 LED NULL NULL GG1 3 DD1 0.053 1974-03-19 00:00:00 -HBR 1 SEA 0.085 1948-03-05 00:00:00 GG1 3 DD1 0.053 1974-03-19 00:00:00 -GTM 3 DAL -0.07 1977-09-23 00:00:00 GG1 3 DD1 0.053 1974-03-19 00:00:00 -GG1 3 DD1 0.053 1974-03-19 00:00:00 GG1 3 DD1 0.053 1974-03-19 00:00:00 -DTX 1 NYC 0.08 1961-05-04 00:00:00 GG1 3 DD1 0.053 1974-03-19 00:00:00 -BMC 3 SEA -0.085 1958-09-08 00:00:00 GG1 3 DD1 0.053 1974-03-19 00:00:00 -ZAJ 2 CHI -0.075 1960-06-15 00:00:00 GG2 -3 DD2 0.052 1974-03-19 00:00:00 -WWW 1 LED NULL NULL GG2 -3 DD2 0.052 1974-03-19 00:00:00 -HBR 1 SEA 0.085 1948-03-05 00:00:00 GG2 -3 DD2 0.052 1974-03-19 00:00:00 -GTM 3 DAL -0.07 1977-09-23 00:00:00 GG2 -3 DD2 0.052 1974-03-19 00:00:00 -GG1 3 DD1 0.053 1974-03-19 00:00:00 GG2 -3 DD2 0.052 1974-03-19 00:00:00 -DTX 1 NYC 0.08 1961-05-04 00:00:00 GG2 -3 DD2 0.052 1974-03-19 00:00:00 -BMC 3 SEA -0.085 1958-09-08 00:00:00 GG2 -3 DD2 0.052 1974-03-19 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 GG3 -3 DD3 -0.051 1974-03-19 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 GG3 -3 DD3 -0.051 1974-03-19 00:00:00 -KKK -3 ATL NULL NULL GG3 -3 DD3 -0.051 1974-03-19 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 GG3 -3 DD3 -0.051 1974-03-19 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 GG3 -3 DD3 -0.051 1974-03-19 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 GG3 -3 DD3 -0.051 1974-03-19 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 GTM 3 DAL -0.07 1977-09-23 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 GTM 3 DAL -0.07 1977-09-23 00:00:00 -KKK -3 ATL NULL NULL GTM 3 DAL -0.07 1977-09-23 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 GTM 3 DAL -0.07 1977-09-23 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 GTM 3 DAL -0.07 1977-09-23 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 GTM 3 DAL -0.07 1977-09-23 00:00:00 -ZAJ 2 CHI -0.075 1960-06-15 00:00:00 HBR 1 SEA 0.085 1948-03-05 00:00:00 -WWW 1 LED NULL NULL HBR 1 SEA 0.085 1948-03-05 00:00:00 -HBR 1 SEA 0.085 1948-03-05 00:00:00 HBR 1 SEA 0.085 1948-03-05 00:00:00 -GTM 3 DAL -0.07 1977-09-23 00:00:00 HBR 1 SEA 0.085 1948-03-05 00:00:00 -GG1 3 DD1 0.053 1974-03-19 00:00:00 HBR 1 SEA 0.085 1948-03-05 00:00:00 -DTX 1 NYC 0.08 1961-05-04 00:00:00 HBR 1 SEA 0.085 1948-03-05 00:00:00 -BMC 3 SEA -0.085 1958-09-08 00:00:00 HBR 1 SEA 0.085 1948-03-05 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 PLS -1 WDC -0.075 1949-01-02 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 PLS -1 WDC -0.075 1949-01-02 00:00:00 -KKK -3 ATL NULL NULL PLS -1 WDC -0.075 1949-01-02 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 PLS -1 WDC -0.075 1949-01-02 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 PLS -1 WDC -0.075 1949-01-02 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 PLS -1 WDC -0.075 1949-01-02 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 TWU 0 LAX -0.08 1969-10-05 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 TWU 0 LAX -0.08 1969-10-05 00:00:00 -KKK -3 ATL NULL NULL TWU 0 LAX -0.08 1969-10-05 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 TWU 0 LAX -0.08 1969-10-05 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 TWU 0 LAX -0.08 1969-10-05 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 TWU 0 LAX -0.08 1969-10-05 00:00:00 -ZAJ 2 CHI -0.075 1960-06-15 00:00:00 VVV -2 MON 0.075 1959-06-28 00:00:00 -WWW 1 LED NULL NULL VVV -2 MON 0.075 1959-06-28 00:00:00 -HBR 1 SEA 0.085 1948-03-05 00:00:00 VVV -2 MON 0.075 1959-06-28 00:00:00 -GTM 3 DAL -0.07 1977-09-23 00:00:00 VVV -2 MON 0.075 1959-06-28 00:00:00 -GG1 3 DD1 0.053 1974-03-19 00:00:00 VVV -2 MON 0.075 1959-06-28 00:00:00 -DTX 1 NYC 0.08 1961-05-04 00:00:00 VVV -2 MON 0.075 1959-06-28 00:00:00 -BMC 3 SEA -0.085 1958-09-08 00:00:00 VVV -2 MON 0.075 1959-06-28 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 ZAJ 2 CHI -0.075 1960-06-15 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 ZAJ 2 CHI -0.075 1960-06-15 00:00:00 -KKK -3 ATL NULL NULL ZAJ 2 CHI -0.075 1960-06-15 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 ZAJ 2 CHI -0.075 1960-06-15 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 ZAJ 2 CHI -0.075 1960-06-15 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 ZAJ 2 CHI -0.075 1960-06-15 00:00:00 -select tmp.a1 , sign(tmp.a2) , tmp.a3 , sign(tmp.a4) from t2 as tmp; -a1 sign(tmp.a2) a3 sign(tmp.a4) -AME 0 SEA 1 -BDL 0 DEN -1 -BMC 1 SEA -1 -BOT -1 SEA -1 -DTX 1 NYC 1 -GG1 1 DD1 1 -GG2 -1 DD2 1 -GG3 -1 DD3 -1 -GTM 1 DAL -1 -HBR 1 SEA 1 -KKK -1 ATL NULL -PLS -1 WDC -1 -SSJ NULL CHI NULL -TWU 0 LAX -1 -VVV -1 MON 1 -WWW 1 LED NULL -XXX NULL MIN NULL -ZAJ 1 CHI -1 -select sign(a2) from t2 where sign(a4) >= 0 for update; -sign(a2) -0 -1 -1 --1 -1 --1 -select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2 for update; -sign(a4) -1 --1 --1 -1 --1 -NULL --1 --1 -1 -select * from t2 group by sign(a2) for update; -a1 a2 a3 a4 a5 -AME 0 SEA 0.1 1942-02-19 00:00:00 -BMC 3 SEA -0.085 1958-09-08 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 -SSJ NULL CHI NULL 1974-03-19 00:00:00 -select * from t2 order by sign(a4) for update; -a1 a2 a3 a4 a5 -XXX NULL MIN NULL NULL -WWW 1 LED NULL NULL -SSJ NULL CHI NULL 1974-03-19 00:00:00 -KKK -3 ATL NULL NULL -BDL 0 DEN -0.08 1960-11-27 00:00:00 -ZAJ 2 CHI -0.075 1960-06-15 00:00:00 -TWU 0 LAX -0.08 1969-10-05 00:00:00 -PLS -1 WDC -0.075 1949-01-02 00:00:00 -GTM 3 DAL -0.07 1977-09-23 00:00:00 -GG3 -3 DD3 -0.051 1974-03-19 00:00:00 -BOT -2 SEA -0.085 1951-11-29 00:00:00 -BMC 3 SEA -0.085 1958-09-08 00:00:00 -HBR 1 SEA 0.085 1948-03-05 00:00:00 -GG2 -3 DD2 0.052 1974-03-19 00:00:00 -GG1 3 DD1 0.053 1974-03-19 00:00:00 -DTX 1 NYC 0.08 1961-05-04 00:00:00 -VVV -2 MON 0.075 1959-06-28 00:00:00 -AME 0 SEA 0.1 1942-02-19 00:00:00 -select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0 for update; -abs(a2) sum(a4) -1 0.08999999612569809 -select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) ) for update; -a1 a2 a3 a4 a5 -DTX 1 NYC 0.08 timestamp -HBR 1 SEA 0.085 timestamp -WWW 1 LED NULL timestamp -select sign( sum(a2) ) , sign( sum(a4) ) from t2 for update; -sign( sum(a2) ) sign( sum(a4) ) -0 -1 -select sign( avg(a2) ) , sign( avg(a4) ) from t2 for update; -sign( avg(a2) ) sign( avg(a4) ) -0 -1 -select sign( max(a2) ) , sign( min(a4) ) from t2 for update; -sign( max(a2) ) sign( min(a4) ) -1 -1 -select sign(count(*)) from t2 for update; -sign(count(*)) -1 -select * from t2 where sign( length(a1) ) = 1 for update; -a1 a2 a3 a4 a5 -AME 0 SEA 0.1 timestamp -BDL 0 DEN -0.08 timestamp -BMC 3 SEA -0.085 timestamp -BOT -2 SEA -0.085 timestamp -DTX 1 NYC 0.08 timestamp -GG1 3 DD1 0.053 timestamp -GG2 -3 DD2 0.052 timestamp -GG3 -3 DD3 -0.051 timestamp -GTM 3 DAL -0.07 timestamp -HBR 1 SEA 0.085 timestamp -KKK -3 ATL NULL timestamp -PLS -1 WDC -0.075 timestamp -SSJ NULL CHI NULL timestamp -TWU 0 LAX -0.08 timestamp -VVV -2 MON 0.075 timestamp -WWW 1 LED NULL timestamp -XXX NULL MIN NULL timestamp -ZAJ 2 CHI -0.075 timestamp -select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2 for update; -sign( cast(a1 as char(1024)) ) sign( cast(a3 as char(1024)) ) -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -0 0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'AME' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'BDL' -Warning 1292 Truncated incorrect DOUBLE value: 'DEN' -Warning 1292 Truncated incorrect DOUBLE value: 'BMC' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'BOT' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'DTX' -Warning 1292 Truncated incorrect DOUBLE value: 'NYC' -Warning 1292 Truncated incorrect DOUBLE value: 'GG1' -Warning 1292 Truncated incorrect DOUBLE value: 'DD1' -Warning 1292 Truncated incorrect DOUBLE value: 'GG2' -Warning 1292 Truncated incorrect DOUBLE value: 'DD2' -Warning 1292 Truncated incorrect DOUBLE value: 'GG3' -Warning 1292 Truncated incorrect DOUBLE value: 'DD3' -Warning 1292 Truncated incorrect DOUBLE value: 'GTM' -Warning 1292 Truncated incorrect DOUBLE value: 'DAL' -Warning 1292 Truncated incorrect DOUBLE value: 'HBR' -Warning 1292 Truncated incorrect DOUBLE value: 'SEA' -Warning 1292 Truncated incorrect DOUBLE value: 'KKK' -Warning 1292 Truncated incorrect DOUBLE value: 'ATL' -Warning 1292 Truncated incorrect DOUBLE value: 'PLS' -Warning 1292 Truncated incorrect DOUBLE value: 'WDC' -Warning 1292 Truncated incorrect DOUBLE value: 'SSJ' -Warning 1292 Truncated incorrect DOUBLE value: 'CHI' -Warning 1292 Truncated incorrect DOUBLE value: 'TWU' -Warning 1292 Truncated incorrect DOUBLE value: 'LAX' -Warning 1292 Truncated incorrect DOUBLE value: 'VVV' -Warning 1292 Truncated incorrect DOUBLE value: 'MON' -Warning 1292 Truncated incorrect DOUBLE value: 'WWW' -Warning 1292 Truncated incorrect DOUBLE value: 'LED' -Warning 1292 Truncated incorrect DOUBLE value: 'XXX' -Warning 1292 Truncated incorrect DOUBLE value: 'MIN' -Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ' -Warning 1292 Truncated incorrect DOUBLE value: 'CHI' -select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2 for update; -sign( cast(a2 as char(1024)) ) sign( cast(a4 as char(1024)) ) -0 1 -0 -1 -1 -1 --1 -1 -1 1 -1 1 --1 1 --1 -1 -1 -1 -1 1 --1 NULL --1 -1 -NULL NULL -0 -1 --1 1 -1 NULL -NULL NULL -1 -1 diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_str.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_str.result deleted file mode 100644 index 08ca057a2..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_str.result +++ /dev/null @@ -1,6061 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30), c_null int); -select * from t1; -c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c_null -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5', null); -insert into t1 values(-1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --3.5, 4.5, --5.5, 6.5, --7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'-9.5', '10.5', null); -select quote(null); -quote(null) -NULL -select interval(null, null), interval(null, 1), interval(null, 1, 2), interval(null, 1, null), -interval(1, 1,1,2), interval('1', '2'); -interval(null, null) interval(null, 1) interval(null, 1, 2) interval(null, 1, null) interval(1, 1,1,2) interval('1', '2') --1 -1 -1 -1 2 0 -select interval('a', 1); -interval('a', 1) -0 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'a' -select interval(1, 1, 1,1); -interval(1, 1, 1,1) -3 -select make_set(null, null), make_set(null, 1), make_set(1, null); -make_set(null, null) make_set(null, 1) make_set(1, null) -NULL NULL -select concat_ws(null, null), concat_ws(',', null), concat_ws(',', null, 1, null),concat_ws(',', null, 1), concat_ws(',', 1, null), -concat_ws(',', ''), concat_ws(',','',''), concat_ws(',','','1','', '2'); -concat_ws(null, null) concat_ws(',', null) concat_ws(',', null, 1, null) concat_ws(',', null, 1) concat_ws(',', 1, null) concat_ws(',', '') concat_ws(',','','') concat_ws(',','','1','', '2') -NULL 1 1 1 , ,1,,2 -select sys_op_opnsize(null); -sys_op_opnsize(null) -12 -select c1, quote(c1) from t1; -c1 quote(c1) -1 '1' --1 '-1' -select c1, sys_op_opnsize(c1) from t1; -c1 sys_op_opnsize(c1) -1 20 --1 20 -select c1, c1, make_set(c1, c1) from t1; -c1 c1 make_set(c1, c1) -1 1 1 --1 -1 -1 -select c1, c1, concat_ws(c1, c1) from t1; -c1 c1 concat_ws(c1, c1) -1 1 1 --1 -1 -1 -select c1, c1, interval(c1, c1) from t1; -c1 c1 interval(c1, c1) -1 1 1 --1 -1 1 -select c1, c2, make_set(c1, c2) from t1; -c1 c2 make_set(c1, c2) -1 2 2 --1 2 2 -select c1, c2, concat_ws(c1, c2) from t1; -c1 c2 concat_ws(c1, c2) -1 2 2 --1 2 2 -select c1, c2, interval(c1, c2) from t1; -c1 c2 interval(c1, c2) -1 2 0 --1 2 0 -select c1, c3, make_set(c1, c3) from t1; -c1 c3 make_set(c1, c3) -1 1 1 --1 -1 -1 -select c1, c3, concat_ws(c1, c3) from t1; -c1 c3 concat_ws(c1, c3) -1 1 1 --1 -1 -1 -select c1, c3, interval(c1, c3) from t1; -c1 c3 interval(c1, c3) -1 1 1 --1 -1 1 -select c1, c4, make_set(c1, c4) from t1; -c1 c4 make_set(c1, c4) -1 2 2 --1 2 2 -select c1, c4, concat_ws(c1, c4) from t1; -c1 c4 concat_ws(c1, c4) -1 2 2 --1 2 2 -select c1, c4, interval(c1, c4) from t1; -c1 c4 interval(c1, c4) -1 2 0 --1 2 0 -select c1, c5, make_set(c1, c5) from t1; -c1 c5 make_set(c1, c5) -1 1 1 --1 -1 -1 -select c1, c5, concat_ws(c1, c5) from t1; -c1 c5 concat_ws(c1, c5) -1 1 1 --1 -1 -1 -select c1, c5, interval(c1, c5) from t1; -c1 c5 interval(c1, c5) -1 1 1 --1 -1 1 -select c1, c6, make_set(c1, c6) from t1; -c1 c6 make_set(c1, c6) -1 2 2 --1 2 2 -select c1, c6, concat_ws(c1, c6) from t1; -c1 c6 concat_ws(c1, c6) -1 2 2 --1 2 2 -select c1, c6, interval(c1, c6) from t1; -c1 c6 interval(c1, c6) -1 2 0 --1 2 0 -select c1, c7, make_set(c1, c7) from t1; -c1 c7 make_set(c1, c7) -1 1 1 --1 -1 -1 -select c1, c7, concat_ws(c1, c7) from t1; -c1 c7 concat_ws(c1, c7) -1 1 1 --1 -1 -1 -select c1, c7, interval(c1, c7) from t1; -c1 c7 interval(c1, c7) -1 1 1 --1 -1 1 -select c1, c8, make_set(c1, c8) from t1; -c1 c8 make_set(c1, c8) -1 2 2 --1 2 2 -select c1, c8, concat_ws(c1, c8) from t1; -c1 c8 concat_ws(c1, c8) -1 2 2 --1 2 2 -select c1, c8, interval(c1, c8) from t1; -c1 c8 interval(c1, c8) -1 2 0 --1 2 0 -select c1, c9, make_set(c1, c9) from t1; -c1 c9 make_set(c1, c9) -1 1 1 --1 -1 -1 -select c1, c9, concat_ws(c1, c9) from t1; -c1 c9 concat_ws(c1, c9) -1 1 1 --1 -1 -1 -select c1, c9, interval(c1, c9) from t1; -c1 c9 interval(c1, c9) -1 1 1 --1 -1 1 -select c1, c10, make_set(c1, c10) from t1; -c1 c10 make_set(c1, c10) -1 2 2 --1 2 2 -select c1, c10, concat_ws(c1, c10) from t1; -c1 c10 concat_ws(c1, c10) -1 2 2 --1 2 2 -select c1, c10, interval(c1, c10) from t1; -c1 c10 interval(c1, c10) -1 2 0 --1 2 0 -select c1, c11, make_set(c1, c11) from t1; -c1 c11 make_set(c1, c11) -1 1 1 --1 -1 -1 -select c1, c11, concat_ws(c1, c11) from t1; -c1 c11 concat_ws(c1, c11) -1 1 1 --1 -1 -1 -select c1, c11, interval(c1, c11) from t1; -c1 c11 interval(c1, c11) -1 1 1 --1 -1 1 -select c1, c12, make_set(c1, c12) from t1; -c1 c12 make_set(c1, c12) -1 2 2 --1 2 2 -select c1, c12, concat_ws(c1, c12) from t1; -c1 c12 concat_ws(c1, c12) -1 2 2 --1 2 2 -select c1, c12, interval(c1, c12) from t1; -c1 c12 interval(c1, c12) -1 2 0 --1 2 0 -select c1, c13, make_set(c1, c13) from t1; -c1 c13 make_set(c1, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c1, c13, concat_ws(c1, c13) from t1; -c1 c13 concat_ws(c1, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c1, c13, interval(c1, c13) from t1; -c1 c13 interval(c1, c13) -1 3.5 0 --1 -3.5 1 -select c1, c14, make_set(c1, c14) from t1; -c1 c14 make_set(c1, c14) -1 4.5 4.5 --1 4.5 4.5 -select c1, c14, concat_ws(c1, c14) from t1; -c1 c14 concat_ws(c1, c14) -1 4.5 4.5 --1 4.5 4.5 -select c1, c14, interval(c1, c14) from t1; -c1 c14 interval(c1, c14) -1 4.5 0 --1 4.5 0 -select c1, c15, make_set(c1, c15) from t1; -c1 c15 make_set(c1, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c1, c15, concat_ws(c1, c15) from t1; -c1 c15 concat_ws(c1, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c1, c15, interval(c1, c15) from t1; -c1 c15 interval(c1, c15) -1 5.5 0 --1 -5.5 1 -select c1, c16, make_set(c1, c16) from t1; -c1 c16 make_set(c1, c16) -1 6.5 6.5 --1 6.5 6.5 -select c1, c16, concat_ws(c1, c16) from t1; -c1 c16 concat_ws(c1, c16) -1 6.5 6.5 --1 6.5 6.5 -select c1, c16, interval(c1, c16) from t1; -c1 c16 interval(c1, c16) -1 6.5 0 --1 6.5 0 -select c1, c17, make_set(c1, c17) from t1; -c1 c17 make_set(c1, c17) -1 8 8 --1 -8 -8 -select c1, c17, concat_ws(c1, c17) from t1; -c1 c17 concat_ws(c1, c17) -1 8 8 --1 -8 -8 -select c1, c17, interval(c1, c17) from t1; -c1 c17 interval(c1, c17) -1 8 0 --1 -8 1 -select c1, c18, make_set(c1, c18) from t1; -c1 c18 make_set(c1, c18) -1 9 9 --1 9 9 -select c1, c18, concat_ws(c1, c18) from t1; -c1 c18 concat_ws(c1, c18) -1 9 9 --1 9 9 -select c1, c18, interval(c1, c18) from t1; -c1 c18 interval(c1, c18) -1 9 0 --1 9 0 -select c1, c19, make_set(c1, c19) from t1; -c1 c19 make_set(c1, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c1, c19, concat_ws(c1, c19) from t1; -c1 c19 concat_ws(c1, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c1, c19, interval(c1, c19) from t1; -c1 c19 interval(c1, c19) -1 2019-12-01 12:00:00 0 --1 2019-12-01 12:00:00 0 -select c1, c20, make_set(c1, c20) from t1; -c1 c20 make_set(c1, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c1, c20, concat_ws(c1, c20) from t1; -c1 c20 concat_ws(c1, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c1, c20, interval(c1, c20) from t1; -c1 c20 interval(c1, c20) -1 2019-12-03 06:00:00 0 --1 2019-12-03 06:00:00 0 -select c1, c21, make_set(c1, c21) from t1; -c1 c21 make_set(c1, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c1, c21, concat_ws(c1, c21) from t1; -c1 c21 concat_ws(c1, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c1, c21, interval(c1, c21) from t1; -c1 c21 interval(c1, c21) -1 9.5 0 --1 -9.5 1 -select c1, c22, make_set(c1, c22) from t1; -c1 c22 make_set(c1, c22) -1 10.5 10.5 --1 10.5 10.5 -select c1, c22, concat_ws(c1, c22) from t1; -c1 c22 concat_ws(c1, c22) -1 10.5 10.5 --1 10.5 10.5 -select c1, c22, interval(c1, c22) from t1; -c1 c22 interval(c1, c22) -1 10.5 0 --1 10.5 0 -select c2, quote(c2) from t1; -c2 quote(c2) -2 '2' -2 '2' -select c2, sys_op_opnsize(c2) from t1; -c2 sys_op_opnsize(c2) -2 20 -2 20 -select c2, c1, make_set(c2, c1) from t1; -c2 c1 make_set(c2, c1) -2 1 -2 -1 -select c2, c1, concat_ws(c2, c1) from t1; -c2 c1 concat_ws(c2, c1) -2 1 1 -2 -1 -1 -select c2, c1, interval(c2, c1) from t1; -c2 c1 interval(c2, c1) -2 1 1 -2 -1 1 -select c2, c2, make_set(c2, c2) from t1; -c2 c2 make_set(c2, c2) -2 2 -2 2 -select c2, c2, concat_ws(c2, c2) from t1; -c2 c2 concat_ws(c2, c2) -2 2 2 -2 2 2 -select c2, c2, interval(c2, c2) from t1; -c2 c2 interval(c2, c2) -2 2 1 -2 2 1 -select c2, c3, make_set(c2, c3) from t1; -c2 c3 make_set(c2, c3) -2 1 -2 -1 -select c2, c3, concat_ws(c2, c3) from t1; -c2 c3 concat_ws(c2, c3) -2 1 1 -2 -1 -1 -select c2, c3, interval(c2, c3) from t1; -c2 c3 interval(c2, c3) -2 1 1 -2 -1 1 -select c2, c4, make_set(c2, c4) from t1; -c2 c4 make_set(c2, c4) -2 2 -2 2 -select c2, c4, concat_ws(c2, c4) from t1; -c2 c4 concat_ws(c2, c4) -2 2 2 -2 2 2 -select c2, c4, interval(c2, c4) from t1; -c2 c4 interval(c2, c4) -2 2 1 -2 2 1 -select c2, c5, make_set(c2, c5) from t1; -c2 c5 make_set(c2, c5) -2 1 -2 -1 -select c2, c5, concat_ws(c2, c5) from t1; -c2 c5 concat_ws(c2, c5) -2 1 1 -2 -1 -1 -select c2, c5, interval(c2, c5) from t1; -c2 c5 interval(c2, c5) -2 1 1 -2 -1 1 -select c2, c6, make_set(c2, c6) from t1; -c2 c6 make_set(c2, c6) -2 2 -2 2 -select c2, c6, concat_ws(c2, c6) from t1; -c2 c6 concat_ws(c2, c6) -2 2 2 -2 2 2 -select c2, c6, interval(c2, c6) from t1; -c2 c6 interval(c2, c6) -2 2 1 -2 2 1 -select c2, c7, make_set(c2, c7) from t1; -c2 c7 make_set(c2, c7) -2 1 -2 -1 -select c2, c7, concat_ws(c2, c7) from t1; -c2 c7 concat_ws(c2, c7) -2 1 1 -2 -1 -1 -select c2, c7, interval(c2, c7) from t1; -c2 c7 interval(c2, c7) -2 1 1 -2 -1 1 -select c2, c8, make_set(c2, c8) from t1; -c2 c8 make_set(c2, c8) -2 2 -2 2 -select c2, c8, concat_ws(c2, c8) from t1; -c2 c8 concat_ws(c2, c8) -2 2 2 -2 2 2 -select c2, c8, interval(c2, c8) from t1; -c2 c8 interval(c2, c8) -2 2 1 -2 2 1 -select c2, c9, make_set(c2, c9) from t1; -c2 c9 make_set(c2, c9) -2 1 -2 -1 -select c2, c9, concat_ws(c2, c9) from t1; -c2 c9 concat_ws(c2, c9) -2 1 1 -2 -1 -1 -select c2, c9, interval(c2, c9) from t1; -c2 c9 interval(c2, c9) -2 1 1 -2 -1 1 -select c2, c10, make_set(c2, c10) from t1; -c2 c10 make_set(c2, c10) -2 2 -2 2 -select c2, c10, concat_ws(c2, c10) from t1; -c2 c10 concat_ws(c2, c10) -2 2 2 -2 2 2 -select c2, c10, interval(c2, c10) from t1; -c2 c10 interval(c2, c10) -2 2 1 -2 2 1 -select c2, c11, make_set(c2, c11) from t1; -c2 c11 make_set(c2, c11) -2 1 -2 -1 -select c2, c11, concat_ws(c2, c11) from t1; -c2 c11 concat_ws(c2, c11) -2 1 1 -2 -1 -1 -select c2, c11, interval(c2, c11) from t1; -c2 c11 interval(c2, c11) -2 1 1 -2 -1 1 -select c2, c12, make_set(c2, c12) from t1; -c2 c12 make_set(c2, c12) -2 2 -2 2 -select c2, c12, concat_ws(c2, c12) from t1; -c2 c12 concat_ws(c2, c12) -2 2 2 -2 2 2 -select c2, c12, interval(c2, c12) from t1; -c2 c12 interval(c2, c12) -2 2 1 -2 2 1 -select c2, c13, make_set(c2, c13) from t1; -c2 c13 make_set(c2, c13) -2 3.5 -2 -3.5 -select c2, c13, concat_ws(c2, c13) from t1; -c2 c13 concat_ws(c2, c13) -2 3.5 3.5 -2 -3.5 -3.5 -select c2, c13, interval(c2, c13) from t1; -c2 c13 interval(c2, c13) -2 3.5 0 -2 -3.5 1 -select c2, c14, make_set(c2, c14) from t1; -c2 c14 make_set(c2, c14) -2 4.5 -2 4.5 -select c2, c14, concat_ws(c2, c14) from t1; -c2 c14 concat_ws(c2, c14) -2 4.5 4.5 -2 4.5 4.5 -select c2, c14, interval(c2, c14) from t1; -c2 c14 interval(c2, c14) -2 4.5 0 -2 4.5 0 -select c2, c15, make_set(c2, c15) from t1; -c2 c15 make_set(c2, c15) -2 5.5 -2 -5.5 -select c2, c15, concat_ws(c2, c15) from t1; -c2 c15 concat_ws(c2, c15) -2 5.5 5.5 -2 -5.5 -5.5 -select c2, c15, interval(c2, c15) from t1; -c2 c15 interval(c2, c15) -2 5.5 0 -2 -5.5 1 -select c2, c16, make_set(c2, c16) from t1; -c2 c16 make_set(c2, c16) -2 6.5 -2 6.5 -select c2, c16, concat_ws(c2, c16) from t1; -c2 c16 concat_ws(c2, c16) -2 6.5 6.5 -2 6.5 6.5 -select c2, c16, interval(c2, c16) from t1; -c2 c16 interval(c2, c16) -2 6.5 0 -2 6.5 0 -select c2, c17, make_set(c2, c17) from t1; -c2 c17 make_set(c2, c17) -2 8 -2 -8 -select c2, c17, concat_ws(c2, c17) from t1; -c2 c17 concat_ws(c2, c17) -2 8 8 -2 -8 -8 -select c2, c17, interval(c2, c17) from t1; -c2 c17 interval(c2, c17) -2 8 0 -2 -8 1 -select c2, c18, make_set(c2, c18) from t1; -c2 c18 make_set(c2, c18) -2 9 -2 9 -select c2, c18, concat_ws(c2, c18) from t1; -c2 c18 concat_ws(c2, c18) -2 9 9 -2 9 9 -select c2, c18, interval(c2, c18) from t1; -c2 c18 interval(c2, c18) -2 9 0 -2 9 0 -select c2, c19, make_set(c2, c19) from t1; -c2 c19 make_set(c2, c19) -2 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 -select c2, c19, concat_ws(c2, c19) from t1; -c2 c19 concat_ws(c2, c19) -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c2, c19, interval(c2, c19) from t1; -c2 c19 interval(c2, c19) -2 2019-12-01 12:00:00 0 -2 2019-12-01 12:00:00 0 -select c2, c20, make_set(c2, c20) from t1; -c2 c20 make_set(c2, c20) -2 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 -select c2, c20, concat_ws(c2, c20) from t1; -c2 c20 concat_ws(c2, c20) -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c2, c20, interval(c2, c20) from t1; -c2 c20 interval(c2, c20) -2 2019-12-03 06:00:00 0 -2 2019-12-03 06:00:00 0 -select c2, c21, make_set(c2, c21) from t1; -c2 c21 make_set(c2, c21) -2 9.5 -2 -9.5 -select c2, c21, concat_ws(c2, c21) from t1; -c2 c21 concat_ws(c2, c21) -2 9.5 9.5 -2 -9.5 -9.5 -select c2, c21, interval(c2, c21) from t1; -c2 c21 interval(c2, c21) -2 9.5 0 -2 -9.5 1 -select c2, c22, make_set(c2, c22) from t1; -c2 c22 make_set(c2, c22) -2 10.5 -2 10.5 -select c2, c22, concat_ws(c2, c22) from t1; -c2 c22 concat_ws(c2, c22) -2 10.5 10.5 -2 10.5 10.5 -select c2, c22, interval(c2, c22) from t1; -c2 c22 interval(c2, c22) -2 10.5 0 -2 10.5 0 -select c3, quote(c3) from t1; -c3 quote(c3) -1 '1' --1 '-1' -select c3, sys_op_opnsize(c3) from t1; -c3 sys_op_opnsize(c3) -1 20 --1 20 -select c3, c1, make_set(c3, c1) from t1; -c3 c1 make_set(c3, c1) -1 1 1 --1 -1 -1 -select c3, c1, concat_ws(c3, c1) from t1; -c3 c1 concat_ws(c3, c1) -1 1 1 --1 -1 -1 -select c3, c1, interval(c3, c1) from t1; -c3 c1 interval(c3, c1) -1 1 1 --1 -1 1 -select c3, c2, make_set(c3, c2) from t1; -c3 c2 make_set(c3, c2) -1 2 2 --1 2 2 -select c3, c2, concat_ws(c3, c2) from t1; -c3 c2 concat_ws(c3, c2) -1 2 2 --1 2 2 -select c3, c2, interval(c3, c2) from t1; -c3 c2 interval(c3, c2) -1 2 0 --1 2 0 -select c3, c3, make_set(c3, c3) from t1; -c3 c3 make_set(c3, c3) -1 1 1 --1 -1 -1 -select c3, c3, concat_ws(c3, c3) from t1; -c3 c3 concat_ws(c3, c3) -1 1 1 --1 -1 -1 -select c3, c3, interval(c3, c3) from t1; -c3 c3 interval(c3, c3) -1 1 1 --1 -1 1 -select c3, c4, make_set(c3, c4) from t1; -c3 c4 make_set(c3, c4) -1 2 2 --1 2 2 -select c3, c4, concat_ws(c3, c4) from t1; -c3 c4 concat_ws(c3, c4) -1 2 2 --1 2 2 -select c3, c4, interval(c3, c4) from t1; -c3 c4 interval(c3, c4) -1 2 0 --1 2 0 -select c3, c5, make_set(c3, c5) from t1; -c3 c5 make_set(c3, c5) -1 1 1 --1 -1 -1 -select c3, c5, concat_ws(c3, c5) from t1; -c3 c5 concat_ws(c3, c5) -1 1 1 --1 -1 -1 -select c3, c5, interval(c3, c5) from t1; -c3 c5 interval(c3, c5) -1 1 1 --1 -1 1 -select c3, c6, make_set(c3, c6) from t1; -c3 c6 make_set(c3, c6) -1 2 2 --1 2 2 -select c3, c6, concat_ws(c3, c6) from t1; -c3 c6 concat_ws(c3, c6) -1 2 2 --1 2 2 -select c3, c6, interval(c3, c6) from t1; -c3 c6 interval(c3, c6) -1 2 0 --1 2 0 -select c3, c7, make_set(c3, c7) from t1; -c3 c7 make_set(c3, c7) -1 1 1 --1 -1 -1 -select c3, c7, concat_ws(c3, c7) from t1; -c3 c7 concat_ws(c3, c7) -1 1 1 --1 -1 -1 -select c3, c7, interval(c3, c7) from t1; -c3 c7 interval(c3, c7) -1 1 1 --1 -1 1 -select c3, c8, make_set(c3, c8) from t1; -c3 c8 make_set(c3, c8) -1 2 2 --1 2 2 -select c3, c8, concat_ws(c3, c8) from t1; -c3 c8 concat_ws(c3, c8) -1 2 2 --1 2 2 -select c3, c8, interval(c3, c8) from t1; -c3 c8 interval(c3, c8) -1 2 0 --1 2 0 -select c3, c9, make_set(c3, c9) from t1; -c3 c9 make_set(c3, c9) -1 1 1 --1 -1 -1 -select c3, c9, concat_ws(c3, c9) from t1; -c3 c9 concat_ws(c3, c9) -1 1 1 --1 -1 -1 -select c3, c9, interval(c3, c9) from t1; -c3 c9 interval(c3, c9) -1 1 1 --1 -1 1 -select c3, c10, make_set(c3, c10) from t1; -c3 c10 make_set(c3, c10) -1 2 2 --1 2 2 -select c3, c10, concat_ws(c3, c10) from t1; -c3 c10 concat_ws(c3, c10) -1 2 2 --1 2 2 -select c3, c10, interval(c3, c10) from t1; -c3 c10 interval(c3, c10) -1 2 0 --1 2 0 -select c3, c11, make_set(c3, c11) from t1; -c3 c11 make_set(c3, c11) -1 1 1 --1 -1 -1 -select c3, c11, concat_ws(c3, c11) from t1; -c3 c11 concat_ws(c3, c11) -1 1 1 --1 -1 -1 -select c3, c11, interval(c3, c11) from t1; -c3 c11 interval(c3, c11) -1 1 1 --1 -1 1 -select c3, c12, make_set(c3, c12) from t1; -c3 c12 make_set(c3, c12) -1 2 2 --1 2 2 -select c3, c12, concat_ws(c3, c12) from t1; -c3 c12 concat_ws(c3, c12) -1 2 2 --1 2 2 -select c3, c12, interval(c3, c12) from t1; -c3 c12 interval(c3, c12) -1 2 0 --1 2 0 -select c3, c13, make_set(c3, c13) from t1; -c3 c13 make_set(c3, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c3, c13, concat_ws(c3, c13) from t1; -c3 c13 concat_ws(c3, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c3, c13, interval(c3, c13) from t1; -c3 c13 interval(c3, c13) -1 3.5 0 --1 -3.5 1 -select c3, c14, make_set(c3, c14) from t1; -c3 c14 make_set(c3, c14) -1 4.5 4.5 --1 4.5 4.5 -select c3, c14, concat_ws(c3, c14) from t1; -c3 c14 concat_ws(c3, c14) -1 4.5 4.5 --1 4.5 4.5 -select c3, c14, interval(c3, c14) from t1; -c3 c14 interval(c3, c14) -1 4.5 0 --1 4.5 0 -select c3, c15, make_set(c3, c15) from t1; -c3 c15 make_set(c3, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c3, c15, concat_ws(c3, c15) from t1; -c3 c15 concat_ws(c3, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c3, c15, interval(c3, c15) from t1; -c3 c15 interval(c3, c15) -1 5.5 0 --1 -5.5 1 -select c3, c16, make_set(c3, c16) from t1; -c3 c16 make_set(c3, c16) -1 6.5 6.5 --1 6.5 6.5 -select c3, c16, concat_ws(c3, c16) from t1; -c3 c16 concat_ws(c3, c16) -1 6.5 6.5 --1 6.5 6.5 -select c3, c16, interval(c3, c16) from t1; -c3 c16 interval(c3, c16) -1 6.5 0 --1 6.5 0 -select c3, c17, make_set(c3, c17) from t1; -c3 c17 make_set(c3, c17) -1 8 8 --1 -8 -8 -select c3, c17, concat_ws(c3, c17) from t1; -c3 c17 concat_ws(c3, c17) -1 8 8 --1 -8 -8 -select c3, c17, interval(c3, c17) from t1; -c3 c17 interval(c3, c17) -1 8 0 --1 -8 1 -select c3, c18, make_set(c3, c18) from t1; -c3 c18 make_set(c3, c18) -1 9 9 --1 9 9 -select c3, c18, concat_ws(c3, c18) from t1; -c3 c18 concat_ws(c3, c18) -1 9 9 --1 9 9 -select c3, c18, interval(c3, c18) from t1; -c3 c18 interval(c3, c18) -1 9 0 --1 9 0 -select c3, c19, make_set(c3, c19) from t1; -c3 c19 make_set(c3, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c3, c19, concat_ws(c3, c19) from t1; -c3 c19 concat_ws(c3, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c3, c19, interval(c3, c19) from t1; -c3 c19 interval(c3, c19) -1 2019-12-01 12:00:00 0 --1 2019-12-01 12:00:00 0 -select c3, c20, make_set(c3, c20) from t1; -c3 c20 make_set(c3, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c3, c20, concat_ws(c3, c20) from t1; -c3 c20 concat_ws(c3, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c3, c20, interval(c3, c20) from t1; -c3 c20 interval(c3, c20) -1 2019-12-03 06:00:00 0 --1 2019-12-03 06:00:00 0 -select c3, c21, make_set(c3, c21) from t1; -c3 c21 make_set(c3, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c3, c21, concat_ws(c3, c21) from t1; -c3 c21 concat_ws(c3, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c3, c21, interval(c3, c21) from t1; -c3 c21 interval(c3, c21) -1 9.5 0 --1 -9.5 1 -select c3, c22, make_set(c3, c22) from t1; -c3 c22 make_set(c3, c22) -1 10.5 10.5 --1 10.5 10.5 -select c3, c22, concat_ws(c3, c22) from t1; -c3 c22 concat_ws(c3, c22) -1 10.5 10.5 --1 10.5 10.5 -select c3, c22, interval(c3, c22) from t1; -c3 c22 interval(c3, c22) -1 10.5 0 --1 10.5 0 -select c4, quote(c4) from t1; -c4 quote(c4) -2 '2' -2 '2' -select c4, sys_op_opnsize(c4) from t1; -c4 sys_op_opnsize(c4) -2 20 -2 20 -select c4, c1, make_set(c4, c1) from t1; -c4 c1 make_set(c4, c1) -2 1 -2 -1 -select c4, c1, concat_ws(c4, c1) from t1; -c4 c1 concat_ws(c4, c1) -2 1 1 -2 -1 -1 -select c4, c1, interval(c4, c1) from t1; -c4 c1 interval(c4, c1) -2 1 1 -2 -1 1 -select c4, c2, make_set(c4, c2) from t1; -c4 c2 make_set(c4, c2) -2 2 -2 2 -select c4, c2, concat_ws(c4, c2) from t1; -c4 c2 concat_ws(c4, c2) -2 2 2 -2 2 2 -select c4, c2, interval(c4, c2) from t1; -c4 c2 interval(c4, c2) -2 2 1 -2 2 1 -select c4, c3, make_set(c4, c3) from t1; -c4 c3 make_set(c4, c3) -2 1 -2 -1 -select c4, c3, concat_ws(c4, c3) from t1; -c4 c3 concat_ws(c4, c3) -2 1 1 -2 -1 -1 -select c4, c3, interval(c4, c3) from t1; -c4 c3 interval(c4, c3) -2 1 1 -2 -1 1 -select c4, c4, make_set(c4, c4) from t1; -c4 c4 make_set(c4, c4) -2 2 -2 2 -select c4, c4, concat_ws(c4, c4) from t1; -c4 c4 concat_ws(c4, c4) -2 2 2 -2 2 2 -select c4, c4, interval(c4, c4) from t1; -c4 c4 interval(c4, c4) -2 2 1 -2 2 1 -select c4, c5, make_set(c4, c5) from t1; -c4 c5 make_set(c4, c5) -2 1 -2 -1 -select c4, c5, concat_ws(c4, c5) from t1; -c4 c5 concat_ws(c4, c5) -2 1 1 -2 -1 -1 -select c4, c5, interval(c4, c5) from t1; -c4 c5 interval(c4, c5) -2 1 1 -2 -1 1 -select c4, c6, make_set(c4, c6) from t1; -c4 c6 make_set(c4, c6) -2 2 -2 2 -select c4, c6, concat_ws(c4, c6) from t1; -c4 c6 concat_ws(c4, c6) -2 2 2 -2 2 2 -select c4, c6, interval(c4, c6) from t1; -c4 c6 interval(c4, c6) -2 2 1 -2 2 1 -select c4, c7, make_set(c4, c7) from t1; -c4 c7 make_set(c4, c7) -2 1 -2 -1 -select c4, c7, concat_ws(c4, c7) from t1; -c4 c7 concat_ws(c4, c7) -2 1 1 -2 -1 -1 -select c4, c7, interval(c4, c7) from t1; -c4 c7 interval(c4, c7) -2 1 1 -2 -1 1 -select c4, c8, make_set(c4, c8) from t1; -c4 c8 make_set(c4, c8) -2 2 -2 2 -select c4, c8, concat_ws(c4, c8) from t1; -c4 c8 concat_ws(c4, c8) -2 2 2 -2 2 2 -select c4, c8, interval(c4, c8) from t1; -c4 c8 interval(c4, c8) -2 2 1 -2 2 1 -select c4, c9, make_set(c4, c9) from t1; -c4 c9 make_set(c4, c9) -2 1 -2 -1 -select c4, c9, concat_ws(c4, c9) from t1; -c4 c9 concat_ws(c4, c9) -2 1 1 -2 -1 -1 -select c4, c9, interval(c4, c9) from t1; -c4 c9 interval(c4, c9) -2 1 1 -2 -1 1 -select c4, c10, make_set(c4, c10) from t1; -c4 c10 make_set(c4, c10) -2 2 -2 2 -select c4, c10, concat_ws(c4, c10) from t1; -c4 c10 concat_ws(c4, c10) -2 2 2 -2 2 2 -select c4, c10, interval(c4, c10) from t1; -c4 c10 interval(c4, c10) -2 2 1 -2 2 1 -select c4, c11, make_set(c4, c11) from t1; -c4 c11 make_set(c4, c11) -2 1 -2 -1 -select c4, c11, concat_ws(c4, c11) from t1; -c4 c11 concat_ws(c4, c11) -2 1 1 -2 -1 -1 -select c4, c11, interval(c4, c11) from t1; -c4 c11 interval(c4, c11) -2 1 1 -2 -1 1 -select c4, c12, make_set(c4, c12) from t1; -c4 c12 make_set(c4, c12) -2 2 -2 2 -select c4, c12, concat_ws(c4, c12) from t1; -c4 c12 concat_ws(c4, c12) -2 2 2 -2 2 2 -select c4, c12, interval(c4, c12) from t1; -c4 c12 interval(c4, c12) -2 2 1 -2 2 1 -select c4, c13, make_set(c4, c13) from t1; -c4 c13 make_set(c4, c13) -2 3.5 -2 -3.5 -select c4, c13, concat_ws(c4, c13) from t1; -c4 c13 concat_ws(c4, c13) -2 3.5 3.5 -2 -3.5 -3.5 -select c4, c13, interval(c4, c13) from t1; -c4 c13 interval(c4, c13) -2 3.5 0 -2 -3.5 1 -select c4, c14, make_set(c4, c14) from t1; -c4 c14 make_set(c4, c14) -2 4.5 -2 4.5 -select c4, c14, concat_ws(c4, c14) from t1; -c4 c14 concat_ws(c4, c14) -2 4.5 4.5 -2 4.5 4.5 -select c4, c14, interval(c4, c14) from t1; -c4 c14 interval(c4, c14) -2 4.5 0 -2 4.5 0 -select c4, c15, make_set(c4, c15) from t1; -c4 c15 make_set(c4, c15) -2 5.5 -2 -5.5 -select c4, c15, concat_ws(c4, c15) from t1; -c4 c15 concat_ws(c4, c15) -2 5.5 5.5 -2 -5.5 -5.5 -select c4, c15, interval(c4, c15) from t1; -c4 c15 interval(c4, c15) -2 5.5 0 -2 -5.5 1 -select c4, c16, make_set(c4, c16) from t1; -c4 c16 make_set(c4, c16) -2 6.5 -2 6.5 -select c4, c16, concat_ws(c4, c16) from t1; -c4 c16 concat_ws(c4, c16) -2 6.5 6.5 -2 6.5 6.5 -select c4, c16, interval(c4, c16) from t1; -c4 c16 interval(c4, c16) -2 6.5 0 -2 6.5 0 -select c4, c17, make_set(c4, c17) from t1; -c4 c17 make_set(c4, c17) -2 8 -2 -8 -select c4, c17, concat_ws(c4, c17) from t1; -c4 c17 concat_ws(c4, c17) -2 8 8 -2 -8 -8 -select c4, c17, interval(c4, c17) from t1; -c4 c17 interval(c4, c17) -2 8 0 -2 -8 1 -select c4, c18, make_set(c4, c18) from t1; -c4 c18 make_set(c4, c18) -2 9 -2 9 -select c4, c18, concat_ws(c4, c18) from t1; -c4 c18 concat_ws(c4, c18) -2 9 9 -2 9 9 -select c4, c18, interval(c4, c18) from t1; -c4 c18 interval(c4, c18) -2 9 0 -2 9 0 -select c4, c19, make_set(c4, c19) from t1; -c4 c19 make_set(c4, c19) -2 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 -select c4, c19, concat_ws(c4, c19) from t1; -c4 c19 concat_ws(c4, c19) -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c4, c19, interval(c4, c19) from t1; -c4 c19 interval(c4, c19) -2 2019-12-01 12:00:00 0 -2 2019-12-01 12:00:00 0 -select c4, c20, make_set(c4, c20) from t1; -c4 c20 make_set(c4, c20) -2 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 -select c4, c20, concat_ws(c4, c20) from t1; -c4 c20 concat_ws(c4, c20) -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c4, c20, interval(c4, c20) from t1; -c4 c20 interval(c4, c20) -2 2019-12-03 06:00:00 0 -2 2019-12-03 06:00:00 0 -select c4, c21, make_set(c4, c21) from t1; -c4 c21 make_set(c4, c21) -2 9.5 -2 -9.5 -select c4, c21, concat_ws(c4, c21) from t1; -c4 c21 concat_ws(c4, c21) -2 9.5 9.5 -2 -9.5 -9.5 -select c4, c21, interval(c4, c21) from t1; -c4 c21 interval(c4, c21) -2 9.5 0 -2 -9.5 1 -select c4, c22, make_set(c4, c22) from t1; -c4 c22 make_set(c4, c22) -2 10.5 -2 10.5 -select c4, c22, concat_ws(c4, c22) from t1; -c4 c22 concat_ws(c4, c22) -2 10.5 10.5 -2 10.5 10.5 -select c4, c22, interval(c4, c22) from t1; -c4 c22 interval(c4, c22) -2 10.5 0 -2 10.5 0 -select c5, quote(c5) from t1; -c5 quote(c5) -1 '1' --1 '-1' -select c5, sys_op_opnsize(c5) from t1; -c5 sys_op_opnsize(c5) -1 20 --1 20 -select c5, c1, make_set(c5, c1) from t1; -c5 c1 make_set(c5, c1) -1 1 1 --1 -1 -1 -select c5, c1, concat_ws(c5, c1) from t1; -c5 c1 concat_ws(c5, c1) -1 1 1 --1 -1 -1 -select c5, c1, interval(c5, c1) from t1; -c5 c1 interval(c5, c1) -1 1 1 --1 -1 1 -select c5, c2, make_set(c5, c2) from t1; -c5 c2 make_set(c5, c2) -1 2 2 --1 2 2 -select c5, c2, concat_ws(c5, c2) from t1; -c5 c2 concat_ws(c5, c2) -1 2 2 --1 2 2 -select c5, c2, interval(c5, c2) from t1; -c5 c2 interval(c5, c2) -1 2 0 --1 2 0 -select c5, c3, make_set(c5, c3) from t1; -c5 c3 make_set(c5, c3) -1 1 1 --1 -1 -1 -select c5, c3, concat_ws(c5, c3) from t1; -c5 c3 concat_ws(c5, c3) -1 1 1 --1 -1 -1 -select c5, c3, interval(c5, c3) from t1; -c5 c3 interval(c5, c3) -1 1 1 --1 -1 1 -select c5, c4, make_set(c5, c4) from t1; -c5 c4 make_set(c5, c4) -1 2 2 --1 2 2 -select c5, c4, concat_ws(c5, c4) from t1; -c5 c4 concat_ws(c5, c4) -1 2 2 --1 2 2 -select c5, c4, interval(c5, c4) from t1; -c5 c4 interval(c5, c4) -1 2 0 --1 2 0 -select c5, c5, make_set(c5, c5) from t1; -c5 c5 make_set(c5, c5) -1 1 1 --1 -1 -1 -select c5, c5, concat_ws(c5, c5) from t1; -c5 c5 concat_ws(c5, c5) -1 1 1 --1 -1 -1 -select c5, c5, interval(c5, c5) from t1; -c5 c5 interval(c5, c5) -1 1 1 --1 -1 1 -select c5, c6, make_set(c5, c6) from t1; -c5 c6 make_set(c5, c6) -1 2 2 --1 2 2 -select c5, c6, concat_ws(c5, c6) from t1; -c5 c6 concat_ws(c5, c6) -1 2 2 --1 2 2 -select c5, c6, interval(c5, c6) from t1; -c5 c6 interval(c5, c6) -1 2 0 --1 2 0 -select c5, c7, make_set(c5, c7) from t1; -c5 c7 make_set(c5, c7) -1 1 1 --1 -1 -1 -select c5, c7, concat_ws(c5, c7) from t1; -c5 c7 concat_ws(c5, c7) -1 1 1 --1 -1 -1 -select c5, c7, interval(c5, c7) from t1; -c5 c7 interval(c5, c7) -1 1 1 --1 -1 1 -select c5, c8, make_set(c5, c8) from t1; -c5 c8 make_set(c5, c8) -1 2 2 --1 2 2 -select c5, c8, concat_ws(c5, c8) from t1; -c5 c8 concat_ws(c5, c8) -1 2 2 --1 2 2 -select c5, c8, interval(c5, c8) from t1; -c5 c8 interval(c5, c8) -1 2 0 --1 2 0 -select c5, c9, make_set(c5, c9) from t1; -c5 c9 make_set(c5, c9) -1 1 1 --1 -1 -1 -select c5, c9, concat_ws(c5, c9) from t1; -c5 c9 concat_ws(c5, c9) -1 1 1 --1 -1 -1 -select c5, c9, interval(c5, c9) from t1; -c5 c9 interval(c5, c9) -1 1 1 --1 -1 1 -select c5, c10, make_set(c5, c10) from t1; -c5 c10 make_set(c5, c10) -1 2 2 --1 2 2 -select c5, c10, concat_ws(c5, c10) from t1; -c5 c10 concat_ws(c5, c10) -1 2 2 --1 2 2 -select c5, c10, interval(c5, c10) from t1; -c5 c10 interval(c5, c10) -1 2 0 --1 2 0 -select c5, c11, make_set(c5, c11) from t1; -c5 c11 make_set(c5, c11) -1 1 1 --1 -1 -1 -select c5, c11, concat_ws(c5, c11) from t1; -c5 c11 concat_ws(c5, c11) -1 1 1 --1 -1 -1 -select c5, c11, interval(c5, c11) from t1; -c5 c11 interval(c5, c11) -1 1 1 --1 -1 1 -select c5, c12, make_set(c5, c12) from t1; -c5 c12 make_set(c5, c12) -1 2 2 --1 2 2 -select c5, c12, concat_ws(c5, c12) from t1; -c5 c12 concat_ws(c5, c12) -1 2 2 --1 2 2 -select c5, c12, interval(c5, c12) from t1; -c5 c12 interval(c5, c12) -1 2 0 --1 2 0 -select c5, c13, make_set(c5, c13) from t1; -c5 c13 make_set(c5, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c5, c13, concat_ws(c5, c13) from t1; -c5 c13 concat_ws(c5, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c5, c13, interval(c5, c13) from t1; -c5 c13 interval(c5, c13) -1 3.5 0 --1 -3.5 1 -select c5, c14, make_set(c5, c14) from t1; -c5 c14 make_set(c5, c14) -1 4.5 4.5 --1 4.5 4.5 -select c5, c14, concat_ws(c5, c14) from t1; -c5 c14 concat_ws(c5, c14) -1 4.5 4.5 --1 4.5 4.5 -select c5, c14, interval(c5, c14) from t1; -c5 c14 interval(c5, c14) -1 4.5 0 --1 4.5 0 -select c5, c15, make_set(c5, c15) from t1; -c5 c15 make_set(c5, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c5, c15, concat_ws(c5, c15) from t1; -c5 c15 concat_ws(c5, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c5, c15, interval(c5, c15) from t1; -c5 c15 interval(c5, c15) -1 5.5 0 --1 -5.5 1 -select c5, c16, make_set(c5, c16) from t1; -c5 c16 make_set(c5, c16) -1 6.5 6.5 --1 6.5 6.5 -select c5, c16, concat_ws(c5, c16) from t1; -c5 c16 concat_ws(c5, c16) -1 6.5 6.5 --1 6.5 6.5 -select c5, c16, interval(c5, c16) from t1; -c5 c16 interval(c5, c16) -1 6.5 0 --1 6.5 0 -select c5, c17, make_set(c5, c17) from t1; -c5 c17 make_set(c5, c17) -1 8 8 --1 -8 -8 -select c5, c17, concat_ws(c5, c17) from t1; -c5 c17 concat_ws(c5, c17) -1 8 8 --1 -8 -8 -select c5, c17, interval(c5, c17) from t1; -c5 c17 interval(c5, c17) -1 8 0 --1 -8 1 -select c5, c18, make_set(c5, c18) from t1; -c5 c18 make_set(c5, c18) -1 9 9 --1 9 9 -select c5, c18, concat_ws(c5, c18) from t1; -c5 c18 concat_ws(c5, c18) -1 9 9 --1 9 9 -select c5, c18, interval(c5, c18) from t1; -c5 c18 interval(c5, c18) -1 9 0 --1 9 0 -select c5, c19, make_set(c5, c19) from t1; -c5 c19 make_set(c5, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c5, c19, concat_ws(c5, c19) from t1; -c5 c19 concat_ws(c5, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c5, c19, interval(c5, c19) from t1; -c5 c19 interval(c5, c19) -1 2019-12-01 12:00:00 0 --1 2019-12-01 12:00:00 0 -select c5, c20, make_set(c5, c20) from t1; -c5 c20 make_set(c5, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c5, c20, concat_ws(c5, c20) from t1; -c5 c20 concat_ws(c5, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c5, c20, interval(c5, c20) from t1; -c5 c20 interval(c5, c20) -1 2019-12-03 06:00:00 0 --1 2019-12-03 06:00:00 0 -select c5, c21, make_set(c5, c21) from t1; -c5 c21 make_set(c5, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c5, c21, concat_ws(c5, c21) from t1; -c5 c21 concat_ws(c5, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c5, c21, interval(c5, c21) from t1; -c5 c21 interval(c5, c21) -1 9.5 0 --1 -9.5 1 -select c5, c22, make_set(c5, c22) from t1; -c5 c22 make_set(c5, c22) -1 10.5 10.5 --1 10.5 10.5 -select c5, c22, concat_ws(c5, c22) from t1; -c5 c22 concat_ws(c5, c22) -1 10.5 10.5 --1 10.5 10.5 -select c5, c22, interval(c5, c22) from t1; -c5 c22 interval(c5, c22) -1 10.5 0 --1 10.5 0 -select c6, quote(c6) from t1; -c6 quote(c6) -2 '2' -2 '2' -select c6, sys_op_opnsize(c6) from t1; -c6 sys_op_opnsize(c6) -2 20 -2 20 -select c6, c1, make_set(c6, c1) from t1; -c6 c1 make_set(c6, c1) -2 1 -2 -1 -select c6, c1, concat_ws(c6, c1) from t1; -c6 c1 concat_ws(c6, c1) -2 1 1 -2 -1 -1 -select c6, c1, interval(c6, c1) from t1; -c6 c1 interval(c6, c1) -2 1 1 -2 -1 1 -select c6, c2, make_set(c6, c2) from t1; -c6 c2 make_set(c6, c2) -2 2 -2 2 -select c6, c2, concat_ws(c6, c2) from t1; -c6 c2 concat_ws(c6, c2) -2 2 2 -2 2 2 -select c6, c2, interval(c6, c2) from t1; -c6 c2 interval(c6, c2) -2 2 1 -2 2 1 -select c6, c3, make_set(c6, c3) from t1; -c6 c3 make_set(c6, c3) -2 1 -2 -1 -select c6, c3, concat_ws(c6, c3) from t1; -c6 c3 concat_ws(c6, c3) -2 1 1 -2 -1 -1 -select c6, c3, interval(c6, c3) from t1; -c6 c3 interval(c6, c3) -2 1 1 -2 -1 1 -select c6, c4, make_set(c6, c4) from t1; -c6 c4 make_set(c6, c4) -2 2 -2 2 -select c6, c4, concat_ws(c6, c4) from t1; -c6 c4 concat_ws(c6, c4) -2 2 2 -2 2 2 -select c6, c4, interval(c6, c4) from t1; -c6 c4 interval(c6, c4) -2 2 1 -2 2 1 -select c6, c5, make_set(c6, c5) from t1; -c6 c5 make_set(c6, c5) -2 1 -2 -1 -select c6, c5, concat_ws(c6, c5) from t1; -c6 c5 concat_ws(c6, c5) -2 1 1 -2 -1 -1 -select c6, c5, interval(c6, c5) from t1; -c6 c5 interval(c6, c5) -2 1 1 -2 -1 1 -select c6, c6, make_set(c6, c6) from t1; -c6 c6 make_set(c6, c6) -2 2 -2 2 -select c6, c6, concat_ws(c6, c6) from t1; -c6 c6 concat_ws(c6, c6) -2 2 2 -2 2 2 -select c6, c6, interval(c6, c6) from t1; -c6 c6 interval(c6, c6) -2 2 1 -2 2 1 -select c6, c7, make_set(c6, c7) from t1; -c6 c7 make_set(c6, c7) -2 1 -2 -1 -select c6, c7, concat_ws(c6, c7) from t1; -c6 c7 concat_ws(c6, c7) -2 1 1 -2 -1 -1 -select c6, c7, interval(c6, c7) from t1; -c6 c7 interval(c6, c7) -2 1 1 -2 -1 1 -select c6, c8, make_set(c6, c8) from t1; -c6 c8 make_set(c6, c8) -2 2 -2 2 -select c6, c8, concat_ws(c6, c8) from t1; -c6 c8 concat_ws(c6, c8) -2 2 2 -2 2 2 -select c6, c8, interval(c6, c8) from t1; -c6 c8 interval(c6, c8) -2 2 1 -2 2 1 -select c6, c9, make_set(c6, c9) from t1; -c6 c9 make_set(c6, c9) -2 1 -2 -1 -select c6, c9, concat_ws(c6, c9) from t1; -c6 c9 concat_ws(c6, c9) -2 1 1 -2 -1 -1 -select c6, c9, interval(c6, c9) from t1; -c6 c9 interval(c6, c9) -2 1 1 -2 -1 1 -select c6, c10, make_set(c6, c10) from t1; -c6 c10 make_set(c6, c10) -2 2 -2 2 -select c6, c10, concat_ws(c6, c10) from t1; -c6 c10 concat_ws(c6, c10) -2 2 2 -2 2 2 -select c6, c10, interval(c6, c10) from t1; -c6 c10 interval(c6, c10) -2 2 1 -2 2 1 -select c6, c11, make_set(c6, c11) from t1; -c6 c11 make_set(c6, c11) -2 1 -2 -1 -select c6, c11, concat_ws(c6, c11) from t1; -c6 c11 concat_ws(c6, c11) -2 1 1 -2 -1 -1 -select c6, c11, interval(c6, c11) from t1; -c6 c11 interval(c6, c11) -2 1 1 -2 -1 1 -select c6, c12, make_set(c6, c12) from t1; -c6 c12 make_set(c6, c12) -2 2 -2 2 -select c6, c12, concat_ws(c6, c12) from t1; -c6 c12 concat_ws(c6, c12) -2 2 2 -2 2 2 -select c6, c12, interval(c6, c12) from t1; -c6 c12 interval(c6, c12) -2 2 1 -2 2 1 -select c6, c13, make_set(c6, c13) from t1; -c6 c13 make_set(c6, c13) -2 3.5 -2 -3.5 -select c6, c13, concat_ws(c6, c13) from t1; -c6 c13 concat_ws(c6, c13) -2 3.5 3.5 -2 -3.5 -3.5 -select c6, c13, interval(c6, c13) from t1; -c6 c13 interval(c6, c13) -2 3.5 0 -2 -3.5 1 -select c6, c14, make_set(c6, c14) from t1; -c6 c14 make_set(c6, c14) -2 4.5 -2 4.5 -select c6, c14, concat_ws(c6, c14) from t1; -c6 c14 concat_ws(c6, c14) -2 4.5 4.5 -2 4.5 4.5 -select c6, c14, interval(c6, c14) from t1; -c6 c14 interval(c6, c14) -2 4.5 0 -2 4.5 0 -select c6, c15, make_set(c6, c15) from t1; -c6 c15 make_set(c6, c15) -2 5.5 -2 -5.5 -select c6, c15, concat_ws(c6, c15) from t1; -c6 c15 concat_ws(c6, c15) -2 5.5 5.5 -2 -5.5 -5.5 -select c6, c15, interval(c6, c15) from t1; -c6 c15 interval(c6, c15) -2 5.5 0 -2 -5.5 1 -select c6, c16, make_set(c6, c16) from t1; -c6 c16 make_set(c6, c16) -2 6.5 -2 6.5 -select c6, c16, concat_ws(c6, c16) from t1; -c6 c16 concat_ws(c6, c16) -2 6.5 6.5 -2 6.5 6.5 -select c6, c16, interval(c6, c16) from t1; -c6 c16 interval(c6, c16) -2 6.5 0 -2 6.5 0 -select c6, c17, make_set(c6, c17) from t1; -c6 c17 make_set(c6, c17) -2 8 -2 -8 -select c6, c17, concat_ws(c6, c17) from t1; -c6 c17 concat_ws(c6, c17) -2 8 8 -2 -8 -8 -select c6, c17, interval(c6, c17) from t1; -c6 c17 interval(c6, c17) -2 8 0 -2 -8 1 -select c6, c18, make_set(c6, c18) from t1; -c6 c18 make_set(c6, c18) -2 9 -2 9 -select c6, c18, concat_ws(c6, c18) from t1; -c6 c18 concat_ws(c6, c18) -2 9 9 -2 9 9 -select c6, c18, interval(c6, c18) from t1; -c6 c18 interval(c6, c18) -2 9 0 -2 9 0 -select c6, c19, make_set(c6, c19) from t1; -c6 c19 make_set(c6, c19) -2 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 -select c6, c19, concat_ws(c6, c19) from t1; -c6 c19 concat_ws(c6, c19) -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c6, c19, interval(c6, c19) from t1; -c6 c19 interval(c6, c19) -2 2019-12-01 12:00:00 0 -2 2019-12-01 12:00:00 0 -select c6, c20, make_set(c6, c20) from t1; -c6 c20 make_set(c6, c20) -2 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 -select c6, c20, concat_ws(c6, c20) from t1; -c6 c20 concat_ws(c6, c20) -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c6, c20, interval(c6, c20) from t1; -c6 c20 interval(c6, c20) -2 2019-12-03 06:00:00 0 -2 2019-12-03 06:00:00 0 -select c6, c21, make_set(c6, c21) from t1; -c6 c21 make_set(c6, c21) -2 9.5 -2 -9.5 -select c6, c21, concat_ws(c6, c21) from t1; -c6 c21 concat_ws(c6, c21) -2 9.5 9.5 -2 -9.5 -9.5 -select c6, c21, interval(c6, c21) from t1; -c6 c21 interval(c6, c21) -2 9.5 0 -2 -9.5 1 -select c6, c22, make_set(c6, c22) from t1; -c6 c22 make_set(c6, c22) -2 10.5 -2 10.5 -select c6, c22, concat_ws(c6, c22) from t1; -c6 c22 concat_ws(c6, c22) -2 10.5 10.5 -2 10.5 10.5 -select c6, c22, interval(c6, c22) from t1; -c6 c22 interval(c6, c22) -2 10.5 0 -2 10.5 0 -select c7, quote(c7) from t1; -c7 quote(c7) -1 '1' --1 '-1' -select c7, sys_op_opnsize(c7) from t1; -c7 sys_op_opnsize(c7) -1 20 --1 20 -select c7, c1, make_set(c7, c1) from t1; -c7 c1 make_set(c7, c1) -1 1 1 --1 -1 -1 -select c7, c1, concat_ws(c7, c1) from t1; -c7 c1 concat_ws(c7, c1) -1 1 1 --1 -1 -1 -select c7, c1, interval(c7, c1) from t1; -c7 c1 interval(c7, c1) -1 1 1 --1 -1 1 -select c7, c2, make_set(c7, c2) from t1; -c7 c2 make_set(c7, c2) -1 2 2 --1 2 2 -select c7, c2, concat_ws(c7, c2) from t1; -c7 c2 concat_ws(c7, c2) -1 2 2 --1 2 2 -select c7, c2, interval(c7, c2) from t1; -c7 c2 interval(c7, c2) -1 2 0 --1 2 0 -select c7, c3, make_set(c7, c3) from t1; -c7 c3 make_set(c7, c3) -1 1 1 --1 -1 -1 -select c7, c3, concat_ws(c7, c3) from t1; -c7 c3 concat_ws(c7, c3) -1 1 1 --1 -1 -1 -select c7, c3, interval(c7, c3) from t1; -c7 c3 interval(c7, c3) -1 1 1 --1 -1 1 -select c7, c4, make_set(c7, c4) from t1; -c7 c4 make_set(c7, c4) -1 2 2 --1 2 2 -select c7, c4, concat_ws(c7, c4) from t1; -c7 c4 concat_ws(c7, c4) -1 2 2 --1 2 2 -select c7, c4, interval(c7, c4) from t1; -c7 c4 interval(c7, c4) -1 2 0 --1 2 0 -select c7, c5, make_set(c7, c5) from t1; -c7 c5 make_set(c7, c5) -1 1 1 --1 -1 -1 -select c7, c5, concat_ws(c7, c5) from t1; -c7 c5 concat_ws(c7, c5) -1 1 1 --1 -1 -1 -select c7, c5, interval(c7, c5) from t1; -c7 c5 interval(c7, c5) -1 1 1 --1 -1 1 -select c7, c6, make_set(c7, c6) from t1; -c7 c6 make_set(c7, c6) -1 2 2 --1 2 2 -select c7, c6, concat_ws(c7, c6) from t1; -c7 c6 concat_ws(c7, c6) -1 2 2 --1 2 2 -select c7, c6, interval(c7, c6) from t1; -c7 c6 interval(c7, c6) -1 2 0 --1 2 0 -select c7, c7, make_set(c7, c7) from t1; -c7 c7 make_set(c7, c7) -1 1 1 --1 -1 -1 -select c7, c7, concat_ws(c7, c7) from t1; -c7 c7 concat_ws(c7, c7) -1 1 1 --1 -1 -1 -select c7, c7, interval(c7, c7) from t1; -c7 c7 interval(c7, c7) -1 1 1 --1 -1 1 -select c7, c8, make_set(c7, c8) from t1; -c7 c8 make_set(c7, c8) -1 2 2 --1 2 2 -select c7, c8, concat_ws(c7, c8) from t1; -c7 c8 concat_ws(c7, c8) -1 2 2 --1 2 2 -select c7, c8, interval(c7, c8) from t1; -c7 c8 interval(c7, c8) -1 2 0 --1 2 0 -select c7, c9, make_set(c7, c9) from t1; -c7 c9 make_set(c7, c9) -1 1 1 --1 -1 -1 -select c7, c9, concat_ws(c7, c9) from t1; -c7 c9 concat_ws(c7, c9) -1 1 1 --1 -1 -1 -select c7, c9, interval(c7, c9) from t1; -c7 c9 interval(c7, c9) -1 1 1 --1 -1 1 -select c7, c10, make_set(c7, c10) from t1; -c7 c10 make_set(c7, c10) -1 2 2 --1 2 2 -select c7, c10, concat_ws(c7, c10) from t1; -c7 c10 concat_ws(c7, c10) -1 2 2 --1 2 2 -select c7, c10, interval(c7, c10) from t1; -c7 c10 interval(c7, c10) -1 2 0 --1 2 0 -select c7, c11, make_set(c7, c11) from t1; -c7 c11 make_set(c7, c11) -1 1 1 --1 -1 -1 -select c7, c11, concat_ws(c7, c11) from t1; -c7 c11 concat_ws(c7, c11) -1 1 1 --1 -1 -1 -select c7, c11, interval(c7, c11) from t1; -c7 c11 interval(c7, c11) -1 1 1 --1 -1 1 -select c7, c12, make_set(c7, c12) from t1; -c7 c12 make_set(c7, c12) -1 2 2 --1 2 2 -select c7, c12, concat_ws(c7, c12) from t1; -c7 c12 concat_ws(c7, c12) -1 2 2 --1 2 2 -select c7, c12, interval(c7, c12) from t1; -c7 c12 interval(c7, c12) -1 2 0 --1 2 0 -select c7, c13, make_set(c7, c13) from t1; -c7 c13 make_set(c7, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c7, c13, concat_ws(c7, c13) from t1; -c7 c13 concat_ws(c7, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c7, c13, interval(c7, c13) from t1; -c7 c13 interval(c7, c13) -1 3.5 0 --1 -3.5 1 -select c7, c14, make_set(c7, c14) from t1; -c7 c14 make_set(c7, c14) -1 4.5 4.5 --1 4.5 4.5 -select c7, c14, concat_ws(c7, c14) from t1; -c7 c14 concat_ws(c7, c14) -1 4.5 4.5 --1 4.5 4.5 -select c7, c14, interval(c7, c14) from t1; -c7 c14 interval(c7, c14) -1 4.5 0 --1 4.5 0 -select c7, c15, make_set(c7, c15) from t1; -c7 c15 make_set(c7, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c7, c15, concat_ws(c7, c15) from t1; -c7 c15 concat_ws(c7, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c7, c15, interval(c7, c15) from t1; -c7 c15 interval(c7, c15) -1 5.5 0 --1 -5.5 1 -select c7, c16, make_set(c7, c16) from t1; -c7 c16 make_set(c7, c16) -1 6.5 6.5 --1 6.5 6.5 -select c7, c16, concat_ws(c7, c16) from t1; -c7 c16 concat_ws(c7, c16) -1 6.5 6.5 --1 6.5 6.5 -select c7, c16, interval(c7, c16) from t1; -c7 c16 interval(c7, c16) -1 6.5 0 --1 6.5 0 -select c7, c17, make_set(c7, c17) from t1; -c7 c17 make_set(c7, c17) -1 8 8 --1 -8 -8 -select c7, c17, concat_ws(c7, c17) from t1; -c7 c17 concat_ws(c7, c17) -1 8 8 --1 -8 -8 -select c7, c17, interval(c7, c17) from t1; -c7 c17 interval(c7, c17) -1 8 0 --1 -8 1 -select c7, c18, make_set(c7, c18) from t1; -c7 c18 make_set(c7, c18) -1 9 9 --1 9 9 -select c7, c18, concat_ws(c7, c18) from t1; -c7 c18 concat_ws(c7, c18) -1 9 9 --1 9 9 -select c7, c18, interval(c7, c18) from t1; -c7 c18 interval(c7, c18) -1 9 0 --1 9 0 -select c7, c19, make_set(c7, c19) from t1; -c7 c19 make_set(c7, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c7, c19, concat_ws(c7, c19) from t1; -c7 c19 concat_ws(c7, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c7, c19, interval(c7, c19) from t1; -c7 c19 interval(c7, c19) -1 2019-12-01 12:00:00 0 --1 2019-12-01 12:00:00 0 -select c7, c20, make_set(c7, c20) from t1; -c7 c20 make_set(c7, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c7, c20, concat_ws(c7, c20) from t1; -c7 c20 concat_ws(c7, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c7, c20, interval(c7, c20) from t1; -c7 c20 interval(c7, c20) -1 2019-12-03 06:00:00 0 --1 2019-12-03 06:00:00 0 -select c7, c21, make_set(c7, c21) from t1; -c7 c21 make_set(c7, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c7, c21, concat_ws(c7, c21) from t1; -c7 c21 concat_ws(c7, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c7, c21, interval(c7, c21) from t1; -c7 c21 interval(c7, c21) -1 9.5 0 --1 -9.5 1 -select c7, c22, make_set(c7, c22) from t1; -c7 c22 make_set(c7, c22) -1 10.5 10.5 --1 10.5 10.5 -select c7, c22, concat_ws(c7, c22) from t1; -c7 c22 concat_ws(c7, c22) -1 10.5 10.5 --1 10.5 10.5 -select c7, c22, interval(c7, c22) from t1; -c7 c22 interval(c7, c22) -1 10.5 0 --1 10.5 0 -select c8, quote(c8) from t1; -c8 quote(c8) -2 '2' -2 '2' -select c8, sys_op_opnsize(c8) from t1; -c8 sys_op_opnsize(c8) -2 20 -2 20 -select c8, c1, make_set(c8, c1) from t1; -c8 c1 make_set(c8, c1) -2 1 -2 -1 -select c8, c1, concat_ws(c8, c1) from t1; -c8 c1 concat_ws(c8, c1) -2 1 1 -2 -1 -1 -select c8, c1, interval(c8, c1) from t1; -c8 c1 interval(c8, c1) -2 1 1 -2 -1 1 -select c8, c2, make_set(c8, c2) from t1; -c8 c2 make_set(c8, c2) -2 2 -2 2 -select c8, c2, concat_ws(c8, c2) from t1; -c8 c2 concat_ws(c8, c2) -2 2 2 -2 2 2 -select c8, c2, interval(c8, c2) from t1; -c8 c2 interval(c8, c2) -2 2 1 -2 2 1 -select c8, c3, make_set(c8, c3) from t1; -c8 c3 make_set(c8, c3) -2 1 -2 -1 -select c8, c3, concat_ws(c8, c3) from t1; -c8 c3 concat_ws(c8, c3) -2 1 1 -2 -1 -1 -select c8, c3, interval(c8, c3) from t1; -c8 c3 interval(c8, c3) -2 1 1 -2 -1 1 -select c8, c4, make_set(c8, c4) from t1; -c8 c4 make_set(c8, c4) -2 2 -2 2 -select c8, c4, concat_ws(c8, c4) from t1; -c8 c4 concat_ws(c8, c4) -2 2 2 -2 2 2 -select c8, c4, interval(c8, c4) from t1; -c8 c4 interval(c8, c4) -2 2 1 -2 2 1 -select c8, c5, make_set(c8, c5) from t1; -c8 c5 make_set(c8, c5) -2 1 -2 -1 -select c8, c5, concat_ws(c8, c5) from t1; -c8 c5 concat_ws(c8, c5) -2 1 1 -2 -1 -1 -select c8, c5, interval(c8, c5) from t1; -c8 c5 interval(c8, c5) -2 1 1 -2 -1 1 -select c8, c6, make_set(c8, c6) from t1; -c8 c6 make_set(c8, c6) -2 2 -2 2 -select c8, c6, concat_ws(c8, c6) from t1; -c8 c6 concat_ws(c8, c6) -2 2 2 -2 2 2 -select c8, c6, interval(c8, c6) from t1; -c8 c6 interval(c8, c6) -2 2 1 -2 2 1 -select c8, c7, make_set(c8, c7) from t1; -c8 c7 make_set(c8, c7) -2 1 -2 -1 -select c8, c7, concat_ws(c8, c7) from t1; -c8 c7 concat_ws(c8, c7) -2 1 1 -2 -1 -1 -select c8, c7, interval(c8, c7) from t1; -c8 c7 interval(c8, c7) -2 1 1 -2 -1 1 -select c8, c8, make_set(c8, c8) from t1; -c8 c8 make_set(c8, c8) -2 2 -2 2 -select c8, c8, concat_ws(c8, c8) from t1; -c8 c8 concat_ws(c8, c8) -2 2 2 -2 2 2 -select c8, c8, interval(c8, c8) from t1; -c8 c8 interval(c8, c8) -2 2 1 -2 2 1 -select c8, c9, make_set(c8, c9) from t1; -c8 c9 make_set(c8, c9) -2 1 -2 -1 -select c8, c9, concat_ws(c8, c9) from t1; -c8 c9 concat_ws(c8, c9) -2 1 1 -2 -1 -1 -select c8, c9, interval(c8, c9) from t1; -c8 c9 interval(c8, c9) -2 1 1 -2 -1 1 -select c8, c10, make_set(c8, c10) from t1; -c8 c10 make_set(c8, c10) -2 2 -2 2 -select c8, c10, concat_ws(c8, c10) from t1; -c8 c10 concat_ws(c8, c10) -2 2 2 -2 2 2 -select c8, c10, interval(c8, c10) from t1; -c8 c10 interval(c8, c10) -2 2 1 -2 2 1 -select c8, c11, make_set(c8, c11) from t1; -c8 c11 make_set(c8, c11) -2 1 -2 -1 -select c8, c11, concat_ws(c8, c11) from t1; -c8 c11 concat_ws(c8, c11) -2 1 1 -2 -1 -1 -select c8, c11, interval(c8, c11) from t1; -c8 c11 interval(c8, c11) -2 1 1 -2 -1 1 -select c8, c12, make_set(c8, c12) from t1; -c8 c12 make_set(c8, c12) -2 2 -2 2 -select c8, c12, concat_ws(c8, c12) from t1; -c8 c12 concat_ws(c8, c12) -2 2 2 -2 2 2 -select c8, c12, interval(c8, c12) from t1; -c8 c12 interval(c8, c12) -2 2 1 -2 2 1 -select c8, c13, make_set(c8, c13) from t1; -c8 c13 make_set(c8, c13) -2 3.5 -2 -3.5 -select c8, c13, concat_ws(c8, c13) from t1; -c8 c13 concat_ws(c8, c13) -2 3.5 3.5 -2 -3.5 -3.5 -select c8, c13, interval(c8, c13) from t1; -c8 c13 interval(c8, c13) -2 3.5 0 -2 -3.5 1 -select c8, c14, make_set(c8, c14) from t1; -c8 c14 make_set(c8, c14) -2 4.5 -2 4.5 -select c8, c14, concat_ws(c8, c14) from t1; -c8 c14 concat_ws(c8, c14) -2 4.5 4.5 -2 4.5 4.5 -select c8, c14, interval(c8, c14) from t1; -c8 c14 interval(c8, c14) -2 4.5 0 -2 4.5 0 -select c8, c15, make_set(c8, c15) from t1; -c8 c15 make_set(c8, c15) -2 5.5 -2 -5.5 -select c8, c15, concat_ws(c8, c15) from t1; -c8 c15 concat_ws(c8, c15) -2 5.5 5.5 -2 -5.5 -5.5 -select c8, c15, interval(c8, c15) from t1; -c8 c15 interval(c8, c15) -2 5.5 0 -2 -5.5 1 -select c8, c16, make_set(c8, c16) from t1; -c8 c16 make_set(c8, c16) -2 6.5 -2 6.5 -select c8, c16, concat_ws(c8, c16) from t1; -c8 c16 concat_ws(c8, c16) -2 6.5 6.5 -2 6.5 6.5 -select c8, c16, interval(c8, c16) from t1; -c8 c16 interval(c8, c16) -2 6.5 0 -2 6.5 0 -select c8, c17, make_set(c8, c17) from t1; -c8 c17 make_set(c8, c17) -2 8 -2 -8 -select c8, c17, concat_ws(c8, c17) from t1; -c8 c17 concat_ws(c8, c17) -2 8 8 -2 -8 -8 -select c8, c17, interval(c8, c17) from t1; -c8 c17 interval(c8, c17) -2 8 0 -2 -8 1 -select c8, c18, make_set(c8, c18) from t1; -c8 c18 make_set(c8, c18) -2 9 -2 9 -select c8, c18, concat_ws(c8, c18) from t1; -c8 c18 concat_ws(c8, c18) -2 9 9 -2 9 9 -select c8, c18, interval(c8, c18) from t1; -c8 c18 interval(c8, c18) -2 9 0 -2 9 0 -select c8, c19, make_set(c8, c19) from t1; -c8 c19 make_set(c8, c19) -2 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 -select c8, c19, concat_ws(c8, c19) from t1; -c8 c19 concat_ws(c8, c19) -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c8, c19, interval(c8, c19) from t1; -c8 c19 interval(c8, c19) -2 2019-12-01 12:00:00 0 -2 2019-12-01 12:00:00 0 -select c8, c20, make_set(c8, c20) from t1; -c8 c20 make_set(c8, c20) -2 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 -select c8, c20, concat_ws(c8, c20) from t1; -c8 c20 concat_ws(c8, c20) -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c8, c20, interval(c8, c20) from t1; -c8 c20 interval(c8, c20) -2 2019-12-03 06:00:00 0 -2 2019-12-03 06:00:00 0 -select c8, c21, make_set(c8, c21) from t1; -c8 c21 make_set(c8, c21) -2 9.5 -2 -9.5 -select c8, c21, concat_ws(c8, c21) from t1; -c8 c21 concat_ws(c8, c21) -2 9.5 9.5 -2 -9.5 -9.5 -select c8, c21, interval(c8, c21) from t1; -c8 c21 interval(c8, c21) -2 9.5 0 -2 -9.5 1 -select c8, c22, make_set(c8, c22) from t1; -c8 c22 make_set(c8, c22) -2 10.5 -2 10.5 -select c8, c22, concat_ws(c8, c22) from t1; -c8 c22 concat_ws(c8, c22) -2 10.5 10.5 -2 10.5 10.5 -select c8, c22, interval(c8, c22) from t1; -c8 c22 interval(c8, c22) -2 10.5 0 -2 10.5 0 -select c9, quote(c9) from t1; -c9 quote(c9) -1 '1' --1 '-1' -select c9, sys_op_opnsize(c9) from t1; -c9 sys_op_opnsize(c9) -1 20 --1 20 -select c9, c1, make_set(c9, c1) from t1; -c9 c1 make_set(c9, c1) -1 1 1 --1 -1 -1 -select c9, c1, concat_ws(c9, c1) from t1; -c9 c1 concat_ws(c9, c1) -1 1 1 --1 -1 -1 -select c9, c1, interval(c9, c1) from t1; -c9 c1 interval(c9, c1) -1 1 1 --1 -1 1 -select c9, c2, make_set(c9, c2) from t1; -c9 c2 make_set(c9, c2) -1 2 2 --1 2 2 -select c9, c2, concat_ws(c9, c2) from t1; -c9 c2 concat_ws(c9, c2) -1 2 2 --1 2 2 -select c9, c2, interval(c9, c2) from t1; -c9 c2 interval(c9, c2) -1 2 0 --1 2 0 -select c9, c3, make_set(c9, c3) from t1; -c9 c3 make_set(c9, c3) -1 1 1 --1 -1 -1 -select c9, c3, concat_ws(c9, c3) from t1; -c9 c3 concat_ws(c9, c3) -1 1 1 --1 -1 -1 -select c9, c3, interval(c9, c3) from t1; -c9 c3 interval(c9, c3) -1 1 1 --1 -1 1 -select c9, c4, make_set(c9, c4) from t1; -c9 c4 make_set(c9, c4) -1 2 2 --1 2 2 -select c9, c4, concat_ws(c9, c4) from t1; -c9 c4 concat_ws(c9, c4) -1 2 2 --1 2 2 -select c9, c4, interval(c9, c4) from t1; -c9 c4 interval(c9, c4) -1 2 0 --1 2 0 -select c9, c5, make_set(c9, c5) from t1; -c9 c5 make_set(c9, c5) -1 1 1 --1 -1 -1 -select c9, c5, concat_ws(c9, c5) from t1; -c9 c5 concat_ws(c9, c5) -1 1 1 --1 -1 -1 -select c9, c5, interval(c9, c5) from t1; -c9 c5 interval(c9, c5) -1 1 1 --1 -1 1 -select c9, c6, make_set(c9, c6) from t1; -c9 c6 make_set(c9, c6) -1 2 2 --1 2 2 -select c9, c6, concat_ws(c9, c6) from t1; -c9 c6 concat_ws(c9, c6) -1 2 2 --1 2 2 -select c9, c6, interval(c9, c6) from t1; -c9 c6 interval(c9, c6) -1 2 0 --1 2 0 -select c9, c7, make_set(c9, c7) from t1; -c9 c7 make_set(c9, c7) -1 1 1 --1 -1 -1 -select c9, c7, concat_ws(c9, c7) from t1; -c9 c7 concat_ws(c9, c7) -1 1 1 --1 -1 -1 -select c9, c7, interval(c9, c7) from t1; -c9 c7 interval(c9, c7) -1 1 1 --1 -1 1 -select c9, c8, make_set(c9, c8) from t1; -c9 c8 make_set(c9, c8) -1 2 2 --1 2 2 -select c9, c8, concat_ws(c9, c8) from t1; -c9 c8 concat_ws(c9, c8) -1 2 2 --1 2 2 -select c9, c8, interval(c9, c8) from t1; -c9 c8 interval(c9, c8) -1 2 0 --1 2 0 -select c9, c9, make_set(c9, c9) from t1; -c9 c9 make_set(c9, c9) -1 1 1 --1 -1 -1 -select c9, c9, concat_ws(c9, c9) from t1; -c9 c9 concat_ws(c9, c9) -1 1 1 --1 -1 -1 -select c9, c9, interval(c9, c9) from t1; -c9 c9 interval(c9, c9) -1 1 1 --1 -1 1 -select c9, c10, make_set(c9, c10) from t1; -c9 c10 make_set(c9, c10) -1 2 2 --1 2 2 -select c9, c10, concat_ws(c9, c10) from t1; -c9 c10 concat_ws(c9, c10) -1 2 2 --1 2 2 -select c9, c10, interval(c9, c10) from t1; -c9 c10 interval(c9, c10) -1 2 0 --1 2 0 -select c9, c11, make_set(c9, c11) from t1; -c9 c11 make_set(c9, c11) -1 1 1 --1 -1 -1 -select c9, c11, concat_ws(c9, c11) from t1; -c9 c11 concat_ws(c9, c11) -1 1 1 --1 -1 -1 -select c9, c11, interval(c9, c11) from t1; -c9 c11 interval(c9, c11) -1 1 1 --1 -1 1 -select c9, c12, make_set(c9, c12) from t1; -c9 c12 make_set(c9, c12) -1 2 2 --1 2 2 -select c9, c12, concat_ws(c9, c12) from t1; -c9 c12 concat_ws(c9, c12) -1 2 2 --1 2 2 -select c9, c12, interval(c9, c12) from t1; -c9 c12 interval(c9, c12) -1 2 0 --1 2 0 -select c9, c13, make_set(c9, c13) from t1; -c9 c13 make_set(c9, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c9, c13, concat_ws(c9, c13) from t1; -c9 c13 concat_ws(c9, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c9, c13, interval(c9, c13) from t1; -c9 c13 interval(c9, c13) -1 3.5 0 --1 -3.5 1 -select c9, c14, make_set(c9, c14) from t1; -c9 c14 make_set(c9, c14) -1 4.5 4.5 --1 4.5 4.5 -select c9, c14, concat_ws(c9, c14) from t1; -c9 c14 concat_ws(c9, c14) -1 4.5 4.5 --1 4.5 4.5 -select c9, c14, interval(c9, c14) from t1; -c9 c14 interval(c9, c14) -1 4.5 0 --1 4.5 0 -select c9, c15, make_set(c9, c15) from t1; -c9 c15 make_set(c9, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c9, c15, concat_ws(c9, c15) from t1; -c9 c15 concat_ws(c9, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c9, c15, interval(c9, c15) from t1; -c9 c15 interval(c9, c15) -1 5.5 0 --1 -5.5 1 -select c9, c16, make_set(c9, c16) from t1; -c9 c16 make_set(c9, c16) -1 6.5 6.5 --1 6.5 6.5 -select c9, c16, concat_ws(c9, c16) from t1; -c9 c16 concat_ws(c9, c16) -1 6.5 6.5 --1 6.5 6.5 -select c9, c16, interval(c9, c16) from t1; -c9 c16 interval(c9, c16) -1 6.5 0 --1 6.5 0 -select c9, c17, make_set(c9, c17) from t1; -c9 c17 make_set(c9, c17) -1 8 8 --1 -8 -8 -select c9, c17, concat_ws(c9, c17) from t1; -c9 c17 concat_ws(c9, c17) -1 8 8 --1 -8 -8 -select c9, c17, interval(c9, c17) from t1; -c9 c17 interval(c9, c17) -1 8 0 --1 -8 1 -select c9, c18, make_set(c9, c18) from t1; -c9 c18 make_set(c9, c18) -1 9 9 --1 9 9 -select c9, c18, concat_ws(c9, c18) from t1; -c9 c18 concat_ws(c9, c18) -1 9 9 --1 9 9 -select c9, c18, interval(c9, c18) from t1; -c9 c18 interval(c9, c18) -1 9 0 --1 9 0 -select c9, c19, make_set(c9, c19) from t1; -c9 c19 make_set(c9, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c9, c19, concat_ws(c9, c19) from t1; -c9 c19 concat_ws(c9, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c9, c19, interval(c9, c19) from t1; -c9 c19 interval(c9, c19) -1 2019-12-01 12:00:00 0 --1 2019-12-01 12:00:00 0 -select c9, c20, make_set(c9, c20) from t1; -c9 c20 make_set(c9, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c9, c20, concat_ws(c9, c20) from t1; -c9 c20 concat_ws(c9, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c9, c20, interval(c9, c20) from t1; -c9 c20 interval(c9, c20) -1 2019-12-03 06:00:00 0 --1 2019-12-03 06:00:00 0 -select c9, c21, make_set(c9, c21) from t1; -c9 c21 make_set(c9, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c9, c21, concat_ws(c9, c21) from t1; -c9 c21 concat_ws(c9, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c9, c21, interval(c9, c21) from t1; -c9 c21 interval(c9, c21) -1 9.5 0 --1 -9.5 1 -select c9, c22, make_set(c9, c22) from t1; -c9 c22 make_set(c9, c22) -1 10.5 10.5 --1 10.5 10.5 -select c9, c22, concat_ws(c9, c22) from t1; -c9 c22 concat_ws(c9, c22) -1 10.5 10.5 --1 10.5 10.5 -select c9, c22, interval(c9, c22) from t1; -c9 c22 interval(c9, c22) -1 10.5 0 --1 10.5 0 -select c10, quote(c10) from t1; -c10 quote(c10) -2 '2' -2 '2' -select c10, sys_op_opnsize(c10) from t1; -c10 sys_op_opnsize(c10) -2 20 -2 20 -select c10, c1, make_set(c10, c1) from t1; -c10 c1 make_set(c10, c1) -2 1 -2 -1 -select c10, c1, concat_ws(c10, c1) from t1; -c10 c1 concat_ws(c10, c1) -2 1 1 -2 -1 -1 -select c10, c1, interval(c10, c1) from t1; -c10 c1 interval(c10, c1) -2 1 1 -2 -1 1 -select c10, c2, make_set(c10, c2) from t1; -c10 c2 make_set(c10, c2) -2 2 -2 2 -select c10, c2, concat_ws(c10, c2) from t1; -c10 c2 concat_ws(c10, c2) -2 2 2 -2 2 2 -select c10, c2, interval(c10, c2) from t1; -c10 c2 interval(c10, c2) -2 2 1 -2 2 1 -select c10, c3, make_set(c10, c3) from t1; -c10 c3 make_set(c10, c3) -2 1 -2 -1 -select c10, c3, concat_ws(c10, c3) from t1; -c10 c3 concat_ws(c10, c3) -2 1 1 -2 -1 -1 -select c10, c3, interval(c10, c3) from t1; -c10 c3 interval(c10, c3) -2 1 1 -2 -1 1 -select c10, c4, make_set(c10, c4) from t1; -c10 c4 make_set(c10, c4) -2 2 -2 2 -select c10, c4, concat_ws(c10, c4) from t1; -c10 c4 concat_ws(c10, c4) -2 2 2 -2 2 2 -select c10, c4, interval(c10, c4) from t1; -c10 c4 interval(c10, c4) -2 2 1 -2 2 1 -select c10, c5, make_set(c10, c5) from t1; -c10 c5 make_set(c10, c5) -2 1 -2 -1 -select c10, c5, concat_ws(c10, c5) from t1; -c10 c5 concat_ws(c10, c5) -2 1 1 -2 -1 -1 -select c10, c5, interval(c10, c5) from t1; -c10 c5 interval(c10, c5) -2 1 1 -2 -1 1 -select c10, c6, make_set(c10, c6) from t1; -c10 c6 make_set(c10, c6) -2 2 -2 2 -select c10, c6, concat_ws(c10, c6) from t1; -c10 c6 concat_ws(c10, c6) -2 2 2 -2 2 2 -select c10, c6, interval(c10, c6) from t1; -c10 c6 interval(c10, c6) -2 2 1 -2 2 1 -select c10, c7, make_set(c10, c7) from t1; -c10 c7 make_set(c10, c7) -2 1 -2 -1 -select c10, c7, concat_ws(c10, c7) from t1; -c10 c7 concat_ws(c10, c7) -2 1 1 -2 -1 -1 -select c10, c7, interval(c10, c7) from t1; -c10 c7 interval(c10, c7) -2 1 1 -2 -1 1 -select c10, c8, make_set(c10, c8) from t1; -c10 c8 make_set(c10, c8) -2 2 -2 2 -select c10, c8, concat_ws(c10, c8) from t1; -c10 c8 concat_ws(c10, c8) -2 2 2 -2 2 2 -select c10, c8, interval(c10, c8) from t1; -c10 c8 interval(c10, c8) -2 2 1 -2 2 1 -select c10, c9, make_set(c10, c9) from t1; -c10 c9 make_set(c10, c9) -2 1 -2 -1 -select c10, c9, concat_ws(c10, c9) from t1; -c10 c9 concat_ws(c10, c9) -2 1 1 -2 -1 -1 -select c10, c9, interval(c10, c9) from t1; -c10 c9 interval(c10, c9) -2 1 1 -2 -1 1 -select c10, c10, make_set(c10, c10) from t1; -c10 c10 make_set(c10, c10) -2 2 -2 2 -select c10, c10, concat_ws(c10, c10) from t1; -c10 c10 concat_ws(c10, c10) -2 2 2 -2 2 2 -select c10, c10, interval(c10, c10) from t1; -c10 c10 interval(c10, c10) -2 2 1 -2 2 1 -select c10, c11, make_set(c10, c11) from t1; -c10 c11 make_set(c10, c11) -2 1 -2 -1 -select c10, c11, concat_ws(c10, c11) from t1; -c10 c11 concat_ws(c10, c11) -2 1 1 -2 -1 -1 -select c10, c11, interval(c10, c11) from t1; -c10 c11 interval(c10, c11) -2 1 1 -2 -1 1 -select c10, c12, make_set(c10, c12) from t1; -c10 c12 make_set(c10, c12) -2 2 -2 2 -select c10, c12, concat_ws(c10, c12) from t1; -c10 c12 concat_ws(c10, c12) -2 2 2 -2 2 2 -select c10, c12, interval(c10, c12) from t1; -c10 c12 interval(c10, c12) -2 2 1 -2 2 1 -select c10, c13, make_set(c10, c13) from t1; -c10 c13 make_set(c10, c13) -2 3.5 -2 -3.5 -select c10, c13, concat_ws(c10, c13) from t1; -c10 c13 concat_ws(c10, c13) -2 3.5 3.5 -2 -3.5 -3.5 -select c10, c13, interval(c10, c13) from t1; -c10 c13 interval(c10, c13) -2 3.5 0 -2 -3.5 1 -select c10, c14, make_set(c10, c14) from t1; -c10 c14 make_set(c10, c14) -2 4.5 -2 4.5 -select c10, c14, concat_ws(c10, c14) from t1; -c10 c14 concat_ws(c10, c14) -2 4.5 4.5 -2 4.5 4.5 -select c10, c14, interval(c10, c14) from t1; -c10 c14 interval(c10, c14) -2 4.5 0 -2 4.5 0 -select c10, c15, make_set(c10, c15) from t1; -c10 c15 make_set(c10, c15) -2 5.5 -2 -5.5 -select c10, c15, concat_ws(c10, c15) from t1; -c10 c15 concat_ws(c10, c15) -2 5.5 5.5 -2 -5.5 -5.5 -select c10, c15, interval(c10, c15) from t1; -c10 c15 interval(c10, c15) -2 5.5 0 -2 -5.5 1 -select c10, c16, make_set(c10, c16) from t1; -c10 c16 make_set(c10, c16) -2 6.5 -2 6.5 -select c10, c16, concat_ws(c10, c16) from t1; -c10 c16 concat_ws(c10, c16) -2 6.5 6.5 -2 6.5 6.5 -select c10, c16, interval(c10, c16) from t1; -c10 c16 interval(c10, c16) -2 6.5 0 -2 6.5 0 -select c10, c17, make_set(c10, c17) from t1; -c10 c17 make_set(c10, c17) -2 8 -2 -8 -select c10, c17, concat_ws(c10, c17) from t1; -c10 c17 concat_ws(c10, c17) -2 8 8 -2 -8 -8 -select c10, c17, interval(c10, c17) from t1; -c10 c17 interval(c10, c17) -2 8 0 -2 -8 1 -select c10, c18, make_set(c10, c18) from t1; -c10 c18 make_set(c10, c18) -2 9 -2 9 -select c10, c18, concat_ws(c10, c18) from t1; -c10 c18 concat_ws(c10, c18) -2 9 9 -2 9 9 -select c10, c18, interval(c10, c18) from t1; -c10 c18 interval(c10, c18) -2 9 0 -2 9 0 -select c10, c19, make_set(c10, c19) from t1; -c10 c19 make_set(c10, c19) -2 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 -select c10, c19, concat_ws(c10, c19) from t1; -c10 c19 concat_ws(c10, c19) -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c10, c19, interval(c10, c19) from t1; -c10 c19 interval(c10, c19) -2 2019-12-01 12:00:00 0 -2 2019-12-01 12:00:00 0 -select c10, c20, make_set(c10, c20) from t1; -c10 c20 make_set(c10, c20) -2 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 -select c10, c20, concat_ws(c10, c20) from t1; -c10 c20 concat_ws(c10, c20) -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c10, c20, interval(c10, c20) from t1; -c10 c20 interval(c10, c20) -2 2019-12-03 06:00:00 0 -2 2019-12-03 06:00:00 0 -select c10, c21, make_set(c10, c21) from t1; -c10 c21 make_set(c10, c21) -2 9.5 -2 -9.5 -select c10, c21, concat_ws(c10, c21) from t1; -c10 c21 concat_ws(c10, c21) -2 9.5 9.5 -2 -9.5 -9.5 -select c10, c21, interval(c10, c21) from t1; -c10 c21 interval(c10, c21) -2 9.5 0 -2 -9.5 1 -select c10, c22, make_set(c10, c22) from t1; -c10 c22 make_set(c10, c22) -2 10.5 -2 10.5 -select c10, c22, concat_ws(c10, c22) from t1; -c10 c22 concat_ws(c10, c22) -2 10.5 10.5 -2 10.5 10.5 -select c10, c22, interval(c10, c22) from t1; -c10 c22 interval(c10, c22) -2 10.5 0 -2 10.5 0 -select c11, quote(c11) from t1; -c11 quote(c11) -1 '1' --1 '-1' -select c11, sys_op_opnsize(c11) from t1; -c11 sys_op_opnsize(c11) -1 20 --1 20 -select c11, c1, make_set(c11, c1) from t1; -c11 c1 make_set(c11, c1) -1 1 1 --1 -1 -1 -select c11, c1, concat_ws(c11, c1) from t1; -c11 c1 concat_ws(c11, c1) -1 1 1 --1 -1 -1 -select c11, c1, interval(c11, c1) from t1; -c11 c1 interval(c11, c1) -1 1 1 --1 -1 1 -select c11, c2, make_set(c11, c2) from t1; -c11 c2 make_set(c11, c2) -1 2 2 --1 2 2 -select c11, c2, concat_ws(c11, c2) from t1; -c11 c2 concat_ws(c11, c2) -1 2 2 --1 2 2 -select c11, c2, interval(c11, c2) from t1; -c11 c2 interval(c11, c2) -1 2 0 --1 2 0 -select c11, c3, make_set(c11, c3) from t1; -c11 c3 make_set(c11, c3) -1 1 1 --1 -1 -1 -select c11, c3, concat_ws(c11, c3) from t1; -c11 c3 concat_ws(c11, c3) -1 1 1 --1 -1 -1 -select c11, c3, interval(c11, c3) from t1; -c11 c3 interval(c11, c3) -1 1 1 --1 -1 1 -select c11, c4, make_set(c11, c4) from t1; -c11 c4 make_set(c11, c4) -1 2 2 --1 2 2 -select c11, c4, concat_ws(c11, c4) from t1; -c11 c4 concat_ws(c11, c4) -1 2 2 --1 2 2 -select c11, c4, interval(c11, c4) from t1; -c11 c4 interval(c11, c4) -1 2 0 --1 2 0 -select c11, c5, make_set(c11, c5) from t1; -c11 c5 make_set(c11, c5) -1 1 1 --1 -1 -1 -select c11, c5, concat_ws(c11, c5) from t1; -c11 c5 concat_ws(c11, c5) -1 1 1 --1 -1 -1 -select c11, c5, interval(c11, c5) from t1; -c11 c5 interval(c11, c5) -1 1 1 --1 -1 1 -select c11, c6, make_set(c11, c6) from t1; -c11 c6 make_set(c11, c6) -1 2 2 --1 2 2 -select c11, c6, concat_ws(c11, c6) from t1; -c11 c6 concat_ws(c11, c6) -1 2 2 --1 2 2 -select c11, c6, interval(c11, c6) from t1; -c11 c6 interval(c11, c6) -1 2 0 --1 2 0 -select c11, c7, make_set(c11, c7) from t1; -c11 c7 make_set(c11, c7) -1 1 1 --1 -1 -1 -select c11, c7, concat_ws(c11, c7) from t1; -c11 c7 concat_ws(c11, c7) -1 1 1 --1 -1 -1 -select c11, c7, interval(c11, c7) from t1; -c11 c7 interval(c11, c7) -1 1 1 --1 -1 1 -select c11, c8, make_set(c11, c8) from t1; -c11 c8 make_set(c11, c8) -1 2 2 --1 2 2 -select c11, c8, concat_ws(c11, c8) from t1; -c11 c8 concat_ws(c11, c8) -1 2 2 --1 2 2 -select c11, c8, interval(c11, c8) from t1; -c11 c8 interval(c11, c8) -1 2 0 --1 2 0 -select c11, c9, make_set(c11, c9) from t1; -c11 c9 make_set(c11, c9) -1 1 1 --1 -1 -1 -select c11, c9, concat_ws(c11, c9) from t1; -c11 c9 concat_ws(c11, c9) -1 1 1 --1 -1 -1 -select c11, c9, interval(c11, c9) from t1; -c11 c9 interval(c11, c9) -1 1 1 --1 -1 1 -select c11, c10, make_set(c11, c10) from t1; -c11 c10 make_set(c11, c10) -1 2 2 --1 2 2 -select c11, c10, concat_ws(c11, c10) from t1; -c11 c10 concat_ws(c11, c10) -1 2 2 --1 2 2 -select c11, c10, interval(c11, c10) from t1; -c11 c10 interval(c11, c10) -1 2 0 --1 2 0 -select c11, c11, make_set(c11, c11) from t1; -c11 c11 make_set(c11, c11) -1 1 1 --1 -1 -1 -select c11, c11, concat_ws(c11, c11) from t1; -c11 c11 concat_ws(c11, c11) -1 1 1 --1 -1 -1 -select c11, c11, interval(c11, c11) from t1; -c11 c11 interval(c11, c11) -1 1 1 --1 -1 1 -select c11, c12, make_set(c11, c12) from t1; -c11 c12 make_set(c11, c12) -1 2 2 --1 2 2 -select c11, c12, concat_ws(c11, c12) from t1; -c11 c12 concat_ws(c11, c12) -1 2 2 --1 2 2 -select c11, c12, interval(c11, c12) from t1; -c11 c12 interval(c11, c12) -1 2 0 --1 2 0 -select c11, c13, make_set(c11, c13) from t1; -c11 c13 make_set(c11, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c11, c13, concat_ws(c11, c13) from t1; -c11 c13 concat_ws(c11, c13) -1 3.5 3.5 --1 -3.5 -3.5 -select c11, c13, interval(c11, c13) from t1; -c11 c13 interval(c11, c13) -1 3.5 0 --1 -3.5 1 -select c11, c14, make_set(c11, c14) from t1; -c11 c14 make_set(c11, c14) -1 4.5 4.5 --1 4.5 4.5 -select c11, c14, concat_ws(c11, c14) from t1; -c11 c14 concat_ws(c11, c14) -1 4.5 4.5 --1 4.5 4.5 -select c11, c14, interval(c11, c14) from t1; -c11 c14 interval(c11, c14) -1 4.5 0 --1 4.5 0 -select c11, c15, make_set(c11, c15) from t1; -c11 c15 make_set(c11, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c11, c15, concat_ws(c11, c15) from t1; -c11 c15 concat_ws(c11, c15) -1 5.5 5.5 --1 -5.5 -5.5 -select c11, c15, interval(c11, c15) from t1; -c11 c15 interval(c11, c15) -1 5.5 0 --1 -5.5 1 -select c11, c16, make_set(c11, c16) from t1; -c11 c16 make_set(c11, c16) -1 6.5 6.5 --1 6.5 6.5 -select c11, c16, concat_ws(c11, c16) from t1; -c11 c16 concat_ws(c11, c16) -1 6.5 6.5 --1 6.5 6.5 -select c11, c16, interval(c11, c16) from t1; -c11 c16 interval(c11, c16) -1 6.5 0 --1 6.5 0 -select c11, c17, make_set(c11, c17) from t1; -c11 c17 make_set(c11, c17) -1 8 8 --1 -8 -8 -select c11, c17, concat_ws(c11, c17) from t1; -c11 c17 concat_ws(c11, c17) -1 8 8 --1 -8 -8 -select c11, c17, interval(c11, c17) from t1; -c11 c17 interval(c11, c17) -1 8 0 --1 -8 1 -select c11, c18, make_set(c11, c18) from t1; -c11 c18 make_set(c11, c18) -1 9 9 --1 9 9 -select c11, c18, concat_ws(c11, c18) from t1; -c11 c18 concat_ws(c11, c18) -1 9 9 --1 9 9 -select c11, c18, interval(c11, c18) from t1; -c11 c18 interval(c11, c18) -1 9 0 --1 9 0 -select c11, c19, make_set(c11, c19) from t1; -c11 c19 make_set(c11, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c11, c19, concat_ws(c11, c19) from t1; -c11 c19 concat_ws(c11, c19) -1 2019-12-01 12:00:00 2019-12-01 12:00:00 --1 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c11, c19, interval(c11, c19) from t1; -c11 c19 interval(c11, c19) -1 2019-12-01 12:00:00 0 --1 2019-12-01 12:00:00 0 -select c11, c20, make_set(c11, c20) from t1; -c11 c20 make_set(c11, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c11, c20, concat_ws(c11, c20) from t1; -c11 c20 concat_ws(c11, c20) -1 2019-12-03 06:00:00 2019-12-03 06:00:00 --1 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c11, c20, interval(c11, c20) from t1; -c11 c20 interval(c11, c20) -1 2019-12-03 06:00:00 0 --1 2019-12-03 06:00:00 0 -select c11, c21, make_set(c11, c21) from t1; -c11 c21 make_set(c11, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c11, c21, concat_ws(c11, c21) from t1; -c11 c21 concat_ws(c11, c21) -1 9.5 9.5 --1 -9.5 -9.5 -select c11, c21, interval(c11, c21) from t1; -c11 c21 interval(c11, c21) -1 9.5 0 --1 -9.5 1 -select c11, c22, make_set(c11, c22) from t1; -c11 c22 make_set(c11, c22) -1 10.5 10.5 --1 10.5 10.5 -select c11, c22, concat_ws(c11, c22) from t1; -c11 c22 concat_ws(c11, c22) -1 10.5 10.5 --1 10.5 10.5 -select c11, c22, interval(c11, c22) from t1; -c11 c22 interval(c11, c22) -1 10.5 0 --1 10.5 0 -select c12, quote(c12) from t1; -c12 quote(c12) -2 '2' -2 '2' -select c12, sys_op_opnsize(c12) from t1; -c12 sys_op_opnsize(c12) -2 20 -2 20 -select c12, c1, make_set(c12, c1) from t1; -c12 c1 make_set(c12, c1) -2 1 -2 -1 -select c12, c1, concat_ws(c12, c1) from t1; -c12 c1 concat_ws(c12, c1) -2 1 1 -2 -1 -1 -select c12, c1, interval(c12, c1) from t1; -c12 c1 interval(c12, c1) -2 1 1 -2 -1 1 -select c12, c2, make_set(c12, c2) from t1; -c12 c2 make_set(c12, c2) -2 2 -2 2 -select c12, c2, concat_ws(c12, c2) from t1; -c12 c2 concat_ws(c12, c2) -2 2 2 -2 2 2 -select c12, c2, interval(c12, c2) from t1; -c12 c2 interval(c12, c2) -2 2 1 -2 2 1 -select c12, c3, make_set(c12, c3) from t1; -c12 c3 make_set(c12, c3) -2 1 -2 -1 -select c12, c3, concat_ws(c12, c3) from t1; -c12 c3 concat_ws(c12, c3) -2 1 1 -2 -1 -1 -select c12, c3, interval(c12, c3) from t1; -c12 c3 interval(c12, c3) -2 1 1 -2 -1 1 -select c12, c4, make_set(c12, c4) from t1; -c12 c4 make_set(c12, c4) -2 2 -2 2 -select c12, c4, concat_ws(c12, c4) from t1; -c12 c4 concat_ws(c12, c4) -2 2 2 -2 2 2 -select c12, c4, interval(c12, c4) from t1; -c12 c4 interval(c12, c4) -2 2 1 -2 2 1 -select c12, c5, make_set(c12, c5) from t1; -c12 c5 make_set(c12, c5) -2 1 -2 -1 -select c12, c5, concat_ws(c12, c5) from t1; -c12 c5 concat_ws(c12, c5) -2 1 1 -2 -1 -1 -select c12, c5, interval(c12, c5) from t1; -c12 c5 interval(c12, c5) -2 1 1 -2 -1 1 -select c12, c6, make_set(c12, c6) from t1; -c12 c6 make_set(c12, c6) -2 2 -2 2 -select c12, c6, concat_ws(c12, c6) from t1; -c12 c6 concat_ws(c12, c6) -2 2 2 -2 2 2 -select c12, c6, interval(c12, c6) from t1; -c12 c6 interval(c12, c6) -2 2 1 -2 2 1 -select c12, c7, make_set(c12, c7) from t1; -c12 c7 make_set(c12, c7) -2 1 -2 -1 -select c12, c7, concat_ws(c12, c7) from t1; -c12 c7 concat_ws(c12, c7) -2 1 1 -2 -1 -1 -select c12, c7, interval(c12, c7) from t1; -c12 c7 interval(c12, c7) -2 1 1 -2 -1 1 -select c12, c8, make_set(c12, c8) from t1; -c12 c8 make_set(c12, c8) -2 2 -2 2 -select c12, c8, concat_ws(c12, c8) from t1; -c12 c8 concat_ws(c12, c8) -2 2 2 -2 2 2 -select c12, c8, interval(c12, c8) from t1; -c12 c8 interval(c12, c8) -2 2 1 -2 2 1 -select c12, c9, make_set(c12, c9) from t1; -c12 c9 make_set(c12, c9) -2 1 -2 -1 -select c12, c9, concat_ws(c12, c9) from t1; -c12 c9 concat_ws(c12, c9) -2 1 1 -2 -1 -1 -select c12, c9, interval(c12, c9) from t1; -c12 c9 interval(c12, c9) -2 1 1 -2 -1 1 -select c12, c10, make_set(c12, c10) from t1; -c12 c10 make_set(c12, c10) -2 2 -2 2 -select c12, c10, concat_ws(c12, c10) from t1; -c12 c10 concat_ws(c12, c10) -2 2 2 -2 2 2 -select c12, c10, interval(c12, c10) from t1; -c12 c10 interval(c12, c10) -2 2 1 -2 2 1 -select c12, c11, make_set(c12, c11) from t1; -c12 c11 make_set(c12, c11) -2 1 -2 -1 -select c12, c11, concat_ws(c12, c11) from t1; -c12 c11 concat_ws(c12, c11) -2 1 1 -2 -1 -1 -select c12, c11, interval(c12, c11) from t1; -c12 c11 interval(c12, c11) -2 1 1 -2 -1 1 -select c12, c12, make_set(c12, c12) from t1; -c12 c12 make_set(c12, c12) -2 2 -2 2 -select c12, c12, concat_ws(c12, c12) from t1; -c12 c12 concat_ws(c12, c12) -2 2 2 -2 2 2 -select c12, c12, interval(c12, c12) from t1; -c12 c12 interval(c12, c12) -2 2 1 -2 2 1 -select c12, c13, make_set(c12, c13) from t1; -c12 c13 make_set(c12, c13) -2 3.5 -2 -3.5 -select c12, c13, concat_ws(c12, c13) from t1; -c12 c13 concat_ws(c12, c13) -2 3.5 3.5 -2 -3.5 -3.5 -select c12, c13, interval(c12, c13) from t1; -c12 c13 interval(c12, c13) -2 3.5 0 -2 -3.5 1 -select c12, c14, make_set(c12, c14) from t1; -c12 c14 make_set(c12, c14) -2 4.5 -2 4.5 -select c12, c14, concat_ws(c12, c14) from t1; -c12 c14 concat_ws(c12, c14) -2 4.5 4.5 -2 4.5 4.5 -select c12, c14, interval(c12, c14) from t1; -c12 c14 interval(c12, c14) -2 4.5 0 -2 4.5 0 -select c12, c15, make_set(c12, c15) from t1; -c12 c15 make_set(c12, c15) -2 5.5 -2 -5.5 -select c12, c15, concat_ws(c12, c15) from t1; -c12 c15 concat_ws(c12, c15) -2 5.5 5.5 -2 -5.5 -5.5 -select c12, c15, interval(c12, c15) from t1; -c12 c15 interval(c12, c15) -2 5.5 0 -2 -5.5 1 -select c12, c16, make_set(c12, c16) from t1; -c12 c16 make_set(c12, c16) -2 6.5 -2 6.5 -select c12, c16, concat_ws(c12, c16) from t1; -c12 c16 concat_ws(c12, c16) -2 6.5 6.5 -2 6.5 6.5 -select c12, c16, interval(c12, c16) from t1; -c12 c16 interval(c12, c16) -2 6.5 0 -2 6.5 0 -select c12, c17, make_set(c12, c17) from t1; -c12 c17 make_set(c12, c17) -2 8 -2 -8 -select c12, c17, concat_ws(c12, c17) from t1; -c12 c17 concat_ws(c12, c17) -2 8 8 -2 -8 -8 -select c12, c17, interval(c12, c17) from t1; -c12 c17 interval(c12, c17) -2 8 0 -2 -8 1 -select c12, c18, make_set(c12, c18) from t1; -c12 c18 make_set(c12, c18) -2 9 -2 9 -select c12, c18, concat_ws(c12, c18) from t1; -c12 c18 concat_ws(c12, c18) -2 9 9 -2 9 9 -select c12, c18, interval(c12, c18) from t1; -c12 c18 interval(c12, c18) -2 9 0 -2 9 0 -select c12, c19, make_set(c12, c19) from t1; -c12 c19 make_set(c12, c19) -2 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 -select c12, c19, concat_ws(c12, c19) from t1; -c12 c19 concat_ws(c12, c19) -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -2 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c12, c19, interval(c12, c19) from t1; -c12 c19 interval(c12, c19) -2 2019-12-01 12:00:00 0 -2 2019-12-01 12:00:00 0 -select c12, c20, make_set(c12, c20) from t1; -c12 c20 make_set(c12, c20) -2 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 -select c12, c20, concat_ws(c12, c20) from t1; -c12 c20 concat_ws(c12, c20) -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -2 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c12, c20, interval(c12, c20) from t1; -c12 c20 interval(c12, c20) -2 2019-12-03 06:00:00 0 -2 2019-12-03 06:00:00 0 -select c12, c21, make_set(c12, c21) from t1; -c12 c21 make_set(c12, c21) -2 9.5 -2 -9.5 -select c12, c21, concat_ws(c12, c21) from t1; -c12 c21 concat_ws(c12, c21) -2 9.5 9.5 -2 -9.5 -9.5 -select c12, c21, interval(c12, c21) from t1; -c12 c21 interval(c12, c21) -2 9.5 0 -2 -9.5 1 -select c12, c22, make_set(c12, c22) from t1; -c12 c22 make_set(c12, c22) -2 10.5 -2 10.5 -select c12, c22, concat_ws(c12, c22) from t1; -c12 c22 concat_ws(c12, c22) -2 10.5 10.5 -2 10.5 10.5 -select c12, c22, interval(c12, c22) from t1; -c12 c22 interval(c12, c22) -2 10.5 0 -2 10.5 0 -select c13, quote(c13) from t1; -c13 quote(c13) -3.5 '3.5' --3.5 '-3.5' -select c13, sys_op_opnsize(c13) from t1; -c13 sys_op_opnsize(c13) -3.5 16 --3.5 16 -select c13, c1, make_set(c13, c1) from t1; -c13 c1 make_set(c13, c1) -3.5 1 --3.5 -1 -select c13, c1, concat_ws(c13, c1) from t1; -c13 c1 concat_ws(c13, c1) -3.5 1 1 --3.5 -1 -1 -select c13, c1, interval(c13, c1) from t1; -c13 c1 interval(c13, c1) -3.5 1 1 --3.5 -1 0 -select c13, c2, make_set(c13, c2) from t1; -c13 c2 make_set(c13, c2) -3.5 2 --3.5 2 -select c13, c2, concat_ws(c13, c2) from t1; -c13 c2 concat_ws(c13, c2) -3.5 2 2 --3.5 2 2 -select c13, c2, interval(c13, c2) from t1; -c13 c2 interval(c13, c2) -3.5 2 1 --3.5 2 0 -select c13, c3, make_set(c13, c3) from t1; -c13 c3 make_set(c13, c3) -3.5 1 --3.5 -1 -select c13, c3, concat_ws(c13, c3) from t1; -c13 c3 concat_ws(c13, c3) -3.5 1 1 --3.5 -1 -1 -select c13, c3, interval(c13, c3) from t1; -c13 c3 interval(c13, c3) -3.5 1 1 --3.5 -1 0 -select c13, c4, make_set(c13, c4) from t1; -c13 c4 make_set(c13, c4) -3.5 2 --3.5 2 -select c13, c4, concat_ws(c13, c4) from t1; -c13 c4 concat_ws(c13, c4) -3.5 2 2 --3.5 2 2 -select c13, c4, interval(c13, c4) from t1; -c13 c4 interval(c13, c4) -3.5 2 1 --3.5 2 0 -select c13, c5, make_set(c13, c5) from t1; -c13 c5 make_set(c13, c5) -3.5 1 --3.5 -1 -select c13, c5, concat_ws(c13, c5) from t1; -c13 c5 concat_ws(c13, c5) -3.5 1 1 --3.5 -1 -1 -select c13, c5, interval(c13, c5) from t1; -c13 c5 interval(c13, c5) -3.5 1 1 --3.5 -1 0 -select c13, c6, make_set(c13, c6) from t1; -c13 c6 make_set(c13, c6) -3.5 2 --3.5 2 -select c13, c6, concat_ws(c13, c6) from t1; -c13 c6 concat_ws(c13, c6) -3.5 2 2 --3.5 2 2 -select c13, c6, interval(c13, c6) from t1; -c13 c6 interval(c13, c6) -3.5 2 1 --3.5 2 0 -select c13, c7, make_set(c13, c7) from t1; -c13 c7 make_set(c13, c7) -3.5 1 --3.5 -1 -select c13, c7, concat_ws(c13, c7) from t1; -c13 c7 concat_ws(c13, c7) -3.5 1 1 --3.5 -1 -1 -select c13, c7, interval(c13, c7) from t1; -c13 c7 interval(c13, c7) -3.5 1 1 --3.5 -1 0 -select c13, c8, make_set(c13, c8) from t1; -c13 c8 make_set(c13, c8) -3.5 2 --3.5 2 -select c13, c8, concat_ws(c13, c8) from t1; -c13 c8 concat_ws(c13, c8) -3.5 2 2 --3.5 2 2 -select c13, c8, interval(c13, c8) from t1; -c13 c8 interval(c13, c8) -3.5 2 1 --3.5 2 0 -select c13, c9, make_set(c13, c9) from t1; -c13 c9 make_set(c13, c9) -3.5 1 --3.5 -1 -select c13, c9, concat_ws(c13, c9) from t1; -c13 c9 concat_ws(c13, c9) -3.5 1 1 --3.5 -1 -1 -select c13, c9, interval(c13, c9) from t1; -c13 c9 interval(c13, c9) -3.5 1 1 --3.5 -1 0 -select c13, c10, make_set(c13, c10) from t1; -c13 c10 make_set(c13, c10) -3.5 2 --3.5 2 -select c13, c10, concat_ws(c13, c10) from t1; -c13 c10 concat_ws(c13, c10) -3.5 2 2 --3.5 2 2 -select c13, c10, interval(c13, c10) from t1; -c13 c10 interval(c13, c10) -3.5 2 1 --3.5 2 0 -select c13, c11, make_set(c13, c11) from t1; -c13 c11 make_set(c13, c11) -3.5 1 --3.5 -1 -select c13, c11, concat_ws(c13, c11) from t1; -c13 c11 concat_ws(c13, c11) -3.5 1 1 --3.5 -1 -1 -select c13, c11, interval(c13, c11) from t1; -c13 c11 interval(c13, c11) -3.5 1 1 --3.5 -1 0 -select c13, c12, make_set(c13, c12) from t1; -c13 c12 make_set(c13, c12) -3.5 2 --3.5 2 -select c13, c12, concat_ws(c13, c12) from t1; -c13 c12 concat_ws(c13, c12) -3.5 2 2 --3.5 2 2 -select c13, c12, interval(c13, c12) from t1; -c13 c12 interval(c13, c12) -3.5 2 1 --3.5 2 0 -select c13, c13, make_set(c13, c13) from t1; -c13 c13 make_set(c13, c13) -3.5 3.5 --3.5 -3.5 -select c13, c13, concat_ws(c13, c13) from t1; -c13 c13 concat_ws(c13, c13) -3.5 3.5 3.5 --3.5 -3.5 -3.5 -select c13, c13, interval(c13, c13) from t1; -c13 c13 interval(c13, c13) -3.5 3.5 1 --3.5 -3.5 1 -select c13, c14, make_set(c13, c14) from t1; -c13 c14 make_set(c13, c14) -3.5 4.5 --3.5 4.5 -select c13, c14, concat_ws(c13, c14) from t1; -c13 c14 concat_ws(c13, c14) -3.5 4.5 4.5 --3.5 4.5 4.5 -select c13, c14, interval(c13, c14) from t1; -c13 c14 interval(c13, c14) -3.5 4.5 0 --3.5 4.5 0 -select c13, c15, make_set(c13, c15) from t1; -c13 c15 make_set(c13, c15) -3.5 5.5 --3.5 -5.5 -select c13, c15, concat_ws(c13, c15) from t1; -c13 c15 concat_ws(c13, c15) -3.5 5.5 5.5 --3.5 -5.5 -5.5 -select c13, c15, interval(c13, c15) from t1; -c13 c15 interval(c13, c15) -3.5 5.5 0 --3.5 -5.5 1 -select c13, c16, make_set(c13, c16) from t1; -c13 c16 make_set(c13, c16) -3.5 6.5 --3.5 6.5 -select c13, c16, concat_ws(c13, c16) from t1; -c13 c16 concat_ws(c13, c16) -3.5 6.5 6.5 --3.5 6.5 6.5 -select c13, c16, interval(c13, c16) from t1; -c13 c16 interval(c13, c16) -3.5 6.5 0 --3.5 6.5 0 -select c13, c17, make_set(c13, c17) from t1; -c13 c17 make_set(c13, c17) -3.5 8 --3.5 -8 -select c13, c17, concat_ws(c13, c17) from t1; -c13 c17 concat_ws(c13, c17) -3.5 8 8 --3.5 -8 -8 -select c13, c17, interval(c13, c17) from t1; -c13 c17 interval(c13, c17) -3.5 8 0 --3.5 -8 1 -select c13, c18, make_set(c13, c18) from t1; -c13 c18 make_set(c13, c18) -3.5 9 --3.5 9 -select c13, c18, concat_ws(c13, c18) from t1; -c13 c18 concat_ws(c13, c18) -3.5 9 9 --3.5 9 9 -select c13, c18, interval(c13, c18) from t1; -c13 c18 interval(c13, c18) -3.5 9 0 --3.5 9 0 -select c13, c19, make_set(c13, c19) from t1; -c13 c19 make_set(c13, c19) -3.5 2019-12-01 12:00:00 --3.5 2019-12-01 12:00:00 -select c13, c19, concat_ws(c13, c19) from t1; -c13 c19 concat_ws(c13, c19) -3.5 2019-12-01 12:00:00 2019-12-01 12:00:00 --3.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c13, c19, interval(c13, c19) from t1; -c13 c19 interval(c13, c19) -3.5 2019-12-01 12:00:00 0 --3.5 2019-12-01 12:00:00 0 -select c13, c20, make_set(c13, c20) from t1; -c13 c20 make_set(c13, c20) -3.5 2019-12-03 06:00:00 --3.5 2019-12-03 06:00:00 -select c13, c20, concat_ws(c13, c20) from t1; -c13 c20 concat_ws(c13, c20) -3.5 2019-12-03 06:00:00 2019-12-03 06:00:00 --3.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c13, c20, interval(c13, c20) from t1; -c13 c20 interval(c13, c20) -3.5 2019-12-03 06:00:00 0 --3.5 2019-12-03 06:00:00 0 -select c13, c21, make_set(c13, c21) from t1; -c13 c21 make_set(c13, c21) -3.5 9.5 --3.5 -9.5 -select c13, c21, concat_ws(c13, c21) from t1; -c13 c21 concat_ws(c13, c21) -3.5 9.5 9.5 --3.5 -9.5 -9.5 -select c13, c21, interval(c13, c21) from t1; -c13 c21 interval(c13, c21) -3.5 9.5 0 --3.5 -9.5 1 -select c13, c22, make_set(c13, c22) from t1; -c13 c22 make_set(c13, c22) -3.5 10.5 --3.5 10.5 -select c13, c22, concat_ws(c13, c22) from t1; -c13 c22 concat_ws(c13, c22) -3.5 10.5 10.5 --3.5 10.5 10.5 -select c13, c22, interval(c13, c22) from t1; -c13 c22 interval(c13, c22) -3.5 10.5 0 --3.5 10.5 0 -select c14, quote(c14) from t1; -c14 quote(c14) -4.5 '4.5' -4.5 '4.5' -select c14, sys_op_opnsize(c14) from t1; -c14 sys_op_opnsize(c14) -4.5 16 -4.5 16 -select c14, c1, make_set(c14, c1) from t1; -c14 c1 make_set(c14, c1) -4.5 1 -4.5 -1 -select c14, c1, concat_ws(c14, c1) from t1; -c14 c1 concat_ws(c14, c1) -4.5 1 1 -4.5 -1 -1 -select c14, c1, interval(c14, c1) from t1; -c14 c1 interval(c14, c1) -4.5 1 1 -4.5 -1 1 -select c14, c2, make_set(c14, c2) from t1; -c14 c2 make_set(c14, c2) -4.5 2 -4.5 2 -select c14, c2, concat_ws(c14, c2) from t1; -c14 c2 concat_ws(c14, c2) -4.5 2 2 -4.5 2 2 -select c14, c2, interval(c14, c2) from t1; -c14 c2 interval(c14, c2) -4.5 2 1 -4.5 2 1 -select c14, c3, make_set(c14, c3) from t1; -c14 c3 make_set(c14, c3) -4.5 1 -4.5 -1 -select c14, c3, concat_ws(c14, c3) from t1; -c14 c3 concat_ws(c14, c3) -4.5 1 1 -4.5 -1 -1 -select c14, c3, interval(c14, c3) from t1; -c14 c3 interval(c14, c3) -4.5 1 1 -4.5 -1 1 -select c14, c4, make_set(c14, c4) from t1; -c14 c4 make_set(c14, c4) -4.5 2 -4.5 2 -select c14, c4, concat_ws(c14, c4) from t1; -c14 c4 concat_ws(c14, c4) -4.5 2 2 -4.5 2 2 -select c14, c4, interval(c14, c4) from t1; -c14 c4 interval(c14, c4) -4.5 2 1 -4.5 2 1 -select c14, c5, make_set(c14, c5) from t1; -c14 c5 make_set(c14, c5) -4.5 1 -4.5 -1 -select c14, c5, concat_ws(c14, c5) from t1; -c14 c5 concat_ws(c14, c5) -4.5 1 1 -4.5 -1 -1 -select c14, c5, interval(c14, c5) from t1; -c14 c5 interval(c14, c5) -4.5 1 1 -4.5 -1 1 -select c14, c6, make_set(c14, c6) from t1; -c14 c6 make_set(c14, c6) -4.5 2 -4.5 2 -select c14, c6, concat_ws(c14, c6) from t1; -c14 c6 concat_ws(c14, c6) -4.5 2 2 -4.5 2 2 -select c14, c6, interval(c14, c6) from t1; -c14 c6 interval(c14, c6) -4.5 2 1 -4.5 2 1 -select c14, c7, make_set(c14, c7) from t1; -c14 c7 make_set(c14, c7) -4.5 1 -4.5 -1 -select c14, c7, concat_ws(c14, c7) from t1; -c14 c7 concat_ws(c14, c7) -4.5 1 1 -4.5 -1 -1 -select c14, c7, interval(c14, c7) from t1; -c14 c7 interval(c14, c7) -4.5 1 1 -4.5 -1 1 -select c14, c8, make_set(c14, c8) from t1; -c14 c8 make_set(c14, c8) -4.5 2 -4.5 2 -select c14, c8, concat_ws(c14, c8) from t1; -c14 c8 concat_ws(c14, c8) -4.5 2 2 -4.5 2 2 -select c14, c8, interval(c14, c8) from t1; -c14 c8 interval(c14, c8) -4.5 2 1 -4.5 2 1 -select c14, c9, make_set(c14, c9) from t1; -c14 c9 make_set(c14, c9) -4.5 1 -4.5 -1 -select c14, c9, concat_ws(c14, c9) from t1; -c14 c9 concat_ws(c14, c9) -4.5 1 1 -4.5 -1 -1 -select c14, c9, interval(c14, c9) from t1; -c14 c9 interval(c14, c9) -4.5 1 1 -4.5 -1 1 -select c14, c10, make_set(c14, c10) from t1; -c14 c10 make_set(c14, c10) -4.5 2 -4.5 2 -select c14, c10, concat_ws(c14, c10) from t1; -c14 c10 concat_ws(c14, c10) -4.5 2 2 -4.5 2 2 -select c14, c10, interval(c14, c10) from t1; -c14 c10 interval(c14, c10) -4.5 2 1 -4.5 2 1 -select c14, c11, make_set(c14, c11) from t1; -c14 c11 make_set(c14, c11) -4.5 1 -4.5 -1 -select c14, c11, concat_ws(c14, c11) from t1; -c14 c11 concat_ws(c14, c11) -4.5 1 1 -4.5 -1 -1 -select c14, c11, interval(c14, c11) from t1; -c14 c11 interval(c14, c11) -4.5 1 1 -4.5 -1 1 -select c14, c12, make_set(c14, c12) from t1; -c14 c12 make_set(c14, c12) -4.5 2 -4.5 2 -select c14, c12, concat_ws(c14, c12) from t1; -c14 c12 concat_ws(c14, c12) -4.5 2 2 -4.5 2 2 -select c14, c12, interval(c14, c12) from t1; -c14 c12 interval(c14, c12) -4.5 2 1 -4.5 2 1 -select c14, c13, make_set(c14, c13) from t1; -c14 c13 make_set(c14, c13) -4.5 3.5 -4.5 -3.5 -select c14, c13, concat_ws(c14, c13) from t1; -c14 c13 concat_ws(c14, c13) -4.5 3.5 3.5 -4.5 -3.5 -3.5 -select c14, c13, interval(c14, c13) from t1; -c14 c13 interval(c14, c13) -4.5 3.5 1 -4.5 -3.5 1 -select c14, c14, make_set(c14, c14) from t1; -c14 c14 make_set(c14, c14) -4.5 4.5 -4.5 4.5 -select c14, c14, concat_ws(c14, c14) from t1; -c14 c14 concat_ws(c14, c14) -4.5 4.5 4.5 -4.5 4.5 4.5 -select c14, c14, interval(c14, c14) from t1; -c14 c14 interval(c14, c14) -4.5 4.5 1 -4.5 4.5 1 -select c14, c15, make_set(c14, c15) from t1; -c14 c15 make_set(c14, c15) -4.5 5.5 -4.5 -5.5 -select c14, c15, concat_ws(c14, c15) from t1; -c14 c15 concat_ws(c14, c15) -4.5 5.5 5.5 -4.5 -5.5 -5.5 -select c14, c15, interval(c14, c15) from t1; -c14 c15 interval(c14, c15) -4.5 5.5 0 -4.5 -5.5 1 -select c14, c16, make_set(c14, c16) from t1; -c14 c16 make_set(c14, c16) -4.5 6.5 -4.5 6.5 -select c14, c16, concat_ws(c14, c16) from t1; -c14 c16 concat_ws(c14, c16) -4.5 6.5 6.5 -4.5 6.5 6.5 -select c14, c16, interval(c14, c16) from t1; -c14 c16 interval(c14, c16) -4.5 6.5 0 -4.5 6.5 0 -select c14, c17, make_set(c14, c17) from t1; -c14 c17 make_set(c14, c17) -4.5 8 -4.5 -8 -select c14, c17, concat_ws(c14, c17) from t1; -c14 c17 concat_ws(c14, c17) -4.5 8 8 -4.5 -8 -8 -select c14, c17, interval(c14, c17) from t1; -c14 c17 interval(c14, c17) -4.5 8 0 -4.5 -8 1 -select c14, c18, make_set(c14, c18) from t1; -c14 c18 make_set(c14, c18) -4.5 9 -4.5 9 -select c14, c18, concat_ws(c14, c18) from t1; -c14 c18 concat_ws(c14, c18) -4.5 9 9 -4.5 9 9 -select c14, c18, interval(c14, c18) from t1; -c14 c18 interval(c14, c18) -4.5 9 0 -4.5 9 0 -select c14, c19, make_set(c14, c19) from t1; -c14 c19 make_set(c14, c19) -4.5 2019-12-01 12:00:00 -4.5 2019-12-01 12:00:00 -select c14, c19, concat_ws(c14, c19) from t1; -c14 c19 concat_ws(c14, c19) -4.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -4.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c14, c19, interval(c14, c19) from t1; -c14 c19 interval(c14, c19) -4.5 2019-12-01 12:00:00 0 -4.5 2019-12-01 12:00:00 0 -select c14, c20, make_set(c14, c20) from t1; -c14 c20 make_set(c14, c20) -4.5 2019-12-03 06:00:00 -4.5 2019-12-03 06:00:00 -select c14, c20, concat_ws(c14, c20) from t1; -c14 c20 concat_ws(c14, c20) -4.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -4.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c14, c20, interval(c14, c20) from t1; -c14 c20 interval(c14, c20) -4.5 2019-12-03 06:00:00 0 -4.5 2019-12-03 06:00:00 0 -select c14, c21, make_set(c14, c21) from t1; -c14 c21 make_set(c14, c21) -4.5 9.5 -4.5 -9.5 -select c14, c21, concat_ws(c14, c21) from t1; -c14 c21 concat_ws(c14, c21) -4.5 9.5 9.5 -4.5 -9.5 -9.5 -select c14, c21, interval(c14, c21) from t1; -c14 c21 interval(c14, c21) -4.5 9.5 0 -4.5 -9.5 1 -select c14, c22, make_set(c14, c22) from t1; -c14 c22 make_set(c14, c22) -4.5 10.5 -4.5 10.5 -select c14, c22, concat_ws(c14, c22) from t1; -c14 c22 concat_ws(c14, c22) -4.5 10.5 10.5 -4.5 10.5 10.5 -select c14, c22, interval(c14, c22) from t1; -c14 c22 interval(c14, c22) -4.5 10.5 0 -4.5 10.5 0 -select c15, quote(c15) from t1; -c15 quote(c15) -5.5 '5.5' --5.5 '-5.5' -select c15, sys_op_opnsize(c15) from t1; -c15 sys_op_opnsize(c15) -5.5 20 --5.5 20 -select c15, c1, make_set(c15, c1) from t1; -c15 c1 make_set(c15, c1) -5.5 1 --5.5 -1 -select c15, c1, concat_ws(c15, c1) from t1; -c15 c1 concat_ws(c15, c1) -5.5 1 1 --5.5 -1 -1 -select c15, c1, interval(c15, c1) from t1; -c15 c1 interval(c15, c1) -5.5 1 1 --5.5 -1 0 -select c15, c2, make_set(c15, c2) from t1; -c15 c2 make_set(c15, c2) -5.5 2 --5.5 2 -select c15, c2, concat_ws(c15, c2) from t1; -c15 c2 concat_ws(c15, c2) -5.5 2 2 --5.5 2 2 -select c15, c2, interval(c15, c2) from t1; -c15 c2 interval(c15, c2) -5.5 2 1 --5.5 2 0 -select c15, c3, make_set(c15, c3) from t1; -c15 c3 make_set(c15, c3) -5.5 1 --5.5 -1 -select c15, c3, concat_ws(c15, c3) from t1; -c15 c3 concat_ws(c15, c3) -5.5 1 1 --5.5 -1 -1 -select c15, c3, interval(c15, c3) from t1; -c15 c3 interval(c15, c3) -5.5 1 1 --5.5 -1 0 -select c15, c4, make_set(c15, c4) from t1; -c15 c4 make_set(c15, c4) -5.5 2 --5.5 2 -select c15, c4, concat_ws(c15, c4) from t1; -c15 c4 concat_ws(c15, c4) -5.5 2 2 --5.5 2 2 -select c15, c4, interval(c15, c4) from t1; -c15 c4 interval(c15, c4) -5.5 2 1 --5.5 2 0 -select c15, c5, make_set(c15, c5) from t1; -c15 c5 make_set(c15, c5) -5.5 1 --5.5 -1 -select c15, c5, concat_ws(c15, c5) from t1; -c15 c5 concat_ws(c15, c5) -5.5 1 1 --5.5 -1 -1 -select c15, c5, interval(c15, c5) from t1; -c15 c5 interval(c15, c5) -5.5 1 1 --5.5 -1 0 -select c15, c6, make_set(c15, c6) from t1; -c15 c6 make_set(c15, c6) -5.5 2 --5.5 2 -select c15, c6, concat_ws(c15, c6) from t1; -c15 c6 concat_ws(c15, c6) -5.5 2 2 --5.5 2 2 -select c15, c6, interval(c15, c6) from t1; -c15 c6 interval(c15, c6) -5.5 2 1 --5.5 2 0 -select c15, c7, make_set(c15, c7) from t1; -c15 c7 make_set(c15, c7) -5.5 1 --5.5 -1 -select c15, c7, concat_ws(c15, c7) from t1; -c15 c7 concat_ws(c15, c7) -5.5 1 1 --5.5 -1 -1 -select c15, c7, interval(c15, c7) from t1; -c15 c7 interval(c15, c7) -5.5 1 1 --5.5 -1 0 -select c15, c8, make_set(c15, c8) from t1; -c15 c8 make_set(c15, c8) -5.5 2 --5.5 2 -select c15, c8, concat_ws(c15, c8) from t1; -c15 c8 concat_ws(c15, c8) -5.5 2 2 --5.5 2 2 -select c15, c8, interval(c15, c8) from t1; -c15 c8 interval(c15, c8) -5.5 2 1 --5.5 2 0 -select c15, c9, make_set(c15, c9) from t1; -c15 c9 make_set(c15, c9) -5.5 1 --5.5 -1 -select c15, c9, concat_ws(c15, c9) from t1; -c15 c9 concat_ws(c15, c9) -5.5 1 1 --5.5 -1 -1 -select c15, c9, interval(c15, c9) from t1; -c15 c9 interval(c15, c9) -5.5 1 1 --5.5 -1 0 -select c15, c10, make_set(c15, c10) from t1; -c15 c10 make_set(c15, c10) -5.5 2 --5.5 2 -select c15, c10, concat_ws(c15, c10) from t1; -c15 c10 concat_ws(c15, c10) -5.5 2 2 --5.5 2 2 -select c15, c10, interval(c15, c10) from t1; -c15 c10 interval(c15, c10) -5.5 2 1 --5.5 2 0 -select c15, c11, make_set(c15, c11) from t1; -c15 c11 make_set(c15, c11) -5.5 1 --5.5 -1 -select c15, c11, concat_ws(c15, c11) from t1; -c15 c11 concat_ws(c15, c11) -5.5 1 1 --5.5 -1 -1 -select c15, c11, interval(c15, c11) from t1; -c15 c11 interval(c15, c11) -5.5 1 1 --5.5 -1 0 -select c15, c12, make_set(c15, c12) from t1; -c15 c12 make_set(c15, c12) -5.5 2 --5.5 2 -select c15, c12, concat_ws(c15, c12) from t1; -c15 c12 concat_ws(c15, c12) -5.5 2 2 --5.5 2 2 -select c15, c12, interval(c15, c12) from t1; -c15 c12 interval(c15, c12) -5.5 2 1 --5.5 2 0 -select c15, c13, make_set(c15, c13) from t1; -c15 c13 make_set(c15, c13) -5.5 3.5 --5.5 -3.5 -select c15, c13, concat_ws(c15, c13) from t1; -c15 c13 concat_ws(c15, c13) -5.5 3.5 3.5 --5.5 -3.5 -3.5 -select c15, c13, interval(c15, c13) from t1; -c15 c13 interval(c15, c13) -5.5 3.5 1 --5.5 -3.5 0 -select c15, c14, make_set(c15, c14) from t1; -c15 c14 make_set(c15, c14) -5.5 4.5 --5.5 4.5 -select c15, c14, concat_ws(c15, c14) from t1; -c15 c14 concat_ws(c15, c14) -5.5 4.5 4.5 --5.5 4.5 4.5 -select c15, c14, interval(c15, c14) from t1; -c15 c14 interval(c15, c14) -5.5 4.5 1 --5.5 4.5 0 -select c15, c15, make_set(c15, c15) from t1; -c15 c15 make_set(c15, c15) -5.5 5.5 --5.5 -5.5 -select c15, c15, concat_ws(c15, c15) from t1; -c15 c15 concat_ws(c15, c15) -5.5 5.5 5.5 --5.5 -5.5 -5.5 -select c15, c15, interval(c15, c15) from t1; -c15 c15 interval(c15, c15) -5.5 5.5 1 --5.5 -5.5 1 -select c15, c16, make_set(c15, c16) from t1; -c15 c16 make_set(c15, c16) -5.5 6.5 --5.5 6.5 -select c15, c16, concat_ws(c15, c16) from t1; -c15 c16 concat_ws(c15, c16) -5.5 6.5 6.5 --5.5 6.5 6.5 -select c15, c16, interval(c15, c16) from t1; -c15 c16 interval(c15, c16) -5.5 6.5 0 --5.5 6.5 0 -select c15, c17, make_set(c15, c17) from t1; -c15 c17 make_set(c15, c17) -5.5 8 --5.5 -8 -select c15, c17, concat_ws(c15, c17) from t1; -c15 c17 concat_ws(c15, c17) -5.5 8 8 --5.5 -8 -8 -select c15, c17, interval(c15, c17) from t1; -c15 c17 interval(c15, c17) -5.5 8 0 --5.5 -8 1 -select c15, c18, make_set(c15, c18) from t1; -c15 c18 make_set(c15, c18) -5.5 9 --5.5 9 -select c15, c18, concat_ws(c15, c18) from t1; -c15 c18 concat_ws(c15, c18) -5.5 9 9 --5.5 9 9 -select c15, c18, interval(c15, c18) from t1; -c15 c18 interval(c15, c18) -5.5 9 0 --5.5 9 0 -select c15, c19, make_set(c15, c19) from t1; -c15 c19 make_set(c15, c19) -5.5 2019-12-01 12:00:00 --5.5 2019-12-01 12:00:00 -select c15, c19, concat_ws(c15, c19) from t1; -c15 c19 concat_ws(c15, c19) -5.5 2019-12-01 12:00:00 2019-12-01 12:00:00 --5.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c15, c19, interval(c15, c19) from t1; -c15 c19 interval(c15, c19) -5.5 2019-12-01 12:00:00 0 --5.5 2019-12-01 12:00:00 0 -select c15, c20, make_set(c15, c20) from t1; -c15 c20 make_set(c15, c20) -5.5 2019-12-03 06:00:00 --5.5 2019-12-03 06:00:00 -select c15, c20, concat_ws(c15, c20) from t1; -c15 c20 concat_ws(c15, c20) -5.5 2019-12-03 06:00:00 2019-12-03 06:00:00 --5.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c15, c20, interval(c15, c20) from t1; -c15 c20 interval(c15, c20) -5.5 2019-12-03 06:00:00 0 --5.5 2019-12-03 06:00:00 0 -select c15, c21, make_set(c15, c21) from t1; -c15 c21 make_set(c15, c21) -5.5 9.5 --5.5 -9.5 -select c15, c21, concat_ws(c15, c21) from t1; -c15 c21 concat_ws(c15, c21) -5.5 9.5 9.5 --5.5 -9.5 -9.5 -select c15, c21, interval(c15, c21) from t1; -c15 c21 interval(c15, c21) -5.5 9.5 0 --5.5 -9.5 1 -select c15, c22, make_set(c15, c22) from t1; -c15 c22 make_set(c15, c22) -5.5 10.5 --5.5 10.5 -select c15, c22, concat_ws(c15, c22) from t1; -c15 c22 concat_ws(c15, c22) -5.5 10.5 10.5 --5.5 10.5 10.5 -select c15, c22, interval(c15, c22) from t1; -c15 c22 interval(c15, c22) -5.5 10.5 0 --5.5 10.5 0 -select c16, quote(c16) from t1; -c16 quote(c16) -6.5 '6.5' -6.5 '6.5' -select c16, sys_op_opnsize(c16) from t1; -c16 sys_op_opnsize(c16) -6.5 20 -6.5 20 -select c16, c1, make_set(c16, c1) from t1; -c16 c1 make_set(c16, c1) -6.5 1 -6.5 -1 -select c16, c1, concat_ws(c16, c1) from t1; -c16 c1 concat_ws(c16, c1) -6.5 1 1 -6.5 -1 -1 -select c16, c1, interval(c16, c1) from t1; -c16 c1 interval(c16, c1) -6.5 1 1 -6.5 -1 1 -select c16, c2, make_set(c16, c2) from t1; -c16 c2 make_set(c16, c2) -6.5 2 -6.5 2 -select c16, c2, concat_ws(c16, c2) from t1; -c16 c2 concat_ws(c16, c2) -6.5 2 2 -6.5 2 2 -select c16, c2, interval(c16, c2) from t1; -c16 c2 interval(c16, c2) -6.5 2 1 -6.5 2 1 -select c16, c3, make_set(c16, c3) from t1; -c16 c3 make_set(c16, c3) -6.5 1 -6.5 -1 -select c16, c3, concat_ws(c16, c3) from t1; -c16 c3 concat_ws(c16, c3) -6.5 1 1 -6.5 -1 -1 -select c16, c3, interval(c16, c3) from t1; -c16 c3 interval(c16, c3) -6.5 1 1 -6.5 -1 1 -select c16, c4, make_set(c16, c4) from t1; -c16 c4 make_set(c16, c4) -6.5 2 -6.5 2 -select c16, c4, concat_ws(c16, c4) from t1; -c16 c4 concat_ws(c16, c4) -6.5 2 2 -6.5 2 2 -select c16, c4, interval(c16, c4) from t1; -c16 c4 interval(c16, c4) -6.5 2 1 -6.5 2 1 -select c16, c5, make_set(c16, c5) from t1; -c16 c5 make_set(c16, c5) -6.5 1 -6.5 -1 -select c16, c5, concat_ws(c16, c5) from t1; -c16 c5 concat_ws(c16, c5) -6.5 1 1 -6.5 -1 -1 -select c16, c5, interval(c16, c5) from t1; -c16 c5 interval(c16, c5) -6.5 1 1 -6.5 -1 1 -select c16, c6, make_set(c16, c6) from t1; -c16 c6 make_set(c16, c6) -6.5 2 -6.5 2 -select c16, c6, concat_ws(c16, c6) from t1; -c16 c6 concat_ws(c16, c6) -6.5 2 2 -6.5 2 2 -select c16, c6, interval(c16, c6) from t1; -c16 c6 interval(c16, c6) -6.5 2 1 -6.5 2 1 -select c16, c7, make_set(c16, c7) from t1; -c16 c7 make_set(c16, c7) -6.5 1 -6.5 -1 -select c16, c7, concat_ws(c16, c7) from t1; -c16 c7 concat_ws(c16, c7) -6.5 1 1 -6.5 -1 -1 -select c16, c7, interval(c16, c7) from t1; -c16 c7 interval(c16, c7) -6.5 1 1 -6.5 -1 1 -select c16, c8, make_set(c16, c8) from t1; -c16 c8 make_set(c16, c8) -6.5 2 -6.5 2 -select c16, c8, concat_ws(c16, c8) from t1; -c16 c8 concat_ws(c16, c8) -6.5 2 2 -6.5 2 2 -select c16, c8, interval(c16, c8) from t1; -c16 c8 interval(c16, c8) -6.5 2 1 -6.5 2 1 -select c16, c9, make_set(c16, c9) from t1; -c16 c9 make_set(c16, c9) -6.5 1 -6.5 -1 -select c16, c9, concat_ws(c16, c9) from t1; -c16 c9 concat_ws(c16, c9) -6.5 1 1 -6.5 -1 -1 -select c16, c9, interval(c16, c9) from t1; -c16 c9 interval(c16, c9) -6.5 1 1 -6.5 -1 1 -select c16, c10, make_set(c16, c10) from t1; -c16 c10 make_set(c16, c10) -6.5 2 -6.5 2 -select c16, c10, concat_ws(c16, c10) from t1; -c16 c10 concat_ws(c16, c10) -6.5 2 2 -6.5 2 2 -select c16, c10, interval(c16, c10) from t1; -c16 c10 interval(c16, c10) -6.5 2 1 -6.5 2 1 -select c16, c11, make_set(c16, c11) from t1; -c16 c11 make_set(c16, c11) -6.5 1 -6.5 -1 -select c16, c11, concat_ws(c16, c11) from t1; -c16 c11 concat_ws(c16, c11) -6.5 1 1 -6.5 -1 -1 -select c16, c11, interval(c16, c11) from t1; -c16 c11 interval(c16, c11) -6.5 1 1 -6.5 -1 1 -select c16, c12, make_set(c16, c12) from t1; -c16 c12 make_set(c16, c12) -6.5 2 -6.5 2 -select c16, c12, concat_ws(c16, c12) from t1; -c16 c12 concat_ws(c16, c12) -6.5 2 2 -6.5 2 2 -select c16, c12, interval(c16, c12) from t1; -c16 c12 interval(c16, c12) -6.5 2 1 -6.5 2 1 -select c16, c13, make_set(c16, c13) from t1; -c16 c13 make_set(c16, c13) -6.5 3.5 -6.5 -3.5 -select c16, c13, concat_ws(c16, c13) from t1; -c16 c13 concat_ws(c16, c13) -6.5 3.5 3.5 -6.5 -3.5 -3.5 -select c16, c13, interval(c16, c13) from t1; -c16 c13 interval(c16, c13) -6.5 3.5 1 -6.5 -3.5 1 -select c16, c14, make_set(c16, c14) from t1; -c16 c14 make_set(c16, c14) -6.5 4.5 -6.5 4.5 -select c16, c14, concat_ws(c16, c14) from t1; -c16 c14 concat_ws(c16, c14) -6.5 4.5 4.5 -6.5 4.5 4.5 -select c16, c14, interval(c16, c14) from t1; -c16 c14 interval(c16, c14) -6.5 4.5 1 -6.5 4.5 1 -select c16, c15, make_set(c16, c15) from t1; -c16 c15 make_set(c16, c15) -6.5 5.5 -6.5 -5.5 -select c16, c15, concat_ws(c16, c15) from t1; -c16 c15 concat_ws(c16, c15) -6.5 5.5 5.5 -6.5 -5.5 -5.5 -select c16, c15, interval(c16, c15) from t1; -c16 c15 interval(c16, c15) -6.5 5.5 1 -6.5 -5.5 1 -select c16, c16, make_set(c16, c16) from t1; -c16 c16 make_set(c16, c16) -6.5 6.5 -6.5 6.5 -select c16, c16, concat_ws(c16, c16) from t1; -c16 c16 concat_ws(c16, c16) -6.5 6.5 6.5 -6.5 6.5 6.5 -select c16, c16, interval(c16, c16) from t1; -c16 c16 interval(c16, c16) -6.5 6.5 1 -6.5 6.5 1 -select c16, c17, make_set(c16, c17) from t1; -c16 c17 make_set(c16, c17) -6.5 8 -6.5 -8 -select c16, c17, concat_ws(c16, c17) from t1; -c16 c17 concat_ws(c16, c17) -6.5 8 8 -6.5 -8 -8 -select c16, c17, interval(c16, c17) from t1; -c16 c17 interval(c16, c17) -6.5 8 0 -6.5 -8 1 -select c16, c18, make_set(c16, c18) from t1; -c16 c18 make_set(c16, c18) -6.5 9 -6.5 9 -select c16, c18, concat_ws(c16, c18) from t1; -c16 c18 concat_ws(c16, c18) -6.5 9 9 -6.5 9 9 -select c16, c18, interval(c16, c18) from t1; -c16 c18 interval(c16, c18) -6.5 9 0 -6.5 9 0 -select c16, c19, make_set(c16, c19) from t1; -c16 c19 make_set(c16, c19) -6.5 2019-12-01 12:00:00 -6.5 2019-12-01 12:00:00 -select c16, c19, concat_ws(c16, c19) from t1; -c16 c19 concat_ws(c16, c19) -6.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -6.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c16, c19, interval(c16, c19) from t1; -c16 c19 interval(c16, c19) -6.5 2019-12-01 12:00:00 0 -6.5 2019-12-01 12:00:00 0 -select c16, c20, make_set(c16, c20) from t1; -c16 c20 make_set(c16, c20) -6.5 2019-12-03 06:00:00 -6.5 2019-12-03 06:00:00 -select c16, c20, concat_ws(c16, c20) from t1; -c16 c20 concat_ws(c16, c20) -6.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -6.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c16, c20, interval(c16, c20) from t1; -c16 c20 interval(c16, c20) -6.5 2019-12-03 06:00:00 0 -6.5 2019-12-03 06:00:00 0 -select c16, c21, make_set(c16, c21) from t1; -c16 c21 make_set(c16, c21) -6.5 9.5 -6.5 -9.5 -select c16, c21, concat_ws(c16, c21) from t1; -c16 c21 concat_ws(c16, c21) -6.5 9.5 9.5 -6.5 -9.5 -9.5 -select c16, c21, interval(c16, c21) from t1; -c16 c21 interval(c16, c21) -6.5 9.5 0 -6.5 -9.5 1 -select c16, c22, make_set(c16, c22) from t1; -c16 c22 make_set(c16, c22) -6.5 10.5 -6.5 10.5 -select c16, c22, concat_ws(c16, c22) from t1; -c16 c22 concat_ws(c16, c22) -6.5 10.5 10.5 -6.5 10.5 10.5 -select c16, c22, interval(c16, c22) from t1; -c16 c22 interval(c16, c22) -6.5 10.5 0 -6.5 10.5 0 -select c17, quote(c17) from t1; -c17 quote(c17) -8 '8' --8 '-8' -select c17, sys_op_opnsize(c17) from t1; -c17 sys_op_opnsize(c17) -8 20 --8 20 -select c17, c1, make_set(c17, c1) from t1; -c17 c1 make_set(c17, c1) -8 1 --8 -1 -select c17, c1, concat_ws(c17, c1) from t1; -c17 c1 concat_ws(c17, c1) -8 1 1 --8 -1 -1 -select c17, c1, interval(c17, c1) from t1; -c17 c1 interval(c17, c1) -8 1 1 --8 -1 0 -select c17, c2, make_set(c17, c2) from t1; -c17 c2 make_set(c17, c2) -8 2 --8 2 -select c17, c2, concat_ws(c17, c2) from t1; -c17 c2 concat_ws(c17, c2) -8 2 2 --8 2 2 -select c17, c2, interval(c17, c2) from t1; -c17 c2 interval(c17, c2) -8 2 1 --8 2 0 -select c17, c3, make_set(c17, c3) from t1; -c17 c3 make_set(c17, c3) -8 1 --8 -1 -select c17, c3, concat_ws(c17, c3) from t1; -c17 c3 concat_ws(c17, c3) -8 1 1 --8 -1 -1 -select c17, c3, interval(c17, c3) from t1; -c17 c3 interval(c17, c3) -8 1 1 --8 -1 0 -select c17, c4, make_set(c17, c4) from t1; -c17 c4 make_set(c17, c4) -8 2 --8 2 -select c17, c4, concat_ws(c17, c4) from t1; -c17 c4 concat_ws(c17, c4) -8 2 2 --8 2 2 -select c17, c4, interval(c17, c4) from t1; -c17 c4 interval(c17, c4) -8 2 1 --8 2 0 -select c17, c5, make_set(c17, c5) from t1; -c17 c5 make_set(c17, c5) -8 1 --8 -1 -select c17, c5, concat_ws(c17, c5) from t1; -c17 c5 concat_ws(c17, c5) -8 1 1 --8 -1 -1 -select c17, c5, interval(c17, c5) from t1; -c17 c5 interval(c17, c5) -8 1 1 --8 -1 0 -select c17, c6, make_set(c17, c6) from t1; -c17 c6 make_set(c17, c6) -8 2 --8 2 -select c17, c6, concat_ws(c17, c6) from t1; -c17 c6 concat_ws(c17, c6) -8 2 2 --8 2 2 -select c17, c6, interval(c17, c6) from t1; -c17 c6 interval(c17, c6) -8 2 1 --8 2 0 -select c17, c7, make_set(c17, c7) from t1; -c17 c7 make_set(c17, c7) -8 1 --8 -1 -select c17, c7, concat_ws(c17, c7) from t1; -c17 c7 concat_ws(c17, c7) -8 1 1 --8 -1 -1 -select c17, c7, interval(c17, c7) from t1; -c17 c7 interval(c17, c7) -8 1 1 --8 -1 0 -select c17, c8, make_set(c17, c8) from t1; -c17 c8 make_set(c17, c8) -8 2 --8 2 -select c17, c8, concat_ws(c17, c8) from t1; -c17 c8 concat_ws(c17, c8) -8 2 2 --8 2 2 -select c17, c8, interval(c17, c8) from t1; -c17 c8 interval(c17, c8) -8 2 1 --8 2 0 -select c17, c9, make_set(c17, c9) from t1; -c17 c9 make_set(c17, c9) -8 1 --8 -1 -select c17, c9, concat_ws(c17, c9) from t1; -c17 c9 concat_ws(c17, c9) -8 1 1 --8 -1 -1 -select c17, c9, interval(c17, c9) from t1; -c17 c9 interval(c17, c9) -8 1 1 --8 -1 0 -select c17, c10, make_set(c17, c10) from t1; -c17 c10 make_set(c17, c10) -8 2 --8 2 -select c17, c10, concat_ws(c17, c10) from t1; -c17 c10 concat_ws(c17, c10) -8 2 2 --8 2 2 -select c17, c10, interval(c17, c10) from t1; -c17 c10 interval(c17, c10) -8 2 1 --8 2 0 -select c17, c11, make_set(c17, c11) from t1; -c17 c11 make_set(c17, c11) -8 1 --8 -1 -select c17, c11, concat_ws(c17, c11) from t1; -c17 c11 concat_ws(c17, c11) -8 1 1 --8 -1 -1 -select c17, c11, interval(c17, c11) from t1; -c17 c11 interval(c17, c11) -8 1 1 --8 -1 0 -select c17, c12, make_set(c17, c12) from t1; -c17 c12 make_set(c17, c12) -8 2 --8 2 -select c17, c12, concat_ws(c17, c12) from t1; -c17 c12 concat_ws(c17, c12) -8 2 2 --8 2 2 -select c17, c12, interval(c17, c12) from t1; -c17 c12 interval(c17, c12) -8 2 1 --8 2 0 -select c17, c13, make_set(c17, c13) from t1; -c17 c13 make_set(c17, c13) -8 3.5 --8 -3.5 -select c17, c13, concat_ws(c17, c13) from t1; -c17 c13 concat_ws(c17, c13) -8 3.5 3.5 --8 -3.5 -3.5 -select c17, c13, interval(c17, c13) from t1; -c17 c13 interval(c17, c13) -8 3.5 1 --8 -3.5 0 -select c17, c14, make_set(c17, c14) from t1; -c17 c14 make_set(c17, c14) -8 4.5 --8 4.5 -select c17, c14, concat_ws(c17, c14) from t1; -c17 c14 concat_ws(c17, c14) -8 4.5 4.5 --8 4.5 4.5 -select c17, c14, interval(c17, c14) from t1; -c17 c14 interval(c17, c14) -8 4.5 1 --8 4.5 0 -select c17, c15, make_set(c17, c15) from t1; -c17 c15 make_set(c17, c15) -8 5.5 --8 -5.5 -select c17, c15, concat_ws(c17, c15) from t1; -c17 c15 concat_ws(c17, c15) -8 5.5 5.5 --8 -5.5 -5.5 -select c17, c15, interval(c17, c15) from t1; -c17 c15 interval(c17, c15) -8 5.5 1 --8 -5.5 0 -select c17, c16, make_set(c17, c16) from t1; -c17 c16 make_set(c17, c16) -8 6.5 --8 6.5 -select c17, c16, concat_ws(c17, c16) from t1; -c17 c16 concat_ws(c17, c16) -8 6.5 6.5 --8 6.5 6.5 -select c17, c16, interval(c17, c16) from t1; -c17 c16 interval(c17, c16) -8 6.5 1 --8 6.5 0 -select c17, c17, make_set(c17, c17) from t1; -c17 c17 make_set(c17, c17) -8 8 --8 -8 -select c17, c17, concat_ws(c17, c17) from t1; -c17 c17 concat_ws(c17, c17) -8 8 8 --8 -8 -8 -select c17, c17, interval(c17, c17) from t1; -c17 c17 interval(c17, c17) -8 8 1 --8 -8 1 -select c17, c18, make_set(c17, c18) from t1; -c17 c18 make_set(c17, c18) -8 9 --8 9 -select c17, c18, concat_ws(c17, c18) from t1; -c17 c18 concat_ws(c17, c18) -8 9 9 --8 9 9 -select c17, c18, interval(c17, c18) from t1; -c17 c18 interval(c17, c18) -8 9 0 --8 9 0 -select c17, c19, make_set(c17, c19) from t1; -c17 c19 make_set(c17, c19) -8 2019-12-01 12:00:00 --8 2019-12-01 12:00:00 -select c17, c19, concat_ws(c17, c19) from t1; -c17 c19 concat_ws(c17, c19) -8 2019-12-01 12:00:00 2019-12-01 12:00:00 --8 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c17, c19, interval(c17, c19) from t1; -c17 c19 interval(c17, c19) -8 2019-12-01 12:00:00 0 --8 2019-12-01 12:00:00 0 -select c17, c20, make_set(c17, c20) from t1; -c17 c20 make_set(c17, c20) -8 2019-12-03 06:00:00 --8 2019-12-03 06:00:00 -select c17, c20, concat_ws(c17, c20) from t1; -c17 c20 concat_ws(c17, c20) -8 2019-12-03 06:00:00 2019-12-03 06:00:00 --8 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c17, c20, interval(c17, c20) from t1; -c17 c20 interval(c17, c20) -8 2019-12-03 06:00:00 0 --8 2019-12-03 06:00:00 0 -select c17, c21, make_set(c17, c21) from t1; -c17 c21 make_set(c17, c21) -8 9.5 --8 -9.5 -select c17, c21, concat_ws(c17, c21) from t1; -c17 c21 concat_ws(c17, c21) -8 9.5 9.5 --8 -9.5 -9.5 -select c17, c21, interval(c17, c21) from t1; -c17 c21 interval(c17, c21) -8 9.5 0 --8 -9.5 1 -select c17, c22, make_set(c17, c22) from t1; -c17 c22 make_set(c17, c22) -8 10.5 --8 10.5 -select c17, c22, concat_ws(c17, c22) from t1; -c17 c22 concat_ws(c17, c22) -8 10.5 10.5 --8 10.5 10.5 -select c17, c22, interval(c17, c22) from t1; -c17 c22 interval(c17, c22) -8 10.5 0 --8 10.5 0 -select c18, quote(c18) from t1; -c18 quote(c18) -9 '9' -9 '9' -select c18, sys_op_opnsize(c18) from t1; -c18 sys_op_opnsize(c18) -9 20 -9 20 -select c18, c1, make_set(c18, c1) from t1; -c18 c1 make_set(c18, c1) -9 1 1 -9 -1 -1 -select c18, c1, concat_ws(c18, c1) from t1; -c18 c1 concat_ws(c18, c1) -9 1 1 -9 -1 -1 -select c18, c1, interval(c18, c1) from t1; -c18 c1 interval(c18, c1) -9 1 1 -9 -1 1 -select c18, c2, make_set(c18, c2) from t1; -c18 c2 make_set(c18, c2) -9 2 2 -9 2 2 -select c18, c2, concat_ws(c18, c2) from t1; -c18 c2 concat_ws(c18, c2) -9 2 2 -9 2 2 -select c18, c2, interval(c18, c2) from t1; -c18 c2 interval(c18, c2) -9 2 1 -9 2 1 -select c18, c3, make_set(c18, c3) from t1; -c18 c3 make_set(c18, c3) -9 1 1 -9 -1 -1 -select c18, c3, concat_ws(c18, c3) from t1; -c18 c3 concat_ws(c18, c3) -9 1 1 -9 -1 -1 -select c18, c3, interval(c18, c3) from t1; -c18 c3 interval(c18, c3) -9 1 1 -9 -1 1 -select c18, c4, make_set(c18, c4) from t1; -c18 c4 make_set(c18, c4) -9 2 2 -9 2 2 -select c18, c4, concat_ws(c18, c4) from t1; -c18 c4 concat_ws(c18, c4) -9 2 2 -9 2 2 -select c18, c4, interval(c18, c4) from t1; -c18 c4 interval(c18, c4) -9 2 1 -9 2 1 -select c18, c5, make_set(c18, c5) from t1; -c18 c5 make_set(c18, c5) -9 1 1 -9 -1 -1 -select c18, c5, concat_ws(c18, c5) from t1; -c18 c5 concat_ws(c18, c5) -9 1 1 -9 -1 -1 -select c18, c5, interval(c18, c5) from t1; -c18 c5 interval(c18, c5) -9 1 1 -9 -1 1 -select c18, c6, make_set(c18, c6) from t1; -c18 c6 make_set(c18, c6) -9 2 2 -9 2 2 -select c18, c6, concat_ws(c18, c6) from t1; -c18 c6 concat_ws(c18, c6) -9 2 2 -9 2 2 -select c18, c6, interval(c18, c6) from t1; -c18 c6 interval(c18, c6) -9 2 1 -9 2 1 -select c18, c7, make_set(c18, c7) from t1; -c18 c7 make_set(c18, c7) -9 1 1 -9 -1 -1 -select c18, c7, concat_ws(c18, c7) from t1; -c18 c7 concat_ws(c18, c7) -9 1 1 -9 -1 -1 -select c18, c7, interval(c18, c7) from t1; -c18 c7 interval(c18, c7) -9 1 1 -9 -1 1 -select c18, c8, make_set(c18, c8) from t1; -c18 c8 make_set(c18, c8) -9 2 2 -9 2 2 -select c18, c8, concat_ws(c18, c8) from t1; -c18 c8 concat_ws(c18, c8) -9 2 2 -9 2 2 -select c18, c8, interval(c18, c8) from t1; -c18 c8 interval(c18, c8) -9 2 1 -9 2 1 -select c18, c9, make_set(c18, c9) from t1; -c18 c9 make_set(c18, c9) -9 1 1 -9 -1 -1 -select c18, c9, concat_ws(c18, c9) from t1; -c18 c9 concat_ws(c18, c9) -9 1 1 -9 -1 -1 -select c18, c9, interval(c18, c9) from t1; -c18 c9 interval(c18, c9) -9 1 1 -9 -1 1 -select c18, c10, make_set(c18, c10) from t1; -c18 c10 make_set(c18, c10) -9 2 2 -9 2 2 -select c18, c10, concat_ws(c18, c10) from t1; -c18 c10 concat_ws(c18, c10) -9 2 2 -9 2 2 -select c18, c10, interval(c18, c10) from t1; -c18 c10 interval(c18, c10) -9 2 1 -9 2 1 -select c18, c11, make_set(c18, c11) from t1; -c18 c11 make_set(c18, c11) -9 1 1 -9 -1 -1 -select c18, c11, concat_ws(c18, c11) from t1; -c18 c11 concat_ws(c18, c11) -9 1 1 -9 -1 -1 -select c18, c11, interval(c18, c11) from t1; -c18 c11 interval(c18, c11) -9 1 1 -9 -1 1 -select c18, c12, make_set(c18, c12) from t1; -c18 c12 make_set(c18, c12) -9 2 2 -9 2 2 -select c18, c12, concat_ws(c18, c12) from t1; -c18 c12 concat_ws(c18, c12) -9 2 2 -9 2 2 -select c18, c12, interval(c18, c12) from t1; -c18 c12 interval(c18, c12) -9 2 1 -9 2 1 -select c18, c13, make_set(c18, c13) from t1; -c18 c13 make_set(c18, c13) -9 3.5 3.5 -9 -3.5 -3.5 -select c18, c13, concat_ws(c18, c13) from t1; -c18 c13 concat_ws(c18, c13) -9 3.5 3.5 -9 -3.5 -3.5 -select c18, c13, interval(c18, c13) from t1; -c18 c13 interval(c18, c13) -9 3.5 1 -9 -3.5 1 -select c18, c14, make_set(c18, c14) from t1; -c18 c14 make_set(c18, c14) -9 4.5 4.5 -9 4.5 4.5 -select c18, c14, concat_ws(c18, c14) from t1; -c18 c14 concat_ws(c18, c14) -9 4.5 4.5 -9 4.5 4.5 -select c18, c14, interval(c18, c14) from t1; -c18 c14 interval(c18, c14) -9 4.5 1 -9 4.5 1 -select c18, c15, make_set(c18, c15) from t1; -c18 c15 make_set(c18, c15) -9 5.5 5.5 -9 -5.5 -5.5 -select c18, c15, concat_ws(c18, c15) from t1; -c18 c15 concat_ws(c18, c15) -9 5.5 5.5 -9 -5.5 -5.5 -select c18, c15, interval(c18, c15) from t1; -c18 c15 interval(c18, c15) -9 5.5 1 -9 -5.5 1 -select c18, c16, make_set(c18, c16) from t1; -c18 c16 make_set(c18, c16) -9 6.5 6.5 -9 6.5 6.5 -select c18, c16, concat_ws(c18, c16) from t1; -c18 c16 concat_ws(c18, c16) -9 6.5 6.5 -9 6.5 6.5 -select c18, c16, interval(c18, c16) from t1; -c18 c16 interval(c18, c16) -9 6.5 1 -9 6.5 1 -select c18, c17, make_set(c18, c17) from t1; -c18 c17 make_set(c18, c17) -9 8 8 -9 -8 -8 -select c18, c17, concat_ws(c18, c17) from t1; -c18 c17 concat_ws(c18, c17) -9 8 8 -9 -8 -8 -select c18, c17, interval(c18, c17) from t1; -c18 c17 interval(c18, c17) -9 8 1 -9 -8 1 -select c18, c18, make_set(c18, c18) from t1; -c18 c18 make_set(c18, c18) -9 9 9 -9 9 9 -select c18, c18, concat_ws(c18, c18) from t1; -c18 c18 concat_ws(c18, c18) -9 9 9 -9 9 9 -select c18, c18, interval(c18, c18) from t1; -c18 c18 interval(c18, c18) -9 9 1 -9 9 1 -select c18, c19, make_set(c18, c19) from t1; -c18 c19 make_set(c18, c19) -9 2019-12-01 12:00:00 2019-12-01 12:00:00 -9 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c18, c19, concat_ws(c18, c19) from t1; -c18 c19 concat_ws(c18, c19) -9 2019-12-01 12:00:00 2019-12-01 12:00:00 -9 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c18, c19, interval(c18, c19) from t1; -c18 c19 interval(c18, c19) -9 2019-12-01 12:00:00 0 -9 2019-12-01 12:00:00 0 -select c18, c20, make_set(c18, c20) from t1; -c18 c20 make_set(c18, c20) -9 2019-12-03 06:00:00 2019-12-03 06:00:00 -9 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c18, c20, concat_ws(c18, c20) from t1; -c18 c20 concat_ws(c18, c20) -9 2019-12-03 06:00:00 2019-12-03 06:00:00 -9 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c18, c20, interval(c18, c20) from t1; -c18 c20 interval(c18, c20) -9 2019-12-03 06:00:00 0 -9 2019-12-03 06:00:00 0 -select c18, c21, make_set(c18, c21) from t1; -c18 c21 make_set(c18, c21) -9 9.5 9.5 -9 -9.5 -9.5 -select c18, c21, concat_ws(c18, c21) from t1; -c18 c21 concat_ws(c18, c21) -9 9.5 9.5 -9 -9.5 -9.5 -select c18, c21, interval(c18, c21) from t1; -c18 c21 interval(c18, c21) -9 9.5 0 -9 -9.5 1 -select c18, c22, make_set(c18, c22) from t1; -c18 c22 make_set(c18, c22) -9 10.5 10.5 -9 10.5 10.5 -select c18, c22, concat_ws(c18, c22) from t1; -c18 c22 concat_ws(c18, c22) -9 10.5 10.5 -9 10.5 10.5 -select c18, c22, interval(c18, c22) from t1; -c18 c22 interval(c18, c22) -9 10.5 0 -9 10.5 0 -select c19, quote(c19) from t1; -c19 quote(c19) -2019-12-01 12:00:00 '2019-12-01 12:00:00' -2019-12-01 12:00:00 '2019-12-01 12:00:00' -select c19, sys_op_opnsize(c19) from t1; -c19 sys_op_opnsize(c19) -2019-12-01 12:00:00 20 -2019-12-01 12:00:00 20 -select c19, c1, make_set(c19, c1) from t1; -c19 c1 make_set(c19, c1) -2019-12-01 12:00:00 1 -2019-12-01 12:00:00 -1 -select c19, c1, concat_ws(c19, c1) from t1; -c19 c1 concat_ws(c19, c1) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 -1 -select c19, c1, interval(c19, c1) from t1; -c19 c1 interval(c19, c1) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 1 -select c19, c2, make_set(c19, c2) from t1; -c19 c2 make_set(c19, c2) -2019-12-01 12:00:00 2 -2019-12-01 12:00:00 2 -select c19, c2, concat_ws(c19, c2) from t1; -c19 c2 concat_ws(c19, c2) -2019-12-01 12:00:00 2 2 -2019-12-01 12:00:00 2 2 -select c19, c2, interval(c19, c2) from t1; -c19 c2 interval(c19, c2) -2019-12-01 12:00:00 2 1 -2019-12-01 12:00:00 2 1 -select c19, c3, make_set(c19, c3) from t1; -c19 c3 make_set(c19, c3) -2019-12-01 12:00:00 1 -2019-12-01 12:00:00 -1 -select c19, c3, concat_ws(c19, c3) from t1; -c19 c3 concat_ws(c19, c3) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 -1 -select c19, c3, interval(c19, c3) from t1; -c19 c3 interval(c19, c3) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 1 -select c19, c4, make_set(c19, c4) from t1; -c19 c4 make_set(c19, c4) -2019-12-01 12:00:00 2 -2019-12-01 12:00:00 2 -select c19, c4, concat_ws(c19, c4) from t1; -c19 c4 concat_ws(c19, c4) -2019-12-01 12:00:00 2 2 -2019-12-01 12:00:00 2 2 -select c19, c4, interval(c19, c4) from t1; -c19 c4 interval(c19, c4) -2019-12-01 12:00:00 2 1 -2019-12-01 12:00:00 2 1 -select c19, c5, make_set(c19, c5) from t1; -c19 c5 make_set(c19, c5) -2019-12-01 12:00:00 1 -2019-12-01 12:00:00 -1 -select c19, c5, concat_ws(c19, c5) from t1; -c19 c5 concat_ws(c19, c5) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 -1 -select c19, c5, interval(c19, c5) from t1; -c19 c5 interval(c19, c5) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 1 -select c19, c6, make_set(c19, c6) from t1; -c19 c6 make_set(c19, c6) -2019-12-01 12:00:00 2 -2019-12-01 12:00:00 2 -select c19, c6, concat_ws(c19, c6) from t1; -c19 c6 concat_ws(c19, c6) -2019-12-01 12:00:00 2 2 -2019-12-01 12:00:00 2 2 -select c19, c6, interval(c19, c6) from t1; -c19 c6 interval(c19, c6) -2019-12-01 12:00:00 2 1 -2019-12-01 12:00:00 2 1 -select c19, c7, make_set(c19, c7) from t1; -c19 c7 make_set(c19, c7) -2019-12-01 12:00:00 1 -2019-12-01 12:00:00 -1 -select c19, c7, concat_ws(c19, c7) from t1; -c19 c7 concat_ws(c19, c7) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 -1 -select c19, c7, interval(c19, c7) from t1; -c19 c7 interval(c19, c7) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 1 -select c19, c8, make_set(c19, c8) from t1; -c19 c8 make_set(c19, c8) -2019-12-01 12:00:00 2 -2019-12-01 12:00:00 2 -select c19, c8, concat_ws(c19, c8) from t1; -c19 c8 concat_ws(c19, c8) -2019-12-01 12:00:00 2 2 -2019-12-01 12:00:00 2 2 -select c19, c8, interval(c19, c8) from t1; -c19 c8 interval(c19, c8) -2019-12-01 12:00:00 2 1 -2019-12-01 12:00:00 2 1 -select c19, c9, make_set(c19, c9) from t1; -c19 c9 make_set(c19, c9) -2019-12-01 12:00:00 1 -2019-12-01 12:00:00 -1 -select c19, c9, concat_ws(c19, c9) from t1; -c19 c9 concat_ws(c19, c9) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 -1 -select c19, c9, interval(c19, c9) from t1; -c19 c9 interval(c19, c9) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 1 -select c19, c10, make_set(c19, c10) from t1; -c19 c10 make_set(c19, c10) -2019-12-01 12:00:00 2 -2019-12-01 12:00:00 2 -select c19, c10, concat_ws(c19, c10) from t1; -c19 c10 concat_ws(c19, c10) -2019-12-01 12:00:00 2 2 -2019-12-01 12:00:00 2 2 -select c19, c10, interval(c19, c10) from t1; -c19 c10 interval(c19, c10) -2019-12-01 12:00:00 2 1 -2019-12-01 12:00:00 2 1 -select c19, c11, make_set(c19, c11) from t1; -c19 c11 make_set(c19, c11) -2019-12-01 12:00:00 1 -2019-12-01 12:00:00 -1 -select c19, c11, concat_ws(c19, c11) from t1; -c19 c11 concat_ws(c19, c11) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 -1 -select c19, c11, interval(c19, c11) from t1; -c19 c11 interval(c19, c11) -2019-12-01 12:00:00 1 1 -2019-12-01 12:00:00 -1 1 -select c19, c12, make_set(c19, c12) from t1; -c19 c12 make_set(c19, c12) -2019-12-01 12:00:00 2 -2019-12-01 12:00:00 2 -select c19, c12, concat_ws(c19, c12) from t1; -c19 c12 concat_ws(c19, c12) -2019-12-01 12:00:00 2 2 -2019-12-01 12:00:00 2 2 -select c19, c12, interval(c19, c12) from t1; -c19 c12 interval(c19, c12) -2019-12-01 12:00:00 2 1 -2019-12-01 12:00:00 2 1 -select c19, c13, make_set(c19, c13) from t1; -c19 c13 make_set(c19, c13) -2019-12-01 12:00:00 3.5 -2019-12-01 12:00:00 -3.5 -select c19, c13, concat_ws(c19, c13) from t1; -c19 c13 concat_ws(c19, c13) -2019-12-01 12:00:00 3.5 3.5 -2019-12-01 12:00:00 -3.5 -3.5 -select c19, c13, interval(c19, c13) from t1; -c19 c13 interval(c19, c13) -2019-12-01 12:00:00 3.5 1 -2019-12-01 12:00:00 -3.5 1 -select c19, c14, make_set(c19, c14) from t1; -c19 c14 make_set(c19, c14) -2019-12-01 12:00:00 4.5 -2019-12-01 12:00:00 4.5 -select c19, c14, concat_ws(c19, c14) from t1; -c19 c14 concat_ws(c19, c14) -2019-12-01 12:00:00 4.5 4.5 -2019-12-01 12:00:00 4.5 4.5 -select c19, c14, interval(c19, c14) from t1; -c19 c14 interval(c19, c14) -2019-12-01 12:00:00 4.5 1 -2019-12-01 12:00:00 4.5 1 -select c19, c15, make_set(c19, c15) from t1; -c19 c15 make_set(c19, c15) -2019-12-01 12:00:00 5.5 -2019-12-01 12:00:00 -5.5 -select c19, c15, concat_ws(c19, c15) from t1; -c19 c15 concat_ws(c19, c15) -2019-12-01 12:00:00 5.5 5.5 -2019-12-01 12:00:00 -5.5 -5.5 -select c19, c15, interval(c19, c15) from t1; -c19 c15 interval(c19, c15) -2019-12-01 12:00:00 5.5 1 -2019-12-01 12:00:00 -5.5 1 -select c19, c16, make_set(c19, c16) from t1; -c19 c16 make_set(c19, c16) -2019-12-01 12:00:00 6.5 -2019-12-01 12:00:00 6.5 -select c19, c16, concat_ws(c19, c16) from t1; -c19 c16 concat_ws(c19, c16) -2019-12-01 12:00:00 6.5 6.5 -2019-12-01 12:00:00 6.5 6.5 -select c19, c16, interval(c19, c16) from t1; -c19 c16 interval(c19, c16) -2019-12-01 12:00:00 6.5 1 -2019-12-01 12:00:00 6.5 1 -select c19, c17, make_set(c19, c17) from t1; -c19 c17 make_set(c19, c17) -2019-12-01 12:00:00 8 -2019-12-01 12:00:00 -8 -select c19, c17, concat_ws(c19, c17) from t1; -c19 c17 concat_ws(c19, c17) -2019-12-01 12:00:00 8 8 -2019-12-01 12:00:00 -8 -8 -select c19, c17, interval(c19, c17) from t1; -c19 c17 interval(c19, c17) -2019-12-01 12:00:00 8 1 -2019-12-01 12:00:00 -8 1 -select c19, c18, make_set(c19, c18) from t1; -c19 c18 make_set(c19, c18) -2019-12-01 12:00:00 9 -2019-12-01 12:00:00 9 -select c19, c18, concat_ws(c19, c18) from t1; -c19 c18 concat_ws(c19, c18) -2019-12-01 12:00:00 9 9 -2019-12-01 12:00:00 9 9 -select c19, c18, interval(c19, c18) from t1; -c19 c18 interval(c19, c18) -2019-12-01 12:00:00 9 1 -2019-12-01 12:00:00 9 1 -select c19, c19, make_set(c19, c19) from t1; -c19 c19 make_set(c19, c19) -2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, c19, concat_ws(c19, c19) from t1; -c19 c19 concat_ws(c19, c19) -2019-12-01 12:00:00 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-01 12:00:00 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c19, c19, interval(c19, c19) from t1; -c19 c19 interval(c19, c19) -2019-12-01 12:00:00 2019-12-01 12:00:00 1 -2019-12-01 12:00:00 2019-12-01 12:00:00 1 -select c19, c20, make_set(c19, c20) from t1; -c19 c20 make_set(c19, c20) -2019-12-01 12:00:00 2019-12-03 06:00:00 -2019-12-01 12:00:00 2019-12-03 06:00:00 -select c19, c20, concat_ws(c19, c20) from t1; -c19 c20 concat_ws(c19, c20) -2019-12-01 12:00:00 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-01 12:00:00 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c19, c20, interval(c19, c20) from t1; -c19 c20 interval(c19, c20) -2019-12-01 12:00:00 2019-12-03 06:00:00 0 -2019-12-01 12:00:00 2019-12-03 06:00:00 0 -select c19, c21, make_set(c19, c21) from t1; -c19 c21 make_set(c19, c21) -2019-12-01 12:00:00 9.5 -2019-12-01 12:00:00 -9.5 -select c19, c21, concat_ws(c19, c21) from t1; -c19 c21 concat_ws(c19, c21) -2019-12-01 12:00:00 9.5 9.5 -2019-12-01 12:00:00 -9.5 -9.5 -select c19, c21, interval(c19, c21) from t1; -c19 c21 interval(c19, c21) -2019-12-01 12:00:00 9.5 1 -2019-12-01 12:00:00 -9.5 1 -select c19, c22, make_set(c19, c22) from t1; -c19 c22 make_set(c19, c22) -2019-12-01 12:00:00 10.5 -2019-12-01 12:00:00 10.5 -select c19, c22, concat_ws(c19, c22) from t1; -c19 c22 concat_ws(c19, c22) -2019-12-01 12:00:00 10.5 10.5 -2019-12-01 12:00:00 10.5 10.5 -select c19, c22, interval(c19, c22) from t1; -c19 c22 interval(c19, c22) -2019-12-01 12:00:00 10.5 1 -2019-12-01 12:00:00 10.5 1 -select c20, quote(c20) from t1; -c20 quote(c20) -2019-12-03 06:00:00 '2019-12-03 06:00:00' -2019-12-03 06:00:00 '2019-12-03 06:00:00' -select c20, sys_op_opnsize(c20) from t1; -c20 sys_op_opnsize(c20) -2019-12-03 06:00:00 20 -2019-12-03 06:00:00 20 -select c20, c1, make_set(c20, c1) from t1; -c20 c1 make_set(c20, c1) -2019-12-03 06:00:00 1 -2019-12-03 06:00:00 -1 -select c20, c1, concat_ws(c20, c1) from t1; -c20 c1 concat_ws(c20, c1) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 -1 -select c20, c1, interval(c20, c1) from t1; -c20 c1 interval(c20, c1) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 1 -select c20, c2, make_set(c20, c2) from t1; -c20 c2 make_set(c20, c2) -2019-12-03 06:00:00 2 -2019-12-03 06:00:00 2 -select c20, c2, concat_ws(c20, c2) from t1; -c20 c2 concat_ws(c20, c2) -2019-12-03 06:00:00 2 2 -2019-12-03 06:00:00 2 2 -select c20, c2, interval(c20, c2) from t1; -c20 c2 interval(c20, c2) -2019-12-03 06:00:00 2 1 -2019-12-03 06:00:00 2 1 -select c20, c3, make_set(c20, c3) from t1; -c20 c3 make_set(c20, c3) -2019-12-03 06:00:00 1 -2019-12-03 06:00:00 -1 -select c20, c3, concat_ws(c20, c3) from t1; -c20 c3 concat_ws(c20, c3) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 -1 -select c20, c3, interval(c20, c3) from t1; -c20 c3 interval(c20, c3) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 1 -select c20, c4, make_set(c20, c4) from t1; -c20 c4 make_set(c20, c4) -2019-12-03 06:00:00 2 -2019-12-03 06:00:00 2 -select c20, c4, concat_ws(c20, c4) from t1; -c20 c4 concat_ws(c20, c4) -2019-12-03 06:00:00 2 2 -2019-12-03 06:00:00 2 2 -select c20, c4, interval(c20, c4) from t1; -c20 c4 interval(c20, c4) -2019-12-03 06:00:00 2 1 -2019-12-03 06:00:00 2 1 -select c20, c5, make_set(c20, c5) from t1; -c20 c5 make_set(c20, c5) -2019-12-03 06:00:00 1 -2019-12-03 06:00:00 -1 -select c20, c5, concat_ws(c20, c5) from t1; -c20 c5 concat_ws(c20, c5) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 -1 -select c20, c5, interval(c20, c5) from t1; -c20 c5 interval(c20, c5) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 1 -select c20, c6, make_set(c20, c6) from t1; -c20 c6 make_set(c20, c6) -2019-12-03 06:00:00 2 -2019-12-03 06:00:00 2 -select c20, c6, concat_ws(c20, c6) from t1; -c20 c6 concat_ws(c20, c6) -2019-12-03 06:00:00 2 2 -2019-12-03 06:00:00 2 2 -select c20, c6, interval(c20, c6) from t1; -c20 c6 interval(c20, c6) -2019-12-03 06:00:00 2 1 -2019-12-03 06:00:00 2 1 -select c20, c7, make_set(c20, c7) from t1; -c20 c7 make_set(c20, c7) -2019-12-03 06:00:00 1 -2019-12-03 06:00:00 -1 -select c20, c7, concat_ws(c20, c7) from t1; -c20 c7 concat_ws(c20, c7) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 -1 -select c20, c7, interval(c20, c7) from t1; -c20 c7 interval(c20, c7) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 1 -select c20, c8, make_set(c20, c8) from t1; -c20 c8 make_set(c20, c8) -2019-12-03 06:00:00 2 -2019-12-03 06:00:00 2 -select c20, c8, concat_ws(c20, c8) from t1; -c20 c8 concat_ws(c20, c8) -2019-12-03 06:00:00 2 2 -2019-12-03 06:00:00 2 2 -select c20, c8, interval(c20, c8) from t1; -c20 c8 interval(c20, c8) -2019-12-03 06:00:00 2 1 -2019-12-03 06:00:00 2 1 -select c20, c9, make_set(c20, c9) from t1; -c20 c9 make_set(c20, c9) -2019-12-03 06:00:00 1 -2019-12-03 06:00:00 -1 -select c20, c9, concat_ws(c20, c9) from t1; -c20 c9 concat_ws(c20, c9) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 -1 -select c20, c9, interval(c20, c9) from t1; -c20 c9 interval(c20, c9) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 1 -select c20, c10, make_set(c20, c10) from t1; -c20 c10 make_set(c20, c10) -2019-12-03 06:00:00 2 -2019-12-03 06:00:00 2 -select c20, c10, concat_ws(c20, c10) from t1; -c20 c10 concat_ws(c20, c10) -2019-12-03 06:00:00 2 2 -2019-12-03 06:00:00 2 2 -select c20, c10, interval(c20, c10) from t1; -c20 c10 interval(c20, c10) -2019-12-03 06:00:00 2 1 -2019-12-03 06:00:00 2 1 -select c20, c11, make_set(c20, c11) from t1; -c20 c11 make_set(c20, c11) -2019-12-03 06:00:00 1 -2019-12-03 06:00:00 -1 -select c20, c11, concat_ws(c20, c11) from t1; -c20 c11 concat_ws(c20, c11) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 -1 -select c20, c11, interval(c20, c11) from t1; -c20 c11 interval(c20, c11) -2019-12-03 06:00:00 1 1 -2019-12-03 06:00:00 -1 1 -select c20, c12, make_set(c20, c12) from t1; -c20 c12 make_set(c20, c12) -2019-12-03 06:00:00 2 -2019-12-03 06:00:00 2 -select c20, c12, concat_ws(c20, c12) from t1; -c20 c12 concat_ws(c20, c12) -2019-12-03 06:00:00 2 2 -2019-12-03 06:00:00 2 2 -select c20, c12, interval(c20, c12) from t1; -c20 c12 interval(c20, c12) -2019-12-03 06:00:00 2 1 -2019-12-03 06:00:00 2 1 -select c20, c13, make_set(c20, c13) from t1; -c20 c13 make_set(c20, c13) -2019-12-03 06:00:00 3.5 -2019-12-03 06:00:00 -3.5 -select c20, c13, concat_ws(c20, c13) from t1; -c20 c13 concat_ws(c20, c13) -2019-12-03 06:00:00 3.5 3.5 -2019-12-03 06:00:00 -3.5 -3.5 -select c20, c13, interval(c20, c13) from t1; -c20 c13 interval(c20, c13) -2019-12-03 06:00:00 3.5 1 -2019-12-03 06:00:00 -3.5 1 -select c20, c14, make_set(c20, c14) from t1; -c20 c14 make_set(c20, c14) -2019-12-03 06:00:00 4.5 -2019-12-03 06:00:00 4.5 -select c20, c14, concat_ws(c20, c14) from t1; -c20 c14 concat_ws(c20, c14) -2019-12-03 06:00:00 4.5 4.5 -2019-12-03 06:00:00 4.5 4.5 -select c20, c14, interval(c20, c14) from t1; -c20 c14 interval(c20, c14) -2019-12-03 06:00:00 4.5 1 -2019-12-03 06:00:00 4.5 1 -select c20, c15, make_set(c20, c15) from t1; -c20 c15 make_set(c20, c15) -2019-12-03 06:00:00 5.5 -2019-12-03 06:00:00 -5.5 -select c20, c15, concat_ws(c20, c15) from t1; -c20 c15 concat_ws(c20, c15) -2019-12-03 06:00:00 5.5 5.5 -2019-12-03 06:00:00 -5.5 -5.5 -select c20, c15, interval(c20, c15) from t1; -c20 c15 interval(c20, c15) -2019-12-03 06:00:00 5.5 1 -2019-12-03 06:00:00 -5.5 1 -select c20, c16, make_set(c20, c16) from t1; -c20 c16 make_set(c20, c16) -2019-12-03 06:00:00 6.5 -2019-12-03 06:00:00 6.5 -select c20, c16, concat_ws(c20, c16) from t1; -c20 c16 concat_ws(c20, c16) -2019-12-03 06:00:00 6.5 6.5 -2019-12-03 06:00:00 6.5 6.5 -select c20, c16, interval(c20, c16) from t1; -c20 c16 interval(c20, c16) -2019-12-03 06:00:00 6.5 1 -2019-12-03 06:00:00 6.5 1 -select c20, c17, make_set(c20, c17) from t1; -c20 c17 make_set(c20, c17) -2019-12-03 06:00:00 8 -2019-12-03 06:00:00 -8 -select c20, c17, concat_ws(c20, c17) from t1; -c20 c17 concat_ws(c20, c17) -2019-12-03 06:00:00 8 8 -2019-12-03 06:00:00 -8 -8 -select c20, c17, interval(c20, c17) from t1; -c20 c17 interval(c20, c17) -2019-12-03 06:00:00 8 1 -2019-12-03 06:00:00 -8 1 -select c20, c18, make_set(c20, c18) from t1; -c20 c18 make_set(c20, c18) -2019-12-03 06:00:00 9 -2019-12-03 06:00:00 9 -select c20, c18, concat_ws(c20, c18) from t1; -c20 c18 concat_ws(c20, c18) -2019-12-03 06:00:00 9 9 -2019-12-03 06:00:00 9 9 -select c20, c18, interval(c20, c18) from t1; -c20 c18 interval(c20, c18) -2019-12-03 06:00:00 9 1 -2019-12-03 06:00:00 9 1 -select c20, c19, make_set(c20, c19) from t1; -c20 c19 make_set(c20, c19) -2019-12-03 06:00:00 2019-12-01 12:00:00 -2019-12-03 06:00:00 2019-12-01 12:00:00 -select c20, c19, concat_ws(c20, c19) from t1; -c20 c19 concat_ws(c20, c19) -2019-12-03 06:00:00 2019-12-01 12:00:00 2019-12-01 12:00:00 -2019-12-03 06:00:00 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c20, c19, interval(c20, c19) from t1; -c20 c19 interval(c20, c19) -2019-12-03 06:00:00 2019-12-01 12:00:00 1 -2019-12-03 06:00:00 2019-12-01 12:00:00 1 -select c20, c20, make_set(c20, c20) from t1; -c20 c20 make_set(c20, c20) -2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, c20, concat_ws(c20, c20) from t1; -c20 c20 concat_ws(c20, c20) -2019-12-03 06:00:00 2019-12-03 06:00:00 2019-12-03 06:00:00 -2019-12-03 06:00:00 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c20, c20, interval(c20, c20) from t1; -c20 c20 interval(c20, c20) -2019-12-03 06:00:00 2019-12-03 06:00:00 1 -2019-12-03 06:00:00 2019-12-03 06:00:00 1 -select c20, c21, make_set(c20, c21) from t1; -c20 c21 make_set(c20, c21) -2019-12-03 06:00:00 9.5 -2019-12-03 06:00:00 -9.5 -select c20, c21, concat_ws(c20, c21) from t1; -c20 c21 concat_ws(c20, c21) -2019-12-03 06:00:00 9.5 9.5 -2019-12-03 06:00:00 -9.5 -9.5 -select c20, c21, interval(c20, c21) from t1; -c20 c21 interval(c20, c21) -2019-12-03 06:00:00 9.5 1 -2019-12-03 06:00:00 -9.5 1 -select c20, c22, make_set(c20, c22) from t1; -c20 c22 make_set(c20, c22) -2019-12-03 06:00:00 10.5 -2019-12-03 06:00:00 10.5 -select c20, c22, concat_ws(c20, c22) from t1; -c20 c22 concat_ws(c20, c22) -2019-12-03 06:00:00 10.5 10.5 -2019-12-03 06:00:00 10.5 10.5 -select c20, c22, interval(c20, c22) from t1; -c20 c22 interval(c20, c22) -2019-12-03 06:00:00 10.5 1 -2019-12-03 06:00:00 10.5 1 -select c21, quote(c21) from t1; -c21 quote(c21) -9.5 '9.5' --9.5 '-9.5' -select c21, sys_op_opnsize(c21) from t1; -c21 sys_op_opnsize(c21) -9.5 15 --9.5 16 -select c21, c1, make_set(c21, c1) from t1; -c21 c1 make_set(c21, c1) -9.5 1 --9.5 -1 -select c21, c1, concat_ws(c21, c1) from t1; -c21 c1 concat_ws(c21, c1) -9.5 1 1 --9.5 -1 -1 -select c21, c1, interval(c21, c1) from t1; -c21 c1 interval(c21, c1) -9.5 1 1 --9.5 -1 0 -select c21, c2, make_set(c21, c2) from t1; -c21 c2 make_set(c21, c2) -9.5 2 --9.5 2 -select c21, c2, concat_ws(c21, c2) from t1; -c21 c2 concat_ws(c21, c2) -9.5 2 2 --9.5 2 2 -select c21, c2, interval(c21, c2) from t1; -c21 c2 interval(c21, c2) -9.5 2 1 --9.5 2 0 -select c21, c3, make_set(c21, c3) from t1; -c21 c3 make_set(c21, c3) -9.5 1 --9.5 -1 -select c21, c3, concat_ws(c21, c3) from t1; -c21 c3 concat_ws(c21, c3) -9.5 1 1 --9.5 -1 -1 -select c21, c3, interval(c21, c3) from t1; -c21 c3 interval(c21, c3) -9.5 1 1 --9.5 -1 0 -select c21, c4, make_set(c21, c4) from t1; -c21 c4 make_set(c21, c4) -9.5 2 --9.5 2 -select c21, c4, concat_ws(c21, c4) from t1; -c21 c4 concat_ws(c21, c4) -9.5 2 2 --9.5 2 2 -select c21, c4, interval(c21, c4) from t1; -c21 c4 interval(c21, c4) -9.5 2 1 --9.5 2 0 -select c21, c5, make_set(c21, c5) from t1; -c21 c5 make_set(c21, c5) -9.5 1 --9.5 -1 -select c21, c5, concat_ws(c21, c5) from t1; -c21 c5 concat_ws(c21, c5) -9.5 1 1 --9.5 -1 -1 -select c21, c5, interval(c21, c5) from t1; -c21 c5 interval(c21, c5) -9.5 1 1 --9.5 -1 0 -select c21, c6, make_set(c21, c6) from t1; -c21 c6 make_set(c21, c6) -9.5 2 --9.5 2 -select c21, c6, concat_ws(c21, c6) from t1; -c21 c6 concat_ws(c21, c6) -9.5 2 2 --9.5 2 2 -select c21, c6, interval(c21, c6) from t1; -c21 c6 interval(c21, c6) -9.5 2 1 --9.5 2 0 -select c21, c7, make_set(c21, c7) from t1; -c21 c7 make_set(c21, c7) -9.5 1 --9.5 -1 -select c21, c7, concat_ws(c21, c7) from t1; -c21 c7 concat_ws(c21, c7) -9.5 1 1 --9.5 -1 -1 -select c21, c7, interval(c21, c7) from t1; -c21 c7 interval(c21, c7) -9.5 1 1 --9.5 -1 0 -select c21, c8, make_set(c21, c8) from t1; -c21 c8 make_set(c21, c8) -9.5 2 --9.5 2 -select c21, c8, concat_ws(c21, c8) from t1; -c21 c8 concat_ws(c21, c8) -9.5 2 2 --9.5 2 2 -select c21, c8, interval(c21, c8) from t1; -c21 c8 interval(c21, c8) -9.5 2 1 --9.5 2 0 -select c21, c9, make_set(c21, c9) from t1; -c21 c9 make_set(c21, c9) -9.5 1 --9.5 -1 -select c21, c9, concat_ws(c21, c9) from t1; -c21 c9 concat_ws(c21, c9) -9.5 1 1 --9.5 -1 -1 -select c21, c9, interval(c21, c9) from t1; -c21 c9 interval(c21, c9) -9.5 1 1 --9.5 -1 0 -select c21, c10, make_set(c21, c10) from t1; -c21 c10 make_set(c21, c10) -9.5 2 --9.5 2 -select c21, c10, concat_ws(c21, c10) from t1; -c21 c10 concat_ws(c21, c10) -9.5 2 2 --9.5 2 2 -select c21, c10, interval(c21, c10) from t1; -c21 c10 interval(c21, c10) -9.5 2 1 --9.5 2 0 -select c21, c11, make_set(c21, c11) from t1; -c21 c11 make_set(c21, c11) -9.5 1 --9.5 -1 -select c21, c11, concat_ws(c21, c11) from t1; -c21 c11 concat_ws(c21, c11) -9.5 1 1 --9.5 -1 -1 -select c21, c11, interval(c21, c11) from t1; -c21 c11 interval(c21, c11) -9.5 1 1 --9.5 -1 0 -select c21, c12, make_set(c21, c12) from t1; -c21 c12 make_set(c21, c12) -9.5 2 --9.5 2 -select c21, c12, concat_ws(c21, c12) from t1; -c21 c12 concat_ws(c21, c12) -9.5 2 2 --9.5 2 2 -select c21, c12, interval(c21, c12) from t1; -c21 c12 interval(c21, c12) -9.5 2 1 --9.5 2 0 -select c21, c13, make_set(c21, c13) from t1; -c21 c13 make_set(c21, c13) -9.5 3.5 --9.5 -3.5 -select c21, c13, concat_ws(c21, c13) from t1; -c21 c13 concat_ws(c21, c13) -9.5 3.5 3.5 --9.5 -3.5 -3.5 -select c21, c13, interval(c21, c13) from t1; -c21 c13 interval(c21, c13) -9.5 3.5 1 --9.5 -3.5 0 -select c21, c14, make_set(c21, c14) from t1; -c21 c14 make_set(c21, c14) -9.5 4.5 --9.5 4.5 -select c21, c14, concat_ws(c21, c14) from t1; -c21 c14 concat_ws(c21, c14) -9.5 4.5 4.5 --9.5 4.5 4.5 -select c21, c14, interval(c21, c14) from t1; -c21 c14 interval(c21, c14) -9.5 4.5 1 --9.5 4.5 0 -select c21, c15, make_set(c21, c15) from t1; -c21 c15 make_set(c21, c15) -9.5 5.5 --9.5 -5.5 -select c21, c15, concat_ws(c21, c15) from t1; -c21 c15 concat_ws(c21, c15) -9.5 5.5 5.5 --9.5 -5.5 -5.5 -select c21, c15, interval(c21, c15) from t1; -c21 c15 interval(c21, c15) -9.5 5.5 1 --9.5 -5.5 0 -select c21, c16, make_set(c21, c16) from t1; -c21 c16 make_set(c21, c16) -9.5 6.5 --9.5 6.5 -select c21, c16, concat_ws(c21, c16) from t1; -c21 c16 concat_ws(c21, c16) -9.5 6.5 6.5 --9.5 6.5 6.5 -select c21, c16, interval(c21, c16) from t1; -c21 c16 interval(c21, c16) -9.5 6.5 1 --9.5 6.5 0 -select c21, c17, make_set(c21, c17) from t1; -c21 c17 make_set(c21, c17) -9.5 8 --9.5 -8 -select c21, c17, concat_ws(c21, c17) from t1; -c21 c17 concat_ws(c21, c17) -9.5 8 8 --9.5 -8 -8 -select c21, c17, interval(c21, c17) from t1; -c21 c17 interval(c21, c17) -9.5 8 1 --9.5 -8 0 -select c21, c18, make_set(c21, c18) from t1; -c21 c18 make_set(c21, c18) -9.5 9 --9.5 9 -select c21, c18, concat_ws(c21, c18) from t1; -c21 c18 concat_ws(c21, c18) -9.5 9 9 --9.5 9 9 -select c21, c18, interval(c21, c18) from t1; -c21 c18 interval(c21, c18) -9.5 9 1 --9.5 9 0 -select c21, c19, make_set(c21, c19) from t1; -c21 c19 make_set(c21, c19) -9.5 2019-12-01 12:00:00 --9.5 2019-12-01 12:00:00 -select c21, c19, concat_ws(c21, c19) from t1; -c21 c19 concat_ws(c21, c19) -9.5 2019-12-01 12:00:00 2019-12-01 12:00:00 --9.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c21, c19, interval(c21, c19) from t1; -c21 c19 interval(c21, c19) -9.5 2019-12-01 12:00:00 0 --9.5 2019-12-01 12:00:00 0 -select c21, c20, make_set(c21, c20) from t1; -c21 c20 make_set(c21, c20) -9.5 2019-12-03 06:00:00 --9.5 2019-12-03 06:00:00 -select c21, c20, concat_ws(c21, c20) from t1; -c21 c20 concat_ws(c21, c20) -9.5 2019-12-03 06:00:00 2019-12-03 06:00:00 --9.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c21, c20, interval(c21, c20) from t1; -c21 c20 interval(c21, c20) -9.5 2019-12-03 06:00:00 0 --9.5 2019-12-03 06:00:00 0 -select c21, c21, make_set(c21, c21) from t1; -c21 c21 make_set(c21, c21) -9.5 9.5 --9.5 -9.5 -select c21, c21, concat_ws(c21, c21) from t1; -c21 c21 concat_ws(c21, c21) -9.5 9.5 9.5 --9.5 -9.5 -9.5 -select c21, c21, interval(c21, c21) from t1; -c21 c21 interval(c21, c21) -9.5 9.5 1 --9.5 -9.5 1 -select c21, c22, make_set(c21, c22) from t1; -c21 c22 make_set(c21, c22) -9.5 10.5 --9.5 10.5 -select c21, c22, concat_ws(c21, c22) from t1; -c21 c22 concat_ws(c21, c22) -9.5 10.5 10.5 --9.5 10.5 10.5 -select c21, c22, interval(c21, c22) from t1; -c21 c22 interval(c21, c22) -9.5 10.5 0 --9.5 10.5 0 -select c22, quote(c22) from t1; -c22 quote(c22) -10.5 '10.5' -10.5 '10.5' -select c22, sys_op_opnsize(c22) from t1; -c22 sys_op_opnsize(c22) -10.5 16 -10.5 16 -select c22, c1, make_set(c22, c1) from t1; -c22 c1 make_set(c22, c1) -10.5 1 1 -10.5 -1 -1 -select c22, c1, concat_ws(c22, c1) from t1; -c22 c1 concat_ws(c22, c1) -10.5 1 1 -10.5 -1 -1 -select c22, c1, interval(c22, c1) from t1; -c22 c1 interval(c22, c1) -10.5 1 1 -10.5 -1 1 -select c22, c2, make_set(c22, c2) from t1; -c22 c2 make_set(c22, c2) -10.5 2 2 -10.5 2 2 -select c22, c2, concat_ws(c22, c2) from t1; -c22 c2 concat_ws(c22, c2) -10.5 2 2 -10.5 2 2 -select c22, c2, interval(c22, c2) from t1; -c22 c2 interval(c22, c2) -10.5 2 1 -10.5 2 1 -select c22, c3, make_set(c22, c3) from t1; -c22 c3 make_set(c22, c3) -10.5 1 1 -10.5 -1 -1 -select c22, c3, concat_ws(c22, c3) from t1; -c22 c3 concat_ws(c22, c3) -10.5 1 1 -10.5 -1 -1 -select c22, c3, interval(c22, c3) from t1; -c22 c3 interval(c22, c3) -10.5 1 1 -10.5 -1 1 -select c22, c4, make_set(c22, c4) from t1; -c22 c4 make_set(c22, c4) -10.5 2 2 -10.5 2 2 -select c22, c4, concat_ws(c22, c4) from t1; -c22 c4 concat_ws(c22, c4) -10.5 2 2 -10.5 2 2 -select c22, c4, interval(c22, c4) from t1; -c22 c4 interval(c22, c4) -10.5 2 1 -10.5 2 1 -select c22, c5, make_set(c22, c5) from t1; -c22 c5 make_set(c22, c5) -10.5 1 1 -10.5 -1 -1 -select c22, c5, concat_ws(c22, c5) from t1; -c22 c5 concat_ws(c22, c5) -10.5 1 1 -10.5 -1 -1 -select c22, c5, interval(c22, c5) from t1; -c22 c5 interval(c22, c5) -10.5 1 1 -10.5 -1 1 -select c22, c6, make_set(c22, c6) from t1; -c22 c6 make_set(c22, c6) -10.5 2 2 -10.5 2 2 -select c22, c6, concat_ws(c22, c6) from t1; -c22 c6 concat_ws(c22, c6) -10.5 2 2 -10.5 2 2 -select c22, c6, interval(c22, c6) from t1; -c22 c6 interval(c22, c6) -10.5 2 1 -10.5 2 1 -select c22, c7, make_set(c22, c7) from t1; -c22 c7 make_set(c22, c7) -10.5 1 1 -10.5 -1 -1 -select c22, c7, concat_ws(c22, c7) from t1; -c22 c7 concat_ws(c22, c7) -10.5 1 1 -10.5 -1 -1 -select c22, c7, interval(c22, c7) from t1; -c22 c7 interval(c22, c7) -10.5 1 1 -10.5 -1 1 -select c22, c8, make_set(c22, c8) from t1; -c22 c8 make_set(c22, c8) -10.5 2 2 -10.5 2 2 -select c22, c8, concat_ws(c22, c8) from t1; -c22 c8 concat_ws(c22, c8) -10.5 2 2 -10.5 2 2 -select c22, c8, interval(c22, c8) from t1; -c22 c8 interval(c22, c8) -10.5 2 1 -10.5 2 1 -select c22, c9, make_set(c22, c9) from t1; -c22 c9 make_set(c22, c9) -10.5 1 1 -10.5 -1 -1 -select c22, c9, concat_ws(c22, c9) from t1; -c22 c9 concat_ws(c22, c9) -10.5 1 1 -10.5 -1 -1 -select c22, c9, interval(c22, c9) from t1; -c22 c9 interval(c22, c9) -10.5 1 1 -10.5 -1 1 -select c22, c10, make_set(c22, c10) from t1; -c22 c10 make_set(c22, c10) -10.5 2 2 -10.5 2 2 -select c22, c10, concat_ws(c22, c10) from t1; -c22 c10 concat_ws(c22, c10) -10.5 2 2 -10.5 2 2 -select c22, c10, interval(c22, c10) from t1; -c22 c10 interval(c22, c10) -10.5 2 1 -10.5 2 1 -select c22, c11, make_set(c22, c11) from t1; -c22 c11 make_set(c22, c11) -10.5 1 1 -10.5 -1 -1 -select c22, c11, concat_ws(c22, c11) from t1; -c22 c11 concat_ws(c22, c11) -10.5 1 1 -10.5 -1 -1 -select c22, c11, interval(c22, c11) from t1; -c22 c11 interval(c22, c11) -10.5 1 1 -10.5 -1 1 -select c22, c12, make_set(c22, c12) from t1; -c22 c12 make_set(c22, c12) -10.5 2 2 -10.5 2 2 -select c22, c12, concat_ws(c22, c12) from t1; -c22 c12 concat_ws(c22, c12) -10.5 2 2 -10.5 2 2 -select c22, c12, interval(c22, c12) from t1; -c22 c12 interval(c22, c12) -10.5 2 1 -10.5 2 1 -select c22, c13, make_set(c22, c13) from t1; -c22 c13 make_set(c22, c13) -10.5 3.5 3.5 -10.5 -3.5 -3.5 -select c22, c13, concat_ws(c22, c13) from t1; -c22 c13 concat_ws(c22, c13) -10.5 3.5 3.5 -10.5 -3.5 -3.5 -select c22, c13, interval(c22, c13) from t1; -c22 c13 interval(c22, c13) -10.5 3.5 1 -10.5 -3.5 1 -select c22, c14, make_set(c22, c14) from t1; -c22 c14 make_set(c22, c14) -10.5 4.5 4.5 -10.5 4.5 4.5 -select c22, c14, concat_ws(c22, c14) from t1; -c22 c14 concat_ws(c22, c14) -10.5 4.5 4.5 -10.5 4.5 4.5 -select c22, c14, interval(c22, c14) from t1; -c22 c14 interval(c22, c14) -10.5 4.5 1 -10.5 4.5 1 -select c22, c15, make_set(c22, c15) from t1; -c22 c15 make_set(c22, c15) -10.5 5.5 5.5 -10.5 -5.5 -5.5 -select c22, c15, concat_ws(c22, c15) from t1; -c22 c15 concat_ws(c22, c15) -10.5 5.5 5.5 -10.5 -5.5 -5.5 -select c22, c15, interval(c22, c15) from t1; -c22 c15 interval(c22, c15) -10.5 5.5 1 -10.5 -5.5 1 -select c22, c16, make_set(c22, c16) from t1; -c22 c16 make_set(c22, c16) -10.5 6.5 6.5 -10.5 6.5 6.5 -select c22, c16, concat_ws(c22, c16) from t1; -c22 c16 concat_ws(c22, c16) -10.5 6.5 6.5 -10.5 6.5 6.5 -select c22, c16, interval(c22, c16) from t1; -c22 c16 interval(c22, c16) -10.5 6.5 1 -10.5 6.5 1 -select c22, c17, make_set(c22, c17) from t1; -c22 c17 make_set(c22, c17) -10.5 8 8 -10.5 -8 -8 -select c22, c17, concat_ws(c22, c17) from t1; -c22 c17 concat_ws(c22, c17) -10.5 8 8 -10.5 -8 -8 -select c22, c17, interval(c22, c17) from t1; -c22 c17 interval(c22, c17) -10.5 8 1 -10.5 -8 1 -select c22, c18, make_set(c22, c18) from t1; -c22 c18 make_set(c22, c18) -10.5 9 9 -10.5 9 9 -select c22, c18, concat_ws(c22, c18) from t1; -c22 c18 concat_ws(c22, c18) -10.5 9 9 -10.5 9 9 -select c22, c18, interval(c22, c18) from t1; -c22 c18 interval(c22, c18) -10.5 9 1 -10.5 9 1 -select c22, c19, make_set(c22, c19) from t1; -c22 c19 make_set(c22, c19) -10.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -10.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c22, c19, concat_ws(c22, c19) from t1; -c22 c19 concat_ws(c22, c19) -10.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -10.5 2019-12-01 12:00:00 2019-12-01 12:00:00 -select c22, c19, interval(c22, c19) from t1; -c22 c19 interval(c22, c19) -10.5 2019-12-01 12:00:00 0 -10.5 2019-12-01 12:00:00 0 -select c22, c20, make_set(c22, c20) from t1; -c22 c20 make_set(c22, c20) -10.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -10.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c22, c20, concat_ws(c22, c20) from t1; -c22 c20 concat_ws(c22, c20) -10.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -10.5 2019-12-03 06:00:00 2019-12-03 06:00:00 -select c22, c20, interval(c22, c20) from t1; -c22 c20 interval(c22, c20) -10.5 2019-12-03 06:00:00 0 -10.5 2019-12-03 06:00:00 0 -select c22, c21, make_set(c22, c21) from t1; -c22 c21 make_set(c22, c21) -10.5 9.5 9.5 -10.5 -9.5 -9.5 -select c22, c21, concat_ws(c22, c21) from t1; -c22 c21 concat_ws(c22, c21) -10.5 9.5 9.5 -10.5 -9.5 -9.5 -select c22, c21, interval(c22, c21) from t1; -c22 c21 interval(c22, c21) -10.5 9.5 1 -10.5 -9.5 1 -select c22, c22, make_set(c22, c22) from t1; -c22 c22 make_set(c22, c22) -10.5 10.5 10.5 -10.5 10.5 10.5 -select c22, c22, concat_ws(c22, c22) from t1; -c22 c22 concat_ws(c22, c22) -10.5 10.5 10.5 -10.5 10.5 10.5 -select c22, c22, interval(c22, c22) from t1; -c22 c22 interval(c22, c22) -10.5 10.5 1 -10.5 10.5 1 -select interval(4, 3, 0, 0, 0, 0, 0, 8, 3, -3, 0 -6); -interval(4, 3, 0, 0, 0, 0, 0, 8, 3, -3, 0 -6) -10 -select interval(4, 3, 0, 0, 0, 0, 0, 8, null, -3, 0 -6); -interval(4, 3, 0, 0, 0, 0, 0, 8, null, -3, 0 -6) -6 -drop table t1; -create table t1(c1 int); -insert into t1 values(0); -select interval(4, 3, 0, 0, 0, 0, c1, 8, 3, -3, 0 -6) from t1; -interval(4, 3, 0, 0, 0, 0, c1, 8, 3, -3, 0 -6) -6 -drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_substr.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_substr.result deleted file mode 100644 index 1a7622190..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_substr.result +++ /dev/null @@ -1,96 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select substr('abcdef', 0) from dual; -substr('abcdef', 0) - -select substr('abcdef', -1) from dual; -substr('abcdef', -1) -f -select substr('abcdef', 1) from dual; -substr('abcdef', 1) -abcdef -select substr('abcdef', 2) from dual; -substr('abcdef', 2) -bcdef -select substr('abcdef', 10) from dual; -substr('abcdef', 10) - -select substr('', 1) from dual; -substr('', 1) - -select substr('abcdef', 10) from dual; -substr('abcdef', 10) - -select substr('abcdef', 2, 1) from dual; -substr('abcdef', 2, 1) -b -select substr('abcdef', 2, 2) from dual; -substr('abcdef', 2, 2) -bc -select substr('abcdef', 2, 0) from dual; -substr('abcdef', 2, 0) - -select substr('abcdef', 2, -1) from dual; -substr('abcdef', 2, -1) - -select substr('abcdef', 2, 100) from dual; -substr('abcdef', 2, 100) -bcdef -select substr('', 2, 100) from dual; -substr('', 2, 100) - -select substr(NULL, 2, 1) from dual; -substr(NULL, 2, 1) -NULL -select substr('abcdef', NULL, 1) from dual; -substr('abcdef', NULL, 1) -NULL -select substr('abcdef', 2, NULL) from dual; -substr('abcdef', 2, NULL) -NULL -select substr(3.14159, 2, 3) from dual; -substr(3.14159, 2, 3) -.14 -explain select substr(3.14159, '2', '3') from dual; -Query Plan -=================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ------------------------------------ -|0 |EXPRESSION| |1 |1 | -=================================== - -Outputs & filters: -------------------------------------- - 0 - output([?]), filter(nil) - values({?}) - -select substr(3.14159, '2', '2.1') from dual; -substr(3.14159, '2', '2.1') -.1 -select substr(3.14159, '2', '2.9') from dual; -substr(3.14159, '2', '2.9') -.1 -select substr(3.14159, '2', '2.9') from dual; -substr(3.14159, '2', '2.9') -.1 -select substr(3.14159, '2.1', '2.9') from dual; -substr(3.14159, '2.1', '2.9') -.1 -select substr(3.14159, '2.9', '2.9') from dual; -substr(3.14159, '2.9', '2.9') -.1 -select substr(3.14159, 2.1, '2.9') from dual; -substr(3.14159, 2.1, '2.9') -.1 -select substr(3.14159, 2.9, '2.9') from dual; -substr(3.14159, 2.9, '2.9') -14 -select substr(3.14159, 2.9, 2.9) from dual; -substr(3.14159, 2.9, 2.9) -141 -select substr(3.14159, 2.1, 2.1) from dual; -substr(3.14159, 2.1, 2.1) -.1 -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_substring_index.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_substring_index.result deleted file mode 100644 index a839b5e07..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_substring_index.result +++ /dev/null @@ -1,88 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -create table t1 (c1 bigint, c2 bigint unsigned, c3 decimal(40,2), c4 varchar(40)); -insert into t1 (c1, c2, c3, c4) values (-1, 0, 1, "2.1"); -insert into t1 (c1, c2, c3, c4) values (-2, 0, 2.1, "2.9"); -insert into t1 (c1, c2, c3, c4) values (-2, 0, 2.9, "2.9"); -insert into t1 (c1, c2, c3, c4) values (-10, 0, 10, "10"); -insert into t1 (c1, c2, c3, c4) values (4294967296, 4294967296, 4294967296, "4294967296"); -insert into t1 (c1, c2, c3, c4) values (4294967297, 4294967297, 4294967295, "4294967295"); -insert into t1 (c1, c2, c3, c4) values (-4294967296, 4294967296, -4294967296, "-4294967296"); -insert into t1 (c1, c2, c3, c4) values (-4294967297, 4294967297, -4294967295, "-4294967295"); -insert into t1 (c1, c2, c3, c4) values (9223372036854775806, 9223372036854775808, 9223372036854775808, "9223372036854775808"); -insert into t1 (c1, c2, c3, c4) values (9223372036854775807, 9223372036854775807, 9223372036854775807, "9223372036854775807"); -insert into t1 (c1, c2, c3, c4) values (9223372036854775806, 9223372036854775809, 9223372036854775809, "9223372036854775809"); -insert into t1 (c1, c2, c3, c4) values (-9223372036854775807, 9223372036854775807, -9223372036854775807, "-9223372036854775807"); -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select substring_index("a,b,c,d", ",", -1); -substring_index("a,b,c,d", ",", -1) -d -select substring_index("a,b,c,d", ",", 0); -substring_index("a,b,c,d", ",", 0) - -select substring_index("a,b,c,d", ",", 1); -substring_index("a,b,c,d", ",", 1) -a -select substring_index("a,b,c,d", ",", 2); -substring_index("a,b,c,d", ",", 2) -a,b -select substring_index("", ",", 2); -substring_index("", ",", 2) - -select substring_index("a,b,c,d", "", 2); -substring_index("a,b,c,d", "", 2) - -select substring_index(NULL, ",", 2); -substring_index(NULL, ",", 2) -NULL -select substring_index("a,b,c,d", NULL, 2); -substring_index("a,b,c,d", NULL, 2) -NULL -select substring_index("a,b,c,d", ",", NULL); -substring_index("a,b,c,d", ",", NULL) -NULL -select substring_index(1.414, 1, 2); -substring_index(1.414, 1, 2) -1.4 -select c1, substring_index("a,b,c,d", ",", c1), c2, substring_index("a,b,c,d", ",", c2), c3, substring_index("a,b,c,d", ",", c3), c4, substring_index("a,b,c,d", ",", c4) from t1; -c1 substring_index("a,b,c,d", ",", c1) c2 substring_index("a,b,c,d", ",", c2) c3 substring_index("a,b,c,d", ",", c3) c4 substring_index("a,b,c,d", ",", c4) --1 d 0 1.00 a 2.1 a,b --2 c,d 0 2.10 a,b 2.9 a,b --2 c,d 0 2.90 a,b,c 2.9 a,b --10 a,b,c,d 0 10.00 a,b,c,d 10 a,b,c,d -4294967296 4294967296 4294967296.00 4294967296 -4294967297 a 4294967297 a 4294967295.00 d 4294967295 d --4294967296 4294967296 -4294967296.00 -4294967296 --4294967297 d 4294967297 a -4294967295.00 a -4294967295 a -9223372036854775806 c,d 9223372036854775808 9223372036854775808.00 d 9223372036854775808 d -9223372036854775807 d 9223372036854775807 d 9223372036854775807.00 d 9223372036854775807 d -9223372036854775806 c,d 9223372036854775809 a 9223372036854775809.00 d 9223372036854775809 d --9223372036854775807 a 9223372036854775807 d -9223372036854775807.00 a -9223372036854775807 a -drop table if exists t2, t3; -create table t2(c1 varchar(20)); -create table t3(c1 varchar(20)); -insert into t2 values(null), (''), ('1'); -insert into t3 values(''), (null), ('1'); -//the result of next 2 sqls should be same -select c1, substring_index(c1, 'vpprm', -47) from t2 order by c1; -c1 substring_index(c1, 'vpprm', -47) -NULL NULL - -1 1 -select c1, substring_index(c1, 'vpprm', -47) from t3 order by c1; -c1 substring_index(c1, 'vpprm', -47) -NULL NULL - -1 1 -drop table t1, t2,t3; -drop table if exists t1; -create table t1(c1 char(10)); -insert into t1 values(null), (''); -select substring_index(c1, 'a', 1) from t1; -substring_index(c1, 'a', 1) -NULL - -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_sys_privilege_check.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_sys_privilege_check.result deleted file mode 100644 index d7dae13e4..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_sys_privilege_check.result +++ /dev/null @@ -1,29 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connect rootcon, $OBMYSQL_MS0,root@$TENANT,,test,$OBMYSQL_PORT; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select sys_privilege_check('table_acc', effective_tenant_id(), 'oceanbase', '__all_user'); -sys_privilege_check('table_acc', effective_tenant_id(), 'oceanbase', '__all_user') -0 -select sys_privilege_check('db_acc', effective_tenant_id(), 'oceanbase_', '__all_user_'); -sys_privilege_check('db_acc', effective_tenant_id(), 'oceanbase_', '__all_user_') -0 -drop database if exists espcndb; -create database espcndb; -connection rootcon; -create user espcnouser; -grant all on test.* to espcnouser; -connect con1, $OBMYSQL_MS0,espcnouser@$TENANT,,test,$OBMYSQL_PORT; -connection con1; -select sys_privilege_check('db_acc', effective_tenant_id(), 'test', 't'); -sys_privilege_check('db_acc', effective_tenant_id(), 'test', 't') -0 -select sys_privilege_check('db_acc', effective_tenant_id(), 'espcndb', 't'); -sys_privilege_check('db_acc', effective_tenant_id(), 'espcndb', 't') --1 -connection default; -drop user espcnouser; -drop database espcnouser; -ERROR HY000: Can't drop database 'espcnouser'; database doesn't exist -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_timestampadd.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_timestampadd.result deleted file mode 100644 index 812c586fe..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_timestampadd.result +++ /dev/null @@ -1,4665 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30)); -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5'); -// Case1: normal test.测试各种类型组合, 跟不开新引擎开关进行对比 -alter system flush plan cache global; -set @@ob_enable_plan_cache = 0; -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c1, c1) from t1; -timestampadd(second, c1, c1) -NULL -select timestampadd(year, c1, c1) from t1; -timestampadd(year, c1, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c1, c2) from t1; -timestampadd(second, c1, c2) -NULL -select timestampadd(year, c1, c2) from t1; -timestampadd(year, c1, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c1, c3) from t1; -timestampadd(second, c1, c3) -NULL -select timestampadd(year, c1, c3) from t1; -timestampadd(year, c1, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c1, c4) from t1; -timestampadd(second, c1, c4) -NULL -select timestampadd(year, c1, c4) from t1; -timestampadd(year, c1, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c1, c5) from t1; -timestampadd(second, c1, c5) -NULL -select timestampadd(year, c1, c5) from t1; -timestampadd(year, c1, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c1, c6) from t1; -timestampadd(second, c1, c6) -NULL -select timestampadd(year, c1, c6) from t1; -timestampadd(year, c1, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c1, c7) from t1; -timestampadd(second, c1, c7) -NULL -select timestampadd(year, c1, c7) from t1; -timestampadd(year, c1, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c1, c8) from t1; -timestampadd(second, c1, c8) -NULL -select timestampadd(year, c1, c8) from t1; -timestampadd(year, c1, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c1, c9) from t1; -timestampadd(second, c1, c9) -NULL -select timestampadd(year, c1, c9) from t1; -timestampadd(year, c1, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c1, c10) from t1; -timestampadd(second, c1, c10) -NULL -select timestampadd(year, c1, c10) from t1; -timestampadd(year, c1, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c1, c11) from t1; -timestampadd(second, c1, c11) -NULL -select timestampadd(year, c1, c11) from t1; -timestampadd(year, c1, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c1, c12) from t1; -timestampadd(second, c1, c12) -NULL -select timestampadd(year, c1, c12) from t1; -timestampadd(year, c1, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c1, c13) from t1; -timestampadd(second, c1, c13) -NULL -select timestampadd(year, c1, c13) from t1; -timestampadd(year, c1, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c1, c14) from t1; -timestampadd(second, c1, c14) -NULL -select timestampadd(year, c1, c14) from t1; -timestampadd(year, c1, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c1, c15) from t1; -timestampadd(second, c1, c15) -NULL -select timestampadd(year, c1, c15) from t1; -timestampadd(year, c1, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c1, c16) from t1; -timestampadd(second, c1, c16) -NULL -select timestampadd(year, c1, c16) from t1; -timestampadd(year, c1, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c1, c17) from t1; -timestampadd(second, c1, c17) -NULL -select timestampadd(year, c1, c17) from t1; -timestampadd(year, c1, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c1, c18) from t1; -timestampadd(second, c1, c18) -NULL -select timestampadd(year, c1, c18) from t1; -timestampadd(year, c1, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c1, c19) from t1; -timestampadd(second, c1, c19) -2019-12-01 12:00:01 -select timestampadd(year, c1, c19) from t1; -timestampadd(year, c1, c19) -2020-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c1, c20) from t1; -timestampadd(second, c1, c20) -2019-12-03 06:00:01 -select timestampadd(year, c1, c20) from t1; -timestampadd(year, c1, c20) -2020-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c1, c21) from t1; -timestampadd(second, c1, c21) -NULL -select timestampadd(year, c1, c21) from t1; -timestampadd(year, c1, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c1, c22) from t1; -timestampadd(second, c1, c22) -NULL -select timestampadd(year, c1, c22) from t1; -timestampadd(year, c1, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c2, c1) from t1; -timestampadd(second, c2, c1) -NULL -select timestampadd(year, c2, c1) from t1; -timestampadd(year, c2, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c2, c2) from t1; -timestampadd(second, c2, c2) -NULL -select timestampadd(year, c2, c2) from t1; -timestampadd(year, c2, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c2, c3) from t1; -timestampadd(second, c2, c3) -NULL -select timestampadd(year, c2, c3) from t1; -timestampadd(year, c2, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c2, c4) from t1; -timestampadd(second, c2, c4) -NULL -select timestampadd(year, c2, c4) from t1; -timestampadd(year, c2, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c2, c5) from t1; -timestampadd(second, c2, c5) -NULL -select timestampadd(year, c2, c5) from t1; -timestampadd(year, c2, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c2, c6) from t1; -timestampadd(second, c2, c6) -NULL -select timestampadd(year, c2, c6) from t1; -timestampadd(year, c2, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c2, c7) from t1; -timestampadd(second, c2, c7) -NULL -select timestampadd(year, c2, c7) from t1; -timestampadd(year, c2, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c2, c8) from t1; -timestampadd(second, c2, c8) -NULL -select timestampadd(year, c2, c8) from t1; -timestampadd(year, c2, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c2, c9) from t1; -timestampadd(second, c2, c9) -NULL -select timestampadd(year, c2, c9) from t1; -timestampadd(year, c2, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c2, c10) from t1; -timestampadd(second, c2, c10) -NULL -select timestampadd(year, c2, c10) from t1; -timestampadd(year, c2, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c2, c11) from t1; -timestampadd(second, c2, c11) -NULL -select timestampadd(year, c2, c11) from t1; -timestampadd(year, c2, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c2, c12) from t1; -timestampadd(second, c2, c12) -NULL -select timestampadd(year, c2, c12) from t1; -timestampadd(year, c2, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c2, c13) from t1; -timestampadd(second, c2, c13) -NULL -select timestampadd(year, c2, c13) from t1; -timestampadd(year, c2, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c2, c14) from t1; -timestampadd(second, c2, c14) -NULL -select timestampadd(year, c2, c14) from t1; -timestampadd(year, c2, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c2, c15) from t1; -timestampadd(second, c2, c15) -NULL -select timestampadd(year, c2, c15) from t1; -timestampadd(year, c2, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c2, c16) from t1; -timestampadd(second, c2, c16) -NULL -select timestampadd(year, c2, c16) from t1; -timestampadd(year, c2, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c2, c17) from t1; -timestampadd(second, c2, c17) -NULL -select timestampadd(year, c2, c17) from t1; -timestampadd(year, c2, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c2, c18) from t1; -timestampadd(second, c2, c18) -NULL -select timestampadd(year, c2, c18) from t1; -timestampadd(year, c2, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c2, c19) from t1; -timestampadd(second, c2, c19) -2019-12-01 12:00:02 -select timestampadd(year, c2, c19) from t1; -timestampadd(year, c2, c19) -2021-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c2, c20) from t1; -timestampadd(second, c2, c20) -2019-12-03 06:00:02 -select timestampadd(year, c2, c20) from t1; -timestampadd(year, c2, c20) -2021-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c2, c21) from t1; -timestampadd(second, c2, c21) -NULL -select timestampadd(year, c2, c21) from t1; -timestampadd(year, c2, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c2, c22) from t1; -timestampadd(second, c2, c22) -NULL -select timestampadd(year, c2, c22) from t1; -timestampadd(year, c2, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c3, c1) from t1; -timestampadd(second, c3, c1) -NULL -select timestampadd(year, c3, c1) from t1; -timestampadd(year, c3, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c3, c2) from t1; -timestampadd(second, c3, c2) -NULL -select timestampadd(year, c3, c2) from t1; -timestampadd(year, c3, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c3, c3) from t1; -timestampadd(second, c3, c3) -NULL -select timestampadd(year, c3, c3) from t1; -timestampadd(year, c3, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c3, c4) from t1; -timestampadd(second, c3, c4) -NULL -select timestampadd(year, c3, c4) from t1; -timestampadd(year, c3, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c3, c5) from t1; -timestampadd(second, c3, c5) -NULL -select timestampadd(year, c3, c5) from t1; -timestampadd(year, c3, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c3, c6) from t1; -timestampadd(second, c3, c6) -NULL -select timestampadd(year, c3, c6) from t1; -timestampadd(year, c3, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c3, c7) from t1; -timestampadd(second, c3, c7) -NULL -select timestampadd(year, c3, c7) from t1; -timestampadd(year, c3, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c3, c8) from t1; -timestampadd(second, c3, c8) -NULL -select timestampadd(year, c3, c8) from t1; -timestampadd(year, c3, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c3, c9) from t1; -timestampadd(second, c3, c9) -NULL -select timestampadd(year, c3, c9) from t1; -timestampadd(year, c3, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c3, c10) from t1; -timestampadd(second, c3, c10) -NULL -select timestampadd(year, c3, c10) from t1; -timestampadd(year, c3, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c3, c11) from t1; -timestampadd(second, c3, c11) -NULL -select timestampadd(year, c3, c11) from t1; -timestampadd(year, c3, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c3, c12) from t1; -timestampadd(second, c3, c12) -NULL -select timestampadd(year, c3, c12) from t1; -timestampadd(year, c3, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c3, c13) from t1; -timestampadd(second, c3, c13) -NULL -select timestampadd(year, c3, c13) from t1; -timestampadd(year, c3, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c3, c14) from t1; -timestampadd(second, c3, c14) -NULL -select timestampadd(year, c3, c14) from t1; -timestampadd(year, c3, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c3, c15) from t1; -timestampadd(second, c3, c15) -NULL -select timestampadd(year, c3, c15) from t1; -timestampadd(year, c3, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c3, c16) from t1; -timestampadd(second, c3, c16) -NULL -select timestampadd(year, c3, c16) from t1; -timestampadd(year, c3, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c3, c17) from t1; -timestampadd(second, c3, c17) -NULL -select timestampadd(year, c3, c17) from t1; -timestampadd(year, c3, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c3, c18) from t1; -timestampadd(second, c3, c18) -NULL -select timestampadd(year, c3, c18) from t1; -timestampadd(year, c3, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c3, c19) from t1; -timestampadd(second, c3, c19) -2019-12-01 12:00:01 -select timestampadd(year, c3, c19) from t1; -timestampadd(year, c3, c19) -2020-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c3, c20) from t1; -timestampadd(second, c3, c20) -2019-12-03 06:00:01 -select timestampadd(year, c3, c20) from t1; -timestampadd(year, c3, c20) -2020-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c3, c21) from t1; -timestampadd(second, c3, c21) -NULL -select timestampadd(year, c3, c21) from t1; -timestampadd(year, c3, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c3, c22) from t1; -timestampadd(second, c3, c22) -NULL -select timestampadd(year, c3, c22) from t1; -timestampadd(year, c3, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c4, c1) from t1; -timestampadd(second, c4, c1) -NULL -select timestampadd(year, c4, c1) from t1; -timestampadd(year, c4, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c4, c2) from t1; -timestampadd(second, c4, c2) -NULL -select timestampadd(year, c4, c2) from t1; -timestampadd(year, c4, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c4, c3) from t1; -timestampadd(second, c4, c3) -NULL -select timestampadd(year, c4, c3) from t1; -timestampadd(year, c4, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c4, c4) from t1; -timestampadd(second, c4, c4) -NULL -select timestampadd(year, c4, c4) from t1; -timestampadd(year, c4, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c4, c5) from t1; -timestampadd(second, c4, c5) -NULL -select timestampadd(year, c4, c5) from t1; -timestampadd(year, c4, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c4, c6) from t1; -timestampadd(second, c4, c6) -NULL -select timestampadd(year, c4, c6) from t1; -timestampadd(year, c4, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c4, c7) from t1; -timestampadd(second, c4, c7) -NULL -select timestampadd(year, c4, c7) from t1; -timestampadd(year, c4, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c4, c8) from t1; -timestampadd(second, c4, c8) -NULL -select timestampadd(year, c4, c8) from t1; -timestampadd(year, c4, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c4, c9) from t1; -timestampadd(second, c4, c9) -NULL -select timestampadd(year, c4, c9) from t1; -timestampadd(year, c4, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c4, c10) from t1; -timestampadd(second, c4, c10) -NULL -select timestampadd(year, c4, c10) from t1; -timestampadd(year, c4, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c4, c11) from t1; -timestampadd(second, c4, c11) -NULL -select timestampadd(year, c4, c11) from t1; -timestampadd(year, c4, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c4, c12) from t1; -timestampadd(second, c4, c12) -NULL -select timestampadd(year, c4, c12) from t1; -timestampadd(year, c4, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c4, c13) from t1; -timestampadd(second, c4, c13) -NULL -select timestampadd(year, c4, c13) from t1; -timestampadd(year, c4, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c4, c14) from t1; -timestampadd(second, c4, c14) -NULL -select timestampadd(year, c4, c14) from t1; -timestampadd(year, c4, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c4, c15) from t1; -timestampadd(second, c4, c15) -NULL -select timestampadd(year, c4, c15) from t1; -timestampadd(year, c4, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c4, c16) from t1; -timestampadd(second, c4, c16) -NULL -select timestampadd(year, c4, c16) from t1; -timestampadd(year, c4, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c4, c17) from t1; -timestampadd(second, c4, c17) -NULL -select timestampadd(year, c4, c17) from t1; -timestampadd(year, c4, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c4, c18) from t1; -timestampadd(second, c4, c18) -NULL -select timestampadd(year, c4, c18) from t1; -timestampadd(year, c4, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c4, c19) from t1; -timestampadd(second, c4, c19) -2019-12-01 12:00:02 -select timestampadd(year, c4, c19) from t1; -timestampadd(year, c4, c19) -2021-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c4, c20) from t1; -timestampadd(second, c4, c20) -2019-12-03 06:00:02 -select timestampadd(year, c4, c20) from t1; -timestampadd(year, c4, c20) -2021-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c4, c21) from t1; -timestampadd(second, c4, c21) -NULL -select timestampadd(year, c4, c21) from t1; -timestampadd(year, c4, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c4, c22) from t1; -timestampadd(second, c4, c22) -NULL -select timestampadd(year, c4, c22) from t1; -timestampadd(year, c4, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c5, c1) from t1; -timestampadd(second, c5, c1) -NULL -select timestampadd(year, c5, c1) from t1; -timestampadd(year, c5, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c5, c2) from t1; -timestampadd(second, c5, c2) -NULL -select timestampadd(year, c5, c2) from t1; -timestampadd(year, c5, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c5, c3) from t1; -timestampadd(second, c5, c3) -NULL -select timestampadd(year, c5, c3) from t1; -timestampadd(year, c5, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c5, c4) from t1; -timestampadd(second, c5, c4) -NULL -select timestampadd(year, c5, c4) from t1; -timestampadd(year, c5, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c5, c5) from t1; -timestampadd(second, c5, c5) -NULL -select timestampadd(year, c5, c5) from t1; -timestampadd(year, c5, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c5, c6) from t1; -timestampadd(second, c5, c6) -NULL -select timestampadd(year, c5, c6) from t1; -timestampadd(year, c5, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c5, c7) from t1; -timestampadd(second, c5, c7) -NULL -select timestampadd(year, c5, c7) from t1; -timestampadd(year, c5, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c5, c8) from t1; -timestampadd(second, c5, c8) -NULL -select timestampadd(year, c5, c8) from t1; -timestampadd(year, c5, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c5, c9) from t1; -timestampadd(second, c5, c9) -NULL -select timestampadd(year, c5, c9) from t1; -timestampadd(year, c5, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c5, c10) from t1; -timestampadd(second, c5, c10) -NULL -select timestampadd(year, c5, c10) from t1; -timestampadd(year, c5, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c5, c11) from t1; -timestampadd(second, c5, c11) -NULL -select timestampadd(year, c5, c11) from t1; -timestampadd(year, c5, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c5, c12) from t1; -timestampadd(second, c5, c12) -NULL -select timestampadd(year, c5, c12) from t1; -timestampadd(year, c5, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c5, c13) from t1; -timestampadd(second, c5, c13) -NULL -select timestampadd(year, c5, c13) from t1; -timestampadd(year, c5, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c5, c14) from t1; -timestampadd(second, c5, c14) -NULL -select timestampadd(year, c5, c14) from t1; -timestampadd(year, c5, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c5, c15) from t1; -timestampadd(second, c5, c15) -NULL -select timestampadd(year, c5, c15) from t1; -timestampadd(year, c5, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c5, c16) from t1; -timestampadd(second, c5, c16) -NULL -select timestampadd(year, c5, c16) from t1; -timestampadd(year, c5, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c5, c17) from t1; -timestampadd(second, c5, c17) -NULL -select timestampadd(year, c5, c17) from t1; -timestampadd(year, c5, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c5, c18) from t1; -timestampadd(second, c5, c18) -NULL -select timestampadd(year, c5, c18) from t1; -timestampadd(year, c5, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c5, c19) from t1; -timestampadd(second, c5, c19) -2019-12-01 12:00:01 -select timestampadd(year, c5, c19) from t1; -timestampadd(year, c5, c19) -2020-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c5, c20) from t1; -timestampadd(second, c5, c20) -2019-12-03 06:00:01 -select timestampadd(year, c5, c20) from t1; -timestampadd(year, c5, c20) -2020-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c5, c21) from t1; -timestampadd(second, c5, c21) -NULL -select timestampadd(year, c5, c21) from t1; -timestampadd(year, c5, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c5, c22) from t1; -timestampadd(second, c5, c22) -NULL -select timestampadd(year, c5, c22) from t1; -timestampadd(year, c5, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c6, c1) from t1; -timestampadd(second, c6, c1) -NULL -select timestampadd(year, c6, c1) from t1; -timestampadd(year, c6, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c6, c2) from t1; -timestampadd(second, c6, c2) -NULL -select timestampadd(year, c6, c2) from t1; -timestampadd(year, c6, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c6, c3) from t1; -timestampadd(second, c6, c3) -NULL -select timestampadd(year, c6, c3) from t1; -timestampadd(year, c6, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c6, c4) from t1; -timestampadd(second, c6, c4) -NULL -select timestampadd(year, c6, c4) from t1; -timestampadd(year, c6, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c6, c5) from t1; -timestampadd(second, c6, c5) -NULL -select timestampadd(year, c6, c5) from t1; -timestampadd(year, c6, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c6, c6) from t1; -timestampadd(second, c6, c6) -NULL -select timestampadd(year, c6, c6) from t1; -timestampadd(year, c6, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c6, c7) from t1; -timestampadd(second, c6, c7) -NULL -select timestampadd(year, c6, c7) from t1; -timestampadd(year, c6, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c6, c8) from t1; -timestampadd(second, c6, c8) -NULL -select timestampadd(year, c6, c8) from t1; -timestampadd(year, c6, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c6, c9) from t1; -timestampadd(second, c6, c9) -NULL -select timestampadd(year, c6, c9) from t1; -timestampadd(year, c6, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c6, c10) from t1; -timestampadd(second, c6, c10) -NULL -select timestampadd(year, c6, c10) from t1; -timestampadd(year, c6, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c6, c11) from t1; -timestampadd(second, c6, c11) -NULL -select timestampadd(year, c6, c11) from t1; -timestampadd(year, c6, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c6, c12) from t1; -timestampadd(second, c6, c12) -NULL -select timestampadd(year, c6, c12) from t1; -timestampadd(year, c6, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c6, c13) from t1; -timestampadd(second, c6, c13) -NULL -select timestampadd(year, c6, c13) from t1; -timestampadd(year, c6, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c6, c14) from t1; -timestampadd(second, c6, c14) -NULL -select timestampadd(year, c6, c14) from t1; -timestampadd(year, c6, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c6, c15) from t1; -timestampadd(second, c6, c15) -NULL -select timestampadd(year, c6, c15) from t1; -timestampadd(year, c6, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c6, c16) from t1; -timestampadd(second, c6, c16) -NULL -select timestampadd(year, c6, c16) from t1; -timestampadd(year, c6, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c6, c17) from t1; -timestampadd(second, c6, c17) -NULL -select timestampadd(year, c6, c17) from t1; -timestampadd(year, c6, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c6, c18) from t1; -timestampadd(second, c6, c18) -NULL -select timestampadd(year, c6, c18) from t1; -timestampadd(year, c6, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c6, c19) from t1; -timestampadd(second, c6, c19) -2019-12-01 12:00:02 -select timestampadd(year, c6, c19) from t1; -timestampadd(year, c6, c19) -2021-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c6, c20) from t1; -timestampadd(second, c6, c20) -2019-12-03 06:00:02 -select timestampadd(year, c6, c20) from t1; -timestampadd(year, c6, c20) -2021-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c6, c21) from t1; -timestampadd(second, c6, c21) -NULL -select timestampadd(year, c6, c21) from t1; -timestampadd(year, c6, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c6, c22) from t1; -timestampadd(second, c6, c22) -NULL -select timestampadd(year, c6, c22) from t1; -timestampadd(year, c6, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c7, c1) from t1; -timestampadd(second, c7, c1) -NULL -select timestampadd(year, c7, c1) from t1; -timestampadd(year, c7, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c7, c2) from t1; -timestampadd(second, c7, c2) -NULL -select timestampadd(year, c7, c2) from t1; -timestampadd(year, c7, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c7, c3) from t1; -timestampadd(second, c7, c3) -NULL -select timestampadd(year, c7, c3) from t1; -timestampadd(year, c7, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c7, c4) from t1; -timestampadd(second, c7, c4) -NULL -select timestampadd(year, c7, c4) from t1; -timestampadd(year, c7, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c7, c5) from t1; -timestampadd(second, c7, c5) -NULL -select timestampadd(year, c7, c5) from t1; -timestampadd(year, c7, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c7, c6) from t1; -timestampadd(second, c7, c6) -NULL -select timestampadd(year, c7, c6) from t1; -timestampadd(year, c7, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c7, c7) from t1; -timestampadd(second, c7, c7) -NULL -select timestampadd(year, c7, c7) from t1; -timestampadd(year, c7, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c7, c8) from t1; -timestampadd(second, c7, c8) -NULL -select timestampadd(year, c7, c8) from t1; -timestampadd(year, c7, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c7, c9) from t1; -timestampadd(second, c7, c9) -NULL -select timestampadd(year, c7, c9) from t1; -timestampadd(year, c7, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c7, c10) from t1; -timestampadd(second, c7, c10) -NULL -select timestampadd(year, c7, c10) from t1; -timestampadd(year, c7, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c7, c11) from t1; -timestampadd(second, c7, c11) -NULL -select timestampadd(year, c7, c11) from t1; -timestampadd(year, c7, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c7, c12) from t1; -timestampadd(second, c7, c12) -NULL -select timestampadd(year, c7, c12) from t1; -timestampadd(year, c7, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c7, c13) from t1; -timestampadd(second, c7, c13) -NULL -select timestampadd(year, c7, c13) from t1; -timestampadd(year, c7, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c7, c14) from t1; -timestampadd(second, c7, c14) -NULL -select timestampadd(year, c7, c14) from t1; -timestampadd(year, c7, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c7, c15) from t1; -timestampadd(second, c7, c15) -NULL -select timestampadd(year, c7, c15) from t1; -timestampadd(year, c7, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c7, c16) from t1; -timestampadd(second, c7, c16) -NULL -select timestampadd(year, c7, c16) from t1; -timestampadd(year, c7, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c7, c17) from t1; -timestampadd(second, c7, c17) -NULL -select timestampadd(year, c7, c17) from t1; -timestampadd(year, c7, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c7, c18) from t1; -timestampadd(second, c7, c18) -NULL -select timestampadd(year, c7, c18) from t1; -timestampadd(year, c7, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c7, c19) from t1; -timestampadd(second, c7, c19) -2019-12-01 12:00:01 -select timestampadd(year, c7, c19) from t1; -timestampadd(year, c7, c19) -2020-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c7, c20) from t1; -timestampadd(second, c7, c20) -2019-12-03 06:00:01 -select timestampadd(year, c7, c20) from t1; -timestampadd(year, c7, c20) -2020-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c7, c21) from t1; -timestampadd(second, c7, c21) -NULL -select timestampadd(year, c7, c21) from t1; -timestampadd(year, c7, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c7, c22) from t1; -timestampadd(second, c7, c22) -NULL -select timestampadd(year, c7, c22) from t1; -timestampadd(year, c7, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c8, c1) from t1; -timestampadd(second, c8, c1) -NULL -select timestampadd(year, c8, c1) from t1; -timestampadd(year, c8, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c8, c2) from t1; -timestampadd(second, c8, c2) -NULL -select timestampadd(year, c8, c2) from t1; -timestampadd(year, c8, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c8, c3) from t1; -timestampadd(second, c8, c3) -NULL -select timestampadd(year, c8, c3) from t1; -timestampadd(year, c8, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c8, c4) from t1; -timestampadd(second, c8, c4) -NULL -select timestampadd(year, c8, c4) from t1; -timestampadd(year, c8, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c8, c5) from t1; -timestampadd(second, c8, c5) -NULL -select timestampadd(year, c8, c5) from t1; -timestampadd(year, c8, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c8, c6) from t1; -timestampadd(second, c8, c6) -NULL -select timestampadd(year, c8, c6) from t1; -timestampadd(year, c8, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c8, c7) from t1; -timestampadd(second, c8, c7) -NULL -select timestampadd(year, c8, c7) from t1; -timestampadd(year, c8, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c8, c8) from t1; -timestampadd(second, c8, c8) -NULL -select timestampadd(year, c8, c8) from t1; -timestampadd(year, c8, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c8, c9) from t1; -timestampadd(second, c8, c9) -NULL -select timestampadd(year, c8, c9) from t1; -timestampadd(year, c8, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c8, c10) from t1; -timestampadd(second, c8, c10) -NULL -select timestampadd(year, c8, c10) from t1; -timestampadd(year, c8, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c8, c11) from t1; -timestampadd(second, c8, c11) -NULL -select timestampadd(year, c8, c11) from t1; -timestampadd(year, c8, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c8, c12) from t1; -timestampadd(second, c8, c12) -NULL -select timestampadd(year, c8, c12) from t1; -timestampadd(year, c8, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c8, c13) from t1; -timestampadd(second, c8, c13) -NULL -select timestampadd(year, c8, c13) from t1; -timestampadd(year, c8, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c8, c14) from t1; -timestampadd(second, c8, c14) -NULL -select timestampadd(year, c8, c14) from t1; -timestampadd(year, c8, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c8, c15) from t1; -timestampadd(second, c8, c15) -NULL -select timestampadd(year, c8, c15) from t1; -timestampadd(year, c8, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c8, c16) from t1; -timestampadd(second, c8, c16) -NULL -select timestampadd(year, c8, c16) from t1; -timestampadd(year, c8, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c8, c17) from t1; -timestampadd(second, c8, c17) -NULL -select timestampadd(year, c8, c17) from t1; -timestampadd(year, c8, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c8, c18) from t1; -timestampadd(second, c8, c18) -NULL -select timestampadd(year, c8, c18) from t1; -timestampadd(year, c8, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c8, c19) from t1; -timestampadd(second, c8, c19) -2019-12-01 12:00:02 -select timestampadd(year, c8, c19) from t1; -timestampadd(year, c8, c19) -2021-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c8, c20) from t1; -timestampadd(second, c8, c20) -2019-12-03 06:00:02 -select timestampadd(year, c8, c20) from t1; -timestampadd(year, c8, c20) -2021-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c8, c21) from t1; -timestampadd(second, c8, c21) -NULL -select timestampadd(year, c8, c21) from t1; -timestampadd(year, c8, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c8, c22) from t1; -timestampadd(second, c8, c22) -NULL -select timestampadd(year, c8, c22) from t1; -timestampadd(year, c8, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c9, c1) from t1; -timestampadd(second, c9, c1) -NULL -select timestampadd(year, c9, c1) from t1; -timestampadd(year, c9, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c9, c2) from t1; -timestampadd(second, c9, c2) -NULL -select timestampadd(year, c9, c2) from t1; -timestampadd(year, c9, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c9, c3) from t1; -timestampadd(second, c9, c3) -NULL -select timestampadd(year, c9, c3) from t1; -timestampadd(year, c9, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c9, c4) from t1; -timestampadd(second, c9, c4) -NULL -select timestampadd(year, c9, c4) from t1; -timestampadd(year, c9, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c9, c5) from t1; -timestampadd(second, c9, c5) -NULL -select timestampadd(year, c9, c5) from t1; -timestampadd(year, c9, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c9, c6) from t1; -timestampadd(second, c9, c6) -NULL -select timestampadd(year, c9, c6) from t1; -timestampadd(year, c9, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c9, c7) from t1; -timestampadd(second, c9, c7) -NULL -select timestampadd(year, c9, c7) from t1; -timestampadd(year, c9, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c9, c8) from t1; -timestampadd(second, c9, c8) -NULL -select timestampadd(year, c9, c8) from t1; -timestampadd(year, c9, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c9, c9) from t1; -timestampadd(second, c9, c9) -NULL -select timestampadd(year, c9, c9) from t1; -timestampadd(year, c9, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c9, c10) from t1; -timestampadd(second, c9, c10) -NULL -select timestampadd(year, c9, c10) from t1; -timestampadd(year, c9, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c9, c11) from t1; -timestampadd(second, c9, c11) -NULL -select timestampadd(year, c9, c11) from t1; -timestampadd(year, c9, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c9, c12) from t1; -timestampadd(second, c9, c12) -NULL -select timestampadd(year, c9, c12) from t1; -timestampadd(year, c9, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c9, c13) from t1; -timestampadd(second, c9, c13) -NULL -select timestampadd(year, c9, c13) from t1; -timestampadd(year, c9, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c9, c14) from t1; -timestampadd(second, c9, c14) -NULL -select timestampadd(year, c9, c14) from t1; -timestampadd(year, c9, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c9, c15) from t1; -timestampadd(second, c9, c15) -NULL -select timestampadd(year, c9, c15) from t1; -timestampadd(year, c9, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c9, c16) from t1; -timestampadd(second, c9, c16) -NULL -select timestampadd(year, c9, c16) from t1; -timestampadd(year, c9, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c9, c17) from t1; -timestampadd(second, c9, c17) -NULL -select timestampadd(year, c9, c17) from t1; -timestampadd(year, c9, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c9, c18) from t1; -timestampadd(second, c9, c18) -NULL -select timestampadd(year, c9, c18) from t1; -timestampadd(year, c9, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c9, c19) from t1; -timestampadd(second, c9, c19) -2019-12-01 12:00:01 -select timestampadd(year, c9, c19) from t1; -timestampadd(year, c9, c19) -2020-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c9, c20) from t1; -timestampadd(second, c9, c20) -2019-12-03 06:00:01 -select timestampadd(year, c9, c20) from t1; -timestampadd(year, c9, c20) -2020-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c9, c21) from t1; -timestampadd(second, c9, c21) -NULL -select timestampadd(year, c9, c21) from t1; -timestampadd(year, c9, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c9, c22) from t1; -timestampadd(second, c9, c22) -NULL -select timestampadd(year, c9, c22) from t1; -timestampadd(year, c9, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c10, c1) from t1; -timestampadd(second, c10, c1) -NULL -select timestampadd(year, c10, c1) from t1; -timestampadd(year, c10, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c10, c2) from t1; -timestampadd(second, c10, c2) -NULL -select timestampadd(year, c10, c2) from t1; -timestampadd(year, c10, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c10, c3) from t1; -timestampadd(second, c10, c3) -NULL -select timestampadd(year, c10, c3) from t1; -timestampadd(year, c10, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c10, c4) from t1; -timestampadd(second, c10, c4) -NULL -select timestampadd(year, c10, c4) from t1; -timestampadd(year, c10, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c10, c5) from t1; -timestampadd(second, c10, c5) -NULL -select timestampadd(year, c10, c5) from t1; -timestampadd(year, c10, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c10, c6) from t1; -timestampadd(second, c10, c6) -NULL -select timestampadd(year, c10, c6) from t1; -timestampadd(year, c10, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c10, c7) from t1; -timestampadd(second, c10, c7) -NULL -select timestampadd(year, c10, c7) from t1; -timestampadd(year, c10, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c10, c8) from t1; -timestampadd(second, c10, c8) -NULL -select timestampadd(year, c10, c8) from t1; -timestampadd(year, c10, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c10, c9) from t1; -timestampadd(second, c10, c9) -NULL -select timestampadd(year, c10, c9) from t1; -timestampadd(year, c10, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c10, c10) from t1; -timestampadd(second, c10, c10) -NULL -select timestampadd(year, c10, c10) from t1; -timestampadd(year, c10, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c10, c11) from t1; -timestampadd(second, c10, c11) -NULL -select timestampadd(year, c10, c11) from t1; -timestampadd(year, c10, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c10, c12) from t1; -timestampadd(second, c10, c12) -NULL -select timestampadd(year, c10, c12) from t1; -timestampadd(year, c10, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c10, c13) from t1; -timestampadd(second, c10, c13) -NULL -select timestampadd(year, c10, c13) from t1; -timestampadd(year, c10, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c10, c14) from t1; -timestampadd(second, c10, c14) -NULL -select timestampadd(year, c10, c14) from t1; -timestampadd(year, c10, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c10, c15) from t1; -timestampadd(second, c10, c15) -NULL -select timestampadd(year, c10, c15) from t1; -timestampadd(year, c10, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c10, c16) from t1; -timestampadd(second, c10, c16) -NULL -select timestampadd(year, c10, c16) from t1; -timestampadd(year, c10, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c10, c17) from t1; -timestampadd(second, c10, c17) -NULL -select timestampadd(year, c10, c17) from t1; -timestampadd(year, c10, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c10, c18) from t1; -timestampadd(second, c10, c18) -NULL -select timestampadd(year, c10, c18) from t1; -timestampadd(year, c10, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c10, c19) from t1; -timestampadd(second, c10, c19) -2019-12-01 12:00:02 -select timestampadd(year, c10, c19) from t1; -timestampadd(year, c10, c19) -2021-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c10, c20) from t1; -timestampadd(second, c10, c20) -2019-12-03 06:00:02 -select timestampadd(year, c10, c20) from t1; -timestampadd(year, c10, c20) -2021-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c10, c21) from t1; -timestampadd(second, c10, c21) -NULL -select timestampadd(year, c10, c21) from t1; -timestampadd(year, c10, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c10, c22) from t1; -timestampadd(second, c10, c22) -NULL -select timestampadd(year, c10, c22) from t1; -timestampadd(year, c10, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c11, c1) from t1; -timestampadd(second, c11, c1) -NULL -select timestampadd(year, c11, c1) from t1; -timestampadd(year, c11, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c11, c2) from t1; -timestampadd(second, c11, c2) -NULL -select timestampadd(year, c11, c2) from t1; -timestampadd(year, c11, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c11, c3) from t1; -timestampadd(second, c11, c3) -NULL -select timestampadd(year, c11, c3) from t1; -timestampadd(year, c11, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c11, c4) from t1; -timestampadd(second, c11, c4) -NULL -select timestampadd(year, c11, c4) from t1; -timestampadd(year, c11, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c11, c5) from t1; -timestampadd(second, c11, c5) -NULL -select timestampadd(year, c11, c5) from t1; -timestampadd(year, c11, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c11, c6) from t1; -timestampadd(second, c11, c6) -NULL -select timestampadd(year, c11, c6) from t1; -timestampadd(year, c11, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c11, c7) from t1; -timestampadd(second, c11, c7) -NULL -select timestampadd(year, c11, c7) from t1; -timestampadd(year, c11, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c11, c8) from t1; -timestampadd(second, c11, c8) -NULL -select timestampadd(year, c11, c8) from t1; -timestampadd(year, c11, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c11, c9) from t1; -timestampadd(second, c11, c9) -NULL -select timestampadd(year, c11, c9) from t1; -timestampadd(year, c11, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c11, c10) from t1; -timestampadd(second, c11, c10) -NULL -select timestampadd(year, c11, c10) from t1; -timestampadd(year, c11, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c11, c11) from t1; -timestampadd(second, c11, c11) -NULL -select timestampadd(year, c11, c11) from t1; -timestampadd(year, c11, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c11, c12) from t1; -timestampadd(second, c11, c12) -NULL -select timestampadd(year, c11, c12) from t1; -timestampadd(year, c11, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c11, c13) from t1; -timestampadd(second, c11, c13) -NULL -select timestampadd(year, c11, c13) from t1; -timestampadd(year, c11, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c11, c14) from t1; -timestampadd(second, c11, c14) -NULL -select timestampadd(year, c11, c14) from t1; -timestampadd(year, c11, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c11, c15) from t1; -timestampadd(second, c11, c15) -NULL -select timestampadd(year, c11, c15) from t1; -timestampadd(year, c11, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c11, c16) from t1; -timestampadd(second, c11, c16) -NULL -select timestampadd(year, c11, c16) from t1; -timestampadd(year, c11, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c11, c17) from t1; -timestampadd(second, c11, c17) -NULL -select timestampadd(year, c11, c17) from t1; -timestampadd(year, c11, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c11, c18) from t1; -timestampadd(second, c11, c18) -NULL -select timestampadd(year, c11, c18) from t1; -timestampadd(year, c11, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c11, c19) from t1; -timestampadd(second, c11, c19) -2019-12-01 12:00:01 -select timestampadd(year, c11, c19) from t1; -timestampadd(year, c11, c19) -2020-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c11, c20) from t1; -timestampadd(second, c11, c20) -2019-12-03 06:00:01 -select timestampadd(year, c11, c20) from t1; -timestampadd(year, c11, c20) -2020-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c11, c21) from t1; -timestampadd(second, c11, c21) -NULL -select timestampadd(year, c11, c21) from t1; -timestampadd(year, c11, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c11, c22) from t1; -timestampadd(second, c11, c22) -NULL -select timestampadd(year, c11, c22) from t1; -timestampadd(year, c11, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c12, c1) from t1; -timestampadd(second, c12, c1) -NULL -select timestampadd(year, c12, c1) from t1; -timestampadd(year, c12, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c12, c2) from t1; -timestampadd(second, c12, c2) -NULL -select timestampadd(year, c12, c2) from t1; -timestampadd(year, c12, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c12, c3) from t1; -timestampadd(second, c12, c3) -NULL -select timestampadd(year, c12, c3) from t1; -timestampadd(year, c12, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c12, c4) from t1; -timestampadd(second, c12, c4) -NULL -select timestampadd(year, c12, c4) from t1; -timestampadd(year, c12, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c12, c5) from t1; -timestampadd(second, c12, c5) -NULL -select timestampadd(year, c12, c5) from t1; -timestampadd(year, c12, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c12, c6) from t1; -timestampadd(second, c12, c6) -NULL -select timestampadd(year, c12, c6) from t1; -timestampadd(year, c12, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c12, c7) from t1; -timestampadd(second, c12, c7) -NULL -select timestampadd(year, c12, c7) from t1; -timestampadd(year, c12, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c12, c8) from t1; -timestampadd(second, c12, c8) -NULL -select timestampadd(year, c12, c8) from t1; -timestampadd(year, c12, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c12, c9) from t1; -timestampadd(second, c12, c9) -NULL -select timestampadd(year, c12, c9) from t1; -timestampadd(year, c12, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c12, c10) from t1; -timestampadd(second, c12, c10) -NULL -select timestampadd(year, c12, c10) from t1; -timestampadd(year, c12, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c12, c11) from t1; -timestampadd(second, c12, c11) -NULL -select timestampadd(year, c12, c11) from t1; -timestampadd(year, c12, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c12, c12) from t1; -timestampadd(second, c12, c12) -NULL -select timestampadd(year, c12, c12) from t1; -timestampadd(year, c12, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c12, c13) from t1; -timestampadd(second, c12, c13) -NULL -select timestampadd(year, c12, c13) from t1; -timestampadd(year, c12, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c12, c14) from t1; -timestampadd(second, c12, c14) -NULL -select timestampadd(year, c12, c14) from t1; -timestampadd(year, c12, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c12, c15) from t1; -timestampadd(second, c12, c15) -NULL -select timestampadd(year, c12, c15) from t1; -timestampadd(year, c12, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c12, c16) from t1; -timestampadd(second, c12, c16) -NULL -select timestampadd(year, c12, c16) from t1; -timestampadd(year, c12, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c12, c17) from t1; -timestampadd(second, c12, c17) -NULL -select timestampadd(year, c12, c17) from t1; -timestampadd(year, c12, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c12, c18) from t1; -timestampadd(second, c12, c18) -NULL -select timestampadd(year, c12, c18) from t1; -timestampadd(year, c12, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c12, c19) from t1; -timestampadd(second, c12, c19) -2019-12-01 12:00:02 -select timestampadd(year, c12, c19) from t1; -timestampadd(year, c12, c19) -2021-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c12, c20) from t1; -timestampadd(second, c12, c20) -2019-12-03 06:00:02 -select timestampadd(year, c12, c20) from t1; -timestampadd(year, c12, c20) -2021-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c12, c21) from t1; -timestampadd(second, c12, c21) -NULL -select timestampadd(year, c12, c21) from t1; -timestampadd(year, c12, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c12, c22) from t1; -timestampadd(second, c12, c22) -NULL -select timestampadd(year, c12, c22) from t1; -timestampadd(year, c12, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c13, c1) from t1; -timestampadd(second, c13, c1) -NULL -select timestampadd(year, c13, c1) from t1; -timestampadd(year, c13, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c13, c2) from t1; -timestampadd(second, c13, c2) -NULL -select timestampadd(year, c13, c2) from t1; -timestampadd(year, c13, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c13, c3) from t1; -timestampadd(second, c13, c3) -NULL -select timestampadd(year, c13, c3) from t1; -timestampadd(year, c13, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c13, c4) from t1; -timestampadd(second, c13, c4) -NULL -select timestampadd(year, c13, c4) from t1; -timestampadd(year, c13, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c13, c5) from t1; -timestampadd(second, c13, c5) -NULL -select timestampadd(year, c13, c5) from t1; -timestampadd(year, c13, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c13, c6) from t1; -timestampadd(second, c13, c6) -NULL -select timestampadd(year, c13, c6) from t1; -timestampadd(year, c13, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c13, c7) from t1; -timestampadd(second, c13, c7) -NULL -select timestampadd(year, c13, c7) from t1; -timestampadd(year, c13, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c13, c8) from t1; -timestampadd(second, c13, c8) -NULL -select timestampadd(year, c13, c8) from t1; -timestampadd(year, c13, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c13, c9) from t1; -timestampadd(second, c13, c9) -NULL -select timestampadd(year, c13, c9) from t1; -timestampadd(year, c13, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c13, c10) from t1; -timestampadd(second, c13, c10) -NULL -select timestampadd(year, c13, c10) from t1; -timestampadd(year, c13, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c13, c11) from t1; -timestampadd(second, c13, c11) -NULL -select timestampadd(year, c13, c11) from t1; -timestampadd(year, c13, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c13, c12) from t1; -timestampadd(second, c13, c12) -NULL -select timestampadd(year, c13, c12) from t1; -timestampadd(year, c13, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c13, c13) from t1; -timestampadd(second, c13, c13) -NULL -select timestampadd(year, c13, c13) from t1; -timestampadd(year, c13, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c13, c14) from t1; -timestampadd(second, c13, c14) -NULL -select timestampadd(year, c13, c14) from t1; -timestampadd(year, c13, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c13, c15) from t1; -timestampadd(second, c13, c15) -NULL -select timestampadd(year, c13, c15) from t1; -timestampadd(year, c13, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c13, c16) from t1; -timestampadd(second, c13, c16) -NULL -select timestampadd(year, c13, c16) from t1; -timestampadd(year, c13, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c13, c17) from t1; -timestampadd(second, c13, c17) -NULL -select timestampadd(year, c13, c17) from t1; -timestampadd(year, c13, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c13, c18) from t1; -timestampadd(second, c13, c18) -NULL -select timestampadd(year, c13, c18) from t1; -timestampadd(year, c13, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c13, c19) from t1; -timestampadd(second, c13, c19) -2019-12-01 12:00:04 -select timestampadd(year, c13, c19) from t1; -timestampadd(year, c13, c19) -2023-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c13, c20) from t1; -timestampadd(second, c13, c20) -2019-12-03 06:00:04 -select timestampadd(year, c13, c20) from t1; -timestampadd(year, c13, c20) -2023-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c13, c21) from t1; -timestampadd(second, c13, c21) -NULL -select timestampadd(year, c13, c21) from t1; -timestampadd(year, c13, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c13, c22) from t1; -timestampadd(second, c13, c22) -NULL -select timestampadd(year, c13, c22) from t1; -timestampadd(year, c13, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c14, c1) from t1; -timestampadd(second, c14, c1) -NULL -select timestampadd(year, c14, c1) from t1; -timestampadd(year, c14, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c14, c2) from t1; -timestampadd(second, c14, c2) -NULL -select timestampadd(year, c14, c2) from t1; -timestampadd(year, c14, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c14, c3) from t1; -timestampadd(second, c14, c3) -NULL -select timestampadd(year, c14, c3) from t1; -timestampadd(year, c14, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c14, c4) from t1; -timestampadd(second, c14, c4) -NULL -select timestampadd(year, c14, c4) from t1; -timestampadd(year, c14, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c14, c5) from t1; -timestampadd(second, c14, c5) -NULL -select timestampadd(year, c14, c5) from t1; -timestampadd(year, c14, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c14, c6) from t1; -timestampadd(second, c14, c6) -NULL -select timestampadd(year, c14, c6) from t1; -timestampadd(year, c14, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c14, c7) from t1; -timestampadd(second, c14, c7) -NULL -select timestampadd(year, c14, c7) from t1; -timestampadd(year, c14, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c14, c8) from t1; -timestampadd(second, c14, c8) -NULL -select timestampadd(year, c14, c8) from t1; -timestampadd(year, c14, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c14, c9) from t1; -timestampadd(second, c14, c9) -NULL -select timestampadd(year, c14, c9) from t1; -timestampadd(year, c14, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c14, c10) from t1; -timestampadd(second, c14, c10) -NULL -select timestampadd(year, c14, c10) from t1; -timestampadd(year, c14, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c14, c11) from t1; -timestampadd(second, c14, c11) -NULL -select timestampadd(year, c14, c11) from t1; -timestampadd(year, c14, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c14, c12) from t1; -timestampadd(second, c14, c12) -NULL -select timestampadd(year, c14, c12) from t1; -timestampadd(year, c14, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c14, c13) from t1; -timestampadd(second, c14, c13) -NULL -select timestampadd(year, c14, c13) from t1; -timestampadd(year, c14, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c14, c14) from t1; -timestampadd(second, c14, c14) -NULL -select timestampadd(year, c14, c14) from t1; -timestampadd(year, c14, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c14, c15) from t1; -timestampadd(second, c14, c15) -NULL -select timestampadd(year, c14, c15) from t1; -timestampadd(year, c14, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c14, c16) from t1; -timestampadd(second, c14, c16) -NULL -select timestampadd(year, c14, c16) from t1; -timestampadd(year, c14, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c14, c17) from t1; -timestampadd(second, c14, c17) -NULL -select timestampadd(year, c14, c17) from t1; -timestampadd(year, c14, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c14, c18) from t1; -timestampadd(second, c14, c18) -NULL -select timestampadd(year, c14, c18) from t1; -timestampadd(year, c14, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c14, c19) from t1; -timestampadd(second, c14, c19) -2019-12-01 12:00:04 -select timestampadd(year, c14, c19) from t1; -timestampadd(year, c14, c19) -2023-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c14, c20) from t1; -timestampadd(second, c14, c20) -2019-12-03 06:00:04 -select timestampadd(year, c14, c20) from t1; -timestampadd(year, c14, c20) -2023-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c14, c21) from t1; -timestampadd(second, c14, c21) -NULL -select timestampadd(year, c14, c21) from t1; -timestampadd(year, c14, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c14, c22) from t1; -timestampadd(second, c14, c22) -NULL -select timestampadd(year, c14, c22) from t1; -timestampadd(year, c14, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c15, c1) from t1; -timestampadd(second, c15, c1) -NULL -select timestampadd(year, c15, c1) from t1; -timestampadd(year, c15, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c15, c2) from t1; -timestampadd(second, c15, c2) -NULL -select timestampadd(year, c15, c2) from t1; -timestampadd(year, c15, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c15, c3) from t1; -timestampadd(second, c15, c3) -NULL -select timestampadd(year, c15, c3) from t1; -timestampadd(year, c15, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c15, c4) from t1; -timestampadd(second, c15, c4) -NULL -select timestampadd(year, c15, c4) from t1; -timestampadd(year, c15, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c15, c5) from t1; -timestampadd(second, c15, c5) -NULL -select timestampadd(year, c15, c5) from t1; -timestampadd(year, c15, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c15, c6) from t1; -timestampadd(second, c15, c6) -NULL -select timestampadd(year, c15, c6) from t1; -timestampadd(year, c15, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c15, c7) from t1; -timestampadd(second, c15, c7) -NULL -select timestampadd(year, c15, c7) from t1; -timestampadd(year, c15, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c15, c8) from t1; -timestampadd(second, c15, c8) -NULL -select timestampadd(year, c15, c8) from t1; -timestampadd(year, c15, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c15, c9) from t1; -timestampadd(second, c15, c9) -NULL -select timestampadd(year, c15, c9) from t1; -timestampadd(year, c15, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c15, c10) from t1; -timestampadd(second, c15, c10) -NULL -select timestampadd(year, c15, c10) from t1; -timestampadd(year, c15, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c15, c11) from t1; -timestampadd(second, c15, c11) -NULL -select timestampadd(year, c15, c11) from t1; -timestampadd(year, c15, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c15, c12) from t1; -timestampadd(second, c15, c12) -NULL -select timestampadd(year, c15, c12) from t1; -timestampadd(year, c15, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c15, c13) from t1; -timestampadd(second, c15, c13) -NULL -select timestampadd(year, c15, c13) from t1; -timestampadd(year, c15, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c15, c14) from t1; -timestampadd(second, c15, c14) -NULL -select timestampadd(year, c15, c14) from t1; -timestampadd(year, c15, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c15, c15) from t1; -timestampadd(second, c15, c15) -NULL -select timestampadd(year, c15, c15) from t1; -timestampadd(year, c15, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c15, c16) from t1; -timestampadd(second, c15, c16) -NULL -select timestampadd(year, c15, c16) from t1; -timestampadd(year, c15, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c15, c17) from t1; -timestampadd(second, c15, c17) -NULL -select timestampadd(year, c15, c17) from t1; -timestampadd(year, c15, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c15, c18) from t1; -timestampadd(second, c15, c18) -NULL -select timestampadd(year, c15, c18) from t1; -timestampadd(year, c15, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c15, c19) from t1; -timestampadd(second, c15, c19) -2019-12-01 12:00:06 -select timestampadd(year, c15, c19) from t1; -timestampadd(year, c15, c19) -2025-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c15, c20) from t1; -timestampadd(second, c15, c20) -2019-12-03 06:00:06 -select timestampadd(year, c15, c20) from t1; -timestampadd(year, c15, c20) -2025-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c15, c21) from t1; -timestampadd(second, c15, c21) -NULL -select timestampadd(year, c15, c21) from t1; -timestampadd(year, c15, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c15, c22) from t1; -timestampadd(second, c15, c22) -NULL -select timestampadd(year, c15, c22) from t1; -timestampadd(year, c15, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c16, c1) from t1; -timestampadd(second, c16, c1) -NULL -select timestampadd(year, c16, c1) from t1; -timestampadd(year, c16, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c16, c2) from t1; -timestampadd(second, c16, c2) -NULL -select timestampadd(year, c16, c2) from t1; -timestampadd(year, c16, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c16, c3) from t1; -timestampadd(second, c16, c3) -NULL -select timestampadd(year, c16, c3) from t1; -timestampadd(year, c16, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c16, c4) from t1; -timestampadd(second, c16, c4) -NULL -select timestampadd(year, c16, c4) from t1; -timestampadd(year, c16, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c16, c5) from t1; -timestampadd(second, c16, c5) -NULL -select timestampadd(year, c16, c5) from t1; -timestampadd(year, c16, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c16, c6) from t1; -timestampadd(second, c16, c6) -NULL -select timestampadd(year, c16, c6) from t1; -timestampadd(year, c16, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c16, c7) from t1; -timestampadd(second, c16, c7) -NULL -select timestampadd(year, c16, c7) from t1; -timestampadd(year, c16, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c16, c8) from t1; -timestampadd(second, c16, c8) -NULL -select timestampadd(year, c16, c8) from t1; -timestampadd(year, c16, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c16, c9) from t1; -timestampadd(second, c16, c9) -NULL -select timestampadd(year, c16, c9) from t1; -timestampadd(year, c16, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c16, c10) from t1; -timestampadd(second, c16, c10) -NULL -select timestampadd(year, c16, c10) from t1; -timestampadd(year, c16, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c16, c11) from t1; -timestampadd(second, c16, c11) -NULL -select timestampadd(year, c16, c11) from t1; -timestampadd(year, c16, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c16, c12) from t1; -timestampadd(second, c16, c12) -NULL -select timestampadd(year, c16, c12) from t1; -timestampadd(year, c16, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c16, c13) from t1; -timestampadd(second, c16, c13) -NULL -select timestampadd(year, c16, c13) from t1; -timestampadd(year, c16, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c16, c14) from t1; -timestampadd(second, c16, c14) -NULL -select timestampadd(year, c16, c14) from t1; -timestampadd(year, c16, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c16, c15) from t1; -timestampadd(second, c16, c15) -NULL -select timestampadd(year, c16, c15) from t1; -timestampadd(year, c16, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c16, c16) from t1; -timestampadd(second, c16, c16) -NULL -select timestampadd(year, c16, c16) from t1; -timestampadd(year, c16, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c16, c17) from t1; -timestampadd(second, c16, c17) -NULL -select timestampadd(year, c16, c17) from t1; -timestampadd(year, c16, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c16, c18) from t1; -timestampadd(second, c16, c18) -NULL -select timestampadd(year, c16, c18) from t1; -timestampadd(year, c16, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c16, c19) from t1; -timestampadd(second, c16, c19) -2019-12-01 12:00:06 -select timestampadd(year, c16, c19) from t1; -timestampadd(year, c16, c19) -2025-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c16, c20) from t1; -timestampadd(second, c16, c20) -2019-12-03 06:00:06 -select timestampadd(year, c16, c20) from t1; -timestampadd(year, c16, c20) -2025-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c16, c21) from t1; -timestampadd(second, c16, c21) -NULL -select timestampadd(year, c16, c21) from t1; -timestampadd(year, c16, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c16, c22) from t1; -timestampadd(second, c16, c22) -NULL -select timestampadd(year, c16, c22) from t1; -timestampadd(year, c16, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c17, c1) from t1; -timestampadd(second, c17, c1) -NULL -select timestampadd(year, c17, c1) from t1; -timestampadd(year, c17, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c17, c2) from t1; -timestampadd(second, c17, c2) -NULL -select timestampadd(year, c17, c2) from t1; -timestampadd(year, c17, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c17, c3) from t1; -timestampadd(second, c17, c3) -NULL -select timestampadd(year, c17, c3) from t1; -timestampadd(year, c17, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c17, c4) from t1; -timestampadd(second, c17, c4) -NULL -select timestampadd(year, c17, c4) from t1; -timestampadd(year, c17, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c17, c5) from t1; -timestampadd(second, c17, c5) -NULL -select timestampadd(year, c17, c5) from t1; -timestampadd(year, c17, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c17, c6) from t1; -timestampadd(second, c17, c6) -NULL -select timestampadd(year, c17, c6) from t1; -timestampadd(year, c17, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c17, c7) from t1; -timestampadd(second, c17, c7) -NULL -select timestampadd(year, c17, c7) from t1; -timestampadd(year, c17, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c17, c8) from t1; -timestampadd(second, c17, c8) -NULL -select timestampadd(year, c17, c8) from t1; -timestampadd(year, c17, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c17, c9) from t1; -timestampadd(second, c17, c9) -NULL -select timestampadd(year, c17, c9) from t1; -timestampadd(year, c17, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c17, c10) from t1; -timestampadd(second, c17, c10) -NULL -select timestampadd(year, c17, c10) from t1; -timestampadd(year, c17, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c17, c11) from t1; -timestampadd(second, c17, c11) -NULL -select timestampadd(year, c17, c11) from t1; -timestampadd(year, c17, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c17, c12) from t1; -timestampadd(second, c17, c12) -NULL -select timestampadd(year, c17, c12) from t1; -timestampadd(year, c17, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c17, c13) from t1; -timestampadd(second, c17, c13) -NULL -select timestampadd(year, c17, c13) from t1; -timestampadd(year, c17, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c17, c14) from t1; -timestampadd(second, c17, c14) -NULL -select timestampadd(year, c17, c14) from t1; -timestampadd(year, c17, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c17, c15) from t1; -timestampadd(second, c17, c15) -NULL -select timestampadd(year, c17, c15) from t1; -timestampadd(year, c17, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c17, c16) from t1; -timestampadd(second, c17, c16) -NULL -select timestampadd(year, c17, c16) from t1; -timestampadd(year, c17, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c17, c17) from t1; -timestampadd(second, c17, c17) -NULL -select timestampadd(year, c17, c17) from t1; -timestampadd(year, c17, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c17, c18) from t1; -timestampadd(second, c17, c18) -NULL -select timestampadd(year, c17, c18) from t1; -timestampadd(year, c17, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c17, c19) from t1; -timestampadd(second, c17, c19) -2019-12-01 12:00:08 -select timestampadd(year, c17, c19) from t1; -timestampadd(year, c17, c19) -2027-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c17, c20) from t1; -timestampadd(second, c17, c20) -2019-12-03 06:00:08 -select timestampadd(year, c17, c20) from t1; -timestampadd(year, c17, c20) -2027-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c17, c21) from t1; -timestampadd(second, c17, c21) -NULL -select timestampadd(year, c17, c21) from t1; -timestampadd(year, c17, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c17, c22) from t1; -timestampadd(second, c17, c22) -NULL -select timestampadd(year, c17, c22) from t1; -timestampadd(year, c17, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c18, c1) from t1; -timestampadd(second, c18, c1) -NULL -select timestampadd(year, c18, c1) from t1; -timestampadd(year, c18, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c18, c2) from t1; -timestampadd(second, c18, c2) -NULL -select timestampadd(year, c18, c2) from t1; -timestampadd(year, c18, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c18, c3) from t1; -timestampadd(second, c18, c3) -NULL -select timestampadd(year, c18, c3) from t1; -timestampadd(year, c18, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c18, c4) from t1; -timestampadd(second, c18, c4) -NULL -select timestampadd(year, c18, c4) from t1; -timestampadd(year, c18, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c18, c5) from t1; -timestampadd(second, c18, c5) -NULL -select timestampadd(year, c18, c5) from t1; -timestampadd(year, c18, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c18, c6) from t1; -timestampadd(second, c18, c6) -NULL -select timestampadd(year, c18, c6) from t1; -timestampadd(year, c18, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c18, c7) from t1; -timestampadd(second, c18, c7) -NULL -select timestampadd(year, c18, c7) from t1; -timestampadd(year, c18, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c18, c8) from t1; -timestampadd(second, c18, c8) -NULL -select timestampadd(year, c18, c8) from t1; -timestampadd(year, c18, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c18, c9) from t1; -timestampadd(second, c18, c9) -NULL -select timestampadd(year, c18, c9) from t1; -timestampadd(year, c18, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c18, c10) from t1; -timestampadd(second, c18, c10) -NULL -select timestampadd(year, c18, c10) from t1; -timestampadd(year, c18, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c18, c11) from t1; -timestampadd(second, c18, c11) -NULL -select timestampadd(year, c18, c11) from t1; -timestampadd(year, c18, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c18, c12) from t1; -timestampadd(second, c18, c12) -NULL -select timestampadd(year, c18, c12) from t1; -timestampadd(year, c18, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c18, c13) from t1; -timestampadd(second, c18, c13) -NULL -select timestampadd(year, c18, c13) from t1; -timestampadd(year, c18, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c18, c14) from t1; -timestampadd(second, c18, c14) -NULL -select timestampadd(year, c18, c14) from t1; -timestampadd(year, c18, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c18, c15) from t1; -timestampadd(second, c18, c15) -NULL -select timestampadd(year, c18, c15) from t1; -timestampadd(year, c18, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c18, c16) from t1; -timestampadd(second, c18, c16) -NULL -select timestampadd(year, c18, c16) from t1; -timestampadd(year, c18, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c18, c17) from t1; -timestampadd(second, c18, c17) -NULL -select timestampadd(year, c18, c17) from t1; -timestampadd(year, c18, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c18, c18) from t1; -timestampadd(second, c18, c18) -NULL -select timestampadd(year, c18, c18) from t1; -timestampadd(year, c18, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c18, c19) from t1; -timestampadd(second, c18, c19) -2019-12-01 12:00:09 -select timestampadd(year, c18, c19) from t1; -timestampadd(year, c18, c19) -2028-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c18, c20) from t1; -timestampadd(second, c18, c20) -2019-12-03 06:00:09 -select timestampadd(year, c18, c20) from t1; -timestampadd(year, c18, c20) -2028-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c18, c21) from t1; -timestampadd(second, c18, c21) -NULL -select timestampadd(year, c18, c21) from t1; -timestampadd(year, c18, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c18, c22) from t1; -timestampadd(second, c18, c22) -NULL -select timestampadd(year, c18, c22) from t1; -timestampadd(year, c18, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c19, c1) from t1; -timestampadd(second, c19, c1) -NULL -select timestampadd(year, c19, c1) from t1; -timestampadd(year, c19, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c19, c2) from t1; -timestampadd(second, c19, c2) -NULL -select timestampadd(year, c19, c2) from t1; -timestampadd(year, c19, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c19, c3) from t1; -timestampadd(second, c19, c3) -NULL -select timestampadd(year, c19, c3) from t1; -timestampadd(year, c19, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c19, c4) from t1; -timestampadd(second, c19, c4) -NULL -select timestampadd(year, c19, c4) from t1; -timestampadd(year, c19, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c19, c5) from t1; -timestampadd(second, c19, c5) -NULL -select timestampadd(year, c19, c5) from t1; -timestampadd(year, c19, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c19, c6) from t1; -timestampadd(second, c19, c6) -NULL -select timestampadd(year, c19, c6) from t1; -timestampadd(year, c19, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c19, c7) from t1; -timestampadd(second, c19, c7) -NULL -select timestampadd(year, c19, c7) from t1; -timestampadd(year, c19, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c19, c8) from t1; -timestampadd(second, c19, c8) -NULL -select timestampadd(year, c19, c8) from t1; -timestampadd(year, c19, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c19, c9) from t1; -timestampadd(second, c19, c9) -NULL -select timestampadd(year, c19, c9) from t1; -timestampadd(year, c19, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c19, c10) from t1; -timestampadd(second, c19, c10) -NULL -select timestampadd(year, c19, c10) from t1; -timestampadd(year, c19, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c19, c11) from t1; -timestampadd(second, c19, c11) -NULL -select timestampadd(year, c19, c11) from t1; -timestampadd(year, c19, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c19, c12) from t1; -timestampadd(second, c19, c12) -NULL -select timestampadd(year, c19, c12) from t1; -timestampadd(year, c19, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c19, c13) from t1; -timestampadd(second, c19, c13) -NULL -select timestampadd(year, c19, c13) from t1; -timestampadd(year, c19, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c19, c14) from t1; -timestampadd(second, c19, c14) -NULL -select timestampadd(year, c19, c14) from t1; -timestampadd(year, c19, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c19, c15) from t1; -timestampadd(second, c19, c15) -NULL -select timestampadd(year, c19, c15) from t1; -timestampadd(year, c19, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c19, c16) from t1; -timestampadd(second, c19, c16) -NULL -select timestampadd(year, c19, c16) from t1; -timestampadd(year, c19, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c19, c17) from t1; -timestampadd(second, c19, c17) -NULL -select timestampadd(year, c19, c17) from t1; -timestampadd(year, c19, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c19, c18) from t1; -timestampadd(second, c19, c18) -NULL -select timestampadd(year, c19, c18) from t1; -timestampadd(year, c19, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c19, c19) from t1; -timestampadd(second, c19, c19) -NULL -select timestampadd(year, c19, c19) from t1; -timestampadd(year, c19, c19) -NULL -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c19, c20) from t1; -timestampadd(second, c19, c20) -NULL -select timestampadd(year, c19, c20) from t1; -timestampadd(year, c19, c20) -NULL -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c19, c21) from t1; -timestampadd(second, c19, c21) -NULL -select timestampadd(year, c19, c21) from t1; -timestampadd(year, c19, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c19, c22) from t1; -timestampadd(second, c19, c22) -NULL -select timestampadd(year, c19, c22) from t1; -timestampadd(year, c19, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c20, c1) from t1; -timestampadd(second, c20, c1) -NULL -select timestampadd(year, c20, c1) from t1; -timestampadd(year, c20, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c20, c2) from t1; -timestampadd(second, c20, c2) -NULL -select timestampadd(year, c20, c2) from t1; -timestampadd(year, c20, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c20, c3) from t1; -timestampadd(second, c20, c3) -NULL -select timestampadd(year, c20, c3) from t1; -timestampadd(year, c20, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c20, c4) from t1; -timestampadd(second, c20, c4) -NULL -select timestampadd(year, c20, c4) from t1; -timestampadd(year, c20, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c20, c5) from t1; -timestampadd(second, c20, c5) -NULL -select timestampadd(year, c20, c5) from t1; -timestampadd(year, c20, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c20, c6) from t1; -timestampadd(second, c20, c6) -NULL -select timestampadd(year, c20, c6) from t1; -timestampadd(year, c20, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c20, c7) from t1; -timestampadd(second, c20, c7) -NULL -select timestampadd(year, c20, c7) from t1; -timestampadd(year, c20, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c20, c8) from t1; -timestampadd(second, c20, c8) -NULL -select timestampadd(year, c20, c8) from t1; -timestampadd(year, c20, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c20, c9) from t1; -timestampadd(second, c20, c9) -NULL -select timestampadd(year, c20, c9) from t1; -timestampadd(year, c20, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c20, c10) from t1; -timestampadd(second, c20, c10) -NULL -select timestampadd(year, c20, c10) from t1; -timestampadd(year, c20, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c20, c11) from t1; -timestampadd(second, c20, c11) -NULL -select timestampadd(year, c20, c11) from t1; -timestampadd(year, c20, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c20, c12) from t1; -timestampadd(second, c20, c12) -NULL -select timestampadd(year, c20, c12) from t1; -timestampadd(year, c20, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c20, c13) from t1; -timestampadd(second, c20, c13) -NULL -select timestampadd(year, c20, c13) from t1; -timestampadd(year, c20, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c20, c14) from t1; -timestampadd(second, c20, c14) -NULL -select timestampadd(year, c20, c14) from t1; -timestampadd(year, c20, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c20, c15) from t1; -timestampadd(second, c20, c15) -NULL -select timestampadd(year, c20, c15) from t1; -timestampadd(year, c20, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c20, c16) from t1; -timestampadd(second, c20, c16) -NULL -select timestampadd(year, c20, c16) from t1; -timestampadd(year, c20, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c20, c17) from t1; -timestampadd(second, c20, c17) -NULL -select timestampadd(year, c20, c17) from t1; -timestampadd(year, c20, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c20, c18) from t1; -timestampadd(second, c20, c18) -NULL -select timestampadd(year, c20, c18) from t1; -timestampadd(year, c20, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c20, c19) from t1; -timestampadd(second, c20, c19) -NULL -select timestampadd(year, c20, c19) from t1; -timestampadd(year, c20, c19) -NULL -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c20, c20) from t1; -timestampadd(second, c20, c20) -NULL -select timestampadd(year, c20, c20) from t1; -timestampadd(year, c20, c20) -NULL -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c20, c21) from t1; -timestampadd(second, c20, c21) -NULL -select timestampadd(year, c20, c21) from t1; -timestampadd(year, c20, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c20, c22) from t1; -timestampadd(second, c20, c22) -NULL -select timestampadd(year, c20, c22) from t1; -timestampadd(year, c20, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c21, c1) from t1; -timestampadd(second, c21, c1) -NULL -select timestampadd(year, c21, c1) from t1; -timestampadd(year, c21, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c21, c2) from t1; -timestampadd(second, c21, c2) -NULL -select timestampadd(year, c21, c2) from t1; -timestampadd(year, c21, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c21, c3) from t1; -timestampadd(second, c21, c3) -NULL -select timestampadd(year, c21, c3) from t1; -timestampadd(year, c21, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c21, c4) from t1; -timestampadd(second, c21, c4) -NULL -select timestampadd(year, c21, c4) from t1; -timestampadd(year, c21, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c21, c5) from t1; -timestampadd(second, c21, c5) -NULL -select timestampadd(year, c21, c5) from t1; -timestampadd(year, c21, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c21, c6) from t1; -timestampadd(second, c21, c6) -NULL -select timestampadd(year, c21, c6) from t1; -timestampadd(year, c21, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c21, c7) from t1; -timestampadd(second, c21, c7) -NULL -select timestampadd(year, c21, c7) from t1; -timestampadd(year, c21, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c21, c8) from t1; -timestampadd(second, c21, c8) -NULL -select timestampadd(year, c21, c8) from t1; -timestampadd(year, c21, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c21, c9) from t1; -timestampadd(second, c21, c9) -NULL -select timestampadd(year, c21, c9) from t1; -timestampadd(year, c21, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c21, c10) from t1; -timestampadd(second, c21, c10) -NULL -select timestampadd(year, c21, c10) from t1; -timestampadd(year, c21, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c21, c11) from t1; -timestampadd(second, c21, c11) -NULL -select timestampadd(year, c21, c11) from t1; -timestampadd(year, c21, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c21, c12) from t1; -timestampadd(second, c21, c12) -NULL -select timestampadd(year, c21, c12) from t1; -timestampadd(year, c21, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c21, c13) from t1; -timestampadd(second, c21, c13) -NULL -select timestampadd(year, c21, c13) from t1; -timestampadd(year, c21, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c21, c14) from t1; -timestampadd(second, c21, c14) -NULL -select timestampadd(year, c21, c14) from t1; -timestampadd(year, c21, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c21, c15) from t1; -timestampadd(second, c21, c15) -NULL -select timestampadd(year, c21, c15) from t1; -timestampadd(year, c21, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c21, c16) from t1; -timestampadd(second, c21, c16) -NULL -select timestampadd(year, c21, c16) from t1; -timestampadd(year, c21, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c21, c17) from t1; -timestampadd(second, c21, c17) -NULL -select timestampadd(year, c21, c17) from t1; -timestampadd(year, c21, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c21, c18) from t1; -timestampadd(second, c21, c18) -NULL -select timestampadd(year, c21, c18) from t1; -timestampadd(year, c21, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c21, c19) from t1; -timestampadd(second, c21, c19) -2019-12-01 12:00:10 -select timestampadd(year, c21, c19) from t1; -timestampadd(year, c21, c19) -2029-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c21, c20) from t1; -timestampadd(second, c21, c20) -2019-12-03 06:00:10 -select timestampadd(year, c21, c20) from t1; -timestampadd(year, c21, c20) -2029-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c21, c21) from t1; -timestampadd(second, c21, c21) -NULL -select timestampadd(year, c21, c21) from t1; -timestampadd(year, c21, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c21, c22) from t1; -timestampadd(second, c21, c22) -NULL -select timestampadd(year, c21, c22) from t1; -timestampadd(year, c21, c22) -NULL -select timestampadd(second, null, c1) from t1; -timestampadd(second, null, c1) -NULL -select timestampadd(second, c22, c1) from t1; -timestampadd(second, c22, c1) -NULL -select timestampadd(year, c22, c1) from t1; -timestampadd(year, c22, c1) -NULL -select timestampadd(second, null, c2) from t1; -timestampadd(second, null, c2) -NULL -select timestampadd(second, c22, c2) from t1; -timestampadd(second, c22, c2) -NULL -select timestampadd(year, c22, c2) from t1; -timestampadd(year, c22, c2) -NULL -select timestampadd(second, null, c3) from t1; -timestampadd(second, null, c3) -NULL -select timestampadd(second, c22, c3) from t1; -timestampadd(second, c22, c3) -NULL -select timestampadd(year, c22, c3) from t1; -timestampadd(year, c22, c3) -NULL -select timestampadd(second, null, c4) from t1; -timestampadd(second, null, c4) -NULL -select timestampadd(second, c22, c4) from t1; -timestampadd(second, c22, c4) -NULL -select timestampadd(year, c22, c4) from t1; -timestampadd(year, c22, c4) -NULL -select timestampadd(second, null, c5) from t1; -timestampadd(second, null, c5) -NULL -select timestampadd(second, c22, c5) from t1; -timestampadd(second, c22, c5) -NULL -select timestampadd(year, c22, c5) from t1; -timestampadd(year, c22, c5) -NULL -select timestampadd(second, null, c6) from t1; -timestampadd(second, null, c6) -NULL -select timestampadd(second, c22, c6) from t1; -timestampadd(second, c22, c6) -NULL -select timestampadd(year, c22, c6) from t1; -timestampadd(year, c22, c6) -NULL -select timestampadd(second, null, c7) from t1; -timestampadd(second, null, c7) -NULL -select timestampadd(second, c22, c7) from t1; -timestampadd(second, c22, c7) -NULL -select timestampadd(year, c22, c7) from t1; -timestampadd(year, c22, c7) -NULL -select timestampadd(second, null, c8) from t1; -timestampadd(second, null, c8) -NULL -select timestampadd(second, c22, c8) from t1; -timestampadd(second, c22, c8) -NULL -select timestampadd(year, c22, c8) from t1; -timestampadd(year, c22, c8) -NULL -select timestampadd(second, null, c9) from t1; -timestampadd(second, null, c9) -NULL -select timestampadd(second, c22, c9) from t1; -timestampadd(second, c22, c9) -NULL -select timestampadd(year, c22, c9) from t1; -timestampadd(year, c22, c9) -NULL -select timestampadd(second, null, c10) from t1; -timestampadd(second, null, c10) -NULL -select timestampadd(second, c22, c10) from t1; -timestampadd(second, c22, c10) -NULL -select timestampadd(year, c22, c10) from t1; -timestampadd(year, c22, c10) -NULL -select timestampadd(second, null, c11) from t1; -timestampadd(second, null, c11) -NULL -select timestampadd(second, c22, c11) from t1; -timestampadd(second, c22, c11) -NULL -select timestampadd(year, c22, c11) from t1; -timestampadd(year, c22, c11) -NULL -select timestampadd(second, null, c12) from t1; -timestampadd(second, null, c12) -NULL -select timestampadd(second, c22, c12) from t1; -timestampadd(second, c22, c12) -NULL -select timestampadd(year, c22, c12) from t1; -timestampadd(year, c22, c12) -NULL -select timestampadd(second, null, c13) from t1; -timestampadd(second, null, c13) -NULL -select timestampadd(second, c22, c13) from t1; -timestampadd(second, c22, c13) -NULL -select timestampadd(year, c22, c13) from t1; -timestampadd(year, c22, c13) -NULL -select timestampadd(second, null, c14) from t1; -timestampadd(second, null, c14) -NULL -select timestampadd(second, c22, c14) from t1; -timestampadd(second, c22, c14) -NULL -select timestampadd(year, c22, c14) from t1; -timestampadd(year, c22, c14) -NULL -select timestampadd(second, null, c15) from t1; -timestampadd(second, null, c15) -NULL -select timestampadd(second, c22, c15) from t1; -timestampadd(second, c22, c15) -NULL -select timestampadd(year, c22, c15) from t1; -timestampadd(year, c22, c15) -NULL -select timestampadd(second, null, c16) from t1; -timestampadd(second, null, c16) -NULL -select timestampadd(second, c22, c16) from t1; -timestampadd(second, c22, c16) -NULL -select timestampadd(year, c22, c16) from t1; -timestampadd(year, c22, c16) -NULL -select timestampadd(second, null, c17) from t1; -timestampadd(second, null, c17) -NULL -select timestampadd(second, c22, c17) from t1; -timestampadd(second, c22, c17) -NULL -select timestampadd(year, c22, c17) from t1; -timestampadd(year, c22, c17) -NULL -select timestampadd(second, null, c18) from t1; -timestampadd(second, null, c18) -NULL -select timestampadd(second, c22, c18) from t1; -timestampadd(second, c22, c18) -NULL -select timestampadd(year, c22, c18) from t1; -timestampadd(year, c22, c18) -NULL -select timestampadd(second, null, c19) from t1; -timestampadd(second, null, c19) -NULL -select timestampadd(second, c22, c19) from t1; -timestampadd(second, c22, c19) -2019-12-01 12:00:11 -select timestampadd(year, c22, c19) from t1; -timestampadd(year, c22, c19) -2030-12-01 12:00:00 -select timestampadd(second, null, c20) from t1; -timestampadd(second, null, c20) -NULL -select timestampadd(second, c22, c20) from t1; -timestampadd(second, c22, c20) -2019-12-03 06:00:11 -select timestampadd(year, c22, c20) from t1; -timestampadd(year, c22, c20) -2030-12-03 06:00:00 -select timestampadd(second, null, c21) from t1; -timestampadd(second, null, c21) -NULL -select timestampadd(second, c22, c21) from t1; -timestampadd(second, c22, c21) -NULL -select timestampadd(year, c22, c21) from t1; -timestampadd(year, c22, c21) -NULL -select timestampadd(second, null, c22) from t1; -timestampadd(second, null, c22) -NULL -select timestampadd(second, c22, c22) from t1; -timestampadd(second, c22, c22) -NULL -select timestampadd(year, c22, c22) from t1; -timestampadd(year, c22, c22) -NULL -Case2: copied from timestampadd.test -select timestampadd(second,NULL,NULL); -timestampadd(second,NULL,NULL) -NULL -select timestampadd(second, 123,"2011-05-09 13:45:55"); -timestampadd(second, 123,"2011-05-09 13:45:55") -2011-05-09 13:47:58 -select timestampadd(second, -123,"2011-05-09 13:45:55"); -timestampadd(second, -123,"2011-05-09 13:45:55") -2011-05-09 13:43:52 -select timestampadd(second, 123, NULL); -timestampadd(second, 123, NULL) -NULL -select timestampadd(second, 1,"2011-12-31 23:59:59"); -timestampadd(second, 1,"2011-12-31 23:59:59") -2012-01-01 00:00:00 -select timestampadd(minute,46,"2011-05-09 13:45:55"); -timestampadd(minute,46,"2011-05-09 13:45:55") -2011-05-09 14:31:55 -select timestampadd(minute,-46,"2010-05-09 13:45:55"); -timestampadd(minute,-46,"2010-05-09 13:45:55") -2010-05-09 12:59:55 -select timestampadd(minute,45,"2011-05-09 13:45:55"); -timestampadd(minute,45,"2011-05-09 13:45:55") -2011-05-09 14:30:55 -select timestampadd(minute,-45,"2010-05-09 13:45:55"); -timestampadd(minute,-45,"2010-05-09 13:45:55") -2010-05-09 13:00:55 -select timestampadd(minute, 1,"2011-12-31 23:59:59"); -timestampadd(minute, 1,"2011-12-31 23:59:59") -2012-01-01 00:00:59 -select timestampadd(hour,5,"2011-05-09 00:00:00"); -timestampadd(hour,5,"2011-05-09 00:00:00") -2011-05-09 05:00:00 -select timestampadd(hour,-5,"2012-04-08 23:59:59"); -timestampadd(hour,-5,"2012-04-08 23:59:59") -2012-04-08 18:59:59 -select timestampadd(hour, 1,"2011-12-31 23:59:59"); -timestampadd(hour, 1,"2011-12-31 23:59:59") -2012-01-01 00:59:59 -select timestampadd(day,1,"2011-05-09 00:00:00"); -timestampadd(day,1,"2011-05-09 00:00:00") -2011-05-10 00:00:00 -select timestampadd(day,-10,"2012-04-08 23:59:59"); -timestampadd(day,-10,"2012-04-08 23:59:59") -2012-03-29 23:59:59 -select timestampadd(day, 1,"2011-12-31 23:59:59"); -timestampadd(day, 1,"2011-12-31 23:59:59") -2012-01-01 23:59:59 -select timestampadd(week,1,"2011-05-09 00:00:00"); -timestampadd(week,1,"2011-05-09 00:00:00") -2011-05-16 00:00:00 -select timestampadd(week,2,"2012-04-08 23:59:59"); -timestampadd(week,2,"2012-04-08 23:59:59") -2012-04-22 23:59:59 -select timestampadd(week,3,"2011-05-09 00:00:00"); -timestampadd(week,3,"2011-05-09 00:00:00") -2011-05-30 00:00:00 -select timestampadd(week,4,"2012-04-08 23:59:59"); -timestampadd(week,4,"2012-04-08 23:59:59") -2012-05-06 23:59:59 -select timestampadd(week,-1,"2011-05-09 00:00:00"); -timestampadd(week,-1,"2011-05-09 00:00:00") -2011-05-02 00:00:00 -select timestampadd(week,-2,"2012-04-08 23:59:59"); -timestampadd(week,-2,"2012-04-08 23:59:59") -2012-03-25 23:59:59 -select timestampadd(week,-3,"2011-05-09 00:00:00"); -timestampadd(week,-3,"2011-05-09 00:00:00") -2011-04-18 00:00:00 -select timestampadd(week,-4,"2012-04-08 23:59:59"); -timestampadd(week,-4,"2012-04-08 23:59:59") -2012-03-11 23:59:59 -select timestampadd(week,1,"2011-12-25 00:00:00"); -timestampadd(week,1,"2011-12-25 00:00:00") -2012-01-01 00:00:00 -select timestampadd(month,1,"2011-05-07 02:00:00"); -timestampadd(month,1,"2011-05-07 02:00:00") -2011-06-07 02:00:00 -select timestampadd(month,3,"2011-10-07 01:11:11"); -timestampadd(month,3,"2011-10-07 01:11:11") -2012-01-07 01:11:11 -select timestampadd(month,5,"2015-09-07 02:00:00"); -timestampadd(month,5,"2015-09-07 02:00:00") -2016-02-07 02:00:00 -select timestampadd(month,-6,"2011-05-07 02:00:00"); -timestampadd(month,-6,"2011-05-07 02:00:00") -2010-11-07 02:00:00 -select timestampadd(month,-12,"2011-10-07 01:11:11"); -timestampadd(month,-12,"2011-10-07 01:11:11") -2010-10-07 01:11:11 -select timestampadd(month,-54,"2015-09-07 02:00:00"); -timestampadd(month,-54,"2015-09-07 02:00:00") -2011-03-07 02:00:00 -select timestampadd(month,1,"2015-12-07 02:00:00"); -timestampadd(month,1,"2015-12-07 02:00:00") -2016-01-07 02:00:00 -select timestampadd(quarter,1,"2015-05-09"); -timestampadd(quarter,1,"2015-05-09") -2015-08-09 00:00:00 -select timestampadd(quarter,2,"2015-04-07"); -timestampadd(quarter,2,"2015-04-07") -2015-10-07 00:00:00 -select timestampadd(quarter,3,"2015-05-07"); -timestampadd(quarter,3,"2015-05-07") -2016-02-07 00:00:00 -select timestampadd(quarter,-1,"2015-05-09"); -timestampadd(quarter,-1,"2015-05-09") -2015-02-09 00:00:00 -select timestampadd(quarter,-2,"2015-04-07"); -timestampadd(quarter,-2,"2015-04-07") -2014-10-07 00:00:00 -select timestampadd(quarter,-3,"2015-05-07"); -timestampadd(quarter,-3,"2015-05-07") -2014-08-07 00:00:00 -select timestampadd(quarter,1,"2015-11-07"); -timestampadd(quarter,1,"2015-11-07") -2016-02-07 00:00:00 -select timestampadd(year,1,"2015-05-09"); -timestampadd(year,1,"2015-05-09") -2016-05-09 00:00:00 -select timestampadd(year,2,"2015-04-07"); -timestampadd(year,2,"2015-04-07") -2017-04-07 00:00:00 -select timestampadd(year,3,"2015-05-07"); -timestampadd(year,3,"2015-05-07") -2018-05-07 00:00:00 -select timestampadd(year,-1,"2015-05-09"); -timestampadd(year,-1,"2015-05-09") -2014-05-09 00:00:00 -select timestampadd(year,-2,"2015-04-07"); -timestampadd(year,-2,"2015-04-07") -2013-04-07 00:00:00 -select timestampadd(year,-3,"2015-05-07"); -timestampadd(year,-3,"2015-05-07") -2012-05-07 00:00:00 -select timestampadd(year,1,"2036-05-07"); -timestampadd(year,1,"2036-05-07") -2037-05-07 00:00:00 -select timestampadd(second, 123456789,"2011-05-09 13:45:55"); -timestampadd(second, 123456789,"2011-05-09 13:45:55") -2015-04-07 11:19:04 -select timestampadd(second, -123456789,"2011-05-09 13:45:55"); -timestampadd(second, -123456789,"2011-05-09 13:45:55") -2007-06-10 16:12:46 -select timestampadd(second, 123456789, NULL); -timestampadd(second, 123456789, NULL) -NULL -select timestampadd(minute,123456789,"2011-05-09 13:45:55"); -timestampadd(minute,123456789,"2011-05-09 13:45:55") -2246-01-31 10:54:55 -select timestampadd(minute,-123456789,"2010-05-09 13:45:55"); -timestampadd(minute,-123456789,"2010-05-09 13:45:55") -1775-08-15 16:36:55 -select timestampadd(minute,123456789,"2011-05-09 13:45:55"); -timestampadd(minute,123456789,"2011-05-09 13:45:55") -2246-01-31 10:54:55 -select timestampadd(minute,-123456789,"2010-05-09 13:45:55"); -timestampadd(minute,-123456789,"2010-05-09 13:45:55") -1775-08-15 16:36:55 -select timestampadd(hour,123456789,"2011-05-09 00:00:00"); -timestampadd(hour,123456789,"2011-05-09 00:00:00") -NULL -select timestampadd(hour,-123456789,"2012-04-08 23:59:59"); -timestampadd(hour,-123456789,"2012-04-08 23:59:59") -NULL -select timestampadd(day,123456789,"2011-05-09 00:00:00"); -timestampadd(day,123456789,"2011-05-09 00:00:00") -NULL -select timestampadd(day,-123456789,"2012-04-08 23:59:59"); -timestampadd(day,-123456789,"2012-04-08 23:59:59") -NULL -select timestampadd(week,123456789,"2011-05-09 00:00:00"); -timestampadd(week,123456789,"2011-05-09 00:00:00") -NULL -select timestampadd(week,123456789,"2012-04-08 23:59:59"); -timestampadd(week,123456789,"2012-04-08 23:59:59") -NULL -select timestampadd(week,123456789,"2011-05-09 00:00:00"); -timestampadd(week,123456789,"2011-05-09 00:00:00") -NULL -select timestampadd(week,123456789,"2012-04-08 23:59:59"); -timestampadd(week,123456789,"2012-04-08 23:59:59") -NULL -select timestampadd(week,-123456789,"2011-05-09 00:00:00"); -timestampadd(week,-123456789,"2011-05-09 00:00:00") -NULL -select timestampadd(week,-123456789,"2012-04-08 23:59:59"); -timestampadd(week,-123456789,"2012-04-08 23:59:59") -NULL -select timestampadd(week,-123456789,"2011-05-09 00:00:00"); -timestampadd(week,-123456789,"2011-05-09 00:00:00") -NULL -select timestampadd(week,-123456789,"2012-04-08 23:59:59"); -timestampadd(week,-123456789,"2012-04-08 23:59:59") -NULL -select timestampadd(month,123456789,"2011-05-07 02:00:00"); -timestampadd(month,123456789,"2011-05-07 02:00:00") -NULL -select timestampadd(month,123456789,"2011-10-07 01:11:11"); -timestampadd(month,123456789,"2011-10-07 01:11:11") -NULL -select timestampadd(month,123456789,"2015-09-07 02:00:00"); -timestampadd(month,123456789,"2015-09-07 02:00:00") -NULL -select timestampadd(month,-123456789,"2011-05-07 02:00:00"); -timestampadd(month,-123456789,"2011-05-07 02:00:00") -NULL -select timestampadd(month,-123456789,"2011-10-07 01:11:11"); -timestampadd(month,-123456789,"2011-10-07 01:11:11") -NULL -select timestampadd(month,-123456789,"2015-09-07 02:00:00"); -timestampadd(month,-123456789,"2015-09-07 02:00:00") -NULL -select timestampadd(quarter,123456789,"2015-05-09"); -timestampadd(quarter,123456789,"2015-05-09") -NULL -select timestampadd(quarter,123456789,"2015-04-07"); -timestampadd(quarter,123456789,"2015-04-07") -NULL -select timestampadd(quarter,123456789,"2015-05-07"); -timestampadd(quarter,123456789,"2015-05-07") -NULL -select timestampadd(quarter,-123456789,"2015-05-09"); -timestampadd(quarter,-123456789,"2015-05-09") -NULL -select timestampadd(quarter,-123456789,"2015-04-07"); -timestampadd(quarter,-123456789,"2015-04-07") -NULL -select timestampadd(quarter,-123456789,"2015-05-07"); -timestampadd(quarter,-123456789,"2015-05-07") -NULL -select timestampadd(year,123456789,"2015-05-09"); -timestampadd(year,123456789,"2015-05-09") -NULL -select timestampadd(year,123456789,"2015-04-07"); -timestampadd(year,123456789,"2015-04-07") -NULL -select timestampadd(year,123456789,"2015-05-07"); -timestampadd(year,123456789,"2015-05-07") -NULL -select timestampadd(year,-123456789,"2015-05-09"); -timestampadd(year,-123456789,"2015-05-09") -NULL -select timestampadd(year,-123456789,"2015-04-07"); -timestampadd(year,-123456789,"2015-04-07") -NULL -select timestampadd(year,-123456789,"2015-05-07"); -timestampadd(year,-123456789,"2015-05-07") -NULL -select timestampadd(year,1,"9999-05-07"); -timestampadd(year,1,"9999-05-07") -NULL -select timestampadd(year,1,"2036-05-07"); -timestampadd(year,1,"2036-05-07") -2037-05-07 00:00:00 -set time_zone='-5:00'; -create table sb(a timestamp); -insert into sb values ("2010-01-01 00:00:00"); -set time_zone='-5:00'; -alter system flush plan cache global; -set @@ob_enable_plan_cache = 0; -select timestampadd(hour,1,a) from sb; -timestampadd(hour,1,a) -2010-01-01 01:00:00 -select timestampadd(hour,-1,a) from sb; -timestampadd(hour,-1,a) -2009-12-31 23:00:00 -drop table sb; -set time_zone='+6:00'; -create table sb(a datetime); -insert into sb values ("2010-08-06 12:34:56"); -set time_zone='-7:00'; -alter system flush plan cache global; -select timestampadd(hour,1,a) from sb; -timestampadd(hour,1,a) -2010-08-06 13:34:56 -select timestampadd(hour,-1,a) from sb; -timestampadd(hour,-1,a) -2010-08-06 11:34:56 -drop table sb; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_todays.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_todays.result deleted file mode 100644 index 4eff5049a..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_todays.result +++ /dev/null @@ -1,2128 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -// sleep 2 -drop table if exists t1, t2; -create table t1(col_int int, col_decimal decimal, col_varchar varchar(100), -col_date date, col_datetime datetime, col_timestamp timestamp, -col_null int); -insert into t1 values(123, 123.123, 'invalid char', '2020-01-01 12:12:12', '0000-00-00 00:00:00.000', '2020-01-01 12:12:12.1234', null); -insert into t1 values(123, 123.123, '2020-01-01', '2019-01-01', '0000-00-00', '2020-01-01', null); -// to check type -create table t2 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30)); -insert into t2 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5'); -insert into t2 values(-1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --3.5, 4.5, --5.5, 6.5, --7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5'); -// sleep 2 -select col_int, to_days(col_int) from t1; -col_int to_days(col_int) -123 730507 -123 730507 -select col_decimal, to_days(col_decimal) from t1; -col_decimal to_days(col_decimal) -123 730507 -123 730507 -select col_varchar, to_days(col_varchar) from t1; -col_varchar to_days(col_varchar) -invalid char NULL -2020-01-01 737790 -select col_date, to_days(col_date) from t1; -col_date to_days(col_date) -2020-01-01 737790 -2019-01-01 737425 -select col_datetime, to_days(col_datetime) from t1; -col_datetime to_days(col_datetime) -0000-00-00 00:00:00 NULL -0000-00-00 00:00:00 NULL -select col_timestamp, to_days(col_timestamp) from t1; -col_timestamp to_days(col_timestamp) -2020-01-01 12:12:12 737790 -2020-01-01 00:00:00 737790 -select to_days(col_null) from t1; -to_days(col_null) -NULL -NULL -select col_int, time_to_usec(col_int) from t1; -ERROR 42000: Invalid argument for time_to_usec() -select col_decimal, time_to_usec(col_decimal) from t1; -ERROR 42000: Invalid argument for time_to_usec() -select col_varchar, time_to_usec(col_varchar) from t1; -col_varchar time_to_usec(col_varchar) -invalid char -9223372022400000000 -2020-01-01 1577808000000000 -select col_date, time_to_usec(col_date) from t1; -col_date time_to_usec(col_date) -2020-01-01 1577808000000000 -2019-01-01 1546272000000000 -select col_datetime, time_to_usec(col_datetime) from t1; -col_datetime time_to_usec(col_datetime) -0000-00-00 00:00:00 -9223372022400000000 -0000-00-00 00:00:00 -9223372022400000000 -select col_timestamp, time_to_usec(col_timestamp) from t1; -col_timestamp time_to_usec(col_timestamp) -2020-01-01 12:12:12 1577851932000000 -2020-01-01 00:00:00 1577808000000000 -select time_to_usec(col_null) from t1; -ERROR 42000: Invalid argument for time_to_usec() -select col_int, usec_to_time(col_int) from t1; -col_int usec_to_time(col_int) -123 1970-01-01 08:00:00.000123 -123 1970-01-01 08:00:00.000123 -select col_decimal, usec_to_time(col_decimal) from t1; -col_decimal usec_to_time(col_decimal) -123 1970-01-01 08:00:00.000123 -123 1970-01-01 08:00:00.000123 -select col_varchar, usec_to_time(col_varchar) from t1; -col_varchar usec_to_time(col_varchar) -invalid char 1970-01-01 08:00:00.000000 -2020-01-01 1970-01-01 08:00:00.002020 -select col_date, usec_to_time(col_date) from t1; -col_date usec_to_time(col_date) -2020-01-01 1970-01-01 08:00:20.200101 -2019-01-01 1970-01-01 08:00:20.190101 -select col_datetime, usec_to_time(col_datetime) from t1; -col_datetime usec_to_time(col_datetime) -0000-00-00 00:00:00 1970-01-01 08:00:00.000000 -0000-00-00 00:00:00 1970-01-01 08:00:00.000000 -select col_timestamp, usec_to_time(col_timestamp) from t1; -col_timestamp usec_to_time(col_timestamp) -2020-01-01 12:12:12 1970-08-23 03:08:21.121212 -2020-01-01 00:00:00 1970-08-23 03:08:21.000000 -select usec_to_time(col_null) from t1; -usec_to_time(col_null) -NULL -NULL -select str_to_date(null, null); -str_to_date(null, null) -NULL -select str_to_date('2019-01-01 10:10:10', null); -str_to_date('2019-01-01 10:10:10', null) -NULL -select str_to_date(null, '%Y-%c-%d %T'); -str_to_date(null, '%Y-%c-%d %T') -NULL -select str_to_date('2019-01-01 10:10:10', '%Y-%c-%d %T'); -str_to_date('2019-01-01 10:10:10', '%Y-%c-%d %T') -2019-01-01 10:10:10 -select str_to_date('invalid char', '%Y-%c-%d %T'); -str_to_date('invalid char', '%Y-%c-%d %T') -NULL -select str_to_date('2019-01-01 10:10:10', 'invalid char'); -str_to_date('2019-01-01 10:10:10', 'invalid char') -NULL -select to_days(c1), time_to_usec(c1), usec_to_time(c1) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c1, c1) from t2; -str_to_date(c1, c1) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c1, c2) from t2; -str_to_date(c1, c2) -NULL -NULL -select str_to_date(c1, c3) from t2; -str_to_date(c1, c3) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c1, c4) from t2; -str_to_date(c1, c4) -NULL -NULL -select str_to_date(c1, c5) from t2; -str_to_date(c1, c5) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c1, c6) from t2; -str_to_date(c1, c6) -NULL -NULL -select str_to_date(c1, c7) from t2; -str_to_date(c1, c7) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c1, c8) from t2; -str_to_date(c1, c8) -NULL -NULL -select str_to_date(c1, c9) from t2; -str_to_date(c1, c9) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c1, c10) from t2; -str_to_date(c1, c10) -NULL -NULL -select str_to_date(c1, c11) from t2; -str_to_date(c1, c11) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c1, c12) from t2; -str_to_date(c1, c12) -NULL -NULL -select str_to_date(c1, c13) from t2; -str_to_date(c1, c13) -NULL -NULL -select str_to_date(c1, c14) from t2; -str_to_date(c1, c14) -NULL -NULL -select str_to_date(c1, c15) from t2; -str_to_date(c1, c15) -NULL -NULL -select str_to_date(c1, c16) from t2; -str_to_date(c1, c16) -NULL -NULL -select str_to_date(c1, c17) from t2; -str_to_date(c1, c17) -NULL -NULL -select str_to_date(c1, c18) from t2; -str_to_date(c1, c18) -NULL -NULL -select str_to_date(c1, c19) from t2; -str_to_date(c1, c19) -NULL -NULL -select str_to_date(c1, c20) from t2; -str_to_date(c1, c20) -NULL -NULL -select str_to_date(c1, c21) from t2; -str_to_date(c1, c21) -NULL -NULL -select str_to_date(c1, c22) from t2; -str_to_date(c1, c22) -1970-01-01 00:00:00.000000 -NULL -select to_days(c2), time_to_usec(c2), usec_to_time(c2) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c2, c1) from t2; -str_to_date(c2, c1) -NULL -NULL -select str_to_date(c2, c2) from t2; -str_to_date(c2, c2) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c2, c3) from t2; -str_to_date(c2, c3) -NULL -NULL -select str_to_date(c2, c4) from t2; -str_to_date(c2, c4) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c2, c5) from t2; -str_to_date(c2, c5) -NULL -NULL -select str_to_date(c2, c6) from t2; -str_to_date(c2, c6) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c2, c7) from t2; -str_to_date(c2, c7) -NULL -NULL -select str_to_date(c2, c8) from t2; -str_to_date(c2, c8) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c2, c9) from t2; -str_to_date(c2, c9) -NULL -NULL -select str_to_date(c2, c10) from t2; -str_to_date(c2, c10) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c2, c11) from t2; -str_to_date(c2, c11) -NULL -NULL -select str_to_date(c2, c12) from t2; -str_to_date(c2, c12) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c2, c13) from t2; -str_to_date(c2, c13) -NULL -NULL -select str_to_date(c2, c14) from t2; -str_to_date(c2, c14) -NULL -NULL -select str_to_date(c2, c15) from t2; -str_to_date(c2, c15) -NULL -NULL -select str_to_date(c2, c16) from t2; -str_to_date(c2, c16) -NULL -NULL -select str_to_date(c2, c17) from t2; -str_to_date(c2, c17) -NULL -NULL -select str_to_date(c2, c18) from t2; -str_to_date(c2, c18) -NULL -NULL -select str_to_date(c2, c19) from t2; -str_to_date(c2, c19) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c2, c20) from t2; -str_to_date(c2, c20) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c2, c21) from t2; -str_to_date(c2, c21) -NULL -NULL -select str_to_date(c2, c22) from t2; -str_to_date(c2, c22) -NULL -NULL -select to_days(c3), time_to_usec(c3), usec_to_time(c3) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c3, c1) from t2; -str_to_date(c3, c1) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c3, c2) from t2; -str_to_date(c3, c2) -NULL -NULL -select str_to_date(c3, c3) from t2; -str_to_date(c3, c3) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c3, c4) from t2; -str_to_date(c3, c4) -NULL -NULL -select str_to_date(c3, c5) from t2; -str_to_date(c3, c5) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c3, c6) from t2; -str_to_date(c3, c6) -NULL -NULL -select str_to_date(c3, c7) from t2; -str_to_date(c3, c7) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c3, c8) from t2; -str_to_date(c3, c8) -NULL -NULL -select str_to_date(c3, c9) from t2; -str_to_date(c3, c9) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c3, c10) from t2; -str_to_date(c3, c10) -NULL -NULL -select str_to_date(c3, c11) from t2; -str_to_date(c3, c11) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c3, c12) from t2; -str_to_date(c3, c12) -NULL -NULL -select str_to_date(c3, c13) from t2; -str_to_date(c3, c13) -NULL -NULL -select str_to_date(c3, c14) from t2; -str_to_date(c3, c14) -NULL -NULL -select str_to_date(c3, c15) from t2; -str_to_date(c3, c15) -NULL -NULL -select str_to_date(c3, c16) from t2; -str_to_date(c3, c16) -NULL -NULL -select str_to_date(c3, c17) from t2; -str_to_date(c3, c17) -NULL -NULL -select str_to_date(c3, c18) from t2; -str_to_date(c3, c18) -NULL -NULL -select str_to_date(c3, c19) from t2; -str_to_date(c3, c19) -NULL -NULL -select str_to_date(c3, c20) from t2; -str_to_date(c3, c20) -NULL -NULL -select str_to_date(c3, c21) from t2; -str_to_date(c3, c21) -NULL -NULL -select str_to_date(c3, c22) from t2; -str_to_date(c3, c22) -1970-01-01 00:00:00.000000 -NULL -select to_days(c4), time_to_usec(c4), usec_to_time(c4) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c4, c1) from t2; -str_to_date(c4, c1) -NULL -NULL -select str_to_date(c4, c2) from t2; -str_to_date(c4, c2) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c4, c3) from t2; -str_to_date(c4, c3) -NULL -NULL -select str_to_date(c4, c4) from t2; -str_to_date(c4, c4) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c4, c5) from t2; -str_to_date(c4, c5) -NULL -NULL -select str_to_date(c4, c6) from t2; -str_to_date(c4, c6) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c4, c7) from t2; -str_to_date(c4, c7) -NULL -NULL -select str_to_date(c4, c8) from t2; -str_to_date(c4, c8) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c4, c9) from t2; -str_to_date(c4, c9) -NULL -NULL -select str_to_date(c4, c10) from t2; -str_to_date(c4, c10) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c4, c11) from t2; -str_to_date(c4, c11) -NULL -NULL -select str_to_date(c4, c12) from t2; -str_to_date(c4, c12) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c4, c13) from t2; -str_to_date(c4, c13) -NULL -NULL -select str_to_date(c4, c14) from t2; -str_to_date(c4, c14) -NULL -NULL -select str_to_date(c4, c15) from t2; -str_to_date(c4, c15) -NULL -NULL -select str_to_date(c4, c16) from t2; -str_to_date(c4, c16) -NULL -NULL -select str_to_date(c4, c17) from t2; -str_to_date(c4, c17) -NULL -NULL -select str_to_date(c4, c18) from t2; -str_to_date(c4, c18) -NULL -NULL -select str_to_date(c4, c19) from t2; -str_to_date(c4, c19) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c4, c20) from t2; -str_to_date(c4, c20) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c4, c21) from t2; -str_to_date(c4, c21) -NULL -NULL -select str_to_date(c4, c22) from t2; -str_to_date(c4, c22) -NULL -NULL -select to_days(c5), time_to_usec(c5), usec_to_time(c5) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c5, c1) from t2; -str_to_date(c5, c1) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c5, c2) from t2; -str_to_date(c5, c2) -NULL -NULL -select str_to_date(c5, c3) from t2; -str_to_date(c5, c3) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c5, c4) from t2; -str_to_date(c5, c4) -NULL -NULL -select str_to_date(c5, c5) from t2; -str_to_date(c5, c5) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c5, c6) from t2; -str_to_date(c5, c6) -NULL -NULL -select str_to_date(c5, c7) from t2; -str_to_date(c5, c7) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c5, c8) from t2; -str_to_date(c5, c8) -NULL -NULL -select str_to_date(c5, c9) from t2; -str_to_date(c5, c9) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c5, c10) from t2; -str_to_date(c5, c10) -NULL -NULL -select str_to_date(c5, c11) from t2; -str_to_date(c5, c11) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c5, c12) from t2; -str_to_date(c5, c12) -NULL -NULL -select str_to_date(c5, c13) from t2; -str_to_date(c5, c13) -NULL -NULL -select str_to_date(c5, c14) from t2; -str_to_date(c5, c14) -NULL -NULL -select str_to_date(c5, c15) from t2; -str_to_date(c5, c15) -NULL -NULL -select str_to_date(c5, c16) from t2; -str_to_date(c5, c16) -NULL -NULL -select str_to_date(c5, c17) from t2; -str_to_date(c5, c17) -NULL -NULL -select str_to_date(c5, c18) from t2; -str_to_date(c5, c18) -NULL -NULL -select str_to_date(c5, c19) from t2; -str_to_date(c5, c19) -NULL -NULL -select str_to_date(c5, c20) from t2; -str_to_date(c5, c20) -NULL -NULL -select str_to_date(c5, c21) from t2; -str_to_date(c5, c21) -NULL -NULL -select str_to_date(c5, c22) from t2; -str_to_date(c5, c22) -1970-01-01 00:00:00.000000 -NULL -select to_days(c6), time_to_usec(c6), usec_to_time(c6) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c6, c1) from t2; -str_to_date(c6, c1) -NULL -NULL -select str_to_date(c6, c2) from t2; -str_to_date(c6, c2) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c6, c3) from t2; -str_to_date(c6, c3) -NULL -NULL -select str_to_date(c6, c4) from t2; -str_to_date(c6, c4) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c6, c5) from t2; -str_to_date(c6, c5) -NULL -NULL -select str_to_date(c6, c6) from t2; -str_to_date(c6, c6) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c6, c7) from t2; -str_to_date(c6, c7) -NULL -NULL -select str_to_date(c6, c8) from t2; -str_to_date(c6, c8) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c6, c9) from t2; -str_to_date(c6, c9) -NULL -NULL -select str_to_date(c6, c10) from t2; -str_to_date(c6, c10) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c6, c11) from t2; -str_to_date(c6, c11) -NULL -NULL -select str_to_date(c6, c12) from t2; -str_to_date(c6, c12) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c6, c13) from t2; -str_to_date(c6, c13) -NULL -NULL -select str_to_date(c6, c14) from t2; -str_to_date(c6, c14) -NULL -NULL -select str_to_date(c6, c15) from t2; -str_to_date(c6, c15) -NULL -NULL -select str_to_date(c6, c16) from t2; -str_to_date(c6, c16) -NULL -NULL -select str_to_date(c6, c17) from t2; -str_to_date(c6, c17) -NULL -NULL -select str_to_date(c6, c18) from t2; -str_to_date(c6, c18) -NULL -NULL -select str_to_date(c6, c19) from t2; -str_to_date(c6, c19) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c6, c20) from t2; -str_to_date(c6, c20) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c6, c21) from t2; -str_to_date(c6, c21) -NULL -NULL -select str_to_date(c6, c22) from t2; -str_to_date(c6, c22) -NULL -NULL -select to_days(c7), time_to_usec(c7), usec_to_time(c7) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c7, c1) from t2; -str_to_date(c7, c1) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c7, c2) from t2; -str_to_date(c7, c2) -NULL -NULL -select str_to_date(c7, c3) from t2; -str_to_date(c7, c3) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c7, c4) from t2; -str_to_date(c7, c4) -NULL -NULL -select str_to_date(c7, c5) from t2; -str_to_date(c7, c5) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c7, c6) from t2; -str_to_date(c7, c6) -NULL -NULL -select str_to_date(c7, c7) from t2; -str_to_date(c7, c7) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c7, c8) from t2; -str_to_date(c7, c8) -NULL -NULL -select str_to_date(c7, c9) from t2; -str_to_date(c7, c9) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c7, c10) from t2; -str_to_date(c7, c10) -NULL -NULL -select str_to_date(c7, c11) from t2; -str_to_date(c7, c11) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c7, c12) from t2; -str_to_date(c7, c12) -NULL -NULL -select str_to_date(c7, c13) from t2; -str_to_date(c7, c13) -NULL -NULL -select str_to_date(c7, c14) from t2; -str_to_date(c7, c14) -NULL -NULL -select str_to_date(c7, c15) from t2; -str_to_date(c7, c15) -NULL -NULL -select str_to_date(c7, c16) from t2; -str_to_date(c7, c16) -NULL -NULL -select str_to_date(c7, c17) from t2; -str_to_date(c7, c17) -NULL -NULL -select str_to_date(c7, c18) from t2; -str_to_date(c7, c18) -NULL -NULL -select str_to_date(c7, c19) from t2; -str_to_date(c7, c19) -NULL -NULL -select str_to_date(c7, c20) from t2; -str_to_date(c7, c20) -NULL -NULL -select str_to_date(c7, c21) from t2; -str_to_date(c7, c21) -NULL -NULL -select str_to_date(c7, c22) from t2; -str_to_date(c7, c22) -1970-01-01 00:00:00.000000 -NULL -select to_days(c8), time_to_usec(c8), usec_to_time(c8) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c8, c1) from t2; -str_to_date(c8, c1) -NULL -NULL -select str_to_date(c8, c2) from t2; -str_to_date(c8, c2) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c8, c3) from t2; -str_to_date(c8, c3) -NULL -NULL -select str_to_date(c8, c4) from t2; -str_to_date(c8, c4) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c8, c5) from t2; -str_to_date(c8, c5) -NULL -NULL -select str_to_date(c8, c6) from t2; -str_to_date(c8, c6) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c8, c7) from t2; -str_to_date(c8, c7) -NULL -NULL -select str_to_date(c8, c8) from t2; -str_to_date(c8, c8) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c8, c9) from t2; -str_to_date(c8, c9) -NULL -NULL -select str_to_date(c8, c10) from t2; -str_to_date(c8, c10) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c8, c11) from t2; -str_to_date(c8, c11) -NULL -NULL -select str_to_date(c8, c12) from t2; -str_to_date(c8, c12) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c8, c13) from t2; -str_to_date(c8, c13) -NULL -NULL -select str_to_date(c8, c14) from t2; -str_to_date(c8, c14) -NULL -NULL -select str_to_date(c8, c15) from t2; -str_to_date(c8, c15) -NULL -NULL -select str_to_date(c8, c16) from t2; -str_to_date(c8, c16) -NULL -NULL -select str_to_date(c8, c17) from t2; -str_to_date(c8, c17) -NULL -NULL -select str_to_date(c8, c18) from t2; -str_to_date(c8, c18) -NULL -NULL -select str_to_date(c8, c19) from t2; -str_to_date(c8, c19) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c8, c20) from t2; -str_to_date(c8, c20) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c8, c21) from t2; -str_to_date(c8, c21) -NULL -NULL -select str_to_date(c8, c22) from t2; -str_to_date(c8, c22) -NULL -NULL -select to_days(c9), time_to_usec(c9), usec_to_time(c9) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c9, c1) from t2; -str_to_date(c9, c1) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c9, c2) from t2; -str_to_date(c9, c2) -NULL -NULL -select str_to_date(c9, c3) from t2; -str_to_date(c9, c3) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c9, c4) from t2; -str_to_date(c9, c4) -NULL -NULL -select str_to_date(c9, c5) from t2; -str_to_date(c9, c5) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c9, c6) from t2; -str_to_date(c9, c6) -NULL -NULL -select str_to_date(c9, c7) from t2; -str_to_date(c9, c7) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c9, c8) from t2; -str_to_date(c9, c8) -NULL -NULL -select str_to_date(c9, c9) from t2; -str_to_date(c9, c9) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c9, c10) from t2; -str_to_date(c9, c10) -NULL -NULL -select str_to_date(c9, c11) from t2; -str_to_date(c9, c11) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c9, c12) from t2; -str_to_date(c9, c12) -NULL -NULL -select str_to_date(c9, c13) from t2; -str_to_date(c9, c13) -NULL -NULL -select str_to_date(c9, c14) from t2; -str_to_date(c9, c14) -NULL -NULL -select str_to_date(c9, c15) from t2; -str_to_date(c9, c15) -NULL -NULL -select str_to_date(c9, c16) from t2; -str_to_date(c9, c16) -NULL -NULL -select str_to_date(c9, c17) from t2; -str_to_date(c9, c17) -NULL -NULL -select str_to_date(c9, c18) from t2; -str_to_date(c9, c18) -NULL -NULL -select str_to_date(c9, c19) from t2; -str_to_date(c9, c19) -NULL -NULL -select str_to_date(c9, c20) from t2; -str_to_date(c9, c20) -NULL -NULL -select str_to_date(c9, c21) from t2; -str_to_date(c9, c21) -NULL -NULL -select str_to_date(c9, c22) from t2; -str_to_date(c9, c22) -1970-01-01 00:00:00.000000 -NULL -select to_days(c10), time_to_usec(c10), usec_to_time(c10) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c10, c1) from t2; -str_to_date(c10, c1) -NULL -NULL -select str_to_date(c10, c2) from t2; -str_to_date(c10, c2) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c10, c3) from t2; -str_to_date(c10, c3) -NULL -NULL -select str_to_date(c10, c4) from t2; -str_to_date(c10, c4) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c10, c5) from t2; -str_to_date(c10, c5) -NULL -NULL -select str_to_date(c10, c6) from t2; -str_to_date(c10, c6) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c10, c7) from t2; -str_to_date(c10, c7) -NULL -NULL -select str_to_date(c10, c8) from t2; -str_to_date(c10, c8) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c10, c9) from t2; -str_to_date(c10, c9) -NULL -NULL -select str_to_date(c10, c10) from t2; -str_to_date(c10, c10) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c10, c11) from t2; -str_to_date(c10, c11) -NULL -NULL -select str_to_date(c10, c12) from t2; -str_to_date(c10, c12) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c10, c13) from t2; -str_to_date(c10, c13) -NULL -NULL -select str_to_date(c10, c14) from t2; -str_to_date(c10, c14) -NULL -NULL -select str_to_date(c10, c15) from t2; -str_to_date(c10, c15) -NULL -NULL -select str_to_date(c10, c16) from t2; -str_to_date(c10, c16) -NULL -NULL -select str_to_date(c10, c17) from t2; -str_to_date(c10, c17) -NULL -NULL -select str_to_date(c10, c18) from t2; -str_to_date(c10, c18) -NULL -NULL -select str_to_date(c10, c19) from t2; -str_to_date(c10, c19) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c10, c20) from t2; -str_to_date(c10, c20) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c10, c21) from t2; -str_to_date(c10, c21) -NULL -NULL -select str_to_date(c10, c22) from t2; -str_to_date(c10, c22) -NULL -NULL -select to_days(c11), time_to_usec(c11), usec_to_time(c11) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c11, c1) from t2; -str_to_date(c11, c1) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c11, c2) from t2; -str_to_date(c11, c2) -NULL -NULL -select str_to_date(c11, c3) from t2; -str_to_date(c11, c3) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c11, c4) from t2; -str_to_date(c11, c4) -NULL -NULL -select str_to_date(c11, c5) from t2; -str_to_date(c11, c5) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c11, c6) from t2; -str_to_date(c11, c6) -NULL -NULL -select str_to_date(c11, c7) from t2; -str_to_date(c11, c7) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c11, c8) from t2; -str_to_date(c11, c8) -NULL -NULL -select str_to_date(c11, c9) from t2; -str_to_date(c11, c9) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c11, c10) from t2; -str_to_date(c11, c10) -NULL -NULL -select str_to_date(c11, c11) from t2; -str_to_date(c11, c11) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c11, c12) from t2; -str_to_date(c11, c12) -NULL -NULL -select str_to_date(c11, c13) from t2; -str_to_date(c11, c13) -NULL -NULL -select str_to_date(c11, c14) from t2; -str_to_date(c11, c14) -NULL -NULL -select str_to_date(c11, c15) from t2; -str_to_date(c11, c15) -NULL -NULL -select str_to_date(c11, c16) from t2; -str_to_date(c11, c16) -NULL -NULL -select str_to_date(c11, c17) from t2; -str_to_date(c11, c17) -NULL -NULL -select str_to_date(c11, c18) from t2; -str_to_date(c11, c18) -NULL -NULL -select str_to_date(c11, c19) from t2; -str_to_date(c11, c19) -NULL -NULL -select str_to_date(c11, c20) from t2; -str_to_date(c11, c20) -NULL -NULL -select str_to_date(c11, c21) from t2; -str_to_date(c11, c21) -NULL -NULL -select str_to_date(c11, c22) from t2; -str_to_date(c11, c22) -1970-01-01 00:00:00.000000 -NULL -select to_days(c12), time_to_usec(c12), usec_to_time(c12) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c12, c1) from t2; -str_to_date(c12, c1) -NULL -NULL -select str_to_date(c12, c2) from t2; -str_to_date(c12, c2) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c12, c3) from t2; -str_to_date(c12, c3) -NULL -NULL -select str_to_date(c12, c4) from t2; -str_to_date(c12, c4) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c12, c5) from t2; -str_to_date(c12, c5) -NULL -NULL -select str_to_date(c12, c6) from t2; -str_to_date(c12, c6) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c12, c7) from t2; -str_to_date(c12, c7) -NULL -NULL -select str_to_date(c12, c8) from t2; -str_to_date(c12, c8) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c12, c9) from t2; -str_to_date(c12, c9) -NULL -NULL -select str_to_date(c12, c10) from t2; -str_to_date(c12, c10) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c12, c11) from t2; -str_to_date(c12, c11) -NULL -NULL -select str_to_date(c12, c12) from t2; -str_to_date(c12, c12) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c12, c13) from t2; -str_to_date(c12, c13) -NULL -NULL -select str_to_date(c12, c14) from t2; -str_to_date(c12, c14) -NULL -NULL -select str_to_date(c12, c15) from t2; -str_to_date(c12, c15) -NULL -NULL -select str_to_date(c12, c16) from t2; -str_to_date(c12, c16) -NULL -NULL -select str_to_date(c12, c17) from t2; -str_to_date(c12, c17) -NULL -NULL -select str_to_date(c12, c18) from t2; -str_to_date(c12, c18) -NULL -NULL -select str_to_date(c12, c19) from t2; -str_to_date(c12, c19) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c12, c20) from t2; -str_to_date(c12, c20) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c12, c21) from t2; -str_to_date(c12, c21) -NULL -NULL -select str_to_date(c12, c22) from t2; -str_to_date(c12, c22) -NULL -NULL -select to_days(c13), time_to_usec(c13), usec_to_time(c13) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c13, c1) from t2; -str_to_date(c13, c1) -NULL -NULL -select str_to_date(c13, c2) from t2; -str_to_date(c13, c2) -NULL -NULL -select str_to_date(c13, c3) from t2; -str_to_date(c13, c3) -NULL -NULL -select str_to_date(c13, c4) from t2; -str_to_date(c13, c4) -NULL -NULL -select str_to_date(c13, c5) from t2; -str_to_date(c13, c5) -NULL -NULL -select str_to_date(c13, c6) from t2; -str_to_date(c13, c6) -NULL -NULL -select str_to_date(c13, c7) from t2; -str_to_date(c13, c7) -NULL -NULL -select str_to_date(c13, c8) from t2; -str_to_date(c13, c8) -NULL -NULL -select str_to_date(c13, c9) from t2; -str_to_date(c13, c9) -NULL -NULL -select str_to_date(c13, c10) from t2; -str_to_date(c13, c10) -NULL -NULL -select str_to_date(c13, c11) from t2; -str_to_date(c13, c11) -NULL -NULL -select str_to_date(c13, c12) from t2; -str_to_date(c13, c12) -NULL -NULL -select str_to_date(c13, c13) from t2; -str_to_date(c13, c13) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c13, c14) from t2; -str_to_date(c13, c14) -NULL -NULL -select str_to_date(c13, c15) from t2; -str_to_date(c13, c15) -NULL -NULL -select str_to_date(c13, c16) from t2; -str_to_date(c13, c16) -NULL -NULL -select str_to_date(c13, c17) from t2; -str_to_date(c13, c17) -NULL -NULL -select str_to_date(c13, c18) from t2; -str_to_date(c13, c18) -NULL -NULL -select str_to_date(c13, c19) from t2; -str_to_date(c13, c19) -NULL -NULL -select str_to_date(c13, c20) from t2; -str_to_date(c13, c20) -NULL -NULL -select str_to_date(c13, c21) from t2; -str_to_date(c13, c21) -NULL -NULL -select str_to_date(c13, c22) from t2; -str_to_date(c13, c22) -NULL -NULL -select to_days(c14), time_to_usec(c14), usec_to_time(c14) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c14, c1) from t2; -str_to_date(c14, c1) -NULL -NULL -select str_to_date(c14, c2) from t2; -str_to_date(c14, c2) -NULL -NULL -select str_to_date(c14, c3) from t2; -str_to_date(c14, c3) -NULL -NULL -select str_to_date(c14, c4) from t2; -str_to_date(c14, c4) -NULL -NULL -select str_to_date(c14, c5) from t2; -str_to_date(c14, c5) -NULL -NULL -select str_to_date(c14, c6) from t2; -str_to_date(c14, c6) -NULL -NULL -select str_to_date(c14, c7) from t2; -str_to_date(c14, c7) -NULL -NULL -select str_to_date(c14, c8) from t2; -str_to_date(c14, c8) -NULL -NULL -select str_to_date(c14, c9) from t2; -str_to_date(c14, c9) -NULL -NULL -select str_to_date(c14, c10) from t2; -str_to_date(c14, c10) -NULL -NULL -select str_to_date(c14, c11) from t2; -str_to_date(c14, c11) -NULL -NULL -select str_to_date(c14, c12) from t2; -str_to_date(c14, c12) -NULL -NULL -select str_to_date(c14, c13) from t2; -str_to_date(c14, c13) -NULL -NULL -select str_to_date(c14, c14) from t2; -str_to_date(c14, c14) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c14, c15) from t2; -str_to_date(c14, c15) -NULL -NULL -select str_to_date(c14, c16) from t2; -str_to_date(c14, c16) -NULL -NULL -select str_to_date(c14, c17) from t2; -str_to_date(c14, c17) -NULL -NULL -select str_to_date(c14, c18) from t2; -str_to_date(c14, c18) -NULL -NULL -select str_to_date(c14, c19) from t2; -str_to_date(c14, c19) -NULL -NULL -select str_to_date(c14, c20) from t2; -str_to_date(c14, c20) -NULL -NULL -select str_to_date(c14, c21) from t2; -str_to_date(c14, c21) -NULL -NULL -select str_to_date(c14, c22) from t2; -str_to_date(c14, c22) -NULL -NULL -select to_days(c15), time_to_usec(c15), usec_to_time(c15) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c15, c1) from t2; -str_to_date(c15, c1) -NULL -NULL -select str_to_date(c15, c2) from t2; -str_to_date(c15, c2) -NULL -NULL -select str_to_date(c15, c3) from t2; -str_to_date(c15, c3) -NULL -NULL -select str_to_date(c15, c4) from t2; -str_to_date(c15, c4) -NULL -NULL -select str_to_date(c15, c5) from t2; -str_to_date(c15, c5) -NULL -NULL -select str_to_date(c15, c6) from t2; -str_to_date(c15, c6) -NULL -NULL -select str_to_date(c15, c7) from t2; -str_to_date(c15, c7) -NULL -NULL -select str_to_date(c15, c8) from t2; -str_to_date(c15, c8) -NULL -NULL -select str_to_date(c15, c9) from t2; -str_to_date(c15, c9) -NULL -NULL -select str_to_date(c15, c10) from t2; -str_to_date(c15, c10) -NULL -NULL -select str_to_date(c15, c11) from t2; -str_to_date(c15, c11) -NULL -NULL -select str_to_date(c15, c12) from t2; -str_to_date(c15, c12) -NULL -NULL -select str_to_date(c15, c13) from t2; -str_to_date(c15, c13) -NULL -NULL -select str_to_date(c15, c14) from t2; -str_to_date(c15, c14) -NULL -NULL -select str_to_date(c15, c15) from t2; -str_to_date(c15, c15) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c15, c16) from t2; -str_to_date(c15, c16) -NULL -NULL -select str_to_date(c15, c17) from t2; -str_to_date(c15, c17) -NULL -NULL -select str_to_date(c15, c18) from t2; -str_to_date(c15, c18) -NULL -NULL -select str_to_date(c15, c19) from t2; -str_to_date(c15, c19) -NULL -NULL -select str_to_date(c15, c20) from t2; -str_to_date(c15, c20) -NULL -NULL -select str_to_date(c15, c21) from t2; -str_to_date(c15, c21) -NULL -NULL -select str_to_date(c15, c22) from t2; -str_to_date(c15, c22) -NULL -NULL -select to_days(c16), time_to_usec(c16), usec_to_time(c16) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c16, c1) from t2; -str_to_date(c16, c1) -NULL -NULL -select str_to_date(c16, c2) from t2; -str_to_date(c16, c2) -NULL -NULL -select str_to_date(c16, c3) from t2; -str_to_date(c16, c3) -NULL -NULL -select str_to_date(c16, c4) from t2; -str_to_date(c16, c4) -NULL -NULL -select str_to_date(c16, c5) from t2; -str_to_date(c16, c5) -NULL -NULL -select str_to_date(c16, c6) from t2; -str_to_date(c16, c6) -NULL -NULL -select str_to_date(c16, c7) from t2; -str_to_date(c16, c7) -NULL -NULL -select str_to_date(c16, c8) from t2; -str_to_date(c16, c8) -NULL -NULL -select str_to_date(c16, c9) from t2; -str_to_date(c16, c9) -NULL -NULL -select str_to_date(c16, c10) from t2; -str_to_date(c16, c10) -NULL -NULL -select str_to_date(c16, c11) from t2; -str_to_date(c16, c11) -NULL -NULL -select str_to_date(c16, c12) from t2; -str_to_date(c16, c12) -NULL -NULL -select str_to_date(c16, c13) from t2; -str_to_date(c16, c13) -NULL -NULL -select str_to_date(c16, c14) from t2; -str_to_date(c16, c14) -NULL -NULL -select str_to_date(c16, c15) from t2; -str_to_date(c16, c15) -NULL -NULL -select str_to_date(c16, c16) from t2; -str_to_date(c16, c16) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c16, c17) from t2; -str_to_date(c16, c17) -NULL -NULL -select str_to_date(c16, c18) from t2; -str_to_date(c16, c18) -NULL -NULL -select str_to_date(c16, c19) from t2; -str_to_date(c16, c19) -NULL -NULL -select str_to_date(c16, c20) from t2; -str_to_date(c16, c20) -NULL -NULL -select str_to_date(c16, c21) from t2; -str_to_date(c16, c21) -NULL -NULL -select str_to_date(c16, c22) from t2; -str_to_date(c16, c22) -NULL -NULL -select to_days(c17), time_to_usec(c17), usec_to_time(c17) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c17, c1) from t2; -str_to_date(c17, c1) -NULL -NULL -select str_to_date(c17, c2) from t2; -str_to_date(c17, c2) -NULL -NULL -select str_to_date(c17, c3) from t2; -str_to_date(c17, c3) -NULL -NULL -select str_to_date(c17, c4) from t2; -str_to_date(c17, c4) -NULL -NULL -select str_to_date(c17, c5) from t2; -str_to_date(c17, c5) -NULL -NULL -select str_to_date(c17, c6) from t2; -str_to_date(c17, c6) -NULL -NULL -select str_to_date(c17, c7) from t2; -str_to_date(c17, c7) -NULL -NULL -select str_to_date(c17, c8) from t2; -str_to_date(c17, c8) -NULL -NULL -select str_to_date(c17, c9) from t2; -str_to_date(c17, c9) -NULL -NULL -select str_to_date(c17, c10) from t2; -str_to_date(c17, c10) -NULL -NULL -select str_to_date(c17, c11) from t2; -str_to_date(c17, c11) -NULL -NULL -select str_to_date(c17, c12) from t2; -str_to_date(c17, c12) -NULL -NULL -select str_to_date(c17, c13) from t2; -str_to_date(c17, c13) -NULL -NULL -select str_to_date(c17, c14) from t2; -str_to_date(c17, c14) -NULL -NULL -select str_to_date(c17, c15) from t2; -str_to_date(c17, c15) -NULL -NULL -select str_to_date(c17, c16) from t2; -str_to_date(c17, c16) -NULL -NULL -select str_to_date(c17, c17) from t2; -str_to_date(c17, c17) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c17, c18) from t2; -str_to_date(c17, c18) -NULL -NULL -select str_to_date(c17, c19) from t2; -str_to_date(c17, c19) -NULL -NULL -select str_to_date(c17, c20) from t2; -str_to_date(c17, c20) -NULL -NULL -select str_to_date(c17, c21) from t2; -str_to_date(c17, c21) -NULL -NULL -select str_to_date(c17, c22) from t2; -str_to_date(c17, c22) -NULL -NULL -select to_days(c18), time_to_usec(c18), usec_to_time(c18) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c18, c1) from t2; -str_to_date(c18, c1) -NULL -NULL -select str_to_date(c18, c2) from t2; -str_to_date(c18, c2) -NULL -NULL -select str_to_date(c18, c3) from t2; -str_to_date(c18, c3) -NULL -NULL -select str_to_date(c18, c4) from t2; -str_to_date(c18, c4) -NULL -NULL -select str_to_date(c18, c5) from t2; -str_to_date(c18, c5) -NULL -NULL -select str_to_date(c18, c6) from t2; -str_to_date(c18, c6) -NULL -NULL -select str_to_date(c18, c7) from t2; -str_to_date(c18, c7) -NULL -NULL -select str_to_date(c18, c8) from t2; -str_to_date(c18, c8) -NULL -NULL -select str_to_date(c18, c9) from t2; -str_to_date(c18, c9) -NULL -NULL -select str_to_date(c18, c10) from t2; -str_to_date(c18, c10) -NULL -NULL -select str_to_date(c18, c11) from t2; -str_to_date(c18, c11) -NULL -NULL -select str_to_date(c18, c12) from t2; -str_to_date(c18, c12) -NULL -NULL -select str_to_date(c18, c13) from t2; -str_to_date(c18, c13) -NULL -NULL -select str_to_date(c18, c14) from t2; -str_to_date(c18, c14) -NULL -NULL -select str_to_date(c18, c15) from t2; -str_to_date(c18, c15) -NULL -NULL -select str_to_date(c18, c16) from t2; -str_to_date(c18, c16) -NULL -NULL -select str_to_date(c18, c17) from t2; -str_to_date(c18, c17) -NULL -NULL -select str_to_date(c18, c18) from t2; -str_to_date(c18, c18) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c18, c19) from t2; -str_to_date(c18, c19) -NULL -NULL -select str_to_date(c18, c20) from t2; -str_to_date(c18, c20) -NULL -NULL -select str_to_date(c18, c21) from t2; -str_to_date(c18, c21) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c18, c22) from t2; -str_to_date(c18, c22) -NULL -NULL -select to_days(c19), time_to_usec(c19), usec_to_time(c19) from t2; -to_days(c19) time_to_usec(c19) usec_to_time(c19) -737759 1575172800000000 1970-08-23 00:40:01.120000 -737759 1575172800000000 1970-08-23 00:40:01.120000 -select str_to_date(c19, c1) from t2; -str_to_date(c19, c1) -NULL -NULL -select str_to_date(c19, c2) from t2; -str_to_date(c19, c2) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c19, c3) from t2; -str_to_date(c19, c3) -NULL -NULL -select str_to_date(c19, c4) from t2; -str_to_date(c19, c4) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c19, c5) from t2; -str_to_date(c19, c5) -NULL -NULL -select str_to_date(c19, c6) from t2; -str_to_date(c19, c6) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c19, c7) from t2; -str_to_date(c19, c7) -NULL -NULL -select str_to_date(c19, c8) from t2; -str_to_date(c19, c8) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c19, c9) from t2; -str_to_date(c19, c9) -NULL -NULL -select str_to_date(c19, c10) from t2; -str_to_date(c19, c10) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c19, c11) from t2; -str_to_date(c19, c11) -NULL -NULL -select str_to_date(c19, c12) from t2; -str_to_date(c19, c12) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c19, c13) from t2; -str_to_date(c19, c13) -NULL -NULL -select str_to_date(c19, c14) from t2; -str_to_date(c19, c14) -NULL -NULL -select str_to_date(c19, c15) from t2; -str_to_date(c19, c15) -NULL -NULL -select str_to_date(c19, c16) from t2; -str_to_date(c19, c16) -NULL -NULL -select str_to_date(c19, c17) from t2; -str_to_date(c19, c17) -NULL -NULL -select str_to_date(c19, c18) from t2; -str_to_date(c19, c18) -NULL -NULL -select str_to_date(c19, c19) from t2; -str_to_date(c19, c19) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c19, c20) from t2; -str_to_date(c19, c20) -NULL -NULL -select str_to_date(c19, c21) from t2; -str_to_date(c19, c21) -NULL -NULL -select str_to_date(c19, c22) from t2; -str_to_date(c19, c22) -NULL -NULL -select to_days(c20), time_to_usec(c20), usec_to_time(c20) from t2; -to_days(c20) time_to_usec(c20) usec_to_time(c20) -737761 1575324000000000 1970-08-23 00:40:03.060000 -737761 1575324000000000 1970-08-23 00:40:03.060000 -select str_to_date(c20, c1) from t2; -str_to_date(c20, c1) -NULL -NULL -select str_to_date(c20, c2) from t2; -str_to_date(c20, c2) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c20, c3) from t2; -str_to_date(c20, c3) -NULL -NULL -select str_to_date(c20, c4) from t2; -str_to_date(c20, c4) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c20, c5) from t2; -str_to_date(c20, c5) -NULL -NULL -select str_to_date(c20, c6) from t2; -str_to_date(c20, c6) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c20, c7) from t2; -str_to_date(c20, c7) -NULL -NULL -select str_to_date(c20, c8) from t2; -str_to_date(c20, c8) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c20, c9) from t2; -str_to_date(c20, c9) -NULL -NULL -select str_to_date(c20, c10) from t2; -str_to_date(c20, c10) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c20, c11) from t2; -str_to_date(c20, c11) -NULL -NULL -select str_to_date(c20, c12) from t2; -str_to_date(c20, c12) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c20, c13) from t2; -str_to_date(c20, c13) -NULL -NULL -select str_to_date(c20, c14) from t2; -str_to_date(c20, c14) -NULL -NULL -select str_to_date(c20, c15) from t2; -str_to_date(c20, c15) -NULL -NULL -select str_to_date(c20, c16) from t2; -str_to_date(c20, c16) -NULL -NULL -select str_to_date(c20, c17) from t2; -str_to_date(c20, c17) -NULL -NULL -select str_to_date(c20, c18) from t2; -str_to_date(c20, c18) -NULL -NULL -select str_to_date(c20, c19) from t2; -str_to_date(c20, c19) -NULL -NULL -select str_to_date(c20, c20) from t2; -str_to_date(c20, c20) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c20, c21) from t2; -str_to_date(c20, c21) -NULL -NULL -select str_to_date(c20, c22) from t2; -str_to_date(c20, c22) -NULL -NULL -select to_days(c21), time_to_usec(c21), usec_to_time(c21) from t2; -to_days(c21) time_to_usec(c21) usec_to_time(c21) -NULL -9223372022400000000 1970-01-01 08:00:00.000010 -NULL -9223372022400000000 1970-01-01 08:00:00.000010 -select str_to_date(c21, c1) from t2; -str_to_date(c21, c1) -NULL -NULL -select str_to_date(c21, c2) from t2; -str_to_date(c21, c2) -NULL -NULL -select str_to_date(c21, c3) from t2; -str_to_date(c21, c3) -NULL -NULL -select str_to_date(c21, c4) from t2; -str_to_date(c21, c4) -NULL -NULL -select str_to_date(c21, c5) from t2; -str_to_date(c21, c5) -NULL -NULL -select str_to_date(c21, c6) from t2; -str_to_date(c21, c6) -NULL -NULL -select str_to_date(c21, c7) from t2; -str_to_date(c21, c7) -NULL -NULL -select str_to_date(c21, c8) from t2; -str_to_date(c21, c8) -NULL -NULL -select str_to_date(c21, c9) from t2; -str_to_date(c21, c9) -NULL -NULL -select str_to_date(c21, c10) from t2; -str_to_date(c21, c10) -NULL -NULL -select str_to_date(c21, c11) from t2; -str_to_date(c21, c11) -NULL -NULL -select str_to_date(c21, c12) from t2; -str_to_date(c21, c12) -NULL -NULL -select str_to_date(c21, c13) from t2; -str_to_date(c21, c13) -NULL -NULL -select str_to_date(c21, c14) from t2; -str_to_date(c21, c14) -NULL -NULL -select str_to_date(c21, c15) from t2; -str_to_date(c21, c15) -NULL -NULL -select str_to_date(c21, c16) from t2; -str_to_date(c21, c16) -NULL -NULL -select str_to_date(c21, c17) from t2; -str_to_date(c21, c17) -NULL -NULL -select str_to_date(c21, c18) from t2; -str_to_date(c21, c18) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c21, c19) from t2; -str_to_date(c21, c19) -NULL -NULL -select str_to_date(c21, c20) from t2; -str_to_date(c21, c20) -NULL -NULL -select str_to_date(c21, c21) from t2; -str_to_date(c21, c21) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -select str_to_date(c21, c22) from t2; -str_to_date(c21, c22) -NULL -NULL -select to_days(c22), time_to_usec(c22), usec_to_time(c22) from t2; -ERROR 42000: Invalid argument for time_to_usec() -select str_to_date(c22, c1) from t2; -str_to_date(c22, c1) -1970-01-01 00:00:00.000000 -NULL -select str_to_date(c22, c2) from t2; -str_to_date(c22, c2) -NULL -NULL -select str_to_date(c22, c3) from t2; -str_to_date(c22, c3) -1970-01-01 00:00:00.000000 -NULL -select str_to_date(c22, c4) from t2; -str_to_date(c22, c4) -NULL -NULL -select str_to_date(c22, c5) from t2; -str_to_date(c22, c5) -1970-01-01 00:00:00.000000 -NULL -select str_to_date(c22, c6) from t2; -str_to_date(c22, c6) -NULL -NULL -select str_to_date(c22, c7) from t2; -str_to_date(c22, c7) -1970-01-01 00:00:00.000000 -NULL -select str_to_date(c22, c8) from t2; -str_to_date(c22, c8) -NULL -NULL -select str_to_date(c22, c9) from t2; -str_to_date(c22, c9) -1970-01-01 00:00:00.000000 -NULL -select str_to_date(c22, c10) from t2; -str_to_date(c22, c10) -NULL -NULL -select str_to_date(c22, c11) from t2; -str_to_date(c22, c11) -1970-01-01 00:00:00.000000 -NULL -select str_to_date(c22, c12) from t2; -str_to_date(c22, c12) -NULL -NULL -select str_to_date(c22, c13) from t2; -str_to_date(c22, c13) -NULL -NULL -select str_to_date(c22, c14) from t2; -str_to_date(c22, c14) -NULL -NULL -select str_to_date(c22, c15) from t2; -str_to_date(c22, c15) -NULL -NULL -select str_to_date(c22, c16) from t2; -str_to_date(c22, c16) -NULL -NULL -select str_to_date(c22, c17) from t2; -str_to_date(c22, c17) -NULL -NULL -select str_to_date(c22, c18) from t2; -str_to_date(c22, c18) -NULL -NULL -select str_to_date(c22, c19) from t2; -str_to_date(c22, c19) -NULL -NULL -select str_to_date(c22, c20) from t2; -str_to_date(c22, c20) -NULL -NULL -select str_to_date(c22, c21) from t2; -str_to_date(c22, c21) -NULL -NULL -select str_to_date(c22, c22) from t2; -str_to_date(c22, c22) -1970-01-01 00:00:00.000000 -1970-01-01 00:00:00.000000 -drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_trim.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_trim.result deleted file mode 100644 index 3ca6e6e78..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_trim.result +++ /dev/null @@ -1,75 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select trim(' abc ') x from dual; -x -abc -select trim(leading from ' abc ') x from dual; -x -abc -select trim(trailing from ' abc ') x from dual; -x - abc -select trim(both from ' abc ') x from dual; -x -abc -select trim(both '' from ' abc ') x from dual; -x - abc -select trim(both ' ' from ' abc ') x from dual; -x -abc -select trim(both 'abc' from 'abcabdefabcabc') x from dual; -x -abdef -select trim(both ' ' from ' abc ') x from dual; -x -abc -select trim(both NULL from ' abc ') x from dual; -x -NULL -select trim(both ' ' from NULL) x from dual; -x -NULL -select trim(both 1 from 112311) x from dual; -x -23 -select ltrim(' abc ') x from dual; -x -abc -select ltrim(' ') x from dual; -x - -select ltrim(NULL) x from dual; -x -NULL -select rtrim(' abc ') x from dual; -x - abc -select rtrim(' ') x from dual; -x - -select rtrim(NULL) x from dual; -x -NULL -drop table if exists t1; -drop view if exists v1; -create view v1 as select nullif(trim(repeat('abc', 1+1)), 'a'); -desc v1; -Field Type Null Key Default Extra -nullif(trim(repeat('abc', 1+1)), 'a') longtext NO -select * from v1; -nullif(trim(repeat('abc', 1+1)), 'a') -abcabc -create table t1(c1 longtext, c2 varchar(100)); -insert into t1 values('abababa', 'a'); -// c1 and c2 will cast to longtext -select trim(leading c2 from c1) from t1; -trim(leading c2 from c1) -bababa -drop view v1; -drop table t1; -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_trunc.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_trunc.result deleted file mode 100644 index 1db408bb3..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_trunc.result +++ /dev/null @@ -1,12663 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -set @@ob_enable_plan_cache = 0; -drop table if exists t1; -create table t1 (c1 int, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30), c_null int); -insert into t1 values(1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -3.5, 4.5, -5.5, 6.5, -7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'9.5', '10.5', null); -insert into t1 values(-1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --1, 2, --3.5, 4.5, --5.5, 6.5, --7.5, 8.5, -'2019-12-01 12:00:00', '2019-12-03 06:00:00', -'-9.5', '10.5', null); -insert into t1(c1) values(100), (123), (151); -insert into t1(c15) values(100.156), (123.111), (151); -insert into t1(c13) values(100.156), (123.111), (151); -select truncate(c_null, c_null) from t1; -truncate(c_null, c_null) -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -select truncate(1.11, c_null) from t1; -truncate(1.11, c_null) -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -select truncate(c_null, -1) from t1; -truncate(c_null, -1) -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -NULL -select c1, c1, truncate(c1, c1) from t1; -c1 c1 truncate(c1, c1) -1 1 1 --1 -1 -0 -100 100 100 -123 123 123 -151 151 151 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c2, truncate(c1, c2) from t1; -c1 c2 truncate(c1, c2) -1 2 1 --1 2 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c3, truncate(c1, c3) from t1; -c1 c3 truncate(c1, c3) -1 1 1 --1 -1 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c4, truncate(c1, c4) from t1; -c1 c4 truncate(c1, c4) -1 2 1 --1 2 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c5, truncate(c1, c5) from t1; -c1 c5 truncate(c1, c5) -1 1 1 --1 -1 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c6, truncate(c1, c6) from t1; -c1 c6 truncate(c1, c6) -1 2 1 --1 2 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c7, truncate(c1, c7) from t1; -c1 c7 truncate(c1, c7) -1 1 1 --1 -1 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c8, truncate(c1, c8) from t1; -c1 c8 truncate(c1, c8) -1 2 1 --1 2 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c9, truncate(c1, c9) from t1; -c1 c9 truncate(c1, c9) -1 1 1 --1 -1 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c10, truncate(c1, c10) from t1; -c1 c10 truncate(c1, c10) -1 2 1 --1 2 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c11, truncate(c1, c11) from t1; -c1 c11 truncate(c1, c11) -1 1 1 --1 -1 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c12, truncate(c1, c12) from t1; -c1 c12 truncate(c1, c12) -1 2 1 --1 2 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c13, truncate(c1, c13) from t1; -c1 c13 truncate(c1, c13) -1 3.5 1 --1 -3.5 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c14, truncate(c1, c14) from t1; -c1 c14 truncate(c1, c14) -1 4.5 1 --1 4.5 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c15, truncate(c1, c15) from t1; -c1 c15 truncate(c1, c15) -1 5.5 1 --1 -5.5 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c16, truncate(c1, c16) from t1; -c1 c16 truncate(c1, c16) -1 6.5 1 --1 6.5 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c17, truncate(c1, c17) from t1; -c1 c17 truncate(c1, c17) -1 8 1 --1 -8 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c18, truncate(c1, c18) from t1; -c1 c18 truncate(c1, c18) -1 9 1 --1 9 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c19, truncate(c1, c19) from t1; -c1 c19 truncate(c1, c19) -1 2019-12-01 12:00:00 1 --1 2019-12-01 12:00:00 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c20, truncate(c1, c20) from t1; -c1 c20 truncate(c1, c20) -1 2019-12-03 06:00:00 1 --1 2019-12-03 06:00:00 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c21, truncate(c1, c21) from t1; -c1 c21 truncate(c1, c21) -1 9.5 1 --1 -9.5 -0 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c1, c22, truncate(c1, c22) from t1; -c1 c22 truncate(c1, c22) -1 10.5 1 --1 10.5 -1 -100 NULL NULL -123 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; -c1 truncate(c1, -3) truncate(c1, -2) truncate(c1, -1) truncate(c1, 0) truncate(c1, 1) truncate(c1, 2) truncate(c1, 3) truncate(c1, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -100 0 100 100 100 100 100 100 100 -123 0 100 120 123 123 123 123 123 -151 0 100 150 151 151 151 151 151 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c1, truncate(c2, c1) from t1; -c2 c1 truncate(c2, c1) -2 1 2 -2 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c2, truncate(c2, c2) from t1; -c2 c2 truncate(c2, c2) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c3, truncate(c2, c3) from t1; -c2 c3 truncate(c2, c3) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c4, truncate(c2, c4) from t1; -c2 c4 truncate(c2, c4) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c5, truncate(c2, c5) from t1; -c2 c5 truncate(c2, c5) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c6, truncate(c2, c6) from t1; -c2 c6 truncate(c2, c6) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c7, truncate(c2, c7) from t1; -c2 c7 truncate(c2, c7) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c8, truncate(c2, c8) from t1; -c2 c8 truncate(c2, c8) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c9, truncate(c2, c9) from t1; -c2 c9 truncate(c2, c9) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c10, truncate(c2, c10) from t1; -c2 c10 truncate(c2, c10) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c11, truncate(c2, c11) from t1; -c2 c11 truncate(c2, c11) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c12, truncate(c2, c12) from t1; -c2 c12 truncate(c2, c12) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c13, truncate(c2, c13) from t1; -c2 c13 truncate(c2, c13) -2 3.5 2 -2 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c14, truncate(c2, c14) from t1; -c2 c14 truncate(c2, c14) -2 4.5 2 -2 4.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c15, truncate(c2, c15) from t1; -c2 c15 truncate(c2, c15) -2 5.5 2 -2 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c16, truncate(c2, c16) from t1; -c2 c16 truncate(c2, c16) -2 6.5 2 -2 6.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c17, truncate(c2, c17) from t1; -c2 c17 truncate(c2, c17) -2 8 2 -2 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c18, truncate(c2, c18) from t1; -c2 c18 truncate(c2, c18) -2 9 2 -2 9 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c19, truncate(c2, c19) from t1; -c2 c19 truncate(c2, c19) -2 2019-12-01 12:00:00 2 -2 2019-12-01 12:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c20, truncate(c2, c20) from t1; -c2 c20 truncate(c2, c20) -2 2019-12-03 06:00:00 2 -2 2019-12-03 06:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c21, truncate(c2, c21) from t1; -c2 c21 truncate(c2, c21) -2 9.5 2 -2 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c2, c22, truncate(c2, c22) from t1; -c2 c22 truncate(c2, c22) -2 10.5 2 -2 10.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; -c2 truncate(c2, -3) truncate(c2, -2) truncate(c2, -1) truncate(c2, 0) truncate(c2, 1) truncate(c2, 2) truncate(c2, 3) truncate(c2, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c1, truncate(c3, c1) from t1; -c3 c1 truncate(c3, c1) -1 1 1 --1 -1 -0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c2, truncate(c3, c2) from t1; -c3 c2 truncate(c3, c2) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c3, truncate(c3, c3) from t1; -c3 c3 truncate(c3, c3) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c4, truncate(c3, c4) from t1; -c3 c4 truncate(c3, c4) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c5, truncate(c3, c5) from t1; -c3 c5 truncate(c3, c5) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c6, truncate(c3, c6) from t1; -c3 c6 truncate(c3, c6) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c7, truncate(c3, c7) from t1; -c3 c7 truncate(c3, c7) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c8, truncate(c3, c8) from t1; -c3 c8 truncate(c3, c8) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c9, truncate(c3, c9) from t1; -c3 c9 truncate(c3, c9) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c10, truncate(c3, c10) from t1; -c3 c10 truncate(c3, c10) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c11, truncate(c3, c11) from t1; -c3 c11 truncate(c3, c11) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c12, truncate(c3, c12) from t1; -c3 c12 truncate(c3, c12) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c13, truncate(c3, c13) from t1; -c3 c13 truncate(c3, c13) -1 3.5 1 --1 -3.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c14, truncate(c3, c14) from t1; -c3 c14 truncate(c3, c14) -1 4.5 1 --1 4.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c15, truncate(c3, c15) from t1; -c3 c15 truncate(c3, c15) -1 5.5 1 --1 -5.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c16, truncate(c3, c16) from t1; -c3 c16 truncate(c3, c16) -1 6.5 1 --1 6.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c17, truncate(c3, c17) from t1; -c3 c17 truncate(c3, c17) -1 8 1 --1 -8 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c18, truncate(c3, c18) from t1; -c3 c18 truncate(c3, c18) -1 9 1 --1 9 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c19, truncate(c3, c19) from t1; -c3 c19 truncate(c3, c19) -1 2019-12-01 12:00:00 1 --1 2019-12-01 12:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c20, truncate(c3, c20) from t1; -c3 c20 truncate(c3, c20) -1 2019-12-03 06:00:00 1 --1 2019-12-03 06:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c21, truncate(c3, c21) from t1; -c3 c21 truncate(c3, c21) -1 9.5 1 --1 -9.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c3, c22, truncate(c3, c22) from t1; -c3 c22 truncate(c3, c22) -1 10.5 1 --1 10.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; -c3 truncate(c3, -3) truncate(c3, -2) truncate(c3, -1) truncate(c3, 0) truncate(c3, 1) truncate(c3, 2) truncate(c3, 3) truncate(c3, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c1, truncate(c4, c1) from t1; -c4 c1 truncate(c4, c1) -2 1 2 -2 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c2, truncate(c4, c2) from t1; -c4 c2 truncate(c4, c2) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c3, truncate(c4, c3) from t1; -c4 c3 truncate(c4, c3) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c4, truncate(c4, c4) from t1; -c4 c4 truncate(c4, c4) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c5, truncate(c4, c5) from t1; -c4 c5 truncate(c4, c5) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c6, truncate(c4, c6) from t1; -c4 c6 truncate(c4, c6) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c7, truncate(c4, c7) from t1; -c4 c7 truncate(c4, c7) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c8, truncate(c4, c8) from t1; -c4 c8 truncate(c4, c8) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c9, truncate(c4, c9) from t1; -c4 c9 truncate(c4, c9) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c10, truncate(c4, c10) from t1; -c4 c10 truncate(c4, c10) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c11, truncate(c4, c11) from t1; -c4 c11 truncate(c4, c11) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c12, truncate(c4, c12) from t1; -c4 c12 truncate(c4, c12) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c13, truncate(c4, c13) from t1; -c4 c13 truncate(c4, c13) -2 3.5 2 -2 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c14, truncate(c4, c14) from t1; -c4 c14 truncate(c4, c14) -2 4.5 2 -2 4.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c15, truncate(c4, c15) from t1; -c4 c15 truncate(c4, c15) -2 5.5 2 -2 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c16, truncate(c4, c16) from t1; -c4 c16 truncate(c4, c16) -2 6.5 2 -2 6.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c17, truncate(c4, c17) from t1; -c4 c17 truncate(c4, c17) -2 8 2 -2 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c18, truncate(c4, c18) from t1; -c4 c18 truncate(c4, c18) -2 9 2 -2 9 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c19, truncate(c4, c19) from t1; -c4 c19 truncate(c4, c19) -2 2019-12-01 12:00:00 2 -2 2019-12-01 12:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c20, truncate(c4, c20) from t1; -c4 c20 truncate(c4, c20) -2 2019-12-03 06:00:00 2 -2 2019-12-03 06:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c21, truncate(c4, c21) from t1; -c4 c21 truncate(c4, c21) -2 9.5 2 -2 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c4, c22, truncate(c4, c22) from t1; -c4 c22 truncate(c4, c22) -2 10.5 2 -2 10.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; -c4 truncate(c4, -3) truncate(c4, -2) truncate(c4, -1) truncate(c4, 0) truncate(c4, 1) truncate(c4, 2) truncate(c4, 3) truncate(c4, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c1, truncate(c5, c1) from t1; -c5 c1 truncate(c5, c1) -1 1 1 --1 -1 -0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c2, truncate(c5, c2) from t1; -c5 c2 truncate(c5, c2) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c3, truncate(c5, c3) from t1; -c5 c3 truncate(c5, c3) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c4, truncate(c5, c4) from t1; -c5 c4 truncate(c5, c4) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c5, truncate(c5, c5) from t1; -c5 c5 truncate(c5, c5) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c6, truncate(c5, c6) from t1; -c5 c6 truncate(c5, c6) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c7, truncate(c5, c7) from t1; -c5 c7 truncate(c5, c7) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c8, truncate(c5, c8) from t1; -c5 c8 truncate(c5, c8) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c9, truncate(c5, c9) from t1; -c5 c9 truncate(c5, c9) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c10, truncate(c5, c10) from t1; -c5 c10 truncate(c5, c10) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c11, truncate(c5, c11) from t1; -c5 c11 truncate(c5, c11) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c12, truncate(c5, c12) from t1; -c5 c12 truncate(c5, c12) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c13, truncate(c5, c13) from t1; -c5 c13 truncate(c5, c13) -1 3.5 1 --1 -3.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c14, truncate(c5, c14) from t1; -c5 c14 truncate(c5, c14) -1 4.5 1 --1 4.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c15, truncate(c5, c15) from t1; -c5 c15 truncate(c5, c15) -1 5.5 1 --1 -5.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c16, truncate(c5, c16) from t1; -c5 c16 truncate(c5, c16) -1 6.5 1 --1 6.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c17, truncate(c5, c17) from t1; -c5 c17 truncate(c5, c17) -1 8 1 --1 -8 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c18, truncate(c5, c18) from t1; -c5 c18 truncate(c5, c18) -1 9 1 --1 9 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c19, truncate(c5, c19) from t1; -c5 c19 truncate(c5, c19) -1 2019-12-01 12:00:00 1 --1 2019-12-01 12:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c20, truncate(c5, c20) from t1; -c5 c20 truncate(c5, c20) -1 2019-12-03 06:00:00 1 --1 2019-12-03 06:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c21, truncate(c5, c21) from t1; -c5 c21 truncate(c5, c21) -1 9.5 1 --1 -9.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c5, c22, truncate(c5, c22) from t1; -c5 c22 truncate(c5, c22) -1 10.5 1 --1 10.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; -c5 truncate(c5, -3) truncate(c5, -2) truncate(c5, -1) truncate(c5, 0) truncate(c5, 1) truncate(c5, 2) truncate(c5, 3) truncate(c5, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c1, truncate(c6, c1) from t1; -c6 c1 truncate(c6, c1) -2 1 2 -2 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c2, truncate(c6, c2) from t1; -c6 c2 truncate(c6, c2) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c3, truncate(c6, c3) from t1; -c6 c3 truncate(c6, c3) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c4, truncate(c6, c4) from t1; -c6 c4 truncate(c6, c4) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c5, truncate(c6, c5) from t1; -c6 c5 truncate(c6, c5) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c6, truncate(c6, c6) from t1; -c6 c6 truncate(c6, c6) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c7, truncate(c6, c7) from t1; -c6 c7 truncate(c6, c7) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c8, truncate(c6, c8) from t1; -c6 c8 truncate(c6, c8) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c9, truncate(c6, c9) from t1; -c6 c9 truncate(c6, c9) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c10, truncate(c6, c10) from t1; -c6 c10 truncate(c6, c10) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c11, truncate(c6, c11) from t1; -c6 c11 truncate(c6, c11) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c12, truncate(c6, c12) from t1; -c6 c12 truncate(c6, c12) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c13, truncate(c6, c13) from t1; -c6 c13 truncate(c6, c13) -2 3.5 2 -2 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c14, truncate(c6, c14) from t1; -c6 c14 truncate(c6, c14) -2 4.5 2 -2 4.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c15, truncate(c6, c15) from t1; -c6 c15 truncate(c6, c15) -2 5.5 2 -2 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c16, truncate(c6, c16) from t1; -c6 c16 truncate(c6, c16) -2 6.5 2 -2 6.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c17, truncate(c6, c17) from t1; -c6 c17 truncate(c6, c17) -2 8 2 -2 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c18, truncate(c6, c18) from t1; -c6 c18 truncate(c6, c18) -2 9 2 -2 9 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c19, truncate(c6, c19) from t1; -c6 c19 truncate(c6, c19) -2 2019-12-01 12:00:00 2 -2 2019-12-01 12:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c20, truncate(c6, c20) from t1; -c6 c20 truncate(c6, c20) -2 2019-12-03 06:00:00 2 -2 2019-12-03 06:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c21, truncate(c6, c21) from t1; -c6 c21 truncate(c6, c21) -2 9.5 2 -2 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c6, c22, truncate(c6, c22) from t1; -c6 c22 truncate(c6, c22) -2 10.5 2 -2 10.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; -c6 truncate(c6, -3) truncate(c6, -2) truncate(c6, -1) truncate(c6, 0) truncate(c6, 1) truncate(c6, 2) truncate(c6, 3) truncate(c6, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c1, truncate(c7, c1) from t1; -c7 c1 truncate(c7, c1) -1 1 1 --1 -1 -0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c2, truncate(c7, c2) from t1; -c7 c2 truncate(c7, c2) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c3, truncate(c7, c3) from t1; -c7 c3 truncate(c7, c3) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c4, truncate(c7, c4) from t1; -c7 c4 truncate(c7, c4) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c5, truncate(c7, c5) from t1; -c7 c5 truncate(c7, c5) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c6, truncate(c7, c6) from t1; -c7 c6 truncate(c7, c6) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c7, truncate(c7, c7) from t1; -c7 c7 truncate(c7, c7) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c8, truncate(c7, c8) from t1; -c7 c8 truncate(c7, c8) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c9, truncate(c7, c9) from t1; -c7 c9 truncate(c7, c9) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c10, truncate(c7, c10) from t1; -c7 c10 truncate(c7, c10) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c11, truncate(c7, c11) from t1; -c7 c11 truncate(c7, c11) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c12, truncate(c7, c12) from t1; -c7 c12 truncate(c7, c12) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c13, truncate(c7, c13) from t1; -c7 c13 truncate(c7, c13) -1 3.5 1 --1 -3.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c14, truncate(c7, c14) from t1; -c7 c14 truncate(c7, c14) -1 4.5 1 --1 4.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c15, truncate(c7, c15) from t1; -c7 c15 truncate(c7, c15) -1 5.5 1 --1 -5.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c16, truncate(c7, c16) from t1; -c7 c16 truncate(c7, c16) -1 6.5 1 --1 6.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c17, truncate(c7, c17) from t1; -c7 c17 truncate(c7, c17) -1 8 1 --1 -8 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c18, truncate(c7, c18) from t1; -c7 c18 truncate(c7, c18) -1 9 1 --1 9 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c19, truncate(c7, c19) from t1; -c7 c19 truncate(c7, c19) -1 2019-12-01 12:00:00 1 --1 2019-12-01 12:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c20, truncate(c7, c20) from t1; -c7 c20 truncate(c7, c20) -1 2019-12-03 06:00:00 1 --1 2019-12-03 06:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c21, truncate(c7, c21) from t1; -c7 c21 truncate(c7, c21) -1 9.5 1 --1 -9.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c7, c22, truncate(c7, c22) from t1; -c7 c22 truncate(c7, c22) -1 10.5 1 --1 10.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; -c7 truncate(c7, -3) truncate(c7, -2) truncate(c7, -1) truncate(c7, 0) truncate(c7, 1) truncate(c7, 2) truncate(c7, 3) truncate(c7, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c1, truncate(c8, c1) from t1; -c8 c1 truncate(c8, c1) -2 1 2 -2 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c2, truncate(c8, c2) from t1; -c8 c2 truncate(c8, c2) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c3, truncate(c8, c3) from t1; -c8 c3 truncate(c8, c3) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c4, truncate(c8, c4) from t1; -c8 c4 truncate(c8, c4) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c5, truncate(c8, c5) from t1; -c8 c5 truncate(c8, c5) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c6, truncate(c8, c6) from t1; -c8 c6 truncate(c8, c6) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c7, truncate(c8, c7) from t1; -c8 c7 truncate(c8, c7) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c8, truncate(c8, c8) from t1; -c8 c8 truncate(c8, c8) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c9, truncate(c8, c9) from t1; -c8 c9 truncate(c8, c9) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c10, truncate(c8, c10) from t1; -c8 c10 truncate(c8, c10) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c11, truncate(c8, c11) from t1; -c8 c11 truncate(c8, c11) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c12, truncate(c8, c12) from t1; -c8 c12 truncate(c8, c12) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c13, truncate(c8, c13) from t1; -c8 c13 truncate(c8, c13) -2 3.5 2 -2 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c14, truncate(c8, c14) from t1; -c8 c14 truncate(c8, c14) -2 4.5 2 -2 4.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c15, truncate(c8, c15) from t1; -c8 c15 truncate(c8, c15) -2 5.5 2 -2 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c16, truncate(c8, c16) from t1; -c8 c16 truncate(c8, c16) -2 6.5 2 -2 6.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c17, truncate(c8, c17) from t1; -c8 c17 truncate(c8, c17) -2 8 2 -2 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c18, truncate(c8, c18) from t1; -c8 c18 truncate(c8, c18) -2 9 2 -2 9 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c19, truncate(c8, c19) from t1; -c8 c19 truncate(c8, c19) -2 2019-12-01 12:00:00 2 -2 2019-12-01 12:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c20, truncate(c8, c20) from t1; -c8 c20 truncate(c8, c20) -2 2019-12-03 06:00:00 2 -2 2019-12-03 06:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c21, truncate(c8, c21) from t1; -c8 c21 truncate(c8, c21) -2 9.5 2 -2 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c8, c22, truncate(c8, c22) from t1; -c8 c22 truncate(c8, c22) -2 10.5 2 -2 10.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; -c8 truncate(c8, -3) truncate(c8, -2) truncate(c8, -1) truncate(c8, 0) truncate(c8, 1) truncate(c8, 2) truncate(c8, 3) truncate(c8, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c1, truncate(c9, c1) from t1; -c9 c1 truncate(c9, c1) -1 1 1 --1 -1 -0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c2, truncate(c9, c2) from t1; -c9 c2 truncate(c9, c2) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c3, truncate(c9, c3) from t1; -c9 c3 truncate(c9, c3) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c4, truncate(c9, c4) from t1; -c9 c4 truncate(c9, c4) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c5, truncate(c9, c5) from t1; -c9 c5 truncate(c9, c5) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c6, truncate(c9, c6) from t1; -c9 c6 truncate(c9, c6) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c7, truncate(c9, c7) from t1; -c9 c7 truncate(c9, c7) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c8, truncate(c9, c8) from t1; -c9 c8 truncate(c9, c8) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c9, truncate(c9, c9) from t1; -c9 c9 truncate(c9, c9) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c10, truncate(c9, c10) from t1; -c9 c10 truncate(c9, c10) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c11, truncate(c9, c11) from t1; -c9 c11 truncate(c9, c11) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c12, truncate(c9, c12) from t1; -c9 c12 truncate(c9, c12) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c13, truncate(c9, c13) from t1; -c9 c13 truncate(c9, c13) -1 3.5 1 --1 -3.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c14, truncate(c9, c14) from t1; -c9 c14 truncate(c9, c14) -1 4.5 1 --1 4.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c15, truncate(c9, c15) from t1; -c9 c15 truncate(c9, c15) -1 5.5 1 --1 -5.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c16, truncate(c9, c16) from t1; -c9 c16 truncate(c9, c16) -1 6.5 1 --1 6.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c17, truncate(c9, c17) from t1; -c9 c17 truncate(c9, c17) -1 8 1 --1 -8 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c18, truncate(c9, c18) from t1; -c9 c18 truncate(c9, c18) -1 9 1 --1 9 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c19, truncate(c9, c19) from t1; -c9 c19 truncate(c9, c19) -1 2019-12-01 12:00:00 1 --1 2019-12-01 12:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c20, truncate(c9, c20) from t1; -c9 c20 truncate(c9, c20) -1 2019-12-03 06:00:00 1 --1 2019-12-03 06:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c21, truncate(c9, c21) from t1; -c9 c21 truncate(c9, c21) -1 9.5 1 --1 -9.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c9, c22, truncate(c9, c22) from t1; -c9 c22 truncate(c9, c22) -1 10.5 1 --1 10.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; -c9 truncate(c9, -3) truncate(c9, -2) truncate(c9, -1) truncate(c9, 0) truncate(c9, 1) truncate(c9, 2) truncate(c9, 3) truncate(c9, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c1, truncate(c10, c1) from t1; -c10 c1 truncate(c10, c1) -2 1 2 -2 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c2, truncate(c10, c2) from t1; -c10 c2 truncate(c10, c2) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c3, truncate(c10, c3) from t1; -c10 c3 truncate(c10, c3) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c4, truncate(c10, c4) from t1; -c10 c4 truncate(c10, c4) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c5, truncate(c10, c5) from t1; -c10 c5 truncate(c10, c5) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c6, truncate(c10, c6) from t1; -c10 c6 truncate(c10, c6) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c7, truncate(c10, c7) from t1; -c10 c7 truncate(c10, c7) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c8, truncate(c10, c8) from t1; -c10 c8 truncate(c10, c8) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c9, truncate(c10, c9) from t1; -c10 c9 truncate(c10, c9) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c10, truncate(c10, c10) from t1; -c10 c10 truncate(c10, c10) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c11, truncate(c10, c11) from t1; -c10 c11 truncate(c10, c11) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c12, truncate(c10, c12) from t1; -c10 c12 truncate(c10, c12) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c13, truncate(c10, c13) from t1; -c10 c13 truncate(c10, c13) -2 3.5 2 -2 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c14, truncate(c10, c14) from t1; -c10 c14 truncate(c10, c14) -2 4.5 2 -2 4.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c15, truncate(c10, c15) from t1; -c10 c15 truncate(c10, c15) -2 5.5 2 -2 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c16, truncate(c10, c16) from t1; -c10 c16 truncate(c10, c16) -2 6.5 2 -2 6.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c17, truncate(c10, c17) from t1; -c10 c17 truncate(c10, c17) -2 8 2 -2 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c18, truncate(c10, c18) from t1; -c10 c18 truncate(c10, c18) -2 9 2 -2 9 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c19, truncate(c10, c19) from t1; -c10 c19 truncate(c10, c19) -2 2019-12-01 12:00:00 2 -2 2019-12-01 12:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c20, truncate(c10, c20) from t1; -c10 c20 truncate(c10, c20) -2 2019-12-03 06:00:00 2 -2 2019-12-03 06:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c21, truncate(c10, c21) from t1; -c10 c21 truncate(c10, c21) -2 9.5 2 -2 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c10, c22, truncate(c10, c22) from t1; -c10 c22 truncate(c10, c22) -2 10.5 2 -2 10.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; -c10 truncate(c10, -3) truncate(c10, -2) truncate(c10, -1) truncate(c10, 0) truncate(c10, 1) truncate(c10, 2) truncate(c10, 3) truncate(c10, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c1, truncate(c11, c1) from t1; -c11 c1 truncate(c11, c1) -1 1 1 --1 -1 -0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c2, truncate(c11, c2) from t1; -c11 c2 truncate(c11, c2) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c3, truncate(c11, c3) from t1; -c11 c3 truncate(c11, c3) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c4, truncate(c11, c4) from t1; -c11 c4 truncate(c11, c4) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c5, truncate(c11, c5) from t1; -c11 c5 truncate(c11, c5) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c6, truncate(c11, c6) from t1; -c11 c6 truncate(c11, c6) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c7, truncate(c11, c7) from t1; -c11 c7 truncate(c11, c7) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c8, truncate(c11, c8) from t1; -c11 c8 truncate(c11, c8) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c9, truncate(c11, c9) from t1; -c11 c9 truncate(c11, c9) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c10, truncate(c11, c10) from t1; -c11 c10 truncate(c11, c10) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c11, truncate(c11, c11) from t1; -c11 c11 truncate(c11, c11) -1 1 1 --1 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c12, truncate(c11, c12) from t1; -c11 c12 truncate(c11, c12) -1 2 1 --1 2 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c13, truncate(c11, c13) from t1; -c11 c13 truncate(c11, c13) -1 3.5 1 --1 -3.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c14, truncate(c11, c14) from t1; -c11 c14 truncate(c11, c14) -1 4.5 1 --1 4.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c15, truncate(c11, c15) from t1; -c11 c15 truncate(c11, c15) -1 5.5 1 --1 -5.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c16, truncate(c11, c16) from t1; -c11 c16 truncate(c11, c16) -1 6.5 1 --1 6.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c17, truncate(c11, c17) from t1; -c11 c17 truncate(c11, c17) -1 8 1 --1 -8 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c18, truncate(c11, c18) from t1; -c11 c18 truncate(c11, c18) -1 9 1 --1 9 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c19, truncate(c11, c19) from t1; -c11 c19 truncate(c11, c19) -1 2019-12-01 12:00:00 1 --1 2019-12-01 12:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c20, truncate(c11, c20) from t1; -c11 c20 truncate(c11, c20) -1 2019-12-03 06:00:00 1 --1 2019-12-03 06:00:00 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c21, truncate(c11, c21) from t1; -c11 c21 truncate(c11, c21) -1 9.5 1 --1 -9.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c11, c22, truncate(c11, c22) from t1; -c11 c22 truncate(c11, c22) -1 10.5 1 --1 10.5 -1 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; -c11 truncate(c11, -3) truncate(c11, -2) truncate(c11, -1) truncate(c11, 0) truncate(c11, 1) truncate(c11, 2) truncate(c11, 3) truncate(c11, 4) -1 0 0 0 1 1 1 1 1 --1 0 0 0 -1 -1 -1 -1 -1 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c1, truncate(c12, c1) from t1; -c12 c1 truncate(c12, c1) -2 1 2 -2 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c2, truncate(c12, c2) from t1; -c12 c2 truncate(c12, c2) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c3, truncate(c12, c3) from t1; -c12 c3 truncate(c12, c3) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c4, truncate(c12, c4) from t1; -c12 c4 truncate(c12, c4) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c5, truncate(c12, c5) from t1; -c12 c5 truncate(c12, c5) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c6, truncate(c12, c6) from t1; -c12 c6 truncate(c12, c6) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c7, truncate(c12, c7) from t1; -c12 c7 truncate(c12, c7) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c8, truncate(c12, c8) from t1; -c12 c8 truncate(c12, c8) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c9, truncate(c12, c9) from t1; -c12 c9 truncate(c12, c9) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c10, truncate(c12, c10) from t1; -c12 c10 truncate(c12, c10) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c11, truncate(c12, c11) from t1; -c12 c11 truncate(c12, c11) -2 1 2 -2 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c12, truncate(c12, c12) from t1; -c12 c12 truncate(c12, c12) -2 2 2 -2 2 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c13, truncate(c12, c13) from t1; -c12 c13 truncate(c12, c13) -2 3.5 2 -2 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c14, truncate(c12, c14) from t1; -c12 c14 truncate(c12, c14) -2 4.5 2 -2 4.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c15, truncate(c12, c15) from t1; -c12 c15 truncate(c12, c15) -2 5.5 2 -2 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c16, truncate(c12, c16) from t1; -c12 c16 truncate(c12, c16) -2 6.5 2 -2 6.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c17, truncate(c12, c17) from t1; -c12 c17 truncate(c12, c17) -2 8 2 -2 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c18, truncate(c12, c18) from t1; -c12 c18 truncate(c12, c18) -2 9 2 -2 9 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c19, truncate(c12, c19) from t1; -c12 c19 truncate(c12, c19) -2 2019-12-01 12:00:00 2 -2 2019-12-01 12:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c20, truncate(c12, c20) from t1; -c12 c20 truncate(c12, c20) -2 2019-12-03 06:00:00 2 -2 2019-12-03 06:00:00 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c21, truncate(c12, c21) from t1; -c12 c21 truncate(c12, c21) -2 9.5 2 -2 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c12, c22, truncate(c12, c22) from t1; -c12 c22 truncate(c12, c22) -2 10.5 2 -2 10.5 2 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; -c12 truncate(c12, -3) truncate(c12, -2) truncate(c12, -1) truncate(c12, 0) truncate(c12, 1) truncate(c12, 2) truncate(c12, 3) truncate(c12, 4) -2 0 0 0 2 2 2 2 2 -2 0 0 0 2 2 2 2 2 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c13, c1, truncate(c13, c1) from t1; -c13 c1 truncate(c13, c1) -3.5 1 3.5 --3.5 -1 -0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c2, truncate(c13, c2) from t1; -c13 c2 truncate(c13, c2) -3.5 2 3.5 --3.5 2 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c3, truncate(c13, c3) from t1; -c13 c3 truncate(c13, c3) -3.5 1 3.5 --3.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c4, truncate(c13, c4) from t1; -c13 c4 truncate(c13, c4) -3.5 2 3.5 --3.5 2 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c5, truncate(c13, c5) from t1; -c13 c5 truncate(c13, c5) -3.5 1 3.5 --3.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c6, truncate(c13, c6) from t1; -c13 c6 truncate(c13, c6) -3.5 2 3.5 --3.5 2 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c7, truncate(c13, c7) from t1; -c13 c7 truncate(c13, c7) -3.5 1 3.5 --3.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c8, truncate(c13, c8) from t1; -c13 c8 truncate(c13, c8) -3.5 2 3.5 --3.5 2 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c9, truncate(c13, c9) from t1; -c13 c9 truncate(c13, c9) -3.5 1 3.5 --3.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c10, truncate(c13, c10) from t1; -c13 c10 truncate(c13, c10) -3.5 2 3.5 --3.5 2 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c11, truncate(c13, c11) from t1; -c13 c11 truncate(c13, c11) -3.5 1 3.5 --3.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c12, truncate(c13, c12) from t1; -c13 c12 truncate(c13, c12) -3.5 2 3.5 --3.5 2 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c13, truncate(c13, c13) from t1; -c13 c13 truncate(c13, c13) -3.5 3.5 3.5 --3.5 -3.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 100.156 100.15599822998047 -123.111 123.111 123.11100006103514 -151 151 151 -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c14, truncate(c13, c14) from t1; -c13 c14 truncate(c13, c14) -3.5 4.5 3.5 --3.5 4.5 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c15, truncate(c13, c15) from t1; -c13 c15 truncate(c13, c15) -3.5 5.5 3.5 --3.5 -5.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c16, truncate(c13, c16) from t1; -c13 c16 truncate(c13, c16) -3.5 6.5 3.5 --3.5 6.5 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c17, truncate(c13, c17) from t1; -c13 c17 truncate(c13, c17) -3.5 8 3.5 --3.5 -8 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c18, truncate(c13, c18) from t1; -c13 c18 truncate(c13, c18) -3.5 9 3.5 --3.5 9 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c19, truncate(c13, c19) from t1; -c13 c19 truncate(c13, c19) -3.5 2019-12-01 12:00:00 3.5 --3.5 2019-12-01 12:00:00 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c20, truncate(c13, c20) from t1; -c13 c20 truncate(c13, c20) -3.5 2019-12-03 06:00:00 3.5 --3.5 2019-12-03 06:00:00 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c21, truncate(c13, c21) from t1; -c13 c21 truncate(c13, c21) -3.5 9.5 3.5 --3.5 -9.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c13, c22, truncate(c13, c22) from t1; -c13 c22 truncate(c13, c22) -3.5 10.5 3.5 --3.5 10.5 -3.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; -c13 truncate(c13, -3) truncate(c13, -2) truncate(c13, -1) truncate(c13, 0) truncate(c13, 1) truncate(c13, 2) truncate(c13, 3) truncate(c13, 4) -3.5 0 0 0 3 3.5 3.50 3.500 3.5000 --3.5 -0 -0 -0 -3 -3.5 -3.50 -3.500 -3.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.155 100.1559 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -select c14, c1, truncate(c14, c1) from t1; -c14 c1 truncate(c14, c1) -4.5 1 4.5 -4.5 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c2, truncate(c14, c2) from t1; -c14 c2 truncate(c14, c2) -4.5 2 4.5 -4.5 2 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c3, truncate(c14, c3) from t1; -c14 c3 truncate(c14, c3) -4.5 1 4.5 -4.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c4, truncate(c14, c4) from t1; -c14 c4 truncate(c14, c4) -4.5 2 4.5 -4.5 2 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c5, truncate(c14, c5) from t1; -c14 c5 truncate(c14, c5) -4.5 1 4.5 -4.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c6, truncate(c14, c6) from t1; -c14 c6 truncate(c14, c6) -4.5 2 4.5 -4.5 2 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c7, truncate(c14, c7) from t1; -c14 c7 truncate(c14, c7) -4.5 1 4.5 -4.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c8, truncate(c14, c8) from t1; -c14 c8 truncate(c14, c8) -4.5 2 4.5 -4.5 2 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c9, truncate(c14, c9) from t1; -c14 c9 truncate(c14, c9) -4.5 1 4.5 -4.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c10, truncate(c14, c10) from t1; -c14 c10 truncate(c14, c10) -4.5 2 4.5 -4.5 2 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c11, truncate(c14, c11) from t1; -c14 c11 truncate(c14, c11) -4.5 1 4.5 -4.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c12, truncate(c14, c12) from t1; -c14 c12 truncate(c14, c12) -4.5 2 4.5 -4.5 2 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c13, truncate(c14, c13) from t1; -c14 c13 truncate(c14, c13) -4.5 3.5 4.5 -4.5 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c14, truncate(c14, c14) from t1; -c14 c14 truncate(c14, c14) -4.5 4.5 4.5 -4.5 4.5 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c15, truncate(c14, c15) from t1; -c14 c15 truncate(c14, c15) -4.5 5.5 4.5 -4.5 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c16, truncate(c14, c16) from t1; -c14 c16 truncate(c14, c16) -4.5 6.5 4.5 -4.5 6.5 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c17, truncate(c14, c17) from t1; -c14 c17 truncate(c14, c17) -4.5 8 4.5 -4.5 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c18, truncate(c14, c18) from t1; -c14 c18 truncate(c14, c18) -4.5 9 4.5 -4.5 9 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c19, truncate(c14, c19) from t1; -c14 c19 truncate(c14, c19) -4.5 2019-12-01 12:00:00 4.5 -4.5 2019-12-01 12:00:00 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c20, truncate(c14, c20) from t1; -c14 c20 truncate(c14, c20) -4.5 2019-12-03 06:00:00 4.5 -4.5 2019-12-03 06:00:00 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c21, truncate(c14, c21) from t1; -c14 c21 truncate(c14, c21) -4.5 9.5 4.5 -4.5 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c14, c22, truncate(c14, c22) from t1; -c14 c22 truncate(c14, c22) -4.5 10.5 4.5 -4.5 10.5 4.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; -c14 truncate(c14, -3) truncate(c14, -2) truncate(c14, -1) truncate(c14, 0) truncate(c14, 1) truncate(c14, 2) truncate(c14, 3) truncate(c14, 4) -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -4.5 0 0 0 4 4.5 4.50 4.500 4.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c1, truncate(c15, c1) from t1; -c15 c1 truncate(c15, c1) -5.5 1 5.5 --5.5 -1 -0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c2, truncate(c15, c2) from t1; -c15 c2 truncate(c15, c2) -5.5 2 5.5 --5.5 2 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c3, truncate(c15, c3) from t1; -c15 c3 truncate(c15, c3) -5.5 1 5.5 --5.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c4, truncate(c15, c4) from t1; -c15 c4 truncate(c15, c4) -5.5 2 5.5 --5.5 2 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c5, truncate(c15, c5) from t1; -c15 c5 truncate(c15, c5) -5.5 1 5.5 --5.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c6, truncate(c15, c6) from t1; -c15 c6 truncate(c15, c6) -5.5 2 5.5 --5.5 2 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c7, truncate(c15, c7) from t1; -c15 c7 truncate(c15, c7) -5.5 1 5.5 --5.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c8, truncate(c15, c8) from t1; -c15 c8 truncate(c15, c8) -5.5 2 5.5 --5.5 2 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c9, truncate(c15, c9) from t1; -c15 c9 truncate(c15, c9) -5.5 1 5.5 --5.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c10, truncate(c15, c10) from t1; -c15 c10 truncate(c15, c10) -5.5 2 5.5 --5.5 2 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c11, truncate(c15, c11) from t1; -c15 c11 truncate(c15, c11) -5.5 1 5.5 --5.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c12, truncate(c15, c12) from t1; -c15 c12 truncate(c15, c12) -5.5 2 5.5 --5.5 2 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c13, truncate(c15, c13) from t1; -c15 c13 truncate(c15, c13) -5.5 3.5 5.5 --5.5 -3.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c14, truncate(c15, c14) from t1; -c15 c14 truncate(c15, c14) -5.5 4.5 5.5 --5.5 4.5 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c15, truncate(c15, c15) from t1; -c15 c15 truncate(c15, c15) -5.5 5.5 5.5 --5.5 -5.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 100.156 100.156 -123.111 123.111 123.111 -151 151 151 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c16, truncate(c15, c16) from t1; -c15 c16 truncate(c15, c16) -5.5 6.5 5.5 --5.5 6.5 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c17, truncate(c15, c17) from t1; -c15 c17 truncate(c15, c17) -5.5 8 5.5 --5.5 -8 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c18, truncate(c15, c18) from t1; -c15 c18 truncate(c15, c18) -5.5 9 5.5 --5.5 9 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c19, truncate(c15, c19) from t1; -c15 c19 truncate(c15, c19) -5.5 2019-12-01 12:00:00 5.5 --5.5 2019-12-01 12:00:00 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c20, truncate(c15, c20) from t1; -c15 c20 truncate(c15, c20) -5.5 2019-12-03 06:00:00 5.5 --5.5 2019-12-03 06:00:00 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c21, truncate(c15, c21) from t1; -c15 c21 truncate(c15, c21) -5.5 9.5 5.5 --5.5 -9.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c15, c22, truncate(c15, c22) from t1; -c15 c22 truncate(c15, c22) -5.5 10.5 5.5 --5.5 10.5 -5.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -100.156 NULL NULL -123.111 NULL NULL -151 NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; -c15 truncate(c15, -3) truncate(c15, -2) truncate(c15, -1) truncate(c15, 0) truncate(c15, 1) truncate(c15, 2) truncate(c15, 3) truncate(c15, 4) -5.5 0 0 0 5 5.5 5.50 5.500 5.5000 --5.5 -0 -0 -0 -5 -5.5 -5.50 -5.500 -5.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -100.156 0 100 100 100 100.1 100.15 100.156 100.1560 -123.111 0 100 120 123 123.1 123.11 123.111 123.1110 -151 0 100 150 151 151.0 151.00 151.000 151.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c1, truncate(c16, c1) from t1; -c16 c1 truncate(c16, c1) -6.5 1 6.5 -6.5 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c2, truncate(c16, c2) from t1; -c16 c2 truncate(c16, c2) -6.5 2 6.5 -6.5 2 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c3, truncate(c16, c3) from t1; -c16 c3 truncate(c16, c3) -6.5 1 6.5 -6.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c4, truncate(c16, c4) from t1; -c16 c4 truncate(c16, c4) -6.5 2 6.5 -6.5 2 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c5, truncate(c16, c5) from t1; -c16 c5 truncate(c16, c5) -6.5 1 6.5 -6.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c6, truncate(c16, c6) from t1; -c16 c6 truncate(c16, c6) -6.5 2 6.5 -6.5 2 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c7, truncate(c16, c7) from t1; -c16 c7 truncate(c16, c7) -6.5 1 6.5 -6.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c8, truncate(c16, c8) from t1; -c16 c8 truncate(c16, c8) -6.5 2 6.5 -6.5 2 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c9, truncate(c16, c9) from t1; -c16 c9 truncate(c16, c9) -6.5 1 6.5 -6.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c10, truncate(c16, c10) from t1; -c16 c10 truncate(c16, c10) -6.5 2 6.5 -6.5 2 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c11, truncate(c16, c11) from t1; -c16 c11 truncate(c16, c11) -6.5 1 6.5 -6.5 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c12, truncate(c16, c12) from t1; -c16 c12 truncate(c16, c12) -6.5 2 6.5 -6.5 2 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c13, truncate(c16, c13) from t1; -c16 c13 truncate(c16, c13) -6.5 3.5 6.5 -6.5 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c14, truncate(c16, c14) from t1; -c16 c14 truncate(c16, c14) -6.5 4.5 6.5 -6.5 4.5 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c15, truncate(c16, c15) from t1; -c16 c15 truncate(c16, c15) -6.5 5.5 6.5 -6.5 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c16, truncate(c16, c16) from t1; -c16 c16 truncate(c16, c16) -6.5 6.5 6.5 -6.5 6.5 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c17, truncate(c16, c17) from t1; -c16 c17 truncate(c16, c17) -6.5 8 6.5 -6.5 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c18, truncate(c16, c18) from t1; -c16 c18 truncate(c16, c18) -6.5 9 6.5 -6.5 9 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c19, truncate(c16, c19) from t1; -c16 c19 truncate(c16, c19) -6.5 2019-12-01 12:00:00 6.5 -6.5 2019-12-01 12:00:00 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c20, truncate(c16, c20) from t1; -c16 c20 truncate(c16, c20) -6.5 2019-12-03 06:00:00 6.5 -6.5 2019-12-03 06:00:00 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c21, truncate(c16, c21) from t1; -c16 c21 truncate(c16, c21) -6.5 9.5 6.5 -6.5 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c16, c22, truncate(c16, c22) from t1; -c16 c22 truncate(c16, c22) -6.5 10.5 6.5 -6.5 10.5 6.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; -c16 truncate(c16, -3) truncate(c16, -2) truncate(c16, -1) truncate(c16, 0) truncate(c16, 1) truncate(c16, 2) truncate(c16, 3) truncate(c16, 4) -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -6.5 0 0 0 6 6.5 6.50 6.500 6.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c1, truncate(c17, c1) from t1; -c17 c1 truncate(c17, c1) -8 1 8 --8 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c2, truncate(c17, c2) from t1; -c17 c2 truncate(c17, c2) -8 2 8 --8 2 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c3, truncate(c17, c3) from t1; -c17 c3 truncate(c17, c3) -8 1 8 --8 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c4, truncate(c17, c4) from t1; -c17 c4 truncate(c17, c4) -8 2 8 --8 2 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c5, truncate(c17, c5) from t1; -c17 c5 truncate(c17, c5) -8 1 8 --8 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c6, truncate(c17, c6) from t1; -c17 c6 truncate(c17, c6) -8 2 8 --8 2 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c7, truncate(c17, c7) from t1; -c17 c7 truncate(c17, c7) -8 1 8 --8 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c8, truncate(c17, c8) from t1; -c17 c8 truncate(c17, c8) -8 2 8 --8 2 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c9, truncate(c17, c9) from t1; -c17 c9 truncate(c17, c9) -8 1 8 --8 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c10, truncate(c17, c10) from t1; -c17 c10 truncate(c17, c10) -8 2 8 --8 2 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c11, truncate(c17, c11) from t1; -c17 c11 truncate(c17, c11) -8 1 8 --8 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c12, truncate(c17, c12) from t1; -c17 c12 truncate(c17, c12) -8 2 8 --8 2 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c13, truncate(c17, c13) from t1; -c17 c13 truncate(c17, c13) -8 3.5 8 --8 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c14, truncate(c17, c14) from t1; -c17 c14 truncate(c17, c14) -8 4.5 8 --8 4.5 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c15, truncate(c17, c15) from t1; -c17 c15 truncate(c17, c15) -8 5.5 8 --8 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c16, truncate(c17, c16) from t1; -c17 c16 truncate(c17, c16) -8 6.5 8 --8 6.5 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c17, truncate(c17, c17) from t1; -c17 c17 truncate(c17, c17) -8 8 8 --8 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c18, truncate(c17, c18) from t1; -c17 c18 truncate(c17, c18) -8 9 8 --8 9 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c19, truncate(c17, c19) from t1; -c17 c19 truncate(c17, c19) -8 2019-12-01 12:00:00 8 --8 2019-12-01 12:00:00 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c20, truncate(c17, c20) from t1; -c17 c20 truncate(c17, c20) -8 2019-12-03 06:00:00 8 --8 2019-12-03 06:00:00 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c21, truncate(c17, c21) from t1; -c17 c21 truncate(c17, c21) -8 9.5 8 --8 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c17, c22, truncate(c17, c22) from t1; -c17 c22 truncate(c17, c22) -8 10.5 8 --8 10.5 -8 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; -c17 truncate(c17, -3) truncate(c17, -2) truncate(c17, -1) truncate(c17, 0) truncate(c17, 1) truncate(c17, 2) truncate(c17, 3) truncate(c17, 4) -8 0 0 0 8 8.0 8.00 8.000 8.0000 --8 0 0 0 -8 -8.0 -8.00 -8.000 -8.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c1, truncate(c18, c1) from t1; -c18 c1 truncate(c18, c1) -9 1 9 -9 -1 0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c2, truncate(c18, c2) from t1; -c18 c2 truncate(c18, c2) -9 2 9 -9 2 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c3, truncate(c18, c3) from t1; -c18 c3 truncate(c18, c3) -9 1 9 -9 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c4, truncate(c18, c4) from t1; -c18 c4 truncate(c18, c4) -9 2 9 -9 2 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c5, truncate(c18, c5) from t1; -c18 c5 truncate(c18, c5) -9 1 9 -9 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c6, truncate(c18, c6) from t1; -c18 c6 truncate(c18, c6) -9 2 9 -9 2 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c7, truncate(c18, c7) from t1; -c18 c7 truncate(c18, c7) -9 1 9 -9 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c8, truncate(c18, c8) from t1; -c18 c8 truncate(c18, c8) -9 2 9 -9 2 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c9, truncate(c18, c9) from t1; -c18 c9 truncate(c18, c9) -9 1 9 -9 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c10, truncate(c18, c10) from t1; -c18 c10 truncate(c18, c10) -9 2 9 -9 2 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c11, truncate(c18, c11) from t1; -c18 c11 truncate(c18, c11) -9 1 9 -9 -1 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c12, truncate(c18, c12) from t1; -c18 c12 truncate(c18, c12) -9 2 9 -9 2 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c13, truncate(c18, c13) from t1; -c18 c13 truncate(c18, c13) -9 3.5 9 -9 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c14, truncate(c18, c14) from t1; -c18 c14 truncate(c18, c14) -9 4.5 9 -9 4.5 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c15, truncate(c18, c15) from t1; -c18 c15 truncate(c18, c15) -9 5.5 9 -9 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c16, truncate(c18, c16) from t1; -c18 c16 truncate(c18, c16) -9 6.5 9 -9 6.5 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c17, truncate(c18, c17) from t1; -c18 c17 truncate(c18, c17) -9 8 9 -9 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c18, truncate(c18, c18) from t1; -c18 c18 truncate(c18, c18) -9 9 9 -9 9 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c19, truncate(c18, c19) from t1; -c18 c19 truncate(c18, c19) -9 2019-12-01 12:00:00 9 -9 2019-12-01 12:00:00 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c20, truncate(c18, c20) from t1; -c18 c20 truncate(c18, c20) -9 2019-12-03 06:00:00 9 -9 2019-12-03 06:00:00 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c21, truncate(c18, c21) from t1; -c18 c21 truncate(c18, c21) -9 9.5 9 -9 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c18, c22, truncate(c18, c22) from t1; -c18 c22 truncate(c18, c22) -9 10.5 9 -9 10.5 9 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; -c18 truncate(c18, -3) truncate(c18, -2) truncate(c18, -1) truncate(c18, 0) truncate(c18, 1) truncate(c18, 2) truncate(c18, 3) truncate(c18, 4) -9 0 0 0 9 9.0 9.00 9.000 9.0000 -9 0 0 0 9 9.0 9.00 9.000 9.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c1, truncate(c19, c1) from t1; -c19 c1 truncate(c19, c1) -2019-12-01 12:00:00 1 20191201120000 -2019-12-01 12:00:00 -1 20191201120000 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c2, truncate(c19, c2) from t1; -c19 c2 truncate(c19, c2) -2019-12-01 12:00:00 2 20191201120000 -2019-12-01 12:00:00 2 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c3, truncate(c19, c3) from t1; -c19 c3 truncate(c19, c3) -2019-12-01 12:00:00 1 20191201120000 -2019-12-01 12:00:00 -1 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c4, truncate(c19, c4) from t1; -c19 c4 truncate(c19, c4) -2019-12-01 12:00:00 2 20191201120000 -2019-12-01 12:00:00 2 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c5, truncate(c19, c5) from t1; -c19 c5 truncate(c19, c5) -2019-12-01 12:00:00 1 20191201120000 -2019-12-01 12:00:00 -1 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c6, truncate(c19, c6) from t1; -c19 c6 truncate(c19, c6) -2019-12-01 12:00:00 2 20191201120000 -2019-12-01 12:00:00 2 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c7, truncate(c19, c7) from t1; -c19 c7 truncate(c19, c7) -2019-12-01 12:00:00 1 20191201120000 -2019-12-01 12:00:00 -1 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c8, truncate(c19, c8) from t1; -c19 c8 truncate(c19, c8) -2019-12-01 12:00:00 2 20191201120000 -2019-12-01 12:00:00 2 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c9, truncate(c19, c9) from t1; -c19 c9 truncate(c19, c9) -2019-12-01 12:00:00 1 20191201120000 -2019-12-01 12:00:00 -1 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c10, truncate(c19, c10) from t1; -c19 c10 truncate(c19, c10) -2019-12-01 12:00:00 2 20191201120000 -2019-12-01 12:00:00 2 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c11, truncate(c19, c11) from t1; -c19 c11 truncate(c19, c11) -2019-12-01 12:00:00 1 20191201120000 -2019-12-01 12:00:00 -1 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c12, truncate(c19, c12) from t1; -c19 c12 truncate(c19, c12) -2019-12-01 12:00:00 2 20191201120000 -2019-12-01 12:00:00 2 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c13, truncate(c19, c13) from t1; -c19 c13 truncate(c19, c13) -2019-12-01 12:00:00 3.5 20191201120000 -2019-12-01 12:00:00 -3.5 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c14, truncate(c19, c14) from t1; -c19 c14 truncate(c19, c14) -2019-12-01 12:00:00 4.5 20191201120000 -2019-12-01 12:00:00 4.5 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c15, truncate(c19, c15) from t1; -c19 c15 truncate(c19, c15) -2019-12-01 12:00:00 5.5 20191201120000 -2019-12-01 12:00:00 -5.5 20191201000000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c16, truncate(c19, c16) from t1; -c19 c16 truncate(c19, c16) -2019-12-01 12:00:00 6.5 20191201120000 -2019-12-01 12:00:00 6.5 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c17, truncate(c19, c17) from t1; -c19 c17 truncate(c19, c17) -2019-12-01 12:00:00 8 20191201120000 -2019-12-01 12:00:00 -8 20191200000000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c18, truncate(c19, c18) from t1; -c19 c18 truncate(c19, c18) -2019-12-01 12:00:00 9 20191201120000 -2019-12-01 12:00:00 9 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c19, truncate(c19, c19) from t1; -c19 c19 truncate(c19, c19) -2019-12-01 12:00:00 2019-12-01 12:00:00 20191201120000 -2019-12-01 12:00:00 2019-12-01 12:00:00 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c20, truncate(c19, c20) from t1; -c19 c20 truncate(c19, c20) -2019-12-01 12:00:00 2019-12-03 06:00:00 20191201120000 -2019-12-01 12:00:00 2019-12-03 06:00:00 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c21, truncate(c19, c21) from t1; -c19 c21 truncate(c19, c21) -2019-12-01 12:00:00 9.5 20191201120000 -2019-12-01 12:00:00 -9.5 20190000000000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c19, c22, truncate(c19, c22) from t1; -c19 c22 truncate(c19, c22) -2019-12-01 12:00:00 10.5 20191201120000 -2019-12-01 12:00:00 10.5 20191201120000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; -c19 truncate(c19, -3) truncate(c19, -2) truncate(c19, -1) truncate(c19, 0) truncate(c19, 1) truncate(c19, 2) truncate(c19, 3) truncate(c19, 4) -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -2019-12-01 12:00:00 20191201120000 20191201120000 20191201120000 20191201120000 20191201120000.0 20191201120000.00 20191201120000.000 20191201120000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c1, truncate(c20, c1) from t1; -c20 c1 truncate(c20, c1) -2019-12-03 06:00:00 1 20191203060000 -2019-12-03 06:00:00 -1 20191203060000 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c2, truncate(c20, c2) from t1; -c20 c2 truncate(c20, c2) -2019-12-03 06:00:00 2 20191203060000 -2019-12-03 06:00:00 2 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c3, truncate(c20, c3) from t1; -c20 c3 truncate(c20, c3) -2019-12-03 06:00:00 1 20191203060000 -2019-12-03 06:00:00 -1 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c4, truncate(c20, c4) from t1; -c20 c4 truncate(c20, c4) -2019-12-03 06:00:00 2 20191203060000 -2019-12-03 06:00:00 2 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c5, truncate(c20, c5) from t1; -c20 c5 truncate(c20, c5) -2019-12-03 06:00:00 1 20191203060000 -2019-12-03 06:00:00 -1 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c6, truncate(c20, c6) from t1; -c20 c6 truncate(c20, c6) -2019-12-03 06:00:00 2 20191203060000 -2019-12-03 06:00:00 2 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c7, truncate(c20, c7) from t1; -c20 c7 truncate(c20, c7) -2019-12-03 06:00:00 1 20191203060000 -2019-12-03 06:00:00 -1 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c8, truncate(c20, c8) from t1; -c20 c8 truncate(c20, c8) -2019-12-03 06:00:00 2 20191203060000 -2019-12-03 06:00:00 2 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c9, truncate(c20, c9) from t1; -c20 c9 truncate(c20, c9) -2019-12-03 06:00:00 1 20191203060000 -2019-12-03 06:00:00 -1 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c10, truncate(c20, c10) from t1; -c20 c10 truncate(c20, c10) -2019-12-03 06:00:00 2 20191203060000 -2019-12-03 06:00:00 2 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c11, truncate(c20, c11) from t1; -c20 c11 truncate(c20, c11) -2019-12-03 06:00:00 1 20191203060000 -2019-12-03 06:00:00 -1 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c12, truncate(c20, c12) from t1; -c20 c12 truncate(c20, c12) -2019-12-03 06:00:00 2 20191203060000 -2019-12-03 06:00:00 2 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c13, truncate(c20, c13) from t1; -c20 c13 truncate(c20, c13) -2019-12-03 06:00:00 3.5 20191203060000 -2019-12-03 06:00:00 -3.5 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c14, truncate(c20, c14) from t1; -c20 c14 truncate(c20, c14) -2019-12-03 06:00:00 4.5 20191203060000 -2019-12-03 06:00:00 4.5 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c15, truncate(c20, c15) from t1; -c20 c15 truncate(c20, c15) -2019-12-03 06:00:00 5.5 20191203060000 -2019-12-03 06:00:00 -5.5 20191203000000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c16, truncate(c20, c16) from t1; -c20 c16 truncate(c20, c16) -2019-12-03 06:00:00 6.5 20191203060000 -2019-12-03 06:00:00 6.5 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c17, truncate(c20, c17) from t1; -c20 c17 truncate(c20, c17) -2019-12-03 06:00:00 8 20191203060000 -2019-12-03 06:00:00 -8 20191200000000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c18, truncate(c20, c18) from t1; -c20 c18 truncate(c20, c18) -2019-12-03 06:00:00 9 20191203060000 -2019-12-03 06:00:00 9 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c19, truncate(c20, c19) from t1; -c20 c19 truncate(c20, c19) -2019-12-03 06:00:00 2019-12-01 12:00:00 20191203060000 -2019-12-03 06:00:00 2019-12-01 12:00:00 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c20, truncate(c20, c20) from t1; -c20 c20 truncate(c20, c20) -2019-12-03 06:00:00 2019-12-03 06:00:00 20191203060000 -2019-12-03 06:00:00 2019-12-03 06:00:00 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c21, truncate(c20, c21) from t1; -c20 c21 truncate(c20, c21) -2019-12-03 06:00:00 9.5 20191203060000 -2019-12-03 06:00:00 -9.5 20190000000000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c20, c22, truncate(c20, c22) from t1; -c20 c22 truncate(c20, c22) -2019-12-03 06:00:00 10.5 20191203060000 -2019-12-03 06:00:00 10.5 20191203060000 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; -c20 truncate(c20, -3) truncate(c20, -2) truncate(c20, -1) truncate(c20, 0) truncate(c20, 1) truncate(c20, 2) truncate(c20, 3) truncate(c20, 4) -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -2019-12-03 06:00:00 20191203060000 20191203060000 20191203060000 20191203060000 20191203060000.0 20191203060000.00 20191203060000.000 20191203060000.0000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c1, truncate(c21, c1) from t1; -c21 c1 truncate(c21, c1) -9.5 1 9.5 --9.5 -1 -0 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c2, truncate(c21, c2) from t1; -c21 c2 truncate(c21, c2) -9.5 2 9.5 --9.5 2 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c3, truncate(c21, c3) from t1; -c21 c3 truncate(c21, c3) -9.5 1 9.5 --9.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c4, truncate(c21, c4) from t1; -c21 c4 truncate(c21, c4) -9.5 2 9.5 --9.5 2 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c5, truncate(c21, c5) from t1; -c21 c5 truncate(c21, c5) -9.5 1 9.5 --9.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c6, truncate(c21, c6) from t1; -c21 c6 truncate(c21, c6) -9.5 2 9.5 --9.5 2 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c7, truncate(c21, c7) from t1; -c21 c7 truncate(c21, c7) -9.5 1 9.5 --9.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c8, truncate(c21, c8) from t1; -c21 c8 truncate(c21, c8) -9.5 2 9.5 --9.5 2 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c9, truncate(c21, c9) from t1; -c21 c9 truncate(c21, c9) -9.5 1 9.5 --9.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c10, truncate(c21, c10) from t1; -c21 c10 truncate(c21, c10) -9.5 2 9.5 --9.5 2 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c11, truncate(c21, c11) from t1; -c21 c11 truncate(c21, c11) -9.5 1 9.5 --9.5 -1 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c12, truncate(c21, c12) from t1; -c21 c12 truncate(c21, c12) -9.5 2 9.5 --9.5 2 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c13, truncate(c21, c13) from t1; -c21 c13 truncate(c21, c13) -9.5 3.5 9.5 --9.5 -3.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c14, truncate(c21, c14) from t1; -c21 c14 truncate(c21, c14) -9.5 4.5 9.5 --9.5 4.5 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c15, truncate(c21, c15) from t1; -c21 c15 truncate(c21, c15) -9.5 5.5 9.5 --9.5 -5.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c16, truncate(c21, c16) from t1; -c21 c16 truncate(c21, c16) -9.5 6.5 9.5 --9.5 6.5 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c17, truncate(c21, c17) from t1; -c21 c17 truncate(c21, c17) -9.5 8 9.5 --9.5 -8 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c18, truncate(c21, c18) from t1; -c21 c18 truncate(c21, c18) -9.5 9 9.5 --9.5 9 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c19, truncate(c21, c19) from t1; -c21 c19 truncate(c21, c19) -9.5 2019-12-01 12:00:00 9.5 --9.5 2019-12-01 12:00:00 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c20, truncate(c21, c20) from t1; -c21 c20 truncate(c21, c20) -9.5 2019-12-03 06:00:00 9.5 --9.5 2019-12-03 06:00:00 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c21, truncate(c21, c21) from t1; -c21 c21 truncate(c21, c21) -9.5 9.5 9.5 --9.5 -9.5 -0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c21, c22, truncate(c21, c22) from t1; -c21 c22 truncate(c21, c22) -9.5 10.5 9.5 --9.5 10.5 -9.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; -c21 truncate(c21, -3) truncate(c21, -2) truncate(c21, -1) truncate(c21, 0) truncate(c21, 1) truncate(c21, 2) truncate(c21, 3) truncate(c21, 4) -9.5 0 0 0 9 9.5 9.50 9.500 9.5000 --9.5 -0 -0 -0 -9 -9.5 -9.50 -9.500 -9.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c1, truncate(c22, c1) from t1; -c22 c1 truncate(c22, c1) -10.5 1 10.5 -10.5 -1 10 -NULL 100 NULL -NULL 123 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c2, truncate(c22, c2) from t1; -c22 c2 truncate(c22, c2) -10.5 2 10.5 -10.5 2 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c3, truncate(c22, c3) from t1; -c22 c3 truncate(c22, c3) -10.5 1 10.5 -10.5 -1 10 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c4, truncate(c22, c4) from t1; -c22 c4 truncate(c22, c4) -10.5 2 10.5 -10.5 2 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c5, truncate(c22, c5) from t1; -c22 c5 truncate(c22, c5) -10.5 1 10.5 -10.5 -1 10 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c6, truncate(c22, c6) from t1; -c22 c6 truncate(c22, c6) -10.5 2 10.5 -10.5 2 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c7, truncate(c22, c7) from t1; -c22 c7 truncate(c22, c7) -10.5 1 10.5 -10.5 -1 10 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c8, truncate(c22, c8) from t1; -c22 c8 truncate(c22, c8) -10.5 2 10.5 -10.5 2 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c9, truncate(c22, c9) from t1; -c22 c9 truncate(c22, c9) -10.5 1 10.5 -10.5 -1 10 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c10, truncate(c22, c10) from t1; -c22 c10 truncate(c22, c10) -10.5 2 10.5 -10.5 2 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c11, truncate(c22, c11) from t1; -c22 c11 truncate(c22, c11) -10.5 1 10.5 -10.5 -1 10 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c12, truncate(c22, c12) from t1; -c22 c12 truncate(c22, c12) -10.5 2 10.5 -10.5 2 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c13, truncate(c22, c13) from t1; -c22 c13 truncate(c22, c13) -10.5 3.5 10.5 -10.5 -3.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c14, truncate(c22, c14) from t1; -c22 c14 truncate(c22, c14) -10.5 4.5 10.5 -10.5 4.5 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c15, truncate(c22, c15) from t1; -c22 c15 truncate(c22, c15) -10.5 5.5 10.5 -10.5 -5.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL 100.156 NULL -NULL 123.111 NULL -NULL 151 NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c16, truncate(c22, c16) from t1; -c22 c16 truncate(c22, c16) -10.5 6.5 10.5 -10.5 6.5 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c17, truncate(c22, c17) from t1; -c22 c17 truncate(c22, c17) -10.5 8 10.5 -10.5 -8 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c18, truncate(c22, c18) from t1; -c22 c18 truncate(c22, c18) -10.5 9 10.5 -10.5 9 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c19, truncate(c22, c19) from t1; -c22 c19 truncate(c22, c19) -10.5 2019-12-01 12:00:00 10.5 -10.5 2019-12-01 12:00:00 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c20, truncate(c22, c20) from t1; -c22 c20 truncate(c22, c20) -10.5 2019-12-03 06:00:00 10.5 -10.5 2019-12-03 06:00:00 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c21, truncate(c22, c21) from t1; -c22 c21 truncate(c22, c21) -10.5 9.5 10.5 -10.5 -9.5 0 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -select c22, c22, truncate(c22, c22) from t1; -c22 c22 truncate(c22, c22) -10.5 10.5 10.5 -10.5 10.5 10.5 -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -NULL NULL NULL -select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; -c22 truncate(c22, -3) truncate(c22, -2) truncate(c22, -1) truncate(c22, 0) truncate(c22, 1) truncate(c22, 2) truncate(c22, 3) truncate(c22, 4) -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -10.5 0 0 10 10 10.5 10.50 10.500 10.5000 -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL NULL NULL NULL diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_unhex.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_unhex.result deleted file mode 100644 index f058d2d75..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_unhex.result +++ /dev/null @@ -1,16 +0,0 @@ -connect sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -create table t1 (c1 varchar(2000)); -insert into t1 values(hex("ABC")), (hex("123")); -connection sys; -connection default; -set @@ob_enable_plan_cache = 0; -select unhex(c1) from t1; -unhex(c1) -ABC -123 -select unhex("4142") from dual; -unhex("4142") -AB -connection sys; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_unix_timestamp.result b/test/mysql_test/test_suite/static_engine/r/mysql/expr_unix_timestamp.result deleted file mode 100644 index ef7d30af6..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_unix_timestamp.result +++ /dev/null @@ -1,83 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; -alter system flush plan cache global; -set ob_enable_plan_cache = 0; -select unix_timestamp(NULL); -unix_timestamp(NULL) -NULL -select unix_timestamp(''); -unix_timestamp('') -0.000000 -select unix_timestamp('2010-01-01 10:50:50.123'); -unix_timestamp('2010-01-01 10:50:50.123') -1262314250.123 -select unix_timestamp(123); -unix_timestamp(123) -948556800 -drop table if exists t1; -create table t1 (col_datetime_4_not_null datetime(4) not null); -insert into t1 values -('0000-00-00 00:00:00.0000'),('2006-05-12 07:06:44.0441'),('2007-11-08 00:00:00.0000'), ('2007-07-23 00:00:00.0000'),('2006-01-10 22:19:14.0158'),('2006-09-13 18:54:05.0013'), ('2002-03-26 00:00:00.0000'),('2002-10-22 10:53:06.0151'),('0000-00-00 00:00:00.0000'),('2001-06-04 00:00:00.0000'),('0000-00-00 00:00:00.0000'),('2000-12-11 10:47:58.0505'), ('2009-04-21 20:01:40.0570'),('2007-03-12 10:48:41.0031'),('0000-00-00 00:00:00.0000'), ('2009-06-22 00:00:00.0000'),('2008-01-21 15:28:44.0592'),('2003-10-05 00:43:55.0577'), ('2002-11-04 00:46:30.0630'),('2006-01-19 11:38:03.0378'),('0000-00-00 00:00:00.0000'), ('2001-02-04 00:00:00.0000'),('2004-10-22 21:59:04.0394'),('2006-03-20 18:54:13.0139'), ('2004-06-09 03:17:31.0403'),('0000-00-00 00:00:00.0000'),('2003-06-01 17:59:12.0365'), ('0000-00-00 00:00:00.0000'),('2009-06-15 08:58:58.0329'),('0000-00-00 00:00:00.0000'), ('2004-03-26 00:00:00.0000'),('2009-04-27 00:00:00.0000'),('2000-09-07 00:00:00.0000'), ('2006-11-04 00:51:03.0501'),('2005-02-20 00:30:47.0647'),('0000-00-00 00:00:00.0000'), ('2004-12-07 00:00:00.0000'),('0000-00-00 00:00:00.0000'),('0000-00-00 00:00:00.0000'), ('2002-08-17 00:27:20.0536'),('2006-10-12 12:12:28.0337'),('0000-00-00 00:00:00.0000'), ('0000-00-00 00:00:00.0000'),('2009-09-09 14:16:05.0354'),('2000-02-25 00:00:00.0000'), ('2003-12-16 05:38:37.0626'),('2000-10-05 03:46:43.0067'),('0000-00-00 00:00:00.0000'), ('2000-10-08 06:45:51.0547'),('0000-00-00 00:00:00.0000'),('2000-04-06 01:46:21.0620'), ('2001-08-10 23:15:40.0304'),('2001-06-24 10:14:00.0497'),('0000-00-00 00:00:00.0000'), ('0000-00-00 00:00:00.0000'),('2004-10-22 00:00:00.0000'),('0000-00-00 00:00:00.0000'), ('0000-00-00 00:00:00.0000'),('2005-08-23 06:34:23.0058'),('2005-03-28 18:34:18.0138'),('2004-05-18 00:00:00.0000'); -select col_datetime_4_not_null, unix_timestamp(col_datetime_4_not_null) from t1 order by 1; -col_datetime_4_not_null unix_timestamp(col_datetime_4_not_null) -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -0000-00-00 00:00:00.0000 0.0000 -2000-02-25 00:00:00.0000 951408000.0000 -2000-04-06 01:46:21.0620 954956781.0620 -2000-09-07 00:00:00.0000 968256000.0000 -2000-10-05 03:46:43.0067 970688803.0067 -2000-10-08 06:45:51.0547 970958751.0547 -2000-12-11 10:47:58.0505 976502878.0505 -2001-02-04 00:00:00.0000 981216000.0000 -2001-06-04 00:00:00.0000 991584000.0000 -2001-06-24 10:14:00.0497 993348840.0497 -2001-08-10 23:15:40.0304 997456540.0304 -2002-03-26 00:00:00.0000 1017072000.0000 -2002-08-17 00:27:20.0536 1029515240.0536 -2002-10-22 10:53:06.0151 1035255186.0151 -2002-11-04 00:46:30.0630 1036341990.0630 -2003-06-01 17:59:12.0365 1054461552.0365 -2003-10-05 00:43:55.0577 1065285835.0577 -2003-12-16 05:38:37.0626 1071524317.0626 -2004-03-26 00:00:00.0000 1080230400.0000 -2004-05-18 00:00:00.0000 1084809600.0000 -2004-06-09 03:17:31.0403 1086722251.0403 -2004-10-22 00:00:00.0000 1098374400.0000 -2004-10-22 21:59:04.0394 1098453544.0394 -2004-12-07 00:00:00.0000 1102348800.0000 -2005-02-20 00:30:47.0647 1108830647.0647 -2005-03-28 18:34:18.0138 1112006058.0138 -2005-08-23 06:34:23.0058 1124750063.0058 -2006-01-10 22:19:14.0158 1136902754.0158 -2006-01-19 11:38:03.0378 1137641883.0378 -2006-03-20 18:54:13.0139 1142852053.0139 -2006-05-12 07:06:44.0441 1147388804.0441 -2006-09-13 18:54:05.0013 1158144845.0013 -2006-10-12 12:12:28.0337 1160626348.0337 -2006-11-04 00:51:03.0501 1162572663.0501 -2007-03-12 10:48:41.0031 1173667721.0031 -2007-07-23 00:00:00.0000 1185120000.0000 -2007-11-08 00:00:00.0000 1194451200.0000 -2008-01-21 15:28:44.0592 1200900524.0592 -2009-04-21 20:01:40.0570 1240315300.0570 -2009-04-27 00:00:00.0000 1240761600.0000 -2009-06-15 08:58:58.0329 1245027538.0329 -2009-06-22 00:00:00.0000 1245600000.0000 -2009-09-09 14:16:05.0354 1252476965.0354 diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/hash_distinct.result b/test/mysql_test/test_suite/static_engine/r/mysql/hash_distinct.result deleted file mode 100644 index 8d8b74100..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/hash_distinct.result +++ /dev/null @@ -1,103 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table t1; -drop table t2; -drop table t111_var; -create table t1(c1 int,c2 int,c3 int); -create table t2(c1 int,c2 int,c3 int); -insert into t1 values(1,2,3); -insert into t1 values(1,2,3); -insert into t1 values(0,2,3); -insert into t1 values(2,2,3); -insert into t1 values(3,2,3); -insert into t2 values(2,2,3); -insert into t2 values(2,0,3); -insert into t2 values(0,2,3); -insert into t2 values(1,2,3); -insert into t2 values(null,2,3); -insert into t2 values(1,2,3); -insert into t2 values(0,2,1); -insert into t2 values(2,2,3); -commit; -create table t111_var(c0 bigint,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000), c5 varchar(4000),c6 varchar(4000), c7 longtext); -insert into t111_var values(1,repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('abcdefghij',4000)); -insert into t111_var select c0+1,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+10,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+100,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+1000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+10000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+100000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+1000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+10000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+100000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var values(null,null,null,null,null,null,null,null); -insert into t111_var select * from t111_var; -commit; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select /*+ USE_HASH_AGGREGATION */distinct c1,c2 from t2; -c1 c2 -2 2 -2 0 -0 2 -1 2 -NULL 2 -select /*+ USE_HASH_AGGREGATION */distinct c2,c1 from t2; -c2 c1 -2 2 -0 2 -2 0 -2 1 -2 NULL -select /*+ USE_HASH_AGGREGATION */distinct c2,c1,c1+c2 from t2; -c2 c1 c1+c2 -2 2 4 -0 2 2 -2 0 2 -2 1 3 -2 NULL NULL -select /*+ USE_HASH_AGGREGATION */distinct c1+c2,abs(c1) from t2; -c1+c2 abs(c1) -4 2 -2 2 -2 0 -3 1 -NULL NULL -select /*+ USE_HASH_AGGREGATION */distinct c1+c2 from t2; -c1+c2 -4 -2 -3 -NULL -select /*+ USE_HASH_AGGREGATION */distinct c2,c1,c3 from t2; -c2 c1 c3 -2 2 3 -0 2 3 -2 0 3 -2 1 3 -2 NULL 3 -2 0 1 -select /*+ USE_HASH_AGGREGATION */distinct 1,2,3,5,'ab' from t2; -1 2 3 5 ab -1 2 3 5 ab -select /*+ USE_HASH_AGGREGATION */distinct 1,c2,2,3,c1,5,'ab' from t2; -1 c2 2 3 c1 5 ab -1 2 2 3 2 5 ab -1 0 2 3 2 5 ab -1 2 2 3 0 5 ab -1 2 2 3 1 5 ab -1 2 2 3 NULL 5 ab -select /*+ USE_HASH_AGGREGATION */distinct 1,c2,2,3,c1,5,'ab' from t2 where c2=0; -1 c2 2 3 c1 5 ab -1 0 2 3 2 5 ab -set ob_query_timeout=30000000; -select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) -from (select /*+ USE_HASH_AGGREGATION */ distinct * from t111_var) order by c1 limit 1; -sum(c0) sum(length(c1)) count(c2) count(c3) count(c4) count(c5) count(c6) count(c7) -28444444928 2048000 512 512 512 512 512 512 -connection syscon; -connection default; -drop table t1; -drop table t2; -drop table t111_var; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/hash_set.result b/test/mysql_test/test_suite/static_engine/r/mysql/hash_set.result deleted file mode 100644 index 77307bc79..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/hash_set.result +++ /dev/null @@ -1,128 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -drop tenant dump_tenant force; -drop resource pool new_pool1; -drop resource unit new_box1; -connect conn1,$OBMYSQL_MS0,root@dump_tenant,,test,$OBMYSQL_PORT; -set global parallel_max_servers=10; -set global parallel_servers_target=10; -alter system set _sort_area_size='2M'; -alter system set _hash_area_size='4M'; -drop table t11_set; -drop table t22_set; -drop table t111_var; -drop table t333_var; -create table t11_set(c1 int,c2 int); -create table t22_set(c1 int,c2 int); -insert into t11_set values(null,null); -insert into t11_set values(1,1); -insert into t11_set values(5,5); -insert into t11_set values(1,1); -insert into t11_set values(5,5); -insert into t11_set values(12,12); -insert into t11_set values(12,12); -insert into t11_set values(22,22); -insert into t11_set values(26,26); -insert into t11_set values(22,22); -insert into t11_set values(26,26); -insert into t22_set select * from t11_set; -create table t111_var(c0 bigint primary key,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000), c5 varchar(4000),c6 varchar(4000), c7 longtext); -insert into t111_var values(1,repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('a',4000)); -insert into t111_var select c0+1,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+10,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+100,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+1000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+10000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+100000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+1000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+10000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -insert into t111_var select c0+100000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; -commit; -create table t333_var(c0 bigint ,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000), c5 varchar(4000),c6 varchar(4000), c7 longtext); -insert into t333_var values(1,repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('a',4000)); -insert into t333_var select c0+1,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var select c0+10,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var select c0+100,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var select c0+1000,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var select c0+10000,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var select c0+100000,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var select c0+1000000,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var select c0+10000000,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var select c0+100000000,c1,c2,c3,c4,c5,c6,c7 from t333_var; -insert into t333_var values(null,null,null,null,null,null,null,null); -commit; -select c1,c2 from t11_set union select c1,c2 from t22_set where c1 > 5 and c1 != 12; -c1 c2 -NULL NULL -1 1 -5 5 -12 12 -22 22 -26 26 -select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 > 5 and c1 != 12; -c1 c2 -22 22 -26 26 -select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 > 5 and c1 != 12; -c1 c2 -NULL NULL -1 1 -5 5 -12 12 -select c1,c2 from t11_set where c1 > 5 and c1 != 12 union select c1,c2 from t22_set; -c1 c2 -22 22 -26 26 -NULL NULL -1 1 -5 5 -12 12 -select c1,c2 from t11_set where c1 > 5 and c1 != 12 intersect select c1,c2 from t22_set; -c1 c2 -22 22 -26 26 -select c1,c2 from t11_set where c1 > 5 and c1 != 12 minus select c1,c2 from t22_set; -c1 c2 -select c1,c2 from t11_set union select c1,c2 from t22_set where c1 <22; -c1 c2 -NULL NULL -1 1 -5 5 -12 12 -22 22 -26 26 -select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 <22; -c1 c2 -1 1 -5 5 -12 12 -select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 <22; -c1 c2 -NULL NULL -22 22 -26 26 -set ob_query_timeout=30000000; -select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) -from (select * from t111_var a union select * from t333_var b) order by c1 limit 1; -sum(c0) sum(length(c1)) count(c2) count(c3) count(c4) count(c5) count(c6) count(c7) -28444444928 1024000 512 512 512 512 512 512 -select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) -from (select * from t111_var a intersect select * from t333_var b) order by c1 limit 1; -sum(c0) sum(length(c1)) count(c2) count(c3) count(c4) count(c5) count(c6) count(c7) -28444444928 1024000 512 512 512 512 512 512 -select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) -from (select * from t111_var a minus select * from t333_var b) order by c1 limit 1; -sum(c0) sum(length(c1)) count(c2) count(c3) count(c4) count(c5) count(c6) count(c7) -NULL NULL 0 0 0 0 0 0 -select operation_type, -case when sum(optimal_executions)>0 then 1 else 0 end pass1, -case when sum(onepass_executions)>0 then 1 else 0 end pass2, -case when sum(multipasses_executions)>0 then 1 else 0 end pass3 -from oceanbase.gv$sql_workarea where con_id =xxx group by operation_type order by 1,2,3,4; -operation_type pass1 pass2 pass3 -PHY_HASH_EXCEPT 0 1 0 -PHY_HASH_INTERSECT 0 1 0 -PHY_HASH_UNION 0 1 0 -connection syscon; -drop tenant dump_tenant force; -drop resource pool new_pool1; -drop resource unit new_box1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/material.result b/test/mysql_test/test_suite/static_engine/r/mysql/material.result deleted file mode 100644 index 411cbdae1..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/material.result +++ /dev/null @@ -1,69 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -drop table if exists t2; -create table t1(c1 int,c2 int,c3 int); -create table t2(c1 int,c2 int,c3 int); -insert into t1 values(1,2,3); -insert into t1 values(1,2,3); -insert into t1 values(0,2,3); -insert into t1 values(2,2,3); -insert into t1 values(3,2,3); -insert into t2 values(2,2,3); -insert into t2 values(2,2,3); -insert into t2 values(0,2,3); -insert into t2 values(1,2,3); -insert into t2 values(null,2,3); -commit; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -explain select * from t1,t2; -Query Plan -=================================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------------- -|0 |NESTED-LOOP JOIN CARTESIAN| |25 |95 | -|1 | TABLE SCAN |t1 |5 |37 | -|2 | MATERIAL | |5 |40 | -|3 | TABLE SCAN |t2 |5 |37 | -=================================================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil), - conds(nil), nl_params_(nil) - 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) - 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), - access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) - -select * from t1,t2; -c1 c2 c3 c1 c2 c3 -1 2 3 2 2 3 -1 2 3 2 2 3 -1 2 3 0 2 3 -1 2 3 1 2 3 -1 2 3 NULL 2 3 -1 2 3 2 2 3 -1 2 3 2 2 3 -1 2 3 0 2 3 -1 2 3 1 2 3 -1 2 3 NULL 2 3 -0 2 3 2 2 3 -0 2 3 2 2 3 -0 2 3 0 2 3 -0 2 3 1 2 3 -0 2 3 NULL 2 3 -2 2 3 2 2 3 -2 2 3 2 2 3 -2 2 3 0 2 3 -2 2 3 1 2 3 -2 2 3 NULL 2 3 -3 2 3 2 2 3 -3 2 3 2 2 3 -3 2 3 0 2 3 -3 2 3 1 2 3 -3 2 3 NULL 2 3 -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/px_basic.result b/test/mysql_test/test_suite/static_engine/r/mysql/px_basic.result deleted file mode 100644 index e3efebd97..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/px_basic.result +++ /dev/null @@ -1,128 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table t1; -drop table t2; -drop table t3; -drop table t4; -drop table t5; -create table t3(c1 int primary key,c2 int) partition by hash(c1) partitions 5; -create table t4(c1 int primary key,c2 int) partition by hash(c1) partitions 6; -insert into t3 values(0,0); -insert into t3 values(1,0); -insert into t3 values(2,1); -insert into t3 values(3,2); -insert into t3 values(4,3); -insert into t3 values(5,4); -insert into t3 values(6,5); -insert into t4 values(1,0); -insert into t4 values(2,1); -insert into t4 values(3,2); -insert into t4 values(4,3); -insert into t4 values(5,4); -insert into t4 values(6,5); -insert into t4 values(7,5); -commit; -create table t5(c1 int primary key,c2 int); -insert into t5 values(1,1); -insert into t5 values(2,2); -insert into t5 values(3,3); -insert into t5 values(4,4); -insert into t5 values(5,5); -insert into t5 values(6,6); -commit; -create table t1(c1 int,c2 int) partition by hash(c1) partitions 5; -create table t2(c1 int,c2 int) partition by hash(c2) partitions 6; -insert into t1 values(1,1); -insert into t1 values(2,2); -insert into t1 values(3,3); -insert into t1 values(4,4); -insert into t1 values(5,5); -insert into t1 values(6,6); -insert into t2 values(1,1); -insert into t2 values(2,2); -insert into t2 values(3,3); -insert into t2 values(4,4); -insert into t2 values(5,5); -insert into t2 values(6,6); -commit; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select * from t3 a ; -c1 c2 -0 0 -5 4 -1 0 -6 5 -2 1 -3 2 -4 3 -select /*+ parallel(2) NO_USE_HASH_AGGREGATION */ a.c1,a.c2+a.c1 from t3 a group by a.c1,a.c2 order by a.c2+1+a.c1; -c1 a.c2+a.c1 -0 0 -1 1 -2 3 -3 5 -4 7 -5 9 -6 11 -select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2=b.c1 order by a.c1,a.c2; -c1 c2 -NULL NULL -0 0 -1 0 -2 1 -3 2 -4 3 -5 4 -6 5 -select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2+2=b.c1+1 order by a.c1,a.c2+2; -c1 c2 -NULL NULL -0 0 -1 0 -2 1 -3 2 -4 3 -5 4 -6 5 -select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on abs(a.c2)+2=b.c1 order by a.c1,a.c2+2; -c1 c2 -NULL NULL -NULL NULL -0 0 -1 0 -2 1 -3 2 -4 3 -5 4 -select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1=b.c2 order by a.c1,b.c1; -c1 c2 c1 c2 -1 1 1 1 -2 2 2 2 -3 3 3 3 -4 4 4 4 -5 5 5 5 -6 6 6 6 -select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1+2=b.c2 + 1 order by a.c1,b.c1+2; -c1 c2 c1 c2 -1 1 2 2 -2 2 3 3 -3 3 4 4 -4 4 5 5 -5 5 6 6 -select /*+ use_px parallel(2) */ c2,sum(c1) from (select a.c1,b.c2 from t5 a , t5 b where a.c1=b.c2) group by c2 order by 1,2; -c2 sum(c1) -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -connection syscon; -connection default; -drop table t1; -drop table t2; -drop table t3; -drop table t4; -drop table t5; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_case.result b/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_case.result deleted file mode 100644 index 0e989b87b..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_case.result +++ /dev/null @@ -1,128 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -// Case1: normal test,测试是否将带参数的case转为不带参数的case -// Case2: 测试case表达式里面有列的情况 -// Case3: 测试空串以及NULL的情况 -connection conn_admin; -alter system flush plan cache global; -set @@ob_enable_plan_cache = 0; -// Case1: normal test. -// 所有带参数的case表达式都被转为不带参数的case表达式 -select case 1 when 1 then 'a' when 2 then 'b' else 'c' end from dual; -case 1 when 1 then 'a' when 2 then 'b' else 'c' end -a -// 应该命中else expr -select case 100 when 1 then 'a' when 2 then 'b' else 'c' end from dual; -case 100 when 1 then 'a' when 2 then 'b' else 'c' end -c - -// MySQL允许各个when/then expr结果类型不一致 -// 1和'1'的类型不一致,会被加上cast,都被转为decimal再进行比较,返回'a' -select case 1 when '1' then 'a' when 2 then 'b' else 'c' end from dual; -case 1 when '1' then 'a' when 2 then 'b' else 'c' end -a -// 第二个then 应该要加cast,返回'a' -select case 1 when 1 then 'a' when 2 then 'b' else 3 end from dual; -case 1 when 1 then 'a' when 2 then 'b' else 3 end -a -// 不带参数的case的测试 -// normal test -// 应该返回'a' -select case when 1=1 then 'a' when 2 then 'b' else 'c' end from dual; -case when 1=1 then 'a' when 2 then 'b' else 'c' end -a -// 应该返回'c' -select case when 0=1 then 'a' when 0.0 then 'b' else 'c' end from dual; -case when 0=1 then 'a' when 0.0 then 'b' else 'c' end -c -// 应该返回'a',且0='1'中要加cast -select case when 1='1' then 'a' when 2 then 'b' else 'c' end from dual; -case when 1='1' then 'a' when 2 then 'b' else 'c' end -a -// 应该返回'c',且0='1'中要加cast -select case when 0='1' then 'a' when 0.0 then 'b' else 'c' end from dual; -case when 0='1' then 'a' when 0.0 then 'b' else 'c' end -c -// Case2: 测试建表的情况 -drop table if exists t1; -create table t1 (col_null int, col_int int, col_char char); -insert into t1 values(null, 1, 'a'); -set @@ob_enable_plan_cache = 0; -alter system flush plan cache global; -// 测试int的normal case,应该返回'a' -select case col_int when 1 then 'a' when 2 then 'b' else 'c' end from t1; -case col_int when 1 then 'a' when 2 then 'b' else 'c' end -a -// 测试int需要加cast的情况,第一个when需要加cast, 第二个when不需要 -select case col_int when '1' then 'a' when 2 then 'b' else 'c' end from t1; -case col_int when '1' then 'a' when 2 then 'b' else 'c' end -a -// 测试null的情况,应该返回'c',而且没有cast出现 -select case col_null when 1 then 'a' when 2 then 'b' else 'c' end from t1; -case col_null when 1 then 'a' when 2 then 'b' else 'c' end -c -// Case3: 测试空串以及NULL的情况 -// 应该返回1, MySQL没有把空串看成NULL -select case '' when '' then 1 when 'here' then 2 else 'hh' end from dual; -case '' when '' then 1 when 'here' then 2 else 'hh' end -1 -// 应该返回'hh' -select case NULL when NULL then 1 when 'here' then 2 else 'hh' end from dual; -case NULL when NULL then 1 when 'here' then 2 else 'hh' end -hh -// 应该返回1, MySQL没有把空串看成NULL -select case when '' = '' then 1 when 'here' then 2 else 'hh' end from dual; -case when '' = '' then 1 when 'here' then 2 else 'hh' end -1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'here' -// 应该返回'hh', 因为'here'cast为double会失败,返回值应该是0 -select case when NULL=NULL then 1 when 'here' then 2 else 'hh' end from dual; -case when NULL=NULL then 1 when 'here' then 2 else 'hh' end -hh -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'here' -// Case4: 测试不同字符集,大小写问题 -drop table t1; -create table t1 (a varchar(100) collate utf8_general_ci, cond1 varchar(100) collate utf8_bin, cond2 varchar(100) collate utf8_general_ci); -insert into t1 values('cond', 'COND', 'COND'); -// 返回Null,a和cond1以及a和cond2比较都会使用utf8_bin作为collation type(因为有aggregate collation的过程) -select case a when cond1 then '1' when cond2 then '2' end from t1; -case a when cond1 then '1' when cond2 then '2' end -NULL -// 返回'neq', a和cond1比较使用的是utf8_bin -select case a when cond1 then 'eq' else 'neq' end from t1; -case a when cond1 then 'eq' else 'neq' end -neq -// 返回'eq', a和cond1比较使用的是utf8_general_ci -select case a when cond2 then 'eq' else 'neq' end from t1; -case a when cond2 then 'eq' else 'neq' end -eq -// arg case子节点也是arg case的情况测试,应该都被改为case expr(应该返回'ok') -select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1; -case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end -ok -// Case5: show create view/table -drop view if exists v1; -drop table if exists t2; -create view v1 as select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1; -select * from v1; -Name_exp_1 -ok -// arg case expr的改写不应该影响show create view,结果应该还是arg case expr 而非改写后的case expr -show create view v1; -View Create View character_set_client collation_connection -v1 CREATE VIEW `v1` AS select (case (case `test`.`t1`.`a` when 'cond' then 'eq' else 'neq' end) when 'eq' then 'ok' else 'not ok' end) AS `Name_exp_1` from `test`.`t1` utf8mb4 utf8mb4_general_ci -drop view v1; -create table t2 as select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1; -select * from t2; -case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end -ok -// arg case expr的改写不应该影响show create table,结果应该还是arg case expr 而非改写后的case expr -show create table t2; -Table Create Table -t2 CREATE TABLE `t2` ( - `case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end` varchar(6) NOT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 -drop table t1; -drop table t2; -alter system set _enable_static_typing_engine = false; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_cmp_null.result b/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_cmp_null.result deleted file mode 100644 index fe5edf5a8..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_cmp_null.result +++ /dev/null @@ -1,288 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; -alter system flush plan cache global; -connection default; -set ob_enable_plan_cache=false; -drop table if exists t; -create table t (tinyint_t tinyint, -smallint_t smallint, -mediumint_t mediumint, -int32_t integer, -bigint_t bigint, -utinyint_t tinyint unsigned, -usmallint_t smallint unsigned, -umedium_t mediumint unsigned, -uint32_t integer unsigned, -ubigint_t bigint unsigned, -float_t float, -ufloat_t float unsigned, -double_t double, -udouble_t double unsigned, -number_t number, -unumber_t number unsigned, -datetime_t datetime, -timestamp_t timestamp, -date_t date, -time_t time, -year_t year, -varchar_t varchar(255), -char_t char(255), -tinytext_t tinytext, -mediumtext_t mediumtext, -longtext_t longtext, -bit_t bit, -enum_t enum('a', 'b', 'c'), -set_t set('a', 'b', 'c')); -insert into t values (NULL, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.00, 1.000, 1.0000, 1.00000, 1.000000, -'1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '1.0', '1.00', '1.000', '1.0000', -'1.00000', 1, 'b', 'b'); -connection conn_admin; -connection default; -select NULL = tinyint_t from t limit 1; -NULL = tinyint_t -NULL -select NULL = smallint_t from t limit 1; -NULL = smallint_t -NULL -select NULL = mediumint_t from t limit 1; -NULL = mediumint_t -NULL -select NULL = int32_t from t limit 1; -NULL = int32_t -NULL -select NULL = bigint_t from t limit 1; -NULL = bigint_t -NULL -select NULL = utinyint_t from t limit 1; -NULL = utinyint_t -NULL -select NULL = usmallint_t from t limit 1; -NULL = usmallint_t -NULL -select NULL = umedium_t from t limit 1; -NULL = umedium_t -NULL -select NULL = uint32_t from t limit 1; -NULL = uint32_t -NULL -select NULL = ubigint_t from t limit 1; -NULL = ubigint_t -NULL -select NULL = float_t from t limit 1; -NULL = float_t -NULL -select NULL = ufloat_t from t limit 1; -NULL = ufloat_t -NULL -select NULL = double_t from t limit 1; -NULL = double_t -NULL -select NULL = udouble_t from t limit 1; -NULL = udouble_t -NULL -select NULL = number_t from t limit 1; -NULL = number_t -NULL -select NULL = unumber_t from t limit 1; -NULL = unumber_t -NULL -select NULL = datetime_t from t limit 1; -NULL = datetime_t -NULL -select NULL = timestamp_t from t limit 1; -NULL = timestamp_t -NULL -select NULL = date_t from t limit 1; -NULL = date_t -NULL -select NULL = time_t from t limit 1; -NULL = time_t -NULL -select NULL = year_t from t limit 1; -NULL = year_t -NULL -select NULL = varchar_t from t limit 1; -NULL = varchar_t -NULL -select NULL = char_t from t limit 1; -NULL = char_t -NULL -select NULL = tinytext_t from t limit 1; -NULL = tinytext_t -NULL -select NULL = mediumtext_t from t limit 1; -NULL = mediumtext_t -NULL -select NULL = longtext_t from t limit 1; -NULL = longtext_t -NULL -select NULL = bit_t from t limit 1; -NULL = bit_t -NULL -select NULL = enum_t from t limit 1; -NULL = enum_t -NULL -select NULL = set_t from t limit 1; -NULL = set_t -NULL -select tinyint_t = tinyint_t from t limit 1; -tinyint_t = tinyint_t -NULL -select tinyint_t = smallint_t from t limit 1; -tinyint_t = smallint_t -NULL -select tinyint_t = mediumint_t from t limit 1; -tinyint_t = mediumint_t -NULL -select tinyint_t = int32_t from t limit 1; -tinyint_t = int32_t -NULL -select tinyint_t = bigint_t from t limit 1; -tinyint_t = bigint_t -NULL -select tinyint_t = utinyint_t from t limit 1; -tinyint_t = utinyint_t -NULL -select tinyint_t = usmallint_t from t limit 1; -tinyint_t = usmallint_t -NULL -select tinyint_t = umedium_t from t limit 1; -tinyint_t = umedium_t -NULL -select tinyint_t = uint32_t from t limit 1; -tinyint_t = uint32_t -NULL -select tinyint_t = ubigint_t from t limit 1; -tinyint_t = ubigint_t -NULL -select tinyint_t = float_t from t limit 1; -tinyint_t = float_t -NULL -select tinyint_t = ufloat_t from t limit 1; -tinyint_t = ufloat_t -NULL -select tinyint_t = double_t from t limit 1; -tinyint_t = double_t -NULL -select tinyint_t = udouble_t from t limit 1; -tinyint_t = udouble_t -NULL -select tinyint_t = number_t from t limit 1; -tinyint_t = number_t -NULL -select tinyint_t = unumber_t from t limit 1; -tinyint_t = unumber_t -NULL -select tinyint_t = datetime_t from t limit 1; -tinyint_t = datetime_t -NULL -select tinyint_t = timestamp_t from t limit 1; -tinyint_t = timestamp_t -NULL -select tinyint_t = date_t from t limit 1; -tinyint_t = date_t -NULL -select tinyint_t = time_t from t limit 1; -tinyint_t = time_t -NULL -select tinyint_t = year_t from t limit 1; -tinyint_t = year_t -NULL -select tinyint_t = varchar_t from t limit 1; -tinyint_t = varchar_t -NULL -select tinyint_t = char_t from t limit 1; -tinyint_t = char_t -NULL -select tinyint_t = tinytext_t from t limit 1; -tinyint_t = tinytext_t -NULL -select tinyint_t = mediumtext_t from t limit 1; -tinyint_t = mediumtext_t -NULL -select tinyint_t = longtext_t from t limit 1; -tinyint_t = longtext_t -NULL -select tinyint_t = bit_t from t limit 1; -tinyint_t = bit_t -NULL -select tinyint_t = enum_t from t limit 1; -tinyint_t = enum_t -NULL -select tinyint_t = set_t from t limit 1; -tinyint_t = set_t -NULL -Row With NULL -select (1, 1) = (1, null) from dual; -(1, 1) = (1, null) -NULL -select (1, 1) = (2, null) from dual; -(1, 1) = (2, null) -0 -select (1, 1) < (1, null) from dual; -(1, 1) < (1, null) -NULL -select (1, 1) < (2, null) from dual; -(1, 1) < (2, null) -1 -select (1, 1) <= (1, null) from dual; -(1, 1) <= (1, null) -NULL -select (1, 1) <= (2, null) from dual; -(1, 1) <= (2, null) -1 -select (1, 1) > (1, null) from dual; -(1, 1) > (1, null) -NULL -select (1, 1) > (2, null) from dual; -(1, 1) > (2, null) -0 -select (1, 1) >= (1, null) from dual; -(1, 1) >= (1, null) -NULL -select (1, 1) >= (2, null) from dual; -(1, 1) >= (2, null) -0 -select (1, 1) != (1, null) from dual; -(1, 1) != (1, null) -NULL -select (1, 1) != (2, null) from dual; -(1, 1) != (2, null) -1 -select (1, 1) = (1, tinyint_t) from t limit 1; -(1, 1) = (1, tinyint_t) -NULL -select (1, 1) = (2, tinyint_t) from t limit 1; -(1, 1) = (2, tinyint_t) -0 -select (1, 1) < (1, tinyint_t) from t limit 1; -(1, 1) < (1, tinyint_t) -NULL -select (1, 1) < (2, tinyint_t) from t limit 1; -(1, 1) < (2, tinyint_t) -1 -select (1, 1) <= (1, tinyint_t) from t limit 1; -(1, 1) <= (1, tinyint_t) -NULL -select (1, 1) <= (2, tinyint_t) from t limit 1; -(1, 1) <= (2, tinyint_t) -1 -select (1, 1) > (1, tinyint_t) from t limit 1; -(1, 1) > (1, tinyint_t) -NULL -select (1, 1) > (2, tinyint_t) from t limit 1; -(1, 1) > (2, tinyint_t) -0 -select (1, 1) >= (1, tinyint_t) from t limit 1; -(1, 1) >= (1, tinyint_t) -NULL -select (1, 1) >= (2, tinyint_t) from t limit 1; -(1, 1) >= (2, tinyint_t) -0 -select (1, 1) != (1, tinyint_t) from t limit 1; -(1, 1) != (1, tinyint_t) -NULL -select (1, 1) != (2, tinyint_t) from t limit 1; -(1, 1) != (2, tinyint_t) -1 -connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_hash.result b/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_hash.result deleted file mode 100644 index 2b1fdc99b..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/static_engine_hash.result +++ /dev/null @@ -1,46 +0,0 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; -alter system set enable_async_syslog = false; -connection default; -set @@ob_enable_plan_cache = 0; -drop table if exists t1; -drop table if exists t2; -drop table if exists t3; -create table t1(c1 tinyint, c2 smallint, c3 mediumint, c4 int, c5 bigint, c6 tinyint unsigned, c7 smallint unsigned, c8 mediumint unsigned, c9 int unsigned, c10 bigint unsigned, c11 float, c12 double, c13 float unsigned, c14 double unsigned); -insert into t1 values(null,null,null,null,null,null,null,null,null,null,null,null,null,null); -insert into t1 values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.1, 12.2, 13.3, 14.4); -create table t2(c1 date, c2 time, c3 datetime, c4 timestamp, c5 year); -insert into t2 values(null,null,null,null,null); -insert into t2 values('0000-00-00', '12:34:56', '2019-12-25 12:34:56', '2019-12-25 12:34:56', 2020); -create table t3(c1 char(10), c2 varchar(10), c3 binary(10), c4 varbinary(10), c5 blob, c6 text, c7 enum('','abc'), c8 set('','abc')); -insert into t3 values(null,null,null,null,null,null,null,null); -insert into t3 values('abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc'); -connection conn_admin; -connection default; -select c1, partition_key_v2(null), partition_key_v2(c1), partition_key_v2(c2), partition_key_v2(c3), partition_key_v2(c4), partition_key_v2(c5), partition_key_v2(c6), partition_key_v2(c7), partition_key_v2(c8), partition_key_v2(c9), partition_key_v2(c10), partition_key_v2(c11), partition_key_v2(c12), partition_key_v2(c13), partition_key_v2(c14) from t1; -c1 partition_key_v2(null) partition_key_v2(c1) partition_key_v2(c2) partition_key_v2(c3) partition_key_v2(c4) partition_key_v2(c5) partition_key_v2(c6) partition_key_v2(c7) partition_key_v2(c8) partition_key_v2(c9) partition_key_v2(c10) partition_key_v2(c11) partition_key_v2(c12) partition_key_v2(c13) partition_key_v2(c14) -NULL 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 -1 6960269033020761575 8089716718896805586 4083905729319787502 5173830478357570162 4802761344231991206 208465272938114760 3091397795597481564 6469252686979372057 5312865287321056581 3253817828616337504 7188666914263997357 554171766401687642 1209923708429642637 3652659264439090126 1116622728199546839 -select partition_key_v2(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14) from t1; -partition_key_v2(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14) -8669936285899323595 -3319342296135249634 -select c1, partition_key_v2(c1), partition_key_v2(c2), partition_key_v2(c3), partition_key_v2(c4), partition_key_v2(c5) from t2; -c1 partition_key_v2(c1) partition_key_v2(c2) partition_key_v2(c3) partition_key_v2(c4) partition_key_v2(c5) -NULL 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 -0000-00-00 4118494407655268559 7068692680032799961 905094948208870081 6483578642322323262 1051853082033653591 -select partition_key_v2(c1, c2, c3, c4, c5 from t2; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'from t2' at line 1 -select c1, partition_key_v2(c1), partition_key_v2(c2), partition_key_v2(c3), partition_key_v2(c4), partition_key_v2(c5), partition_key_v2(c6), partition_key_v2(c7), partition_key_v2(c8) from t3; -c1 partition_key_v2(c1) partition_key_v2(c2) partition_key_v2(c3) partition_key_v2(c4) partition_key_v2(c5) partition_key_v2(c6) partition_key_v2(c7) partition_key_v2(c8) -NULL 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 6960269033020761575 -abc 258901174748407223 258901174748407223 1050281475281956529 7076783908008484943 7076783908008484943 258901174748407223 4083905729319787502 4083905729319787502 -select partition_key_v2(c1, c2, c3, c4, c5, c6, c7, c8) from t3; -partition_key_v2(c1, c2, c3, c4, c5, c6, c7, c8) -6029179996760524639 -644396205906272596 -connection conn_admin; -connection default; -drop table t1; -drop table t2; -drop table t3; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/subplan_filter.result b/test/mysql_test/test_suite/static_engine/r/mysql/subplan_filter.result deleted file mode 100644 index aca7ad092..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/subplan_filter.result +++ /dev/null @@ -1,258 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -drop table if exists t2; -create table t1 (c1 int primary key, c2 decimal, c3 int, c4 varchar(20)); -create table t2 (c1 int primary key, c2 decimal, c3 int, c4 varchar(20)); -insert into t1 (c1, c2, c3, c4) values (1, 1, 1, 'a'); -insert into t1 (c1, c2, c3, c4) values (2, 2, null, 'a'); -insert into t1 (c1, c2, c3, c4) values (3, 3, null, 'a'); -insert into t2 (c1, c2, c3, c4) values (1, 1, 1, 'a'); -insert into t2 (c1, c2, c3, c4) values (2, 2, null, 'a'); -insert into t2 (c1, c2, c3, c4) values (3, 3, null, 'a'); -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -set ob_enable_transformation = off; -select (1, 1) = (1, 0); -(1, 1) = (1, 0) -0 -select (1, 1) = (1, 1); -(1, 1) = (1, 1) -1 -select 1 <=> 1; -1 <=> 1 -1 -select 1 <=> 0; -1 <=> 0 -0 -select 1 <=> null; -1 <=> null -0 -select null <=> 1; -null <=> 1 -0 -select null <=> null; -null <=> null -1 -select (1, 1) <=> (1, 1); -(1, 1) <=> (1, 1) -1 -select (1, null) <=> (1, 1); -(1, null) <=> (1, 1) -0 -select (1, null) <=> (1, null); -(1, null) <=> (1, null) -1 -select (1, null) <=> (null, null); -(1, null) <=> (null, null) -0 -select (null, null) <=> (null, null); -(null, null) <=> (null, null) -1 -select (select c1, c2 from t1 where c1 = 1) = (1, 1) from t2 where c1 = 1; -(select c1, c2 from t1 where c1 = 1) = (1, 1) -1 -select (select c1, c2 from t1 where c1 = 1) = (c2, c1) from t2 where c1 = 1; -(select c1, c2 from t1 where c1 = 1) = (c2, c1) -1 -select (select c1 from t1 where c1 = 1) + 1 from t2 where c1 = 1; -(select c1 from t1 where c1 = 1) + 1 -2 -select (select c1 from t1 where 1 = 0) + 1 from t2 where c1 = 1; -(select c1 from t1 where 1 = 0) + 1 -NULL -select c2 in (select c2 from t2) from t1; -c2 in (select c2 from t2) -1 -1 -1 -select c2 = any(select c2 from t2) from t1; -c2 = any(select c2 from t2) -1 -1 -1 -select c2 != any(select c2 from t2) from t1; -c2 != any(select c2 from t2) -1 -1 -1 -select c2 < any(select c2 from t2) from t1; -c2 < any(select c2 from t2) -1 -1 -0 -select c2 <= any(select c2 from t2) from t1; -c2 <= any(select c2 from t2) -1 -1 -1 -select c2 > any(select c2 from t2) from t1; -c2 > any(select c2 from t2) -0 -1 -1 -select c2 >= any(select c2 from t2) from t1; -c2 >= any(select c2 from t2) -1 -1 -1 -select c2 <=> any(select c2 from t2) from t1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '(select c2 from t2) from t1' at line 1 -select exists (select * from t2), not exists (select * from t2) from t1; -exists (select * from t2) not exists (select * from t2) -1 0 -1 0 -1 0 -select exists (select * from t2 where 1 = 0), not exists (select * from t2 where 1 = 0) from t1; -exists (select * from t2 where 1 = 0) not exists (select * from t2 where 1 = 0) -0 1 -0 1 -0 1 -select c2 = all (select c2 from t2) from t1; -c2 = all (select c2 from t2) -0 -0 -0 -select c2 = any (select c2 from t2) from t1; -c2 = any (select c2 from t2) -1 -1 -1 -select c2 = all (select c3 from t2) from t1; -c2 = all (select c3 from t2) -NULL -0 -0 -select c2 = any (select c3 from t2) from t1; -c2 = any (select c3 from t2) -1 -NULL -NULL -select c3 = all (select c2 from t2) from t1; -c3 = all (select c2 from t2) -0 -NULL -NULL -select c3 = any (select c2 from t2) from t1; -c3 = any (select c2 from t2) -1 -NULL -NULL -select c3 <=> (select c2 from t2) from t1; -ERROR 21000: Subquery returns more than 1 row -select (c1, c3) = all (select c1, c2 from t2) from t1; -(c1, c3) = all (select c1, c2 from t2) -0 -0 -0 -select (c1, c3) = any (select c1, c2 from t2) from t1; -(c1, c3) = any (select c1, c2 from t2) -1 -NULL -NULL -select (c1, c3) <=> (select c1, c2 from t2) from t1; -ERROR 21000: Subquery returns more than 1 row -select exists (select 1); -exists (select 1) -1 -select not exists (select 1); -not exists (select 1) -0 -select 1 from dual where exists (select c1 from t2); -1 -1 -select 1 from dual where not exists (select c1 from t2); -1 -select * from t1 where exists (select * from t2 where c1 < 0); -c1 c2 c3 c4 -select * from t1 where exists (select * from t2 where c1 > 0); -c1 c2 c3 c4 -1 1 1 a -2 2 NULL a -3 3 NULL a -select (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 = 1); -(select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 = 1) -1 -select (select c1, c2 from t1 where c1 = 0) = (select c1, c2 from t2 where c1 = 1); -(select c1, c2 from t1 where c1 = 0) = (select c1, c2 from t2 where c1 = 1) -NULL -select (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 = 0); -(select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 = 0) -NULL -select (select c1, c2 from t1 where c1 = 0) = (select c1, c2 from t2 where c1 = 0); -(select c1, c2 from t1 where c1 = 0) = (select c1, c2 from t2 where c1 = 0) -NULL -select (select c1, c2 from t1 where c1 = 1) <=> (select c1, c2 from t2 where c1 = 1); -(select c1, c2 from t1 where c1 = 1) <=> (select c1, c2 from t2 where c1 = 1) -1 -select (select c1, c2 from t1 where c1 = 0) <=> (select c1, c2 from t2 where c1 = 1); -(select c1, c2 from t1 where c1 = 0) <=> (select c1, c2 from t2 where c1 = 1) -0 -select (select c1, c2 from t1 where c1 = 1) <=> (select c1, c2 from t2 where c1 = 0); -(select c1, c2 from t1 where c1 = 1) <=> (select c1, c2 from t2 where c1 = 0) -0 -select (select c1, c2 from t1 where c1 = 0) <=> (select c1, c2 from t2 where c1 = 0); -(select c1, c2 from t1 where c1 = 0) <=> (select c1, c2 from t2 where c1 = 0) -1 -select (select c1, c2 from t1 where c1 > 1) = (select c1, c2 from t2 where c1 = 1); -ERROR 21000: Subquery returns more than 1 row -select (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 > 1); -ERROR 21000: Subquery returns more than 1 row -select (select c1, c2 from t1 where c1 > 1) = (select c1, c2 from t2 where c1 > 1); -ERROR 21000: Subquery returns more than 1 row -select c1 + (select c2 from t2 where c1 = 2), c2 in (select c3 from t2) from t1; -c1 + (select c2 from t2 where c1 = 2) c2 in (select c3 from t2) -3 1 -4 NULL -5 NULL -select c1 + (select c2 from t2 where c1 = t1.c2 and c3 <= t1.c2) from t1; -c1 + (select c2 from t2 where c1 = t1.c2 and c3 <= t1.c2) -2 -NULL -NULL -select * from t1 where c1 + (select c2 from t2 where c1 = t1.c2 and c3 <= t1.c2) < 10; -c1 c2 c3 c4 -1 1 1 a -select (select c1, c2 from t2 where c1 = 1) = (c2, c1) from t1; -(select c1, c2 from t2 where c1 = 1) = (c2, c1) -1 -0 -0 -select (select c1, c2 from t2 where c1 = 1) = (c1, c2) from t1; -(select c1, c2 from t2 where c1 = 1) = (c1, c2) -1 -0 -0 -select (c2, c1) <= (select c1, c2 from t2 where c1 = 1) from t1; -(c2, c1) <= (select c1, c2 from t2 where c1 = 1) -1 -0 -0 -select (c1, c2) <= (select c1, c2 from t2 where c1 = 1) from t1; -(c1, c2) <= (select c1, c2 from t2 where c1 = 1) -1 -0 -0 -select (select c2, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) from t1; -(select c2, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) -1 -1 -1 -select (select c1, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) from t1; -(select c1, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) -1 -1 -1 -select c2 > (select c1 from t2 where c3 is not null) from t1; -c2 > (select c1 from t2 where c3 is not null) -0 -1 -1 -select * from t1 where c2 + (select c1 from t2 where c1 = t1.c2) < 10; -c1 c2 c3 c4 -1 1 1 a -2 2 NULL a -3 3 NULL a -set ob_enable_transformation = on; -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/table_scan.result b/test/mysql_test/test_suite/static_engine/r/mysql/table_scan.result deleted file mode 100644 index f77ffb19f..000000000 --- a/test/mysql_test/test_suite/static_engine/r/mysql/table_scan.result +++ /dev/null @@ -1,86 +0,0 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; -drop table if exists t1; -create table t1 (c1 number, c2 number, c3 char(20), c4 varchar(20), primary key(c1, c2), index i1 (c2)); -insert into t1 (c1, c2, c3, c4) values (1, 2, 'a', 'b'); -insert into t1 (c1, c2, c3, c4) values (3, 4, 'c', 'd'); -insert into t1 (c1, c2, c3, c4) values (5, 1, 'xx', 'yy'); -insert into t1 (c1, c2, c3, c4) values (5, 2, 'xx', 'yy'); -insert into t1 (c1, c2, c3, c4) values (7, 5, 'xx1', 'yy2'); -insert into t1 (c1, c2, c3, c4) values (7, 6, 'xx1', 'yy2'); -insert into t1 (c1, c2, c3, c4) values (8, 7, 'xx1', 'yy2'); -alter table t1 add column c5 varchar(20) default 'c5_default'; -connection syscon; -connection default; -set @@ob_enable_plan_cache = 0; -select * from t1; -c1 c2 c3 c4 c5 -1 2 a b c5_default -3 4 c d c5_default -5 1 xx yy c5_default -5 2 xx yy c5_default -7 5 xx1 yy2 c5_default -7 6 xx1 yy2 c5_default -8 7 xx1 yy2 c5_default -select * from t1 order by c1 desc, c2 desc; -c1 c2 c3 c4 c5 -8 7 xx1 yy2 c5_default -7 6 xx1 yy2 c5_default -7 5 xx1 yy2 c5_default -5 2 xx yy c5_default -5 1 xx yy c5_default -3 4 c d c5_default -1 2 a b c5_default -select * from t1 where c1 + c2 < 10; -c1 c2 c3 c4 c5 -1 2 a b c5_default -3 4 c d c5_default -5 1 xx yy c5_default -5 2 xx yy c5_default -select * from t1 limit 2; -c1 c2 c3 c4 c5 -1 2 a b c5_default -3 4 c d c5_default -select * from t1 where c1 = 5; -c1 c2 c3 c4 c5 -5 1 xx yy c5_default -5 2 xx yy c5_default -select * from t1 where c1 = 5 or c1 = 7; -c1 c2 c3 c4 c5 -5 1 xx yy c5_default -5 2 xx yy c5_default -7 5 xx1 yy2 c5_default -7 6 xx1 yy2 c5_default -select * from t1 where (c1 = 2 and c2 = 4) or (c1 = 7 and c2 = 5) or (c1 = 8 and c2 = 7); -c1 c2 c3 c4 c5 -7 5 xx1 yy2 c5_default -8 7 xx1 yy2 c5_default -select * from t1 where c2 = 2 and c1 + c2 < 10 and c4 > c3; -c1 c2 c3 c4 c5 -1 2 a b c5_default -5 2 xx yy c5_default -select c1, c2 from t1 where c2 > 4; -c1 c2 -7 5 -7 6 -8 7 -***** test index back -drop table t1; -create table t1(c1 int primary key, c2 int, c3 int, index idx(c2)); -insert into t1 values(1,1,1), (2,2,2), (3,3,3), (4,4,4),(5,5,5), (6,6,6), (7,7,7); - -select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c1 < 4; -c1 c2 c3 -2 2 2 -3 3 3 - -select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c3 < 4; -c1 c2 c3 -2 2 2 -3 3 3 -select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c3 != 1 limit 2; -c1 c2 c3 -2 2 2 -3 3 3 -drop table t1; -connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_unhex.test b/test/mysql_test/test_suite/static_engine/t/expr_unhex.test deleted file mode 100644 index 6c3b9d7b8..000000000 --- a/test/mysql_test/test_suite/static_engine/t/expr_unhex.test +++ /dev/null @@ -1,22 +0,0 @@ - ---disable_abort_on_error - - -connect (sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); -connection default; - ---disable_warnings -drop table if exists t1; -create table t1 (c1 varchar(2000)); -insert into t1 values(hex("ABC")), (hex("123")); - -connection sys; -sleep 2; -connection default; -set @@ob_enable_plan_cache = 0; -select unhex(c1) from t1; -select unhex("4142") from dual; - -connection sys; - ---sleep 2 diff --git a/test/mysql_test/test_suite/transformer/r/mysql/transformer_outer_join_simplification.result b/test/mysql_test/test_suite/transformer/r/mysql/transformer_outer_join_simplification.result deleted file mode 100644 index f185a6fda..000000000 --- a/test/mysql_test/test_suite/transformer/r/mysql/transformer_outer_join_simplification.result +++ /dev/null @@ -1,8849 +0,0 @@ -set autocommit=0; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2); -c1 c2 c3 c1 c2 -select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2); -c1 c2 c3 c1 c2 -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); -rollback; -update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); -rollback; -update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0); -c1 c2 c3 c1 c2 -select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0); -c1 c2 c3 c1 c2 -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); -rollback; -update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false)); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false)); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); -rollback; -update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false)); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -select /*+ NO_REWRITE */* from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false)); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); -rollback; -update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); -rollback; -update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2); -c1 c2 c3 c1 c2 -select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2); -c1 c2 c3 c1 c2 -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); -rollback; -update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null)); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null)); -c1 c2 c3 c1 c2 -3 5 b NULL NULL -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); -rollback; -update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null)); -c1 c2 c3 c1 c2 -select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null)); -c1 c2 c3 c1 c2 -insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); -rollback; -update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 using(c1) where (t2.c1 is not null)=0; -c1 c2 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null)=0; -c1 c2 c2 c3 -insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is not null)=0); -rollback; -insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null)=0); -rollback; -update t1 set c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null); -c1 c2 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null); -c1 c2 c2 c3 -insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); -rollback; -insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0); -c1 c2 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0); -c1 c2 c2 c3 -insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); -rollback; -insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1; -c1 c2 c2 c3 -1 1 1 o -2 5 5 c -3 2 5 b -4 6 6 o -5 4 7 d -6 7 8 c -select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1; -c1 c2 c2 c3 -1 1 1 o -2 5 5 c -3 2 5 b -4 6 6 o -5 4 7 d -6 7 8 c -insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1); -rollback; -insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0; -c1 c2 c1 c2 c3 -1 1 NULL NULL NULL -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0; -c1 c2 c1 c2 c3 -1 1 NULL NULL NULL -insert into t1_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t2.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0; -c1 c2 c1 c2 c3 -1 1 NULL NULL NULL -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0; -c1 c2 c1 c2 c3 -1 1 NULL NULL NULL -insert into t1_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); -rollback; -insert into t1_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2); -c1 c2 c1 c2 c3 -4 6 3 5 b -5 4 3 5 b -5 4 4 6 o -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2); -c1 c2 c1 c2 c3 -4 6 3 5 b -5 4 3 5 b -5 4 4 6 o -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -insert into t4_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2) and t2.c1=1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2) and t2.c1=1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2) and t2.c1=1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2) and t2.c1=1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o NULL NULL NULL -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -4 6 4 6 o 3 6 1 -5 4 5 7 d NULL NULL NULL -6 7 6 8 c NULL NULL NULL -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o NULL NULL NULL -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -4 6 4 6 o 3 6 1 -5 4 5 7 d NULL NULL NULL -6 7 6 8 c NULL NULL NULL -insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1; -c1 c2 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1; -c1 c2 c1 c2 c3 c1 c2 c3 -insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1, t1 as v join t2 on v.c1 = t2.c1; -c1 c2 c1 c2 c1 c2 c3 -1 1 1 1 1 1 o -1 1 2 5 2 5 c -1 1 3 2 3 5 b -1 1 4 6 4 6 o -1 1 5 4 5 7 d -1 1 6 7 6 8 c -2 5 1 1 1 1 o -2 5 2 5 2 5 c -2 5 3 2 3 5 b -2 5 4 6 4 6 o -2 5 5 4 5 7 d -2 5 6 7 6 8 c -3 2 1 1 1 1 o -3 2 2 5 2 5 c -3 2 3 2 3 5 b -3 2 4 6 4 6 o -3 2 5 4 5 7 d -3 2 6 7 6 8 c -4 6 1 1 1 1 o -4 6 2 5 2 5 c -4 6 3 2 3 5 b -4 6 4 6 4 6 o -4 6 5 4 5 7 d -4 6 6 7 6 8 c -5 4 1 1 1 1 o -5 4 2 5 2 5 c -5 4 3 2 3 5 b -5 4 4 6 4 6 o -5 4 5 4 5 7 d -5 4 6 7 6 8 c -6 7 1 1 1 1 o -6 7 2 5 2 5 c -6 7 3 2 3 5 b -6 7 4 6 4 6 o -6 7 5 4 5 7 d -6 7 6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t1 as v join t2 on v.c1 = t2.c1; -c1 c2 c1 c2 c1 c2 c3 -1 1 1 1 1 1 o -1 1 2 5 2 5 c -1 1 3 2 3 5 b -1 1 4 6 4 6 o -1 1 5 4 5 7 d -1 1 6 7 6 8 c -2 5 1 1 1 1 o -2 5 2 5 2 5 c -2 5 3 2 3 5 b -2 5 4 6 4 6 o -2 5 5 4 5 7 d -2 5 6 7 6 8 c -3 2 1 1 1 1 o -3 2 2 5 2 5 c -3 2 3 2 3 5 b -3 2 4 6 4 6 o -3 2 5 4 5 7 d -3 2 6 7 6 8 c -4 6 1 1 1 1 o -4 6 2 5 2 5 c -4 6 3 2 3 5 b -4 6 4 6 4 6 o -4 6 5 4 5 7 d -4 6 6 7 6 8 c -5 4 1 1 1 1 o -5 4 2 5 2 5 c -5 4 3 2 3 5 b -5 4 4 6 4 6 o -5 4 5 4 5 7 d -5 4 6 7 6 8 c -6 7 1 1 1 1 o -6 7 2 5 2 5 c -6 7 3 2 3 5 b -6 7 4 6 4 6 o -6 7 5 4 5 7 d -6 7 6 7 6 8 c -insert into t6_temp (select * from t1, t1 as v join t2 on v.c1 = t2.c1); -rollback; -insert into t6_temp (select /*+ NO_REWRITE */* from t1, t1 as v join t2 on v.c1 = t2.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 2 5 4 -3 2 3 5 b 4 5 1 -3 2 3 5 b 5 5 5 -3 2 3 5 b 6 5 c -4 6 4 6 o 3 6 1 -NULL NULL NULL NULL NULL 1 2 3 -select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 2 5 4 -3 2 3 5 b 4 5 1 -3 2 3 5 b 5 5 5 -3 2 3 5 b 6 5 c -4 6 4 6 o 3 6 1 -NULL NULL NULL NULL NULL 1 2 3 -insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2); -rollback; -update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 1 o 1 2 3 -1 1 1 1 o 1 1 o 2 5 4 -1 1 1 1 o 1 1 o 3 6 1 -1 1 1 1 o 1 1 o 4 5 1 -1 1 1 1 o 1 1 o 5 5 5 -1 1 1 1 o 1 1 o 6 5 c -1 1 1 1 o 2 5 c 1 2 3 -1 1 1 1 o 2 5 c 2 5 4 -1 1 1 1 o 2 5 c 3 6 1 -1 1 1 1 o 2 5 c 4 5 1 -1 1 1 1 o 2 5 c 5 5 5 -1 1 1 1 o 2 5 c 6 5 c -1 1 1 1 o 3 5 b 1 2 3 -1 1 1 1 o 3 5 b 2 5 4 -1 1 1 1 o 3 5 b 3 6 1 -1 1 1 1 o 3 5 b 4 5 1 -1 1 1 1 o 3 5 b 5 5 5 -1 1 1 1 o 3 5 b 6 5 c -1 1 1 1 o 4 6 o 1 2 3 -1 1 1 1 o 4 6 o 2 5 4 -1 1 1 1 o 4 6 o 3 6 1 -1 1 1 1 o 4 6 o 4 5 1 -1 1 1 1 o 4 6 o 5 5 5 -1 1 1 1 o 4 6 o 6 5 c -1 1 1 1 o 5 7 d 1 2 3 -1 1 1 1 o 5 7 d 2 5 4 -1 1 1 1 o 5 7 d 3 6 1 -1 1 1 1 o 5 7 d 4 5 1 -1 1 1 1 o 5 7 d 5 5 5 -1 1 1 1 o 5 7 d 6 5 c -1 1 1 1 o 6 8 c 1 2 3 -1 1 1 1 o 6 8 c 2 5 4 -1 1 1 1 o 6 8 c 3 6 1 -1 1 1 1 o 6 8 c 4 5 1 -1 1 1 1 o 6 8 c 5 5 5 -1 1 1 1 o 6 8 c 6 5 c -2 5 2 5 c 1 1 o 1 2 3 -2 5 2 5 c 1 1 o 2 5 4 -2 5 2 5 c 1 1 o 3 6 1 -2 5 2 5 c 1 1 o 4 5 1 -2 5 2 5 c 1 1 o 5 5 5 -2 5 2 5 c 1 1 o 6 5 c -2 5 2 5 c 2 5 c 1 2 3 -2 5 2 5 c 2 5 c 2 5 4 -2 5 2 5 c 2 5 c 3 6 1 -2 5 2 5 c 2 5 c 4 5 1 -2 5 2 5 c 2 5 c 5 5 5 -2 5 2 5 c 2 5 c 6 5 c -2 5 2 5 c 3 5 b 1 2 3 -2 5 2 5 c 3 5 b 2 5 4 -2 5 2 5 c 3 5 b 3 6 1 -2 5 2 5 c 3 5 b 4 5 1 -2 5 2 5 c 3 5 b 5 5 5 -2 5 2 5 c 3 5 b 6 5 c -2 5 2 5 c 4 6 o 1 2 3 -2 5 2 5 c 4 6 o 2 5 4 -2 5 2 5 c 4 6 o 3 6 1 -2 5 2 5 c 4 6 o 4 5 1 -2 5 2 5 c 4 6 o 5 5 5 -2 5 2 5 c 4 6 o 6 5 c -2 5 2 5 c 5 7 d 1 2 3 -2 5 2 5 c 5 7 d 2 5 4 -2 5 2 5 c 5 7 d 3 6 1 -2 5 2 5 c 5 7 d 4 5 1 -2 5 2 5 c 5 7 d 5 5 5 -2 5 2 5 c 5 7 d 6 5 c -2 5 2 5 c 6 8 c 1 2 3 -2 5 2 5 c 6 8 c 2 5 4 -2 5 2 5 c 6 8 c 3 6 1 -2 5 2 5 c 6 8 c 4 5 1 -2 5 2 5 c 6 8 c 5 5 5 -2 5 2 5 c 6 8 c 6 5 c -3 2 3 5 b 1 1 o 1 2 3 -3 2 3 5 b 1 1 o 2 5 4 -3 2 3 5 b 1 1 o 3 6 1 -3 2 3 5 b 1 1 o 4 5 1 -3 2 3 5 b 1 1 o 5 5 5 -3 2 3 5 b 1 1 o 6 5 c -3 2 3 5 b 2 5 c 1 2 3 -3 2 3 5 b 2 5 c 2 5 4 -3 2 3 5 b 2 5 c 3 6 1 -3 2 3 5 b 2 5 c 4 5 1 -3 2 3 5 b 2 5 c 5 5 5 -3 2 3 5 b 2 5 c 6 5 c -3 2 3 5 b 3 5 b 1 2 3 -3 2 3 5 b 3 5 b 2 5 4 -3 2 3 5 b 3 5 b 3 6 1 -3 2 3 5 b 3 5 b 4 5 1 -3 2 3 5 b 3 5 b 5 5 5 -3 2 3 5 b 3 5 b 6 5 c -3 2 3 5 b 4 6 o 1 2 3 -3 2 3 5 b 4 6 o 2 5 4 -3 2 3 5 b 4 6 o 3 6 1 -3 2 3 5 b 4 6 o 4 5 1 -3 2 3 5 b 4 6 o 5 5 5 -3 2 3 5 b 4 6 o 6 5 c -3 2 3 5 b 5 7 d 1 2 3 -3 2 3 5 b 5 7 d 2 5 4 -3 2 3 5 b 5 7 d 3 6 1 -3 2 3 5 b 5 7 d 4 5 1 -3 2 3 5 b 5 7 d 5 5 5 -3 2 3 5 b 5 7 d 6 5 c -3 2 3 5 b 6 8 c 1 2 3 -3 2 3 5 b 6 8 c 2 5 4 -3 2 3 5 b 6 8 c 3 6 1 -3 2 3 5 b 6 8 c 4 5 1 -3 2 3 5 b 6 8 c 5 5 5 -3 2 3 5 b 6 8 c 6 5 c -4 6 4 6 o 1 1 o 1 2 3 -4 6 4 6 o 1 1 o 2 5 4 -4 6 4 6 o 1 1 o 3 6 1 -4 6 4 6 o 1 1 o 4 5 1 -4 6 4 6 o 1 1 o 5 5 5 -4 6 4 6 o 1 1 o 6 5 c -4 6 4 6 o 2 5 c 1 2 3 -4 6 4 6 o 2 5 c 2 5 4 -4 6 4 6 o 2 5 c 3 6 1 -4 6 4 6 o 2 5 c 4 5 1 -4 6 4 6 o 2 5 c 5 5 5 -4 6 4 6 o 2 5 c 6 5 c -4 6 4 6 o 3 5 b 1 2 3 -4 6 4 6 o 3 5 b 2 5 4 -4 6 4 6 o 3 5 b 3 6 1 -4 6 4 6 o 3 5 b 4 5 1 -4 6 4 6 o 3 5 b 5 5 5 -4 6 4 6 o 3 5 b 6 5 c -4 6 4 6 o 4 6 o 1 2 3 -4 6 4 6 o 4 6 o 2 5 4 -4 6 4 6 o 4 6 o 3 6 1 -4 6 4 6 o 4 6 o 4 5 1 -4 6 4 6 o 4 6 o 5 5 5 -4 6 4 6 o 4 6 o 6 5 c -4 6 4 6 o 5 7 d 1 2 3 -4 6 4 6 o 5 7 d 2 5 4 -4 6 4 6 o 5 7 d 3 6 1 -4 6 4 6 o 5 7 d 4 5 1 -4 6 4 6 o 5 7 d 5 5 5 -4 6 4 6 o 5 7 d 6 5 c -4 6 4 6 o 6 8 c 1 2 3 -4 6 4 6 o 6 8 c 2 5 4 -4 6 4 6 o 6 8 c 3 6 1 -4 6 4 6 o 6 8 c 4 5 1 -4 6 4 6 o 6 8 c 5 5 5 -4 6 4 6 o 6 8 c 6 5 c -5 4 5 7 d 1 1 o 1 2 3 -5 4 5 7 d 1 1 o 2 5 4 -5 4 5 7 d 1 1 o 3 6 1 -5 4 5 7 d 1 1 o 4 5 1 -5 4 5 7 d 1 1 o 5 5 5 -5 4 5 7 d 1 1 o 6 5 c -5 4 5 7 d 2 5 c 1 2 3 -5 4 5 7 d 2 5 c 2 5 4 -5 4 5 7 d 2 5 c 3 6 1 -5 4 5 7 d 2 5 c 4 5 1 -5 4 5 7 d 2 5 c 5 5 5 -5 4 5 7 d 2 5 c 6 5 c -5 4 5 7 d 3 5 b 1 2 3 -5 4 5 7 d 3 5 b 2 5 4 -5 4 5 7 d 3 5 b 3 6 1 -5 4 5 7 d 3 5 b 4 5 1 -5 4 5 7 d 3 5 b 5 5 5 -5 4 5 7 d 3 5 b 6 5 c -5 4 5 7 d 4 6 o 1 2 3 -5 4 5 7 d 4 6 o 2 5 4 -5 4 5 7 d 4 6 o 3 6 1 -5 4 5 7 d 4 6 o 4 5 1 -5 4 5 7 d 4 6 o 5 5 5 -5 4 5 7 d 4 6 o 6 5 c -5 4 5 7 d 5 7 d 1 2 3 -5 4 5 7 d 5 7 d 2 5 4 -5 4 5 7 d 5 7 d 3 6 1 -5 4 5 7 d 5 7 d 4 5 1 -5 4 5 7 d 5 7 d 5 5 5 -5 4 5 7 d 5 7 d 6 5 c -5 4 5 7 d 6 8 c 1 2 3 -5 4 5 7 d 6 8 c 2 5 4 -5 4 5 7 d 6 8 c 3 6 1 -5 4 5 7 d 6 8 c 4 5 1 -5 4 5 7 d 6 8 c 5 5 5 -5 4 5 7 d 6 8 c 6 5 c -6 7 6 8 c 1 1 o 1 2 3 -6 7 6 8 c 1 1 o 2 5 4 -6 7 6 8 c 1 1 o 3 6 1 -6 7 6 8 c 1 1 o 4 5 1 -6 7 6 8 c 1 1 o 5 5 5 -6 7 6 8 c 1 1 o 6 5 c -6 7 6 8 c 2 5 c 1 2 3 -6 7 6 8 c 2 5 c 2 5 4 -6 7 6 8 c 2 5 c 3 6 1 -6 7 6 8 c 2 5 c 4 5 1 -6 7 6 8 c 2 5 c 5 5 5 -6 7 6 8 c 2 5 c 6 5 c -6 7 6 8 c 3 5 b 1 2 3 -6 7 6 8 c 3 5 b 2 5 4 -6 7 6 8 c 3 5 b 3 6 1 -6 7 6 8 c 3 5 b 4 5 1 -6 7 6 8 c 3 5 b 5 5 5 -6 7 6 8 c 3 5 b 6 5 c -6 7 6 8 c 4 6 o 1 2 3 -6 7 6 8 c 4 6 o 2 5 4 -6 7 6 8 c 4 6 o 3 6 1 -6 7 6 8 c 4 6 o 4 5 1 -6 7 6 8 c 4 6 o 5 5 5 -6 7 6 8 c 4 6 o 6 5 c -6 7 6 8 c 5 7 d 1 2 3 -6 7 6 8 c 5 7 d 2 5 4 -6 7 6 8 c 5 7 d 3 6 1 -6 7 6 8 c 5 7 d 4 5 1 -6 7 6 8 c 5 7 d 5 5 5 -6 7 6 8 c 5 7 d 6 5 c -6 7 6 8 c 6 8 c 1 2 3 -6 7 6 8 c 6 8 c 2 5 4 -6 7 6 8 c 6 8 c 3 6 1 -6 7 6 8 c 6 8 c 4 5 1 -6 7 6 8 c 6 8 c 5 5 5 -6 7 6 8 c 6 8 c 6 5 c -select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 1 o 1 2 3 -1 1 1 1 o 1 1 o 2 5 4 -1 1 1 1 o 1 1 o 3 6 1 -1 1 1 1 o 1 1 o 4 5 1 -1 1 1 1 o 1 1 o 5 5 5 -1 1 1 1 o 1 1 o 6 5 c -1 1 1 1 o 2 5 c 1 2 3 -1 1 1 1 o 2 5 c 2 5 4 -1 1 1 1 o 2 5 c 3 6 1 -1 1 1 1 o 2 5 c 4 5 1 -1 1 1 1 o 2 5 c 5 5 5 -1 1 1 1 o 2 5 c 6 5 c -1 1 1 1 o 3 5 b 1 2 3 -1 1 1 1 o 3 5 b 2 5 4 -1 1 1 1 o 3 5 b 3 6 1 -1 1 1 1 o 3 5 b 4 5 1 -1 1 1 1 o 3 5 b 5 5 5 -1 1 1 1 o 3 5 b 6 5 c -1 1 1 1 o 4 6 o 1 2 3 -1 1 1 1 o 4 6 o 2 5 4 -1 1 1 1 o 4 6 o 3 6 1 -1 1 1 1 o 4 6 o 4 5 1 -1 1 1 1 o 4 6 o 5 5 5 -1 1 1 1 o 4 6 o 6 5 c -1 1 1 1 o 5 7 d 1 2 3 -1 1 1 1 o 5 7 d 2 5 4 -1 1 1 1 o 5 7 d 3 6 1 -1 1 1 1 o 5 7 d 4 5 1 -1 1 1 1 o 5 7 d 5 5 5 -1 1 1 1 o 5 7 d 6 5 c -1 1 1 1 o 6 8 c 1 2 3 -1 1 1 1 o 6 8 c 2 5 4 -1 1 1 1 o 6 8 c 3 6 1 -1 1 1 1 o 6 8 c 4 5 1 -1 1 1 1 o 6 8 c 5 5 5 -1 1 1 1 o 6 8 c 6 5 c -2 5 2 5 c 1 1 o 1 2 3 -2 5 2 5 c 1 1 o 2 5 4 -2 5 2 5 c 1 1 o 3 6 1 -2 5 2 5 c 1 1 o 4 5 1 -2 5 2 5 c 1 1 o 5 5 5 -2 5 2 5 c 1 1 o 6 5 c -2 5 2 5 c 2 5 c 1 2 3 -2 5 2 5 c 2 5 c 2 5 4 -2 5 2 5 c 2 5 c 3 6 1 -2 5 2 5 c 2 5 c 4 5 1 -2 5 2 5 c 2 5 c 5 5 5 -2 5 2 5 c 2 5 c 6 5 c -2 5 2 5 c 3 5 b 1 2 3 -2 5 2 5 c 3 5 b 2 5 4 -2 5 2 5 c 3 5 b 3 6 1 -2 5 2 5 c 3 5 b 4 5 1 -2 5 2 5 c 3 5 b 5 5 5 -2 5 2 5 c 3 5 b 6 5 c -2 5 2 5 c 4 6 o 1 2 3 -2 5 2 5 c 4 6 o 2 5 4 -2 5 2 5 c 4 6 o 3 6 1 -2 5 2 5 c 4 6 o 4 5 1 -2 5 2 5 c 4 6 o 5 5 5 -2 5 2 5 c 4 6 o 6 5 c -2 5 2 5 c 5 7 d 1 2 3 -2 5 2 5 c 5 7 d 2 5 4 -2 5 2 5 c 5 7 d 3 6 1 -2 5 2 5 c 5 7 d 4 5 1 -2 5 2 5 c 5 7 d 5 5 5 -2 5 2 5 c 5 7 d 6 5 c -2 5 2 5 c 6 8 c 1 2 3 -2 5 2 5 c 6 8 c 2 5 4 -2 5 2 5 c 6 8 c 3 6 1 -2 5 2 5 c 6 8 c 4 5 1 -2 5 2 5 c 6 8 c 5 5 5 -2 5 2 5 c 6 8 c 6 5 c -3 2 3 5 b 1 1 o 1 2 3 -3 2 3 5 b 1 1 o 2 5 4 -3 2 3 5 b 1 1 o 3 6 1 -3 2 3 5 b 1 1 o 4 5 1 -3 2 3 5 b 1 1 o 5 5 5 -3 2 3 5 b 1 1 o 6 5 c -3 2 3 5 b 2 5 c 1 2 3 -3 2 3 5 b 2 5 c 2 5 4 -3 2 3 5 b 2 5 c 3 6 1 -3 2 3 5 b 2 5 c 4 5 1 -3 2 3 5 b 2 5 c 5 5 5 -3 2 3 5 b 2 5 c 6 5 c -3 2 3 5 b 3 5 b 1 2 3 -3 2 3 5 b 3 5 b 2 5 4 -3 2 3 5 b 3 5 b 3 6 1 -3 2 3 5 b 3 5 b 4 5 1 -3 2 3 5 b 3 5 b 5 5 5 -3 2 3 5 b 3 5 b 6 5 c -3 2 3 5 b 4 6 o 1 2 3 -3 2 3 5 b 4 6 o 2 5 4 -3 2 3 5 b 4 6 o 3 6 1 -3 2 3 5 b 4 6 o 4 5 1 -3 2 3 5 b 4 6 o 5 5 5 -3 2 3 5 b 4 6 o 6 5 c -3 2 3 5 b 5 7 d 1 2 3 -3 2 3 5 b 5 7 d 2 5 4 -3 2 3 5 b 5 7 d 3 6 1 -3 2 3 5 b 5 7 d 4 5 1 -3 2 3 5 b 5 7 d 5 5 5 -3 2 3 5 b 5 7 d 6 5 c -3 2 3 5 b 6 8 c 1 2 3 -3 2 3 5 b 6 8 c 2 5 4 -3 2 3 5 b 6 8 c 3 6 1 -3 2 3 5 b 6 8 c 4 5 1 -3 2 3 5 b 6 8 c 5 5 5 -3 2 3 5 b 6 8 c 6 5 c -4 6 4 6 o 1 1 o 1 2 3 -4 6 4 6 o 1 1 o 2 5 4 -4 6 4 6 o 1 1 o 3 6 1 -4 6 4 6 o 1 1 o 4 5 1 -4 6 4 6 o 1 1 o 5 5 5 -4 6 4 6 o 1 1 o 6 5 c -4 6 4 6 o 2 5 c 1 2 3 -4 6 4 6 o 2 5 c 2 5 4 -4 6 4 6 o 2 5 c 3 6 1 -4 6 4 6 o 2 5 c 4 5 1 -4 6 4 6 o 2 5 c 5 5 5 -4 6 4 6 o 2 5 c 6 5 c -4 6 4 6 o 3 5 b 1 2 3 -4 6 4 6 o 3 5 b 2 5 4 -4 6 4 6 o 3 5 b 3 6 1 -4 6 4 6 o 3 5 b 4 5 1 -4 6 4 6 o 3 5 b 5 5 5 -4 6 4 6 o 3 5 b 6 5 c -4 6 4 6 o 4 6 o 1 2 3 -4 6 4 6 o 4 6 o 2 5 4 -4 6 4 6 o 4 6 o 3 6 1 -4 6 4 6 o 4 6 o 4 5 1 -4 6 4 6 o 4 6 o 5 5 5 -4 6 4 6 o 4 6 o 6 5 c -4 6 4 6 o 5 7 d 1 2 3 -4 6 4 6 o 5 7 d 2 5 4 -4 6 4 6 o 5 7 d 3 6 1 -4 6 4 6 o 5 7 d 4 5 1 -4 6 4 6 o 5 7 d 5 5 5 -4 6 4 6 o 5 7 d 6 5 c -4 6 4 6 o 6 8 c 1 2 3 -4 6 4 6 o 6 8 c 2 5 4 -4 6 4 6 o 6 8 c 3 6 1 -4 6 4 6 o 6 8 c 4 5 1 -4 6 4 6 o 6 8 c 5 5 5 -4 6 4 6 o 6 8 c 6 5 c -5 4 5 7 d 1 1 o 1 2 3 -5 4 5 7 d 1 1 o 2 5 4 -5 4 5 7 d 1 1 o 3 6 1 -5 4 5 7 d 1 1 o 4 5 1 -5 4 5 7 d 1 1 o 5 5 5 -5 4 5 7 d 1 1 o 6 5 c -5 4 5 7 d 2 5 c 1 2 3 -5 4 5 7 d 2 5 c 2 5 4 -5 4 5 7 d 2 5 c 3 6 1 -5 4 5 7 d 2 5 c 4 5 1 -5 4 5 7 d 2 5 c 5 5 5 -5 4 5 7 d 2 5 c 6 5 c -5 4 5 7 d 3 5 b 1 2 3 -5 4 5 7 d 3 5 b 2 5 4 -5 4 5 7 d 3 5 b 3 6 1 -5 4 5 7 d 3 5 b 4 5 1 -5 4 5 7 d 3 5 b 5 5 5 -5 4 5 7 d 3 5 b 6 5 c -5 4 5 7 d 4 6 o 1 2 3 -5 4 5 7 d 4 6 o 2 5 4 -5 4 5 7 d 4 6 o 3 6 1 -5 4 5 7 d 4 6 o 4 5 1 -5 4 5 7 d 4 6 o 5 5 5 -5 4 5 7 d 4 6 o 6 5 c -5 4 5 7 d 5 7 d 1 2 3 -5 4 5 7 d 5 7 d 2 5 4 -5 4 5 7 d 5 7 d 3 6 1 -5 4 5 7 d 5 7 d 4 5 1 -5 4 5 7 d 5 7 d 5 5 5 -5 4 5 7 d 5 7 d 6 5 c -5 4 5 7 d 6 8 c 1 2 3 -5 4 5 7 d 6 8 c 2 5 4 -5 4 5 7 d 6 8 c 3 6 1 -5 4 5 7 d 6 8 c 4 5 1 -5 4 5 7 d 6 8 c 5 5 5 -5 4 5 7 d 6 8 c 6 5 c -6 7 6 8 c 1 1 o 1 2 3 -6 7 6 8 c 1 1 o 2 5 4 -6 7 6 8 c 1 1 o 3 6 1 -6 7 6 8 c 1 1 o 4 5 1 -6 7 6 8 c 1 1 o 5 5 5 -6 7 6 8 c 1 1 o 6 5 c -6 7 6 8 c 2 5 c 1 2 3 -6 7 6 8 c 2 5 c 2 5 4 -6 7 6 8 c 2 5 c 3 6 1 -6 7 6 8 c 2 5 c 4 5 1 -6 7 6 8 c 2 5 c 5 5 5 -6 7 6 8 c 2 5 c 6 5 c -6 7 6 8 c 3 5 b 1 2 3 -6 7 6 8 c 3 5 b 2 5 4 -6 7 6 8 c 3 5 b 3 6 1 -6 7 6 8 c 3 5 b 4 5 1 -6 7 6 8 c 3 5 b 5 5 5 -6 7 6 8 c 3 5 b 6 5 c -6 7 6 8 c 4 6 o 1 2 3 -6 7 6 8 c 4 6 o 2 5 4 -6 7 6 8 c 4 6 o 3 6 1 -6 7 6 8 c 4 6 o 4 5 1 -6 7 6 8 c 4 6 o 5 5 5 -6 7 6 8 c 4 6 o 6 5 c -6 7 6 8 c 5 7 d 1 2 3 -6 7 6 8 c 5 7 d 2 5 4 -6 7 6 8 c 5 7 d 3 6 1 -6 7 6 8 c 5 7 d 4 5 1 -6 7 6 8 c 5 7 d 5 5 5 -6 7 6 8 c 5 7 d 6 5 c -6 7 6 8 c 6 8 c 1 2 3 -6 7 6 8 c 6 8 c 2 5 4 -6 7 6 8 c 6 8 c 3 6 1 -6 7 6 8 c 6 8 c 4 5 1 -6 7 6 8 c 6 8 c 5 5 5 -6 7 6 8 c 6 8 c 6 5 c -insert into t7_temp (select * from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2; -c1 c2 c1 c2 -1 1 1 1 -2 5 5 4 -4 6 6 7 -select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2; -c1 c2 c1 c2 -1 1 1 1 -2 5 5 4 -4 6 6 7 -insert into t8_temp (select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2); -rollback; -insert into t8_temp (select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2); -rollback; -update t1 set c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2; -c1 c2 c1 c2 -select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2; -c1 c2 c1 c2 -insert into t8_temp (select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); -rollback; -insert into t8_temp (select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); -rollback; -update t1 set c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -2 5 2 5 c 2 5 4 -3 2 3 5 b 3 6 1 -4 6 4 6 o 4 5 1 -5 4 5 7 d 5 5 5 -6 7 6 8 c 6 5 c -select /*+ NO_REWRITE */* from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -2 5 2 5 c 2 5 4 -3 2 3 5 b 3 6 1 -4 6 4 6 o 4 5 1 -5 4 5 7 d 5 5 5 -6 7 6 8 c 6 5 c -insert into t5_temp (select * from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -2 5 2 5 c 2 5 4 -3 2 3 5 b 3 6 1 -4 6 4 6 o 4 5 1 -5 4 5 7 d 5 5 5 -6 7 6 8 c 6 5 c -select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -2 5 2 5 c 2 5 4 -3 2 3 5 b 3 6 1 -4 6 4 6 o 4 5 1 -5 4 5 7 d 5 5 5 -6 7 6 8 c 6 5 c -insert into t5_temp (select * from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -4 6 4 6 o 3 6 1 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -4 6 4 6 o 3 6 1 -insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 1 1 o 2 5 4 -2 5 1 1 o 4 5 1 -2 5 1 1 o 5 5 5 -2 5 1 1 o 6 5 c -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -2 5 3 5 b 2 5 4 -2 5 3 5 b 4 5 1 -2 5 3 5 b 5 5 5 -2 5 3 5 b 6 5 c -2 5 4 6 o 2 5 4 -2 5 4 6 o 4 5 1 -2 5 4 6 o 5 5 5 -2 5 4 6 o 6 5 c -2 5 5 7 d 2 5 4 -2 5 5 7 d 4 5 1 -2 5 5 7 d 5 5 5 -2 5 5 7 d 6 5 c -2 5 6 8 c 2 5 4 -2 5 6 8 c 4 5 1 -2 5 6 8 c 5 5 5 -2 5 6 8 c 6 5 c -3 2 1 1 o 1 2 3 -3 2 2 5 c 1 2 3 -3 2 3 5 b 1 2 3 -3 2 4 6 o 1 2 3 -3 2 5 7 d 1 2 3 -3 2 6 8 c 1 2 3 -4 6 1 1 o 3 6 1 -4 6 2 5 c 3 6 1 -4 6 3 5 b 3 6 1 -4 6 4 6 o 3 6 1 -4 6 5 7 d 3 6 1 -4 6 6 8 c 3 6 1 -select /*+ NO_REWRITE */* from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 1 1 o 2 5 4 -2 5 1 1 o 4 5 1 -2 5 1 1 o 5 5 5 -2 5 1 1 o 6 5 c -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -2 5 3 5 b 2 5 4 -2 5 3 5 b 4 5 1 -2 5 3 5 b 5 5 5 -2 5 3 5 b 6 5 c -2 5 4 6 o 2 5 4 -2 5 4 6 o 4 5 1 -2 5 4 6 o 5 5 5 -2 5 4 6 o 6 5 c -2 5 5 7 d 2 5 4 -2 5 5 7 d 4 5 1 -2 5 5 7 d 5 5 5 -2 5 5 7 d 6 5 c -2 5 6 8 c 2 5 4 -2 5 6 8 c 4 5 1 -2 5 6 8 c 5 5 5 -2 5 6 8 c 6 5 c -3 2 1 1 o 1 2 3 -3 2 2 5 c 1 2 3 -3 2 3 5 b 1 2 3 -3 2 4 6 o 1 2 3 -3 2 5 7 d 1 2 3 -3 2 6 8 c 1 2 3 -4 6 1 1 o 3 6 1 -4 6 2 5 c 3 6 1 -4 6 3 5 b 3 6 1 -4 6 4 6 o 3 6 1 -4 6 5 7 d 3 6 1 -4 6 6 8 c 3 6 1 -insert into t5_temp (select * from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null); -rollback; -update t1 set c2 = (select t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -4 6 4 6 o 3 6 1 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -4 6 4 6 o 3 6 1 -insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -4 6 4 6 o 3 6 1 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -4 6 4 6 o 3 6 1 -insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 join t2 on t1.c1 = t2.c1; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 join t2 on t1.c1 = t2.c1); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1, t2 where t1.c1 = t2.c1; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t1.c1 = t2.c1; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t1.c1 = t2.c1); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 = t2.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -2 5 2 5 c 2 5 4 -3 2 3 5 b 3 6 1 -4 6 4 6 o 4 5 1 -5 4 5 7 d 5 5 5 -6 7 6 8 c 6 5 c -select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -2 5 2 5 c 2 5 4 -3 2 3 5 b 3 6 1 -4 6 4 6 o 4 5 1 -5 4 5 7 d 5 5 5 -6 7 6 8 c 6 5 c -insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -2 5 2 5 c 2 5 4 -3 2 3 5 b 3 6 1 -4 6 4 6 o 4 5 1 -5 4 5 7 d 5 5 5 -6 7 6 8 c 6 5 c -select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -2 5 2 5 c 2 5 4 -3 2 3 5 b 3 6 1 -4 6 4 6 o 4 5 1 -5 4 5 7 d 5 5 5 -6 7 6 8 c 6 5 c -insert into t5_temp (select * from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1>1 where t2.c1 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1>1 where t2.c1 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; -c1 -1 -2 -4 -select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; -c1 -1 -2 -4 -insert into t12_temp (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null; -c1 -1 -2 -4 -select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null; -c1 -1 -2 -4 -insert into t12_temp (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; -c1 -1 -2 -4 -select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; -c1 -1 -2 -4 -insert into t12_temp (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null; -c1 -1 -2 -4 -select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null; -c1 -1 -2 -4 -insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 inner join t2 on t1.c1>1 where t2.c1 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c1 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c1 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null; -c1 c2 c1 c2 c3 -2 5 1 1 o -2 5 2 5 c -2 5 3 5 b -2 5 4 6 o -2 5 5 7 d -2 5 6 8 c -3 2 1 1 o -3 2 2 5 c -3 2 3 5 b -3 2 4 6 o -3 2 5 7 d -3 2 6 8 c -4 6 1 1 o -4 6 2 5 c -4 6 3 5 b -4 6 4 6 o -4 6 5 7 d -4 6 6 8 c -5 4 1 1 o -5 4 2 5 c -5 4 3 5 b -5 4 4 6 o -5 4 5 7 d -5 4 6 8 c -6 7 1 1 o -6 7 2 5 c -6 7 3 5 b -6 7 4 6 o -6 7 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -1 1 1 1 o 2 5 4 -1 1 1 1 o 3 6 1 -1 1 1 1 o 4 5 1 -1 1 1 1 o 5 5 5 -1 1 1 1 o 6 5 c -2 5 2 5 c 1 2 3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 3 6 1 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -3 2 3 5 b 2 5 4 -3 2 3 5 b 3 6 1 -3 2 3 5 b 4 5 1 -3 2 3 5 b 5 5 5 -3 2 3 5 b 6 5 c -4 6 4 6 o 1 2 3 -4 6 4 6 o 2 5 4 -4 6 4 6 o 3 6 1 -4 6 4 6 o 4 5 1 -4 6 4 6 o 5 5 5 -4 6 4 6 o 6 5 c -5 4 5 7 d 1 2 3 -5 4 5 7 d 2 5 4 -5 4 5 7 d 3 6 1 -5 4 5 7 d 4 5 1 -5 4 5 7 d 5 5 5 -5 4 5 7 d 6 5 c -6 7 6 8 c 1 2 3 -6 7 6 8 c 2 5 4 -6 7 6 8 c 3 6 1 -6 7 6 8 c 4 5 1 -6 7 6 8 c 5 5 5 -6 7 6 8 c 6 5 c -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1; -c1 c2 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 2 3 -1 1 1 1 o 2 5 4 -1 1 1 1 o 3 6 1 -1 1 1 1 o 4 5 1 -1 1 1 1 o 5 5 5 -1 1 1 1 o 6 5 c -2 5 2 5 c 1 2 3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 3 6 1 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 1 2 3 -3 2 3 5 b 2 5 4 -3 2 3 5 b 3 6 1 -3 2 3 5 b 4 5 1 -3 2 3 5 b 5 5 5 -3 2 3 5 b 6 5 c -4 6 4 6 o 1 2 3 -4 6 4 6 o 2 5 4 -4 6 4 6 o 3 6 1 -4 6 4 6 o 4 5 1 -4 6 4 6 o 5 5 5 -4 6 4 6 o 6 5 c -5 4 5 7 d 1 2 3 -5 4 5 7 d 2 5 4 -5 4 5 7 d 3 6 1 -5 4 5 7 d 4 5 1 -5 4 5 7 d 5 5 5 -5 4 5 7 d 6 5 c -6 7 6 8 c 1 2 3 -6 7 6 8 c 2 5 4 -6 7 6 8 c 3 6 1 -6 7 6 8 c 4 5 1 -6 7 6 8 c 5 5 5 -6 7 6 8 c 6 5 c -insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 c1 c2 -1 1 1 1 o 1 1 o 1 2 3 1 1 -1 1 1 1 o 1 1 o 1 2 3 2 5 -1 1 1 1 o 1 1 o 1 2 3 3 2 -1 1 1 1 o 1 1 o 1 2 3 4 6 -1 1 1 1 o 1 1 o 1 2 3 5 4 -1 1 1 1 o 1 1 o 1 2 3 6 7 -1 1 1 1 o 2 5 c 2 5 4 1 1 -1 1 1 1 o 2 5 c 2 5 4 2 5 -1 1 1 1 o 2 5 c 2 5 4 3 2 -1 1 1 1 o 2 5 c 2 5 4 4 6 -1 1 1 1 o 2 5 c 2 5 4 5 4 -1 1 1 1 o 2 5 c 2 5 4 6 7 -1 1 1 1 o 3 5 b 3 6 1 1 1 -1 1 1 1 o 3 5 b 3 6 1 2 5 -1 1 1 1 o 3 5 b 3 6 1 3 2 -1 1 1 1 o 3 5 b 3 6 1 4 6 -1 1 1 1 o 3 5 b 3 6 1 5 4 -1 1 1 1 o 3 5 b 3 6 1 6 7 -1 1 1 1 o 4 6 o 4 5 1 1 1 -1 1 1 1 o 4 6 o 4 5 1 2 5 -1 1 1 1 o 4 6 o 4 5 1 3 2 -1 1 1 1 o 4 6 o 4 5 1 4 6 -1 1 1 1 o 4 6 o 4 5 1 5 4 -1 1 1 1 o 4 6 o 4 5 1 6 7 -1 1 1 1 o 5 7 d 5 5 5 1 1 -1 1 1 1 o 5 7 d 5 5 5 2 5 -1 1 1 1 o 5 7 d 5 5 5 3 2 -1 1 1 1 o 5 7 d 5 5 5 4 6 -1 1 1 1 o 5 7 d 5 5 5 5 4 -1 1 1 1 o 5 7 d 5 5 5 6 7 -1 1 1 1 o 6 8 c 6 5 c 1 1 -1 1 1 1 o 6 8 c 6 5 c 2 5 -1 1 1 1 o 6 8 c 6 5 c 3 2 -1 1 1 1 o 6 8 c 6 5 c 4 6 -1 1 1 1 o 6 8 c 6 5 c 5 4 -1 1 1 1 o 6 8 c 6 5 c 6 7 -2 5 2 5 c 1 1 o 1 2 3 1 1 -2 5 2 5 c 1 1 o 1 2 3 2 5 -2 5 2 5 c 1 1 o 1 2 3 3 2 -2 5 2 5 c 1 1 o 1 2 3 4 6 -2 5 2 5 c 1 1 o 1 2 3 5 4 -2 5 2 5 c 1 1 o 1 2 3 6 7 -2 5 2 5 c 2 5 c 2 5 4 1 1 -2 5 2 5 c 2 5 c 2 5 4 2 5 -2 5 2 5 c 2 5 c 2 5 4 3 2 -2 5 2 5 c 2 5 c 2 5 4 4 6 -2 5 2 5 c 2 5 c 2 5 4 5 4 -2 5 2 5 c 2 5 c 2 5 4 6 7 -2 5 2 5 c 3 5 b 3 6 1 1 1 -2 5 2 5 c 3 5 b 3 6 1 2 5 -2 5 2 5 c 3 5 b 3 6 1 3 2 -2 5 2 5 c 3 5 b 3 6 1 4 6 -2 5 2 5 c 3 5 b 3 6 1 5 4 -2 5 2 5 c 3 5 b 3 6 1 6 7 -2 5 2 5 c 4 6 o 4 5 1 1 1 -2 5 2 5 c 4 6 o 4 5 1 2 5 -2 5 2 5 c 4 6 o 4 5 1 3 2 -2 5 2 5 c 4 6 o 4 5 1 4 6 -2 5 2 5 c 4 6 o 4 5 1 5 4 -2 5 2 5 c 4 6 o 4 5 1 6 7 -2 5 2 5 c 5 7 d 5 5 5 1 1 -2 5 2 5 c 5 7 d 5 5 5 2 5 -2 5 2 5 c 5 7 d 5 5 5 3 2 -2 5 2 5 c 5 7 d 5 5 5 4 6 -2 5 2 5 c 5 7 d 5 5 5 5 4 -2 5 2 5 c 5 7 d 5 5 5 6 7 -2 5 2 5 c 6 8 c 6 5 c 1 1 -2 5 2 5 c 6 8 c 6 5 c 2 5 -2 5 2 5 c 6 8 c 6 5 c 3 2 -2 5 2 5 c 6 8 c 6 5 c 4 6 -2 5 2 5 c 6 8 c 6 5 c 5 4 -2 5 2 5 c 6 8 c 6 5 c 6 7 -3 2 3 5 b 1 1 o 1 2 3 1 1 -3 2 3 5 b 1 1 o 1 2 3 2 5 -3 2 3 5 b 1 1 o 1 2 3 3 2 -3 2 3 5 b 1 1 o 1 2 3 4 6 -3 2 3 5 b 1 1 o 1 2 3 5 4 -3 2 3 5 b 1 1 o 1 2 3 6 7 -3 2 3 5 b 2 5 c 2 5 4 1 1 -3 2 3 5 b 2 5 c 2 5 4 2 5 -3 2 3 5 b 2 5 c 2 5 4 3 2 -3 2 3 5 b 2 5 c 2 5 4 4 6 -3 2 3 5 b 2 5 c 2 5 4 5 4 -3 2 3 5 b 2 5 c 2 5 4 6 7 -3 2 3 5 b 3 5 b 3 6 1 1 1 -3 2 3 5 b 3 5 b 3 6 1 2 5 -3 2 3 5 b 3 5 b 3 6 1 3 2 -3 2 3 5 b 3 5 b 3 6 1 4 6 -3 2 3 5 b 3 5 b 3 6 1 5 4 -3 2 3 5 b 3 5 b 3 6 1 6 7 -3 2 3 5 b 4 6 o 4 5 1 1 1 -3 2 3 5 b 4 6 o 4 5 1 2 5 -3 2 3 5 b 4 6 o 4 5 1 3 2 -3 2 3 5 b 4 6 o 4 5 1 4 6 -3 2 3 5 b 4 6 o 4 5 1 5 4 -3 2 3 5 b 4 6 o 4 5 1 6 7 -3 2 3 5 b 5 7 d 5 5 5 1 1 -3 2 3 5 b 5 7 d 5 5 5 2 5 -3 2 3 5 b 5 7 d 5 5 5 3 2 -3 2 3 5 b 5 7 d 5 5 5 4 6 -3 2 3 5 b 5 7 d 5 5 5 5 4 -3 2 3 5 b 5 7 d 5 5 5 6 7 -3 2 3 5 b 6 8 c 6 5 c 1 1 -3 2 3 5 b 6 8 c 6 5 c 2 5 -3 2 3 5 b 6 8 c 6 5 c 3 2 -3 2 3 5 b 6 8 c 6 5 c 4 6 -3 2 3 5 b 6 8 c 6 5 c 5 4 -3 2 3 5 b 6 8 c 6 5 c 6 7 -4 6 4 6 o 1 1 o 1 2 3 1 1 -4 6 4 6 o 1 1 o 1 2 3 2 5 -4 6 4 6 o 1 1 o 1 2 3 3 2 -4 6 4 6 o 1 1 o 1 2 3 4 6 -4 6 4 6 o 1 1 o 1 2 3 5 4 -4 6 4 6 o 1 1 o 1 2 3 6 7 -4 6 4 6 o 2 5 c 2 5 4 1 1 -4 6 4 6 o 2 5 c 2 5 4 2 5 -4 6 4 6 o 2 5 c 2 5 4 3 2 -4 6 4 6 o 2 5 c 2 5 4 4 6 -4 6 4 6 o 2 5 c 2 5 4 5 4 -4 6 4 6 o 2 5 c 2 5 4 6 7 -4 6 4 6 o 3 5 b 3 6 1 1 1 -4 6 4 6 o 3 5 b 3 6 1 2 5 -4 6 4 6 o 3 5 b 3 6 1 3 2 -4 6 4 6 o 3 5 b 3 6 1 4 6 -4 6 4 6 o 3 5 b 3 6 1 5 4 -4 6 4 6 o 3 5 b 3 6 1 6 7 -4 6 4 6 o 4 6 o 4 5 1 1 1 -4 6 4 6 o 4 6 o 4 5 1 2 5 -4 6 4 6 o 4 6 o 4 5 1 3 2 -4 6 4 6 o 4 6 o 4 5 1 4 6 -4 6 4 6 o 4 6 o 4 5 1 5 4 -4 6 4 6 o 4 6 o 4 5 1 6 7 -4 6 4 6 o 5 7 d 5 5 5 1 1 -4 6 4 6 o 5 7 d 5 5 5 2 5 -4 6 4 6 o 5 7 d 5 5 5 3 2 -4 6 4 6 o 5 7 d 5 5 5 4 6 -4 6 4 6 o 5 7 d 5 5 5 5 4 -4 6 4 6 o 5 7 d 5 5 5 6 7 -4 6 4 6 o 6 8 c 6 5 c 1 1 -4 6 4 6 o 6 8 c 6 5 c 2 5 -4 6 4 6 o 6 8 c 6 5 c 3 2 -4 6 4 6 o 6 8 c 6 5 c 4 6 -4 6 4 6 o 6 8 c 6 5 c 5 4 -4 6 4 6 o 6 8 c 6 5 c 6 7 -5 4 5 7 d 1 1 o 1 2 3 1 1 -5 4 5 7 d 1 1 o 1 2 3 2 5 -5 4 5 7 d 1 1 o 1 2 3 3 2 -5 4 5 7 d 1 1 o 1 2 3 4 6 -5 4 5 7 d 1 1 o 1 2 3 5 4 -5 4 5 7 d 1 1 o 1 2 3 6 7 -5 4 5 7 d 2 5 c 2 5 4 1 1 -5 4 5 7 d 2 5 c 2 5 4 2 5 -5 4 5 7 d 2 5 c 2 5 4 3 2 -5 4 5 7 d 2 5 c 2 5 4 4 6 -5 4 5 7 d 2 5 c 2 5 4 5 4 -5 4 5 7 d 2 5 c 2 5 4 6 7 -5 4 5 7 d 3 5 b 3 6 1 1 1 -5 4 5 7 d 3 5 b 3 6 1 2 5 -5 4 5 7 d 3 5 b 3 6 1 3 2 -5 4 5 7 d 3 5 b 3 6 1 4 6 -5 4 5 7 d 3 5 b 3 6 1 5 4 -5 4 5 7 d 3 5 b 3 6 1 6 7 -5 4 5 7 d 4 6 o 4 5 1 1 1 -5 4 5 7 d 4 6 o 4 5 1 2 5 -5 4 5 7 d 4 6 o 4 5 1 3 2 -5 4 5 7 d 4 6 o 4 5 1 4 6 -5 4 5 7 d 4 6 o 4 5 1 5 4 -5 4 5 7 d 4 6 o 4 5 1 6 7 -5 4 5 7 d 5 7 d 5 5 5 1 1 -5 4 5 7 d 5 7 d 5 5 5 2 5 -5 4 5 7 d 5 7 d 5 5 5 3 2 -5 4 5 7 d 5 7 d 5 5 5 4 6 -5 4 5 7 d 5 7 d 5 5 5 5 4 -5 4 5 7 d 5 7 d 5 5 5 6 7 -5 4 5 7 d 6 8 c 6 5 c 1 1 -5 4 5 7 d 6 8 c 6 5 c 2 5 -5 4 5 7 d 6 8 c 6 5 c 3 2 -5 4 5 7 d 6 8 c 6 5 c 4 6 -5 4 5 7 d 6 8 c 6 5 c 5 4 -5 4 5 7 d 6 8 c 6 5 c 6 7 -6 7 6 8 c 1 1 o 1 2 3 1 1 -6 7 6 8 c 1 1 o 1 2 3 2 5 -6 7 6 8 c 1 1 o 1 2 3 3 2 -6 7 6 8 c 1 1 o 1 2 3 4 6 -6 7 6 8 c 1 1 o 1 2 3 5 4 -6 7 6 8 c 1 1 o 1 2 3 6 7 -6 7 6 8 c 2 5 c 2 5 4 1 1 -6 7 6 8 c 2 5 c 2 5 4 2 5 -6 7 6 8 c 2 5 c 2 5 4 3 2 -6 7 6 8 c 2 5 c 2 5 4 4 6 -6 7 6 8 c 2 5 c 2 5 4 5 4 -6 7 6 8 c 2 5 c 2 5 4 6 7 -6 7 6 8 c 3 5 b 3 6 1 1 1 -6 7 6 8 c 3 5 b 3 6 1 2 5 -6 7 6 8 c 3 5 b 3 6 1 3 2 -6 7 6 8 c 3 5 b 3 6 1 4 6 -6 7 6 8 c 3 5 b 3 6 1 5 4 -6 7 6 8 c 3 5 b 3 6 1 6 7 -6 7 6 8 c 4 6 o 4 5 1 1 1 -6 7 6 8 c 4 6 o 4 5 1 2 5 -6 7 6 8 c 4 6 o 4 5 1 3 2 -6 7 6 8 c 4 6 o 4 5 1 4 6 -6 7 6 8 c 4 6 o 4 5 1 5 4 -6 7 6 8 c 4 6 o 4 5 1 6 7 -6 7 6 8 c 5 7 d 5 5 5 1 1 -6 7 6 8 c 5 7 d 5 5 5 2 5 -6 7 6 8 c 5 7 d 5 5 5 3 2 -6 7 6 8 c 5 7 d 5 5 5 4 6 -6 7 6 8 c 5 7 d 5 5 5 5 4 -6 7 6 8 c 5 7 d 5 5 5 6 7 -6 7 6 8 c 6 8 c 6 5 c 1 1 -6 7 6 8 c 6 8 c 6 5 c 2 5 -6 7 6 8 c 6 8 c 6 5 c 3 2 -6 7 6 8 c 6 8 c 6 5 c 4 6 -6 7 6 8 c 6 8 c 6 5 c 5 4 -6 7 6 8 c 6 8 c 6 5 c 6 7 -select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 c1 c2 -1 1 1 1 o 1 1 o 1 2 3 1 1 -1 1 1 1 o 1 1 o 1 2 3 2 5 -1 1 1 1 o 1 1 o 1 2 3 3 2 -1 1 1 1 o 1 1 o 1 2 3 4 6 -1 1 1 1 o 1 1 o 1 2 3 5 4 -1 1 1 1 o 1 1 o 1 2 3 6 7 -1 1 1 1 o 2 5 c 2 5 4 1 1 -1 1 1 1 o 2 5 c 2 5 4 2 5 -1 1 1 1 o 2 5 c 2 5 4 3 2 -1 1 1 1 o 2 5 c 2 5 4 4 6 -1 1 1 1 o 2 5 c 2 5 4 5 4 -1 1 1 1 o 2 5 c 2 5 4 6 7 -1 1 1 1 o 3 5 b 3 6 1 1 1 -1 1 1 1 o 3 5 b 3 6 1 2 5 -1 1 1 1 o 3 5 b 3 6 1 3 2 -1 1 1 1 o 3 5 b 3 6 1 4 6 -1 1 1 1 o 3 5 b 3 6 1 5 4 -1 1 1 1 o 3 5 b 3 6 1 6 7 -1 1 1 1 o 4 6 o 4 5 1 1 1 -1 1 1 1 o 4 6 o 4 5 1 2 5 -1 1 1 1 o 4 6 o 4 5 1 3 2 -1 1 1 1 o 4 6 o 4 5 1 4 6 -1 1 1 1 o 4 6 o 4 5 1 5 4 -1 1 1 1 o 4 6 o 4 5 1 6 7 -1 1 1 1 o 5 7 d 5 5 5 1 1 -1 1 1 1 o 5 7 d 5 5 5 2 5 -1 1 1 1 o 5 7 d 5 5 5 3 2 -1 1 1 1 o 5 7 d 5 5 5 4 6 -1 1 1 1 o 5 7 d 5 5 5 5 4 -1 1 1 1 o 5 7 d 5 5 5 6 7 -1 1 1 1 o 6 8 c 6 5 c 1 1 -1 1 1 1 o 6 8 c 6 5 c 2 5 -1 1 1 1 o 6 8 c 6 5 c 3 2 -1 1 1 1 o 6 8 c 6 5 c 4 6 -1 1 1 1 o 6 8 c 6 5 c 5 4 -1 1 1 1 o 6 8 c 6 5 c 6 7 -2 5 2 5 c 1 1 o 1 2 3 1 1 -2 5 2 5 c 1 1 o 1 2 3 2 5 -2 5 2 5 c 1 1 o 1 2 3 3 2 -2 5 2 5 c 1 1 o 1 2 3 4 6 -2 5 2 5 c 1 1 o 1 2 3 5 4 -2 5 2 5 c 1 1 o 1 2 3 6 7 -2 5 2 5 c 2 5 c 2 5 4 1 1 -2 5 2 5 c 2 5 c 2 5 4 2 5 -2 5 2 5 c 2 5 c 2 5 4 3 2 -2 5 2 5 c 2 5 c 2 5 4 4 6 -2 5 2 5 c 2 5 c 2 5 4 5 4 -2 5 2 5 c 2 5 c 2 5 4 6 7 -2 5 2 5 c 3 5 b 3 6 1 1 1 -2 5 2 5 c 3 5 b 3 6 1 2 5 -2 5 2 5 c 3 5 b 3 6 1 3 2 -2 5 2 5 c 3 5 b 3 6 1 4 6 -2 5 2 5 c 3 5 b 3 6 1 5 4 -2 5 2 5 c 3 5 b 3 6 1 6 7 -2 5 2 5 c 4 6 o 4 5 1 1 1 -2 5 2 5 c 4 6 o 4 5 1 2 5 -2 5 2 5 c 4 6 o 4 5 1 3 2 -2 5 2 5 c 4 6 o 4 5 1 4 6 -2 5 2 5 c 4 6 o 4 5 1 5 4 -2 5 2 5 c 4 6 o 4 5 1 6 7 -2 5 2 5 c 5 7 d 5 5 5 1 1 -2 5 2 5 c 5 7 d 5 5 5 2 5 -2 5 2 5 c 5 7 d 5 5 5 3 2 -2 5 2 5 c 5 7 d 5 5 5 4 6 -2 5 2 5 c 5 7 d 5 5 5 5 4 -2 5 2 5 c 5 7 d 5 5 5 6 7 -2 5 2 5 c 6 8 c 6 5 c 1 1 -2 5 2 5 c 6 8 c 6 5 c 2 5 -2 5 2 5 c 6 8 c 6 5 c 3 2 -2 5 2 5 c 6 8 c 6 5 c 4 6 -2 5 2 5 c 6 8 c 6 5 c 5 4 -2 5 2 5 c 6 8 c 6 5 c 6 7 -3 2 3 5 b 1 1 o 1 2 3 1 1 -3 2 3 5 b 1 1 o 1 2 3 2 5 -3 2 3 5 b 1 1 o 1 2 3 3 2 -3 2 3 5 b 1 1 o 1 2 3 4 6 -3 2 3 5 b 1 1 o 1 2 3 5 4 -3 2 3 5 b 1 1 o 1 2 3 6 7 -3 2 3 5 b 2 5 c 2 5 4 1 1 -3 2 3 5 b 2 5 c 2 5 4 2 5 -3 2 3 5 b 2 5 c 2 5 4 3 2 -3 2 3 5 b 2 5 c 2 5 4 4 6 -3 2 3 5 b 2 5 c 2 5 4 5 4 -3 2 3 5 b 2 5 c 2 5 4 6 7 -3 2 3 5 b 3 5 b 3 6 1 1 1 -3 2 3 5 b 3 5 b 3 6 1 2 5 -3 2 3 5 b 3 5 b 3 6 1 3 2 -3 2 3 5 b 3 5 b 3 6 1 4 6 -3 2 3 5 b 3 5 b 3 6 1 5 4 -3 2 3 5 b 3 5 b 3 6 1 6 7 -3 2 3 5 b 4 6 o 4 5 1 1 1 -3 2 3 5 b 4 6 o 4 5 1 2 5 -3 2 3 5 b 4 6 o 4 5 1 3 2 -3 2 3 5 b 4 6 o 4 5 1 4 6 -3 2 3 5 b 4 6 o 4 5 1 5 4 -3 2 3 5 b 4 6 o 4 5 1 6 7 -3 2 3 5 b 5 7 d 5 5 5 1 1 -3 2 3 5 b 5 7 d 5 5 5 2 5 -3 2 3 5 b 5 7 d 5 5 5 3 2 -3 2 3 5 b 5 7 d 5 5 5 4 6 -3 2 3 5 b 5 7 d 5 5 5 5 4 -3 2 3 5 b 5 7 d 5 5 5 6 7 -3 2 3 5 b 6 8 c 6 5 c 1 1 -3 2 3 5 b 6 8 c 6 5 c 2 5 -3 2 3 5 b 6 8 c 6 5 c 3 2 -3 2 3 5 b 6 8 c 6 5 c 4 6 -3 2 3 5 b 6 8 c 6 5 c 5 4 -3 2 3 5 b 6 8 c 6 5 c 6 7 -4 6 4 6 o 1 1 o 1 2 3 1 1 -4 6 4 6 o 1 1 o 1 2 3 2 5 -4 6 4 6 o 1 1 o 1 2 3 3 2 -4 6 4 6 o 1 1 o 1 2 3 4 6 -4 6 4 6 o 1 1 o 1 2 3 5 4 -4 6 4 6 o 1 1 o 1 2 3 6 7 -4 6 4 6 o 2 5 c 2 5 4 1 1 -4 6 4 6 o 2 5 c 2 5 4 2 5 -4 6 4 6 o 2 5 c 2 5 4 3 2 -4 6 4 6 o 2 5 c 2 5 4 4 6 -4 6 4 6 o 2 5 c 2 5 4 5 4 -4 6 4 6 o 2 5 c 2 5 4 6 7 -4 6 4 6 o 3 5 b 3 6 1 1 1 -4 6 4 6 o 3 5 b 3 6 1 2 5 -4 6 4 6 o 3 5 b 3 6 1 3 2 -4 6 4 6 o 3 5 b 3 6 1 4 6 -4 6 4 6 o 3 5 b 3 6 1 5 4 -4 6 4 6 o 3 5 b 3 6 1 6 7 -4 6 4 6 o 4 6 o 4 5 1 1 1 -4 6 4 6 o 4 6 o 4 5 1 2 5 -4 6 4 6 o 4 6 o 4 5 1 3 2 -4 6 4 6 o 4 6 o 4 5 1 4 6 -4 6 4 6 o 4 6 o 4 5 1 5 4 -4 6 4 6 o 4 6 o 4 5 1 6 7 -4 6 4 6 o 5 7 d 5 5 5 1 1 -4 6 4 6 o 5 7 d 5 5 5 2 5 -4 6 4 6 o 5 7 d 5 5 5 3 2 -4 6 4 6 o 5 7 d 5 5 5 4 6 -4 6 4 6 o 5 7 d 5 5 5 5 4 -4 6 4 6 o 5 7 d 5 5 5 6 7 -4 6 4 6 o 6 8 c 6 5 c 1 1 -4 6 4 6 o 6 8 c 6 5 c 2 5 -4 6 4 6 o 6 8 c 6 5 c 3 2 -4 6 4 6 o 6 8 c 6 5 c 4 6 -4 6 4 6 o 6 8 c 6 5 c 5 4 -4 6 4 6 o 6 8 c 6 5 c 6 7 -5 4 5 7 d 1 1 o 1 2 3 1 1 -5 4 5 7 d 1 1 o 1 2 3 2 5 -5 4 5 7 d 1 1 o 1 2 3 3 2 -5 4 5 7 d 1 1 o 1 2 3 4 6 -5 4 5 7 d 1 1 o 1 2 3 5 4 -5 4 5 7 d 1 1 o 1 2 3 6 7 -5 4 5 7 d 2 5 c 2 5 4 1 1 -5 4 5 7 d 2 5 c 2 5 4 2 5 -5 4 5 7 d 2 5 c 2 5 4 3 2 -5 4 5 7 d 2 5 c 2 5 4 4 6 -5 4 5 7 d 2 5 c 2 5 4 5 4 -5 4 5 7 d 2 5 c 2 5 4 6 7 -5 4 5 7 d 3 5 b 3 6 1 1 1 -5 4 5 7 d 3 5 b 3 6 1 2 5 -5 4 5 7 d 3 5 b 3 6 1 3 2 -5 4 5 7 d 3 5 b 3 6 1 4 6 -5 4 5 7 d 3 5 b 3 6 1 5 4 -5 4 5 7 d 3 5 b 3 6 1 6 7 -5 4 5 7 d 4 6 o 4 5 1 1 1 -5 4 5 7 d 4 6 o 4 5 1 2 5 -5 4 5 7 d 4 6 o 4 5 1 3 2 -5 4 5 7 d 4 6 o 4 5 1 4 6 -5 4 5 7 d 4 6 o 4 5 1 5 4 -5 4 5 7 d 4 6 o 4 5 1 6 7 -5 4 5 7 d 5 7 d 5 5 5 1 1 -5 4 5 7 d 5 7 d 5 5 5 2 5 -5 4 5 7 d 5 7 d 5 5 5 3 2 -5 4 5 7 d 5 7 d 5 5 5 4 6 -5 4 5 7 d 5 7 d 5 5 5 5 4 -5 4 5 7 d 5 7 d 5 5 5 6 7 -5 4 5 7 d 6 8 c 6 5 c 1 1 -5 4 5 7 d 6 8 c 6 5 c 2 5 -5 4 5 7 d 6 8 c 6 5 c 3 2 -5 4 5 7 d 6 8 c 6 5 c 4 6 -5 4 5 7 d 6 8 c 6 5 c 5 4 -5 4 5 7 d 6 8 c 6 5 c 6 7 -6 7 6 8 c 1 1 o 1 2 3 1 1 -6 7 6 8 c 1 1 o 1 2 3 2 5 -6 7 6 8 c 1 1 o 1 2 3 3 2 -6 7 6 8 c 1 1 o 1 2 3 4 6 -6 7 6 8 c 1 1 o 1 2 3 5 4 -6 7 6 8 c 1 1 o 1 2 3 6 7 -6 7 6 8 c 2 5 c 2 5 4 1 1 -6 7 6 8 c 2 5 c 2 5 4 2 5 -6 7 6 8 c 2 5 c 2 5 4 3 2 -6 7 6 8 c 2 5 c 2 5 4 4 6 -6 7 6 8 c 2 5 c 2 5 4 5 4 -6 7 6 8 c 2 5 c 2 5 4 6 7 -6 7 6 8 c 3 5 b 3 6 1 1 1 -6 7 6 8 c 3 5 b 3 6 1 2 5 -6 7 6 8 c 3 5 b 3 6 1 3 2 -6 7 6 8 c 3 5 b 3 6 1 4 6 -6 7 6 8 c 3 5 b 3 6 1 5 4 -6 7 6 8 c 3 5 b 3 6 1 6 7 -6 7 6 8 c 4 6 o 4 5 1 1 1 -6 7 6 8 c 4 6 o 4 5 1 2 5 -6 7 6 8 c 4 6 o 4 5 1 3 2 -6 7 6 8 c 4 6 o 4 5 1 4 6 -6 7 6 8 c 4 6 o 4 5 1 5 4 -6 7 6 8 c 4 6 o 4 5 1 6 7 -6 7 6 8 c 5 7 d 5 5 5 1 1 -6 7 6 8 c 5 7 d 5 5 5 2 5 -6 7 6 8 c 5 7 d 5 5 5 3 2 -6 7 6 8 c 5 7 d 5 5 5 4 6 -6 7 6 8 c 5 7 d 5 5 5 5 4 -6 7 6 8 c 5 7 d 5 5 5 6 7 -6 7 6 8 c 6 8 c 6 5 c 1 1 -6 7 6 8 c 6 8 c 6 5 c 2 5 -6 7 6 8 c 6 8 c 6 5 c 3 2 -6 7 6 8 c 6 8 c 6 5 c 4 6 -6 7 6 8 c 6 8 c 6 5 c 5 4 -6 7 6 8 c 6 8 c 6 5 c 6 7 -insert into t10_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null); -rollback; -insert into t10_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; -c1 -select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; -c1 -insert into t12_temp (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 1 o 1 2 3 -1 1 1 1 o 2 5 c 2 5 4 -1 1 1 1 o 3 5 b 3 6 1 -1 1 1 1 o 4 6 o 4 5 1 -1 1 1 1 o 5 7 d 5 5 5 -1 1 1 1 o 6 8 c 6 5 c -2 5 2 5 c 1 1 o 1 2 3 -2 5 2 5 c 2 5 c 2 5 4 -2 5 2 5 c 3 5 b 3 6 1 -2 5 2 5 c 4 6 o 4 5 1 -2 5 2 5 c 5 7 d 5 5 5 -2 5 2 5 c 6 8 c 6 5 c -3 2 3 5 b 1 1 o 1 2 3 -3 2 3 5 b 2 5 c 2 5 4 -3 2 3 5 b 3 5 b 3 6 1 -3 2 3 5 b 4 6 o 4 5 1 -3 2 3 5 b 5 7 d 5 5 5 -3 2 3 5 b 6 8 c 6 5 c -4 6 4 6 o 1 1 o 1 2 3 -4 6 4 6 o 2 5 c 2 5 4 -4 6 4 6 o 3 5 b 3 6 1 -4 6 4 6 o 4 6 o 4 5 1 -4 6 4 6 o 5 7 d 5 5 5 -4 6 4 6 o 6 8 c 6 5 c -5 4 5 7 d 1 1 o 1 2 3 -5 4 5 7 d 2 5 c 2 5 4 -5 4 5 7 d 3 5 b 3 6 1 -5 4 5 7 d 4 6 o 4 5 1 -5 4 5 7 d 5 7 d 5 5 5 -5 4 5 7 d 6 8 c 6 5 c -6 7 6 8 c 1 1 o 1 2 3 -6 7 6 8 c 2 5 c 2 5 4 -6 7 6 8 c 3 5 b 3 6 1 -6 7 6 8 c 4 6 o 4 5 1 -6 7 6 8 c 5 7 d 5 5 5 -6 7 6 8 c 6 8 c 6 5 c -select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 1 o 1 2 3 -1 1 1 1 o 2 5 c 2 5 4 -1 1 1 1 o 3 5 b 3 6 1 -1 1 1 1 o 4 6 o 4 5 1 -1 1 1 1 o 5 7 d 5 5 5 -1 1 1 1 o 6 8 c 6 5 c -2 5 2 5 c 1 1 o 1 2 3 -2 5 2 5 c 2 5 c 2 5 4 -2 5 2 5 c 3 5 b 3 6 1 -2 5 2 5 c 4 6 o 4 5 1 -2 5 2 5 c 5 7 d 5 5 5 -2 5 2 5 c 6 8 c 6 5 c -3 2 3 5 b 1 1 o 1 2 3 -3 2 3 5 b 2 5 c 2 5 4 -3 2 3 5 b 3 5 b 3 6 1 -3 2 3 5 b 4 6 o 4 5 1 -3 2 3 5 b 5 7 d 5 5 5 -3 2 3 5 b 6 8 c 6 5 c -4 6 4 6 o 1 1 o 1 2 3 -4 6 4 6 o 2 5 c 2 5 4 -4 6 4 6 o 3 5 b 3 6 1 -4 6 4 6 o 4 6 o 4 5 1 -4 6 4 6 o 5 7 d 5 5 5 -4 6 4 6 o 6 8 c 6 5 c -5 4 5 7 d 1 1 o 1 2 3 -5 4 5 7 d 2 5 c 2 5 4 -5 4 5 7 d 3 5 b 3 6 1 -5 4 5 7 d 4 6 o 4 5 1 -5 4 5 7 d 5 7 d 5 5 5 -5 4 5 7 d 6 8 c 6 5 c -6 7 6 8 c 1 1 o 1 2 3 -6 7 6 8 c 2 5 c 2 5 4 -6 7 6 8 c 3 5 b 3 6 1 -6 7 6 8 c 4 6 o 4 5 1 -6 7 6 8 c 5 7 d 5 5 5 -6 7 6 8 c 6 8 c 6 5 c -insert into t7_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 c1 c2 -select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 c1 c2 -insert into t10_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); -rollback; -insert into t10_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; -c1 -1 -2 -3 -4 -5 -6 -select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; -c1 -1 -2 -3 -4 -5 -6 -insert into t4_temp (select * from t1, t2 where t1.c1=t2.c1 limit 100); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 limit 100); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select sum(c1), count(*) from t1 group by c2 order by c2 limit 100; -sum(c1) count(*) -1 1 -2 1 -3 1 -4 1 -5 1 -6 1 -select /*+ NO_REWRITE */sum(c1), count(*) from t1 group by c2 order by c2 limit 100; -sum(c1) count(*) -1 1 -2 1 -3 1 -4 1 -5 1 -6 1 -insert into t11_temp (select sum(c1), count(*) from t1 group by c2 order by c2 limit 100); -rollback; -insert into t11_temp (select /*+ NO_REWRITE */sum(c1), count(*) from t1 group by c2 order by c2 limit 100); -rollback; -update t1 set c2 = (select sum(c1) from t1 group by c2 order by c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */sum(c1) from t1 group by c2 order by c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select sum(c1) from t1 group by c2 order by c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */sum(c1) from t1 group by c2 order by c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select c1 from t1 as t order by c1; -c1 -1 -2 -3 -4 -5 -6 -select /*+ NO_REWRITE */c1 from t1 as t order by c1; -c1 -1 -2 -3 -4 -5 -6 -insert into t12_temp (select c1 from t1 as t order by c1); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */c1 from t1 as t order by c1); -rollback; -update t1 set c2 = (select c1 from t1 as t order by c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */c1 from t1 as t order by c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select c1 from t1 as t order by c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */c1 from t1 as t order by c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; -c1 c2 c3 c1 c2 c3 -1 1 o 1 2 3 -3 5 b 3 6 1 -select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; -c1 c2 c3 c1 c2 c3 -1 1 o 1 2 3 -3 5 b 3 6 1 -insert into t13_temp (select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); -rollback; -insert into t13_temp (select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); -rollback; -update t1 set c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3; -c1 -select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3; -c1 -insert into t12_temp (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3); -rollback; -update t1 set c2 = (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 1 o 1 2 3 -2 5 2 5 c 2 5 c 2 5 4 -3 2 3 5 b 3 5 b 3 6 1 -4 6 4 6 o 4 6 o 4 5 1 -5 4 5 7 d 5 7 d 5 5 5 -6 7 6 8 c 6 8 c 6 5 c -select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -1 1 1 1 o 1 1 o 1 2 3 -2 5 2 5 c 2 5 c 2 5 4 -3 2 3 5 b 3 5 b 3 6 1 -4 6 4 6 o 4 6 o 4 5 1 -5 4 5 7 d 5 7 d 5 5 5 -6 7 6 8 c 6 8 c 6 5 c -insert into t7_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where false; -c1 c2 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 where false; -c1 c2 c1 c2 c3 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where false); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 where false); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1; -c1 c2 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1; -c1 c2 c1 c2 c3 -insert into t4_temp (select * from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 right join t2 on t1.c1 = t2.c2; -c1 c2 c1 c2 c3 -1 1 1 1 o -5 4 2 5 c -5 4 3 5 b -6 7 4 6 o -NULL NULL 5 7 d -NULL NULL 6 8 c -select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c2; -c1 c2 c1 c2 c3 -1 1 1 1 o -5 4 2 5 c -5 4 3 5 b -6 7 4 6 o -NULL NULL 5 7 d -NULL NULL 6 8 c -insert into t4_temp (select * from t1 right join t2 on t1.c1 = t2.c2); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c2); -rollback; -update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 inner join t2 on t1.c1 = t2.c2; -c1 c2 c1 c2 c3 -1 1 1 1 o -5 4 2 5 c -5 4 3 5 b -6 7 4 6 o -select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c2; -c1 c2 c1 c2 c3 -1 1 1 1 o -5 4 2 5 c -5 4 3 5 b -6 7 4 6 o -insert into t4_temp (select * from t1 inner join t2 on t1.c1 = t2.c2); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c2); -rollback; -update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100; -c1 -select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100; -c1 -insert into t12_temp (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100); -rollback; -update t1 set c2 = (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select t1.c1 from t1, t2 limit 100; -c1 -1 -1 -1 -1 -1 -1 -2 -2 -2 -2 -2 -2 -3 -3 -3 -3 -3 -3 -4 -4 -4 -4 -4 -4 -5 -5 -5 -5 -5 -5 -6 -6 -6 -6 -6 -6 -select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 100; -c1 -1 -1 -1 -1 -1 -1 -2 -2 -2 -2 -2 -2 -3 -3 -3 -3 -3 -3 -4 -4 -4 -4 -4 -4 -5 -5 -5 -5 -5 -5 -6 -6 -6 -6 -6 -6 -insert into t12_temp (select t1.c1 from t1, t2 limit 100); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 100); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; -c1 -1 -2 -3 -4 -5 -6 -select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; -c1 -1 -2 -3 -4 -5 -6 -insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 ; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 ; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 ); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; -c1 -1 -2 -3 -4 -5 -6 -select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; -c1 -1 -2 -3 -4 -5 -6 -insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1; -c1 -select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1; -c1 -insert into t12_temp (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1); -rollback; -update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; -c1 c2 c3 c1 c2 c3 -1 1 o 1 2 3 -3 5 b 3 6 1 -select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; -c1 c2 c3 c1 c2 c3 -1 1 o 1 2 3 -3 5 b 3 6 1 -insert into t13_temp (select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); -rollback; -insert into t13_temp (select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); -rollback; -update t1 set c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1; -c1 -2 -3 -4 -5 -6 -select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1; -c1 -2 -3 -4 -5 -6 -insert into t12_temp (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1); -rollback; -insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1; -c1 c2 c1 c2 c3 -1 1 NULL NULL NULL -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1; -c1 c2 c1 c2 c3 -1 1 NULL NULL NULL -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 2 5 4 -3 2 3 5 b 4 5 1 -3 2 3 5 b 5 5 5 -3 2 3 5 b 6 5 c -4 6 4 6 o 3 6 1 -select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2; -c1 c2 c1 c2 c3 c1 c2 c3 -2 5 2 5 c 2 5 4 -2 5 2 5 c 4 5 1 -2 5 2 5 c 5 5 5 -2 5 2 5 c 6 5 c -3 2 3 5 b 2 5 4 -3 2 3 5 b 4 5 1 -3 2 3 5 b 5 5 5 -3 2 3 5 b 6 5 c -4 6 4 6 o 3 6 1 -insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); -rollback; -update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t1.c2 where t2.c2 = 1; -c1 c2 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t1.c2 where t2.c2 = 1; -c1 c2 c1 c2 c3 c1 c2 c3 -insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); -rollback; -update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1; -c1 c2 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1; -c1 c2 c1 c2 c3 c1 c2 c3 -insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1); -rollback; -update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1; -c1 c2 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1; -c1 c2 c1 c2 c3 c1 c2 c3 -insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1); -rollback; -insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1); -rollback; -update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3); -a1 a2 -2 1 -3 1 -4 1 -5 1 -6 1 -select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3); -a1 a2 -2 1 -3 1 -4 1 -5 1 -6 1 -insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3)); -rollback; -insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3)); -rollback; -update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3); -a1 a2 -1 2 -1 3 -1 4 -1 5 -1 6 -2 3 -2 4 -2 5 -2 6 -3 2 -3 4 -3 5 -3 6 -4 2 -4 3 -4 5 -4 6 -5 2 -5 3 -5 4 -5 6 -6 2 -6 3 -6 4 -6 5 -select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3); -a1 a2 -1 2 -1 3 -1 4 -1 5 -1 6 -2 3 -2 4 -2 5 -2 6 -3 2 -3 4 -3 5 -3 6 -4 2 -4 3 -4 5 -4 6 -5 2 -5 3 -5 4 -5 6 -6 2 -6 3 -6 4 -6 5 -insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3)); -rollback; -insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3)); -rollback; -update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2); -a1 a2 -1 2 -1 3 -1 4 -1 5 -1 6 -2 3 -3 1 -3 2 -3 4 -3 5 -3 6 -6 5 -select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2); -a1 a2 -1 2 -1 3 -1 4 -1 5 -1 6 -2 3 -3 1 -3 2 -3 4 -3 5 -3 6 -6 5 -insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2)); -rollback; -insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2)); -rollback; -update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL); -a1 a2 -2 1 -3 1 -4 1 -5 1 -6 1 -select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL); -a1 a2 -2 1 -3 1 -4 1 -5 1 -6 1 -insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL)); -rollback; -insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL)); -rollback; -update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL); -a1 a2 -select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL); -a1 a2 -insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL)); -rollback; -insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL)); -rollback; -update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; -c1 c2 c1 c2 c3 c1 c2 c3 c1 c2 c3 -insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); -rollback; -insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2); -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2); -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1; -c1 c2 c1 c2 c3 -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1; -c1 c2 c1 c2 c3 -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1); -c1 c2 c1 c2 c3 -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1); -c1 c2 c1 c2 c3 -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000); -c1 c2 c1 c2 c3 -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000); -c1 c2 c1 c2 c3 -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2); -c1 c2 c1 c2 c3 -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2); -c1 c2 c1 c2 c3 -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true; -c1 c2 c1 c2 c3 -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true; -c1 c2 c1 c2 c3 -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false; -c1 c2 c1 c2 c3 -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false; -c1 c2 c1 c2 c3 -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4); -c1 c2 c1 c2 c3 -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4); -c1 c2 c1 c2 c3 -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.0591260281974 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1); -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE */ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1); -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE */ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */ t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */ t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end); -c1 c2 c1 c2 c3 -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end); -c1 c2 c1 c2 c3 -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1147629234082532 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1); -c1 c2 c1 c2 c3 -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1); -c1 c2 c1 c2 c3 -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1)); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1354156504062622 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.1354156504062622 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null; -c1 c2 c1 c2 c3 -1 1 1 1 o -2 5 2 5 c -3 2 3 5 b -4 6 4 6 o -5 4 5 7 d -6 7 6 8 c -insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null); -rollback; -insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); -select stddev(c2) from t1; -stddev(c2) -1.7204650534085253 -rollback; -set autocommit=1; -drop table if exists t1, t2, t3, t4, t5, t6; -drop table t1_temp, t2_temp, t3_temp, t4_temp, t5_temp, t6_temp, t7_temp, t8_temp, t9_temp, t10_temp, t11_temp, t12_temp, t13_temp, t14_temp, t15_temp; -create table t1 (c1 int, c2 int); -create table t2 (c1 int, c2 int); -create table t3 (c1 int, c2 int); -create table t4 (c1 int, c2 int); -create table t5 (c1 int, c2 int); -create table t6 (c1 int, c2 int); -create table t1_temp(a int, b int, d int, e int); -create table t2_temp(a int, b int); -create table t3_temp(a int, b int, c int); -create table t4_temp(a int, b int, c int, d int); -create table t5_temp(a int, b int, c int, d int, f int, g int); -create table t6_temp(a int, b int, c int, d int, e int, f int); -create table t7_temp(a int, b int, c int, d int, f int, g int, i int, j int); -create table t8_temp(a int, b int, c int, d int); -create table t9_temp(a int, b int, c int, d int, f int, g int, i int, j int); -create table t10_temp(a int, b int, c int, d int, f int, g int, i int, j int, l int, m int); -create table t11_temp(a int, b int); -create table t12_temp(a int); -create table t13_temp(a int, b int, d int, e int); -create table t14_temp(a int, b int, c int); -create table t15_temp(a int, b int, c int, d int, f int, g int, i int, j int, l int, m int); -set autocommit=0; -select * from t1 right join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; -c1 c2 c1 c2 c1 c2 -NULL NULL 1 1 1 1 -select /*+NO_REWRITE*/ * from t1 right join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; -c1 c2 c1 c2 c1 c2 -NULL NULL 1 1 1 1 -select * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2); -c1 c2 c1 c2 -1 1 NULL NULL -select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2); -c1 c2 c1 c2 -1 1 NULL NULL -insert into t1_temp (select * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2)); -rollback; -insert into t1_temp (select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2)); -rollback; -update t1 set c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -select * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2); -c1 c2 c1 c2 -select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2); -c1 c2 c1 c2 -insert into t1_temp (select * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2)); -rollback; -insert into t1_temp (select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2)); -rollback; -update t1 set c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -set autocommit=1; -set autocommit=0; -select * from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1); -c1 c2 -select /*+no_rewrite*/* from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1); -c1 c2 -insert into t11_temp (select * from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1)); -rollback; -insert into t11_temp (select /*+no_rewrite*/* from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+no_rewrite*/t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+no_rewrite*/t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -5 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -5 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); -c1 c2 -1 1 -3 2 -4 2 -select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); -c1 c2 -1 1 -3 2 -4 2 -insert into t11_temp (select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); -rollback; -insert into t11_temp (select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); -c1 c2 -1 1 -2 2 -3 2 -4 2 -select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); -c1 c2 -1 1 -2 2 -3 2 -4 2 -insert into t11_temp (select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); -rollback; -insert into t11_temp (select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); -c1 c2 -10 10 -2 2 -5 5 -NULL 1 -NULL 5 -select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); -c1 c2 -10 10 -2 2 -5 5 -NULL 1 -NULL 5 -insert into t11_temp (select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); -rollback; -insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); -c1 c2 -10 10 -5 5 -NULL 1 -NULL 5 -select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); -c1 c2 -10 10 -5 5 -NULL 1 -NULL 5 -insert into t11_temp (select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); -rollback; -insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -4 2 4 4 -5 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -4 2 4 4 -5 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2); -c1 c2 c1 c2 -2 2 2 2 -4 2 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2); -c1 c2 c1 c2 -2 2 2 2 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); -c1 c2 c1 c2 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); -c1 c2 c1 c2 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); -c1 c2 c1 c2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); -c1 c2 c1 c2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -NULL -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1); -c1 c2 c1 c2 -2 2 2 2 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1); -c1 c2 c1 c2 -2 2 2 2 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -2 2 2 2 -3 2 3 3 -4 2 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -2 2 2 2 -3 2 3 3 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -2 2 2 2 -3 2 3 3 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -2 2 2 2 -3 2 3 3 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5); -c1 c2 c1 c2 -10 10 NULL NULL -4 2 4 4 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5); -c1 c2 c1 c2 -10 10 NULL NULL -4 2 4 4 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -2 2 2 2 -4 2 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -2 2 2 2 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5); -c1 c2 c1 c2 -10 10 NULL NULL -3 2 3 3 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5); -c1 c2 c1 c2 -10 10 NULL NULL -3 2 3 3 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100); -c1 c2 -1 1 -10 10 -2 2 -3 2 -4 2 -5 5 -NULL 1 -NULL 5 -select /*+NO_REWRITE*/* from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100); -c1 c2 -1 1 -10 10 -2 2 -3 2 -4 2 -5 5 -NULL 1 -NULL 5 -insert into t11_temp (select * from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100)); -rollback; -insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100)); -rollback; -update t1 set c2 = (select t1.c1 from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1; -c2 c2 c2 -1 1 1 -1 1 1 -1 NULL NULL -10 NULL NULL -2 NULL NULL -2 NULL NULL -2 NULL NULL -5 NULL NULL -5 NULL NULL -select /*+NO_REWRITE*/t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1; -c2 c2 c2 -1 1 1 -1 1 1 -1 NULL NULL -10 NULL NULL -2 NULL NULL -2 NULL NULL -2 NULL NULL -5 NULL NULL -5 NULL NULL -insert into t14_temp (select t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1); -rollback; -insert into t14_temp (select /*+NO_REWRITE*/t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1); -rollback; -update t1 set c2 = (select t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+NO_REWRITE*/t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1; -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -10 10 NULL NULL NULL NULL -2 2 2 2 NULL NULL -3 2 3 3 NULL NULL -4 2 4 4 NULL NULL -5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1; -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -10 10 NULL NULL NULL NULL -2 2 2 2 NULL NULL -3 2 3 3 NULL NULL -4 2 4 4 NULL NULL -5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL -insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1); -rollback; -insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1; -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -10 10 NULL NULL NULL NULL -2 2 NULL NULL NULL NULL -3 2 NULL NULL NULL NULL -4 2 NULL NULL NULL NULL -5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1; -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -10 10 NULL NULL NULL NULL -2 2 NULL NULL NULL NULL -3 2 NULL NULL NULL NULL -4 2 NULL NULL NULL NULL -5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL -insert into t5_temp (select * from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1); -rollback; -insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1; -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -10 10 1 1 1 1 -10 10 1 1 1 1 -2 2 1 1 1 1 -2 2 1 1 1 1 -3 2 1 1 1 1 -3 2 1 1 1 1 -4 2 1 1 1 1 -4 2 1 1 1 1 -5 5 1 1 1 1 -5 5 1 1 1 1 -NULL 1 1 1 1 1 -NULL 1 1 1 1 1 -NULL 5 1 1 1 1 -NULL 5 1 1 1 1 -NULL NULL 2 2 NULL NULL -NULL NULL 3 3 3 3 -NULL NULL 4 4 4 4 -NULL NULL 6 6 NULL NULL -NULL NULL NULL 2 NULL NULL -NULL NULL NULL 6 NULL NULL -NULL NULL NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1; -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -10 10 1 1 1 1 -10 10 1 1 1 1 -2 2 1 1 1 1 -2 2 1 1 1 1 -3 2 1 1 1 1 -3 2 1 1 1 1 -4 2 1 1 1 1 -4 2 1 1 1 1 -5 5 1 1 1 1 -5 5 1 1 1 1 -NULL 1 1 1 1 1 -NULL 1 1 1 1 1 -NULL 5 1 1 1 1 -NULL 5 1 1 1 1 -NULL NULL 2 2 NULL NULL -NULL NULL 3 3 3 3 -NULL NULL 4 4 4 4 -NULL NULL 6 6 NULL NULL -NULL NULL NULL 2 NULL NULL -NULL NULL NULL 6 NULL NULL -NULL NULL NULL NULL NULL NULL -insert into t5_temp (select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1); -rollback; -insert into t5_temp (select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1); -rollback; -update t1 set c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1; -c1 c2 c1 c2 c1 c2 -10 10 1 1 1 1 -10 10 1 1 1 1 -2 2 1 1 1 1 -2 2 1 1 1 1 -3 2 1 1 1 1 -3 2 1 1 1 1 -4 2 1 1 1 1 -4 2 1 1 1 1 -5 5 1 1 1 1 -5 5 1 1 1 1 -select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1; -c1 c2 c1 c2 c1 c2 -10 10 1 1 1 1 -10 10 1 1 1 1 -2 2 1 1 1 1 -2 2 1 1 1 1 -3 2 1 1 1 1 -3 2 1 1 1 1 -4 2 1 1 1 1 -4 2 1 1 1 1 -5 5 1 1 1 1 -5 5 1 1 1 1 -insert into t5_temp (select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1); -rollback; -insert into t5_temp (select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1); -rollback; -update t1 set c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -3.1622776601683795 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -3.1622776601683795 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1; -c1 c2 c1 c2 c1 c2 -1 1 1 1 NULL NULL -1 1 1 1 NULL NULL -10 10 NULL NULL NULL NULL -2 2 2 2 NULL NULL -3 2 3 3 3 3 -4 2 4 4 4 4 -5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1; -c1 c2 c1 c2 c1 c2 -1 1 1 1 NULL NULL -1 1 1 1 NULL NULL -10 10 NULL NULL NULL NULL -2 2 2 2 NULL NULL -3 2 3 3 3 3 -4 2 4 4 4 4 -5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL -insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1); -rollback; -insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 2 2 1 1 2 2 -1 1 3 3 1 1 3 3 -1 1 4 4 1 1 4 4 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 2 2 1 1 2 2 -1 1 3 3 1 1 3 3 -1 1 4 4 1 1 4 4 -insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 2 2 1 1 2 2 -1 1 3 3 1 1 3 3 -1 1 4 4 1 1 4 4 -1 1 6 6 1 1 NULL NULL -1 1 NULL 2 1 1 NULL NULL -1 1 NULL 6 1 1 NULL NULL -1 1 NULL NULL 1 1 NULL NULL -10 10 NULL NULL NULL NULL NULL NULL -2 2 NULL NULL NULL NULL NULL NULL -3 2 NULL NULL 3 3 NULL NULL -4 2 NULL NULL 4 4 NULL NULL -5 5 NULL NULL 5 5 NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 2 2 1 1 2 2 -1 1 3 3 1 1 3 3 -1 1 4 4 1 1 4 4 -1 1 6 6 1 1 NULL NULL -1 1 NULL 2 1 1 NULL NULL -1 1 NULL 6 1 1 NULL NULL -1 1 NULL NULL 1 1 NULL NULL -10 10 NULL NULL NULL NULL NULL NULL -2 2 NULL NULL NULL NULL NULL NULL -3 2 NULL NULL 3 3 NULL NULL -4 2 NULL NULL 4 4 NULL NULL -5 5 NULL NULL 5 5 NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -10 10 NULL NULL NULL NULL NULL NULL -2 2 NULL NULL NULL NULL NULL NULL -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 NULL NULL NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -10 10 NULL NULL NULL NULL NULL NULL -2 2 NULL NULL NULL NULL NULL NULL -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 NULL NULL NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -10 10 NULL NULL NULL NULL NULL NULL -2 2 NULL NULL NULL NULL NULL NULL -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 NULL NULL NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -10 10 NULL NULL NULL NULL NULL NULL -2 2 NULL NULL NULL NULL NULL NULL -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 NULL NULL NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 NULL NULL -1 1 1 1 1 1 NULL NULL -1 1 2 2 1 1 NULL NULL -1 1 3 3 1 1 NULL NULL -1 1 4 4 1 1 NULL NULL -1 1 6 6 1 1 NULL NULL -1 1 NULL 2 1 1 NULL NULL -1 1 NULL 6 1 1 NULL NULL -1 1 NULL NULL 1 1 NULL NULL -3 2 NULL NULL 3 3 1 1 -3 2 NULL NULL 3 3 2 2 -3 2 NULL NULL 3 3 3 3 -3 2 NULL NULL 3 3 4 4 -3 2 NULL NULL 3 3 8 8 -3 2 NULL NULL 3 3 8 8 -3 2 NULL NULL 3 3 NULL 4 -3 2 NULL NULL 3 3 NULL 8 -4 2 NULL NULL 4 4 1 1 -4 2 NULL NULL 4 4 2 2 -4 2 NULL NULL 4 4 3 3 -4 2 NULL NULL 4 4 4 4 -4 2 NULL NULL 4 4 8 8 -4 2 NULL NULL 4 4 8 8 -4 2 NULL NULL 4 4 NULL 4 -4 2 NULL NULL 4 4 NULL 8 -5 5 NULL NULL 5 5 1 1 -5 5 NULL NULL 5 5 2 2 -5 5 NULL NULL 5 5 3 3 -5 5 NULL NULL 5 5 4 4 -5 5 NULL NULL 5 5 8 8 -5 5 NULL NULL 5 5 8 8 -5 5 NULL NULL 5 5 NULL 4 -5 5 NULL NULL 5 5 NULL 8 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 NULL NULL -1 1 1 1 1 1 NULL NULL -1 1 2 2 1 1 NULL NULL -1 1 3 3 1 1 NULL NULL -1 1 4 4 1 1 NULL NULL -1 1 6 6 1 1 NULL NULL -1 1 NULL 2 1 1 NULL NULL -1 1 NULL 6 1 1 NULL NULL -1 1 NULL NULL 1 1 NULL NULL -3 2 NULL NULL 3 3 1 1 -3 2 NULL NULL 3 3 2 2 -3 2 NULL NULL 3 3 3 3 -3 2 NULL NULL 3 3 4 4 -3 2 NULL NULL 3 3 8 8 -3 2 NULL NULL 3 3 8 8 -3 2 NULL NULL 3 3 NULL 4 -3 2 NULL NULL 3 3 NULL 8 -4 2 NULL NULL 4 4 1 1 -4 2 NULL NULL 4 4 2 2 -4 2 NULL NULL 4 4 3 3 -4 2 NULL NULL 4 4 4 4 -4 2 NULL NULL 4 4 8 8 -4 2 NULL NULL 4 4 8 8 -4 2 NULL NULL 4 4 NULL 4 -4 2 NULL NULL 4 4 NULL 8 -5 5 NULL NULL 5 5 1 1 -5 5 NULL NULL 5 5 2 2 -5 5 NULL NULL 5 5 3 3 -5 5 NULL NULL 5 5 4 4 -5 5 NULL NULL 5 5 8 8 -5 5 NULL NULL 5 5 8 8 -5 5 NULL NULL 5 5 NULL 4 -5 5 NULL NULL 5 5 NULL 8 -insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 3 3 3 3 3 3 -1 1 4 4 4 4 4 4 -10 10 3 3 3 3 3 3 -10 10 4 4 4 4 4 4 -2 2 3 3 3 3 3 3 -2 2 4 4 4 4 4 4 -3 2 3 3 3 3 3 3 -3 2 4 4 4 4 4 4 -4 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 3 3 3 3 3 3 -5 5 4 4 4 4 4 4 -NULL 1 3 3 3 3 3 3 -NULL 1 4 4 4 4 4 4 -NULL 5 3 3 3 3 3 3 -NULL 5 4 4 4 4 4 4 -select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 3 3 3 3 3 3 -1 1 4 4 4 4 4 4 -10 10 3 3 3 3 3 3 -10 10 4 4 4 4 4 4 -2 2 3 3 3 3 3 3 -2 2 4 4 4 4 4 4 -3 2 3 3 3 3 3 3 -3 2 4 4 4 4 4 4 -4 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 3 3 3 3 3 3 -5 5 4 4 4 4 4 4 -NULL 1 3 3 3 3 3 3 -NULL 1 4 4 4 4 4 4 -NULL 5 3 3 3 3 3 3 -NULL 5 4 4 4 4 4 4 -insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -10 10 NULL NULL NULL NULL NULL NULL -2 2 2 2 NULL NULL NULL NULL -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 NULL NULL NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -10 10 NULL NULL NULL NULL NULL NULL -2 2 2 2 NULL NULL NULL NULL -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 NULL NULL NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -10 10 NULL NULL NULL NULL NULL NULL -2 2 2 2 NULL NULL NULL NULL -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 NULL NULL NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL 5 5 NULL NULL -NULL NULL NULL NULL 7 7 NULL NULL -NULL NULL NULL NULL 7 7 NULL NULL -NULL NULL NULL NULL NULL 3 NULL NULL -NULL NULL NULL NULL NULL 7 NULL NULL -select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -10 10 NULL NULL NULL NULL NULL NULL -2 2 2 2 NULL NULL NULL NULL -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -5 5 NULL NULL NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL 5 5 NULL NULL -NULL NULL NULL NULL 7 7 NULL NULL -NULL NULL NULL NULL 7 7 NULL NULL -NULL NULL NULL NULL NULL 3 NULL NULL -NULL NULL NULL NULL NULL 7 NULL NULL -insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -3 2 3 3 3 3 3 3 -4 2 4 4 4 4 4 4 -insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1); -rollback; -insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; -c1 c2 c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 NULL NULL NULL NULL -1 1 1 1 1 1 NULL NULL NULL NULL -10 10 NULL NULL NULL NULL NULL NULL NULL NULL -2 2 2 2 NULL NULL NULL NULL NULL NULL -3 2 3 3 3 3 1 1 1 1 -3 2 3 3 3 3 2 2 2 2 -3 2 3 3 3 3 3 3 3 3 -3 2 3 3 3 3 4 4 4 4 -3 2 3 3 3 3 8 8 NULL NULL -3 2 3 3 3 3 8 8 NULL NULL -3 2 3 3 3 3 NULL 4 NULL NULL -3 2 3 3 3 3 NULL 8 NULL NULL -4 2 4 4 4 4 1 1 1 1 -4 2 4 4 4 4 2 2 2 2 -4 2 4 4 4 4 3 3 3 3 -4 2 4 4 4 4 4 4 4 4 -4 2 4 4 4 4 8 8 NULL NULL -4 2 4 4 4 4 8 8 NULL NULL -4 2 4 4 4 4 NULL 4 NULL NULL -4 2 4 4 4 4 NULL 8 NULL NULL -5 5 NULL NULL 5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL NULL NULL -select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; -c1 c2 c1 c2 c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 NULL NULL NULL NULL -1 1 1 1 1 1 NULL NULL NULL NULL -10 10 NULL NULL NULL NULL NULL NULL NULL NULL -2 2 2 2 NULL NULL NULL NULL NULL NULL -3 2 3 3 3 3 1 1 1 1 -3 2 3 3 3 3 2 2 2 2 -3 2 3 3 3 3 3 3 3 3 -3 2 3 3 3 3 4 4 4 4 -3 2 3 3 3 3 8 8 NULL NULL -3 2 3 3 3 3 8 8 NULL NULL -3 2 3 3 3 3 NULL 4 NULL NULL -3 2 3 3 3 3 NULL 8 NULL NULL -4 2 4 4 4 4 1 1 1 1 -4 2 4 4 4 4 2 2 2 2 -4 2 4 4 4 4 3 3 3 3 -4 2 4 4 4 4 4 4 4 4 -4 2 4 4 4 4 8 8 NULL NULL -4 2 4 4 4 4 8 8 NULL NULL -4 2 4 4 4 4 NULL 4 NULL NULL -4 2 4 4 4 4 NULL 8 NULL NULL -5 5 NULL NULL 5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL NULL NULL NULL NULL -insert into t15_temp (select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); -rollback; -insert into t15_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; -c1 c2 c1 c2 c1 c2 c1 c2 c1 c2 -3 2 3 3 3 3 1 1 1 1 -3 2 3 3 3 3 2 2 2 2 -3 2 3 3 3 3 3 3 3 3 -3 2 3 3 3 3 4 4 4 4 -3 2 3 3 3 3 8 8 NULL NULL -3 2 3 3 3 3 8 8 NULL NULL -3 2 3 3 3 3 NULL 4 NULL NULL -3 2 3 3 3 3 NULL 8 NULL NULL -4 2 4 4 4 4 1 1 1 1 -4 2 4 4 4 4 2 2 2 2 -4 2 4 4 4 4 3 3 3 3 -4 2 4 4 4 4 4 4 4 4 -4 2 4 4 4 4 8 8 NULL NULL -4 2 4 4 4 4 8 8 NULL NULL -4 2 4 4 4 4 NULL 4 NULL NULL -4 2 4 4 4 4 NULL 8 NULL NULL -select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; -c1 c2 c1 c2 c1 c2 c1 c2 c1 c2 -3 2 3 3 3 3 1 1 1 1 -3 2 3 3 3 3 2 2 2 2 -3 2 3 3 3 3 3 3 3 3 -3 2 3 3 3 3 4 4 4 4 -3 2 3 3 3 3 8 8 NULL NULL -3 2 3 3 3 3 8 8 NULL NULL -3 2 3 3 3 3 NULL 4 NULL NULL -3 2 3 3 3 3 NULL 8 NULL NULL -4 2 4 4 4 4 1 1 1 1 -4 2 4 4 4 4 2 2 2 2 -4 2 4 4 4 4 3 3 3 3 -4 2 4 4 4 4 4 4 4 4 -4 2 4 4 4 4 8 8 NULL NULL -4 2 4 4 4 4 8 8 NULL NULL -4 2 4 4 4 4 NULL 4 NULL NULL -4 2 4 4 4 4 NULL 8 NULL NULL -insert into t15_temp (select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); -rollback; -insert into t15_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); -rollback; -update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8722813232690143 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -2 2 2 2 2 2 -3 2 3 3 3 3 -4 2 4 4 4 4 -NULL NULL NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -2 2 2 2 2 2 -3 2 3 3 3 3 -4 2 4 4 4 4 -NULL NULL NULL NULL NULL NULL -insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); -rollback; -insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -10 10 NULL NULL NULL NULL -2 2 2 2 2 2 -3 2 3 3 3 3 -4 2 4 4 4 4 -5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); -c1 c2 c1 c2 c1 c2 -1 1 1 1 1 1 -1 1 1 1 1 1 -10 10 NULL NULL NULL NULL -2 2 2 2 2 2 -3 2 3 3 3 3 -4 2 4 4 4 4 -5 5 NULL NULL NULL NULL -NULL 1 NULL NULL NULL NULL -NULL 5 NULL NULL NULL NULL -insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); -rollback; -insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -select /*+NO_REWIRTE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -3 2 3 3 -4 2 4 4 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); -rollback; -insert into t4_temp (select /*+NO_REWIRTE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+NO_REWIRTE*/t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+NO_REWIRTE*/t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1); -c1 c2 c1 c2 -1 1 1 1 -1 1 1 1 -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); -select stddev(c2) from t1; -stddev(c2) -2.8674417556808756 -rollback; -select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); -c1 c2 c1 c2 -10 10 NULL NULL -2 2 2 2 -5 5 NULL NULL -NULL 1 NULL NULL -NULL 5 NULL NULL -insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); -rollback; -insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); -rollback; -update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -0 -rollback; -delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); -select stddev(c2) from t1; -stddev(c2) -3.3226495451672298 -rollback; -set autocommit=1; -drop table if exists t5, t6, t7, t8, t9, t10, t11; -create table t5(c1 int primary key, c2 int, c3 varchar(32)); -create table t6(c1 int, c2 int, c3 varchar(32), primary key(c1,c2)); -create table t7(c1 int primary key, c2 int, c3 varchar(32)) -partition by hash(c1) partitions 5; -create table t8(c1 int, c2 int not null, c3 varchar(32), -foreign key(c1) references t5(c1), -foreign key(c2) references t5(c1)); -create table t9(c1 int not null, c2 int, c3 varchar(32), -foreign key(c1) references t7(c1)) -partition by list(c1) ( -partition p0 values in(1,2), -partition p1 values in(3,4), -partition p2 values in(5,6), -partition p3 values in(7,8), -partition p4 values in(9,10)); -create table t10(c1 int not null, c2 int, c3 varchar(32), -foreign key(c1) references t7(c1)) -partition by hash(c1) partitions 5; -create table t11(c1 int not null, c2 int not null, c3 varchar(32), -foreign key(c1,c2) references t6(c1,c2)); -set autocommit=0; -select * from t8 a left join t5 b on a.c1=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 1 1 a -3 3 c 3 5 c -3 3 d 3 5 c -NULL 4 e NULL NULL NULL -NULL 4 f NULL NULL NULL -select * from t8 a right join t5 b on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -NULL 4 e 4 6 d -NULL 4 f 4 6 d -NULL NULL NULL 5 7 e -NULL NULL NULL 6 8 f -select * from t8 a left join (select * from t5 where t5.c1>0) b on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -NULL 4 e 4 6 d -NULL 4 f 4 6 d -select * from (select * from t8 where t8.c1>0) a left join (select * from t5 where t5.c1>0) b on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -select * from t8 a left join t5 b on a.c2>b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a NULL NULL NULL -1 2 b 1 1 a -3 3 c 1 1 a -3 3 c 2 5 b -3 3 d 1 1 a -3 3 d 2 5 b -NULL 4 e 1 1 a -NULL 4 e 2 5 b -NULL 4 e 3 5 c -NULL 4 f 1 1 a -NULL 4 f 2 5 b -NULL 4 f 3 5 c -select * from t8 a left join t5 b on a.c2=b.c1 and a.c1<3; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c NULL NULL NULL -3 3 d NULL NULL NULL -NULL 4 e NULL NULL NULL -NULL 4 f NULL NULL NULL -select * from t8 a left join t5 b on a.c2=b.c1 and a.c2=b.c1 and a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -NULL 4 e 4 6 d -NULL 4 f 4 6 d -select * from t8 a left join t5 b on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -NULL 4 e 4 6 d -NULL 4 f 4 6 d -select /*+NO_REWRITE*/* from t8 a left join t5 b on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -NULL 4 e 4 6 d -NULL 4 f 4 6 d -insert into t16_temp (select * from t8 a left join t5 b on a.c2=b.c1); -rollback; -insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a left join t5 b on a.c2=b.c1); -rollback; -update t5 set c2 = (select a.c1 from t8 a left join t5 b on a.c2=b.c1 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a left join t5 b on a.c2=b.c1 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -select * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 1 1 a -3 3 c 3 5 c -3 3 d 3 5 c -select /*+NO_REWRITE*/* from t8 a left join t5 b on a.c1=b.c1 where a.c1>0; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 1 1 a -3 3 c 3 5 c -3 3 d 3 5 c -insert into t16_temp (select * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0); -rollback; -insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0); -rollback; -update t5 set c2 = (select a.c1 from t8 a left join t5 b on a.c1=b.c1 where a.c1>0 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a left join t5 b on a.c1=b.c1 where a.c1>0 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -select * from t11 a left join t6 b on a.c1=b.c2 and a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 1 b 1 1 a -3 3 c 3 3 c -3 3 d 3 3 c -4 4 e 4 4 d -4 4 f 4 4 d -select * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 1 b 1 1 a -3 3 c 3 3 c -3 3 d 3 3 c -4 4 e 4 4 d -4 4 f 4 4 d -select /*+NO_REWRITE*/* from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 1 b 1 1 a -3 3 c 3 3 c -3 3 d 3 3 c -4 4 e 4 4 d -4 4 f 4 4 d -insert into t16_temp (select * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2); -rollback; -insert into t16_temp (select /*+NO_REWRITE*/ * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2); -rollback; -update t5 set c2 = (select a.c1 from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -select * from t10 partition(p1) a left join t7 partition(p1) b on a.c1=b.c1; -c1 c2 c3 c1 c2 c3 -1 2 a 1 1 a -1 2 b 1 1 a -select * from t10 partition(p1) a left join t7 b on a.c1=b.c1; -c1 c2 c3 c1 c2 c3 -1 2 a 1 1 a -1 2 b 1 1 a -select /*+NO_REWRITE*/ * from t10 partition(p1) a left join t7 b on a.c1=b.c1; -c1 c2 c3 c1 c2 c3 -1 2 a 1 1 a -1 2 b 1 1 a -insert into t16_temp (select * from t10 partition(p1) a left join t7 b on a.c1=b.c1); -rollback; -insert into t16_temp (select /*+NO_REWRITE*/ * from t10 partition(p1) a left join t7 b on a.c1=b.c1); -rollback; -update t5 set c2 = (select a.c1 from t10 partition(p1) a left join t7 b on a.c1=b.c1 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t10 partition(p1) a left join t7 b on a.c1=b.c1 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -select * from t8 a full join t5 b on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -NULL 4 e 4 6 d -NULL 4 f 4 6 d -NULL NULL NULL 5 7 e -NULL NULL NULL 6 8 f -select /*+NO_REWRITE*/* from t8 a full join t5 b on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -NULL 4 e 4 6 d -NULL 4 f 4 6 d -NULL NULL NULL 5 7 e -NULL NULL NULL 6 8 f -insert into t16_temp (select * from t8 a full join t5 b on a.c2=b.c1); -rollback; -insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a full join t5 b on a.c2=b.c1); -rollback; -update t5 set c2 = (select a.c1 from t8 a full join t5 b on a.c2=b.c1 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a full join t5 b on a.c2=b.c1 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -select * from t5 b right join t8 a on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -2 5 b 1 2 b -3 5 c 3 3 c -3 5 c 3 3 d -4 6 d NULL 4 e -4 6 d NULL 4 f -select /*+NO_REWRITE*/* from t5 b right join t8 a on a.c2=b.c1; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -2 5 b 1 2 b -3 5 c 3 3 c -3 5 c 3 3 d -4 6 d NULL 4 e -4 6 d NULL 4 f -insert into t16_temp (select * from t5 b right join t8 a on a.c2=b.c1); -rollback; -insert into t16_temp (select /*+NO_REWRITE*/ * from t5 b right join t8 a on a.c2=b.c1); -rollback; -update t5 set c2 = (select a.c1 from t5 b right join t8 a on a.c2=b.c1 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t5 b right join t8 a on a.c2=b.c1 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -select * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -select /*+NO_REWRITE*/* from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null; -c1 c2 c3 c1 c2 c3 -1 1 a 1 1 a -1 2 b 2 5 b -3 3 c 3 5 c -3 3 d 3 5 c -insert into t16_temp (select * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null); -rollback; -insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null); -rollback; -update t5 set c2 = (select a.c1 from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -select * from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2; -c2 c2 -1 1 -5 NULL -5 NULL -5 NULL -6 NULL -6 NULL -NULL 2 -NULL 3 -NULL 3 -select /*+NO_REWRITE*/* from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2; -c2 c2 -1 1 -5 NULL -5 NULL -5 NULL -6 NULL -6 NULL -NULL 2 -NULL 3 -NULL 3 -insert into t11_temp (select * from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2); -rollback; -insert into t11_temp (select /*+NO_REWRITE*/ * from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2); -rollback; -update t5 set c2 = (select a.c2 from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -update t5 set c2 = (select /*+NO_REWRITE*/ a.c2 from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2 limit 1); -select stddev(c2) from t5; -stddev(c2) -0 -rollback; -set autocommit=1; -drop table if exists t11, t10, t9, t8, t7, t6, t5; -insert into t4_temp(select * from t1 left join t2 on t1.c1=t2.c1); -delete from t4_temp where a = (select t1.c1, t1.c2 from t1 left join t2 on t1.c1=t2.c1 limit 1); -ERROR 21000: Operand should contain 1 column(s) -delete from t4_temp where a = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 limit 1); -delete from t4_temp where (a, b) = (select t1.c1, t1.c2 from t1 left join t2 on t1.c1=t2.c1 limit 1); -delete from t4_temp where (a, b) = (select t1.c1, t1.c2, t2.c1 from t1 left join t2 on t1.c1=t2.c1 limit 1); -ERROR 21000: Operand should contain 2 column(s) -select stddev(a) from t4_temp; -stddev(a) -2.7856776554368237 -update t4_temp set a = (select t1.c1, t1.c2 from t1 left join t2 on t1.c1=t2.c1 limit 1); -ERROR 21000: Operand should contain 1 column(s) -update t4_temp set a = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 limit 1); -select stddev(a) from t4_temp; -stddev(a) -0 -drop table if exists t1_temp, t2_temp, t3_temp, t4_temp, t5_temp, t6_temp, t7_temp, t8_temp, t9_temp, t10_temp, t11_temp, t12_temp, t13_temp, t14_temp, t15_temp, t16_temp; -drop database transformer; diff --git a/test/mysql_test/test_suite/transformer/r/mysql/transformer_predicate_deduce.result b/test/mysql_test/test_suite/transformer/r/mysql/transformer_predicate_deduce.result deleted file mode 100644 index 8831ff605..000000000 --- a/test/mysql_test/test_suite/transformer/r/mysql/transformer_predicate_deduce.result +++ /dev/null @@ -1,505 +0,0 @@ -DROP DATABASE IF EXISTS DB_PREDICATE_DEDUCE; -CREATE DATABASE DB_PREDICATE_DEDUCE; -USE DB_PREDICATE_DEDUCE; -create table t1(c1 int, c2 int); -create table t2(c1 int , c2 int, c3 int, c4 int); -create table t3(c1 bigint, c2 varchar(64), c3 datetime); -create table is_t1(c1 int); -create table is_t2(c1 int, c2 int); -create table is_t3(c1 bigint, c2 varchar(64), c3 datetime); -insert/*trace*/into t3 values(20101010000000, '020101010000000', '2010-10-10 00:00:00'); -insert/*trace*/into t1 values(NULL, NULL); -insert/*trace*/into t2 values(NULL, NULL, NULL, NULL); -= basic test = - -== basic compare: case 1 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 = 2; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 = 2; -c1 c2 -start transaction; -update t1 a set c1 = c2 + 1 where a.c1 = a.c2 and a.c1 = 2; -delete from t1 a where a.c1 = a.c2 and a.c1 = 2; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 = 2; -rollback; - -== basic compare: case 2 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 > 2; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 > 2; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 > 2; -delete from t1 a where a.c1 = a.c2 and a.c1 > 2; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 > 2; -rollback; - -== basic compare: case 3 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 >= 2; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 >= 2; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 >= 2; -delete from t1 a where a.c1 = a.c2 and a.c1 >= 2; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 >= 2; -rollback; - -== basic compare: case 4 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 < 2; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 < 2; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 < 2; -delete from t1 a where a.c1 = a.c2 and a.c1 < 2; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 < 2; -rollback; - -== basic compare: case 5 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 <= 2; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 <= 2; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 <= 2; -delete from t1 a where a.c1 = a.c2 and a.c1 <= 2; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 <= 2; -rollback; - -== basic compare: case 6 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 like '2%'; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 like '2%'; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 like '2%'; -delete from t1 a where a.c1 = a.c2 and a.c1 like '2%'; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 like '2%'; -rollback; - -== basic compare: case 7 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 between 2 and 3; -delete from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; -rollback; - -== basic compare: case 7 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 in (2, 3); -delete from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); -rollback; -************************** deduce on function ******************************* - -== deduce on function: case 1 -select /*+no_rewrite*/* from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; -c1 c2 -select * from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where round(a.c1) = round(a.c2) and round(a.c1) = 1; -delete from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; -insert into is_t2 select * from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; -rollback; - -== deduce on function: case 2 -select /*+no_rewrite*/* from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; -c1 c2 -select * from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where round(a.c1) = a.c2 and round(a.c1) = 1; -delete from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; -insert into is_t2 select * from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; -rollback; -***************************** subquery ********************************* - -== subquery:case 1 -select /*+no_rewrite*/* from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -c1 c2 -select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -delete from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -insert into is_t2 select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -rollback; - -== subquery:case 2 -select /*+no_rewrite*/* from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -c1 c2 -select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -delete from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -insert into is_t2 select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -rollback; - -== subquery:case 3 -select /*+no_rewrite*/* from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); -c1 c2 -select * from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 in (select c1 from t2 b where b.c1 = 2); -delete from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); -insert into is_t2 select * from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); -rollback; -***************************** type check ******************************* - -== type check: case 1 -select /*+no_rewrite*/* from t3 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); -c1 c2 c3 -20101010000000 020101010000000 2010-10-10 00:00:00 -select * from t3 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); -c1 c2 c3 -20101010000000 020101010000000 2010-10-10 00:00:00 -start transaction; -update t3 set c1 = 1 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); -rollback; -****************************** remove redundant predicates ************* - -== remove redundant predicates: case 1 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 = a.c2; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 = a.c2; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 = a.c2; -delete from t1 a where a.c1 = a.c2 and a.c1 = a.c2; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 = a.c2; -rollback; - -== remove redundant predicates: case 2 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c2 = a.c1; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c2 = a.c1; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c2 = a.c1; -delete from t1 a where a.c1 = a.c2 and a.c2 = a.c1; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c2 = a.c1; -rollback; - -== remove redundant predicates: case 3 -select /*+no_rewrite*/* from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; -c1 c2 -select * from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 >= a.c2 and a.c1 >= a.c2; -delete from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; -insert into is_t2 select * from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; -rollback; - -== remove redundant predicates: case 4 -select /*+no_rewrite*/* from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; -c1 c2 -select * from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 >= a.c2 and a.c2 <= a.c1; -delete from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; -insert into is_t2 select * from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; -rollback; - -== remove redundant predicates: case 5 -select /*+no_rewrite*/* from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); -c1 c2 -select * from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); -delete from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); -insert into is_t2 select * from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); -rollback; - -== remove redundant predicates: case 6 -select /*+no_rewrite*/* from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); -c1 c2 -select * from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 in (2, 3) and a.c1 in (2, 3); -delete from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); -insert into is_t2 select * from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); -rollback; - -== remove redundant predicates: case 7 -select /*+no_rewrite*/* from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); -c1 c2 -select * from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 not in (2, 3) and a.c1 not in (2, 3); -delete from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); -insert into is_t2 select * from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); -rollback; -************************* can not deduce ****************** - -== can not deduce: case 1 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 not like '2%'; -delete from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; -rollback; - -== can not deduce: case 2 -select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); -c1 c2 -select * from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 not in (2, 3); -delete from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); -insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); -rollback; -************************* 不能推导 anti semi join *************** - -== 不能推导 anti semi join:case 1 -select /*+no_rewrite*/* from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -c1 c2 -NULL NULL -select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -c1 c2 -NULL NULL -start transaction; -update t1 a set a.c1 = a.c2 + 1 where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -delete from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -insert into is_t2 select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); -rollback; - -== 能推导 anti semi join:case 2 -select /*+no_rewrite*/* from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -c1 c2 -select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -delete from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -insert into is_t2 select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; -rollback; - -== 不能推导 anti semi join:case 3 -select /*+no_rewrite*/* from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; -c1 c2 -select * from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; -c1 c2 -start transaction; -update t1 a set a.c1 = a.c2 + 1 where a.c1 not in (select c1 from t2 b) and a.c1 = 1; -delete from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; -insert into is_t2 select * from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; -rollback; -************************* 不能推导 anti semi join *************** - -select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; -c1 c2 c1 c2 c3 c4 -select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; -c1 c2 c1 c2 c3 c4 - -select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; -c1 c2 c1 c2 c3 c4 -select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; -c1 c2 c1 c2 c3 c4 - -select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is null; -c1 c2 c1 c2 c3 c4 -select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is null; -c1 c2 c1 c2 c3 c4 - -select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> null; -c1 c2 c1 c2 c3 c4 -select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> null; -c1 c2 c1 c2 c3 c4 - -select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> 1; -c1 c2 c1 c2 c3 c4 -select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> 1; -c1 c2 c1 c2 c3 c4 - -select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 <=> b.c1 and b.c1 <=> 1; -c1 c2 c1 c2 c3 c4 -select * from t1 a, t2 b where a.c1 <=> b.c1 and b.c1 <=> 1; -c1 c2 c1 c2 c3 c4 -drop table if exists tt1, tt2, tt3; -create table tt1 (c1 int primary key, c2 varchar(10)); -create table tt2 (c1 int primary key, c2 varchar(10)); -create table tt3 (c1 int primary key, c2 varchar(10)); -select /*+use_merge(tt1 tt2)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 where tt1.c1 = 1; -c1 c2 c1 c2 -1 a1 NULL NULL -select /*+no_rewrite, use_merge(tt1 tt2)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 where tt1.c1 = 1; -c1 c2 c1 c2 -1 a1 NULL NULL -select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; -c1 c2 c1 c2 c1 c2 -1 a1 NULL NULL NULL NULL -select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; -c1 c2 c1 c2 c1 c2 -1 a1 NULL NULL NULL NULL -select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; -c1 c2 c1 c2 c1 c2 -1 a1 NULL NULL NULL NULL -select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; -c1 c2 c1 c2 c1 c2 -1 a1 NULL NULL NULL NULL -select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; -c1 c2 c1 c2 c1 c2 -select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; -c1 c2 c1 c2 c1 c2 -select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; -c1 c2 c1 c2 c1 c2 -select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; -c1 c2 c1 c2 c1 c2 -drop table if exists cghldinf, puzdjypf, pujydypf; -CREATE TABLE `cghldinf` ( -`HLDGDDM` char(10) NOT NULL, -`HLDZXWH` char(5) NOT NULL, -`HLDTGDM` decimal(9, 0) NOT NULL, -`HLDKMLB` char(2) NOT NULL, -PRIMARY KEY (`HLDTGDM`, `HLDGDDM`), -KEY `HLDINDEX` (`HLDKMLB`) LOCAL -) partition by key (hldgddm) partitions 13; -CREATE TABLE `puzdjypf` ( -`PZJZQZH` char(20) NOT NULL, -`PZJZDJYDY` char(6) NOT NULL, -`PZJSXRQ` decimal(8,0) NOT NULL, -PRIMARY KEY (`PZJZQZH`) -) partition by key (pzjzqzh) partitions 13; -CREATE TABLE `pujydypf` ( -`PJYSCDM` char(2) NOT NULL, -`PJYJYDY` char(6) NOT NULL, -`PJYJYDYLB` char(3) NOT NULL, -`PJYQSBH` char(8) NOT NULL -) partition by key (pjyjydy) partitions 2; -select /*+use_merge(t1 t2), leading(t1 t2 t3)*/ t1.hldgddm, t2.pzjzqzh, t2.pzjzdjydy, t3.pjyjydy, t3.pjyscdm from cghldinf t1 left join puzdjypf t2 on t2.pzjzqzh = t1.hldgddm left join pujydypf t3 on t2.pzjzdjydy = t3.pjyjydy and t3.pjyscdm = '01' where hldgddm = 'A100013208'; -hldgddm pzjzqzh pzjzdjydy pjyjydy pjyscdm -A100013208 A100013208 20605 NULL NULL -A100013208 A100013208 20605 NULL NULL -select /*+no_rewrite, use_merge(t1 t2), leading(t1 t2 t3)*/ t1.hldgddm, t2.pzjzqzh, t2.pzjzdjydy, t3.pjyjydy, t3.pjyscdm from cghldinf t1 left join puzdjypf t2 on t2.pzjzqzh = t1.hldgddm left join pujydypf t3 on t2.pzjzdjydy = t3.pjyjydy and t3.pjyscdm = '01' where hldgddm = 'A100013208'; -hldgddm pzjzqzh pzjzdjydy pjyjydy pjyscdm -A100013208 A100013208 20605 NULL NULL -A100013208 A100013208 20605 NULL NULL -drop table if exists t1, t2; -create table t1 (c1 int, c2 int, primary key(c1)); -create table t2 (c1 int, c2 int, primary key(c2)); -explain extended_noaddr select count(*) from t1 A, t2 B where A.c1 >= 5630905 and A.c1 < 5631105 and A.c1 = B.c2 and A.c2 = B.c2; -Query Plan -========================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ------------------------------------------- -|0 |SCALAR GROUP BY | |1 |4476| -|1 | NESTED-LOOP JOIN| |3 |4475| -|2 | TABLE SCAN |A |3 |4383| -|3 | TABLE GET |B |1 |36 | -========================================== - -Outputs & filters: -------------------------------------- - 0 - output([T_FUN_COUNT(*)]), filter(nil), - group(nil), agg_func([T_FUN_COUNT(*)]) - 1 - output([1]), filter(nil), - conds(nil), nl_params_([A.c1]), batch_join=true - 2 - output([A.c1]), filter([A.c1 = A.c2], [A.c2 < 5631105]), - access([A.c1], [A.c2]), partitions(p0), - is_index_back=false, filter_before_indexback[false,false], - range_key([A.c1]), range[5630905 ; 5631105), - range_cond([A.c1 >= 5630905], [A.c1 < 5631105]) - 3 - output([1]), filter(nil), - access([B.c2]), partitions(p0), - is_index_back=false, - range_key([B.c2]), range(MIN ; MAX), - range_cond([B.c2 < 5631105], [B.c2 >= 5630905], [? = B.c2]) - -drop table t1, t2; -create table t1 (c1 int, c2 int, index (c1)); -create table t2 (c1 int, c2 int, index (c2)); -explain extended_noaddr select count(*) from t1 A, t2 B where A.c1 >= 5630905 and A.c1 < 5631105 and A.c1 = B.c2 and A.c2 = B.c2; -Query Plan -============================================ -|ID|OPERATOR |NAME |EST. ROWS|COST | --------------------------------------------- -|0 |SCALAR GROUP BY | |1 |31312| -|1 | NESTED-LOOP JOIN| |123 |31289| -|2 | TABLE SCAN |A(c1)|3 |31096| -|3 | TABLE SCAN |B(c2)|50 |45 | -============================================ - -Outputs & filters: -------------------------------------- - 0 - output([T_FUN_COUNT(*)]), filter(nil), - group(nil), agg_func([T_FUN_COUNT(*)]) - 1 - output([1]), filter(nil), - conds(nil), nl_params_([A.c1]), batch_join=true - 2 - output([A.c1]), filter([A.c1 = A.c2], [A.c2 < 5631105]), - access([A.c1], [A.c2]), partitions(p0), - is_index_back=true, filter_before_indexback[false,false], - range_key([A.c1], [A.__pk_increment]), range(5630905,MIN ; 5631105,MIN), - range_cond([A.c1 >= 5630905], [A.c1 < 5631105]) - 3 - output([1]), filter(nil), - access([B.c2]), partitions(p0), - is_index_back=false, - range_key([B.c2], [B.__pk_increment]), range(MIN ; MAX), - range_cond([B.c2 < 5631105], [B.c2 >= 5630905], [? = B.c2]) - -drop table t1, t2; -create table t1 (c1 int, c2 int) partition by hash(c1) partitions 4; -create table t2 (c1 int, c2 int) partition by hash(c2) partitions 4; -explain extended_noaddr select count(*) from t1 A, t2 B where A.c1 >= 5630905 and A.c1 < 5631105 and A.c1 = B.c2 and A.c2 = B.c2; -Query Plan -======================================================= -|ID|OPERATOR |NAME |EST. ROWS|COST | -------------------------------------------------------- -|0 |SCALAR GROUP BY | |1 |21331| -|1 | PX COORDINATOR | |1 |20956| -|2 | EXCHANGE OUT DISTR |:EX10000|1 |20956| -|3 | MERGE GROUP BY | |1 |20956| -|4 | PX PARTITION ITERATOR| |1961 |20582| -|5 | NESTED-LOOP JOIN | |1961 |20582| -|6 | TABLE SCAN |A |10 |17866| -|7 | TABLE SCAN |B |198 |144 | -======================================================= - -Outputs & filters: -------------------------------------- - 0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), - group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) - 1 - output([T_FUN_COUNT(*)]), filter(nil) - 2 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 - 3 - output([T_FUN_COUNT(*)]), filter(nil), - group(nil), agg_func([T_FUN_COUNT(*)]) - 4 - output([1]), filter(nil), - partition wise, force partition granule, asc. - 5 - output([1]), filter(nil), - conds(nil), nl_params_([A.c1]), batch_join=true - 6 - output([A.c1]), filter([A.c1 = A.c2], [A.c2 < 5631105]), - access([A.c1], [A.c2]), partitions(p[0-3]), - is_index_back=false, filter_before_indexback[false,false], - range_key([A.c1], [A.__pk_increment]), range(5630905,MIN ; 5631105,MIN), - range_cond([A.c1 >= 5630905], [A.c1 < 5631105]) - 7 - output([1]), filter(nil), - access([B.c2]), partitions(p[0-3]), - is_index_back=false, - range_key([B.c2], [B.__pk_increment]), range(MIN ; MAX), - range_cond([B.c2 < 5631105], [B.c2 >= 5630905], [? = B.c2]) - -drop table if exists t1, t2, t3; -drop table if exists tt1, tt2, tt3; -drop table if exists cghldinf, puzdjypf, pujydypf; -USE DB_PREDICATE_DEDUCE; -drop database DB_PREDICATE_DEDUCE; diff --git a/test/mysql_test/test_suite/transformer/r/mysql/transformer_simplify.result b/test/mysql_test/test_suite/transformer/r/mysql/transformer_simplify.result deleted file mode 100644 index c1abb7748..000000000 --- a/test/mysql_test/test_suite/transformer/r/mysql/transformer_simplify.result +++ /dev/null @@ -1,2842 +0,0 @@ -DROP DATABASE IF EXISTS DB_SIMPLIFY; -CREATE DATABASE DB_SIMPLIFY; -USE DB_SIMPLIFY; -********************* test for basic transform ********* -drop table if exists t1, t2, t3; -create table t1(c1 int primary key); -create table t2(c2 int primary key); -create table t3(c3 int primary key); -insert into t1 values(1),(2),(3),(4),(5); -insert into t2 values(11),(12),(13),(14),(15); -insert into t3 values(111),(112),(113),(114),(115); -drop table if exists is_c1, is_c2; -create table is_c1(c1 int); -create table is_c2(c1 int, c2 int); -set autocommit = 0; -select /*+no_rewrite*/ max(c1) from t1 group by c1 desc; -max(c1) -5 -4 -3 -2 -1 -select max(c1) from t1 group by c1 desc; -max(c1) -5 -4 -3 -2 -1 -select /*+no_rewrite*/ c1 from t1 order by c1,c1,c1; -c1 -1 -2 -3 -4 -5 -select c1 from t1 order by c1,c1,c1; -c1 -1 -2 -3 -4 -5 -insert into is_c1 select c1 from t1 order by c1,c1,c1; -## test for subquery transform ### -select /*+no_rewrite*/ * from (select max(c1) from t1 group by c1 desc) as tmp; -max(c1) -5 -4 -3 -2 -1 -select * from (select max(c1) from t1 group by c1 desc) as tmp; -max(c1) -5 -4 -3 -2 -1 -update t2 set t2.c2 = t2.c2 + 1 where t2.c2 in (select max(c1) from t1 group by c1 desc); -select * from t2; -c2 -11 -12 -13 -14 -15 -rollback; -update /*+NO_REWRITE*/t2 set t2.c2 = t2.c2 + 1 where t2.c2 in (select /*+NO_REWRITE*/max(c1) from t1 group by c1 desc); -select * from t2; -c2 -11 -12 -13 -14 -15 -rollback; -select /*+no_rewrite*/ c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); -c2 -select c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); -c2 -delete from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); -insert into is_c1 select c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); -select /*+no_rewrite*/ * from (select c1 from t1 order by c1,c1,c1) as tmp; -c1 -1 -2 -3 -4 -5 -select * from (select c1 from t1 order by c1,c1,c1) as tmp; -c1 -1 -2 -3 -4 -5 -select /*+no_rewrite*/ c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); -c2 -select c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); -c2 -delete from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); -insert into is_c1 select c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); -select /*+no_rewrite*/ * from ((select c1 from t1 order by c1) union (select c2 from t2)) as tmp; -c1 -1 -2 -3 -4 -5 -11 -12 -13 -14 -15 -select * from ((select c1 from t1 order by c1) union (select c2 from t2)) as tmp; -c1 -1 -2 -3 -4 -5 -11 -12 -13 -14 -15 -select /*+no_rewrite*/ c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); -c3 -select c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); -c3 -delete from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); -insert into is_c1 select c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); -select /*+no_rewrite*/ * from ((select c1 from t1) union all (select c2 from t2) limit 2) as tmp; -c1 -1 -2 -select * from ((select c1 from t1) union all (select c2 from t2) limit 2) as tmp; -c1 -1 -2 -select /*+no_rewrite*/ c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); -c3 -select c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); -c3 -delete from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); -insert into is_c1 select c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); -drop table is_c1, is_c2, t1,t2,t3; -set autocommit = 1; - -*********************消除subquery中的order by子句 begin***************** - -drop table if exists t1, t2; -create table t1(c1 int not null, c2 int, key idx_c1(c1)); -create table t2(c1 int not null, c2 int, key idx_c2(c2)); -create table is_t1(c1 int); -create table is_t2(c1 int, c2 int); -insert/*trace*/into t1 values(1,2),(2,3),(3,3), (4,3),(4,4),(6,5),(6,5),(10,20); - -****** no limit, elimilate order by in subquery -select /*+no_rewrite*/ sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); -sum(c1) sum(c2) -14 15 -select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); -sum(c1) sum(c2) -14 15 -update t1 set c2 = c1+1 where c2 in (select c1 from t1 order by c1, c1, c2); -delete from t1 where c2 in (select c1 from t1 order by c1, c1, c2); -insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); - -****** has limit, can't elimilate order by in subquery -select /*+no_rewrite*/sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); -sum(c1) sum(c2) -NULL NULL -select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); -sum(c1) sum(c2) -NULL NULL -update t1 set c2 = 1 where c2 in (select c1 from t1 order by c1, c2 limit 1); -delete from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); -insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); - -****** order by subquery, can't elimilate order by in subquery -select /*+no_rewrite*/ sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); -sum(c1) sum(c2) -NULL NULL -select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); -sum(c1) sum(c2) -NULL NULL -update t1 set c2 = 1 where c2 in (select c1 from t1 order by (select 1)); -delete from t1 where c2 in (select c1 from t1 order by (select 1)); -insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); -drop table t1, t2; - -*********************消除subquery中的order by子句 end***************** - -*********************消除order by重复列begin***************** - -drop table if exists t1; -create table t1(c1 int not null, c2 int); -select /*+no_rewrite*/ c1 from t1 order by c1,c1 limit 10; -c1 -select c1 from t1 order by c1,c1 limit 10; -c1 -update t1 set c1 = c2 + 1 order by c1,c1 limit 10; -delete from t1 order by c1,c1 limit 10; -insert into is_t1 select c1 from t1 order by c1,c1 limit 10; - - -select /*+no_rewrite*/c1 from t1 order by c1,c1,c2 limit 10; -c1 -select c1 from t1 order by c1,c1,c2 limit 10; -c1 -update t1 set c1 = c2 + 1 order by c1,c1,c2 limit 10; -delete from t1 order by c1,c1,c2 limit 10; -insert into is_t1 select c1 from t1 order by c1,c1,c2 limit 10; - - -select /*+no_rewrite*/c1 from t1 order by c1,c2,c1 limit 10; -c1 -select c1 from t1 order by c1,c2,c1 limit 10; -c1 -update t1 set c1 = c2 + 1 order by c1,c2,c1 limit 10; -delete from t1 order by c1,c2,c1 limit 10; -insert into is_t1 select c1 from t1 order by c1,c2,c1 limit 10; -drop table t1; - -*********************消除order by重复列end***************** - -************************* replace is null condition, begin ********* - -drop table if exists t1_null, t2_null, t3_null; -create table t1_null(c1 int primary key, c2 int); -create table t2_null(c1 int, c2 int not NULL); -create table t3_null(c1 int primary key, c6 int); -insert/*trace*/ into t1_null values(1, 1),(2, 2),(3, 3); -insert/*trace*/ into t2_null values(4, 4),(5, 5),(6, 6); - -****** pk is null ==> false -select /*+no_rewrite*/ * from t1_null where c1 is NULL; -c1 c2 -select * from t1_null where c1 is NULL; -c1 c2 -update t1_null set c2 = 0 where c1 is NULL; -delete from t1_null where c1 is NULL; -insert into is_t2 select * from t1_null where c1 is NULL; - -****** 多个表达式,pk is null ==> false -select /*+no_rewrite*/* from t1_null where c1 is NULL and c2 = 1; -c1 c2 -select * from t1_null where c1 is NULL and c2 = 1; -c1 c2 -update t1_null set c2 = 0 where c1 is NULL and c2 = 1; -delete from t1_null where c1 is NULL and c2 = 1; -insert into is_t2 select * from t1_null where c1 is NULL and c2 = 1; - -****** column(not NULL) is NULL ==> false -select /*+no_rewrite*/* from t2_null where c2 is NULL; -c1 c2 -select * from t2_null where c2 is NULL; -c1 c2 -update t2_null set c2 = c1 + 1 where c2 is NULL; -delete from t2_null where c2 is NULL; -insert into is_t2 select * from t2_null where c2 is NULL; - -****** 多个表达式, column(not NULL) is NULL ==> false -select /*+no_rewrite*/* from t2_null where c2 is NULL and c1 = 1; -c1 c2 -select * from t2_null where c2 is NULL and c1 = 1; -c1 c2 -update t2_null set c2 = c1 + 1 where c2 is NULL and c1 = 1; -delete from t2_null where c2 is NULL and c1 = 1; -insert into is_t2 select * from t2_null where c2 is NULL and c1 = 1; - -****** pk is not NULL ==> true -select /*+no_rewrite*/* from t1_null where c1 is not NULL; -c1 c2 -1 1 -2 2 -3 3 -select * from t1_null where c1 is not NULL; -c1 c2 -1 1 -2 2 -3 3 -update t1_null set c2 = 0 where c1 is not NULL; -delete from t1_null where c1 is not NULL; -insert into is_t2 select * from t1_null where c1 is not NULL; - -****** 多个表达式,pk is not NULL ==> true -select /*+no_rewrite*/* from t1_null where c1 is not NULL and c2 = 1; -c1 c2 -select * from t1_null where c1 is not NULL and c2 = 1; -c1 c2 -update t1_null set c2 = 0 where c1 is not NULL and c2 = 1; -delete from t1_null where c1 is not NULL and c2 = 1; -insert into is_t2 select * from t1_null where c1 is not NULL and c2 = 1; - -****** column(not NULL) is not NULL ==> true -select /*+no_rewrite*/* from t2_null where c2 is not NULL; -c1 c2 -4 4 -5 5 -6 6 -select * from t2_null where c2 is not NULL; -c1 c2 -4 4 -5 5 -6 6 -update t2_null set c2 = c1 + 1 where c2 is not NULL; -delete from t2_null where c2 is not NULL; -insert into is_t2 select * from t2_null where c2 is not NULL; - -****** 多个表达式, column(not NULL) is not NULL ==> true -select /*+no_rewrite*/* from t2_null where c2 is not NULL and c1 = 1; -c1 c2 -select * from t2_null where c2 is not NULL and c1 = 1; -c1 c2 -update t2_null set c2 = c1 + 1 where c2 is not NULL and c1 = 1; -delete from t2_null where c2 is not NULL and c1 = 1; -insert into is_t2 select * from t2_null where c2 is not NULL and c1 = 1; -****** 子查询中 pk is null ==> false -select /*+no_rewrite*/* from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); -c1 c2 -select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); -c1 c2 -update t1_null set c2 = c1 + 1 where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); -delete from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); -insert into is_t2 select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); -****** 子查询中 pk is not null ==> true -select /*+no_rewrite*/* from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); -c1 c2 -select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); -c1 c2 -update t1_null set c2 = c1 + 1 where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); -delete from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); -insert into is_t2 select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); -drop table t1_null, t2_null; - -************************* replace is null condition, end********* - -************************* replace op null condition, begin ********* - -drop table if exists t1_op_null, t2_op_null; -create table t1_op_null(c1 int , c2 int); -create table t2_op_null(c1 int , c2 int ); -insert/*trace*/ into t1_op_null values (1,1),(2,null),(3,3); -insert/*trace*/ into t2_op_null values (null,4),(5,5),(null,6); - -****** compare null ==> false -select /*+no_rewrite*/ * from t1_op_null where c1 = NULL; -c1 c2 -select * from t1_op_null where c1 = NULL; -c1 c2 -update t1_op_null set c2 = 0 where c1 != NULL; -delete from t1_op_null where c1 > NULL; -insert into is_t2 select * from t1_op_null where c1 < NULL; -select * from t1_op_null where c1 <> NULL; -c1 c2 -update t1_op_null set c2 = 0 where c1 >= NULL; -delete from t1_op_null where c1 <= NULL; - -****** 多个表达式, compare null ==> false -select /*+no_rewrite*/* from t1_op_null where c1 = NULL and c2 = 1; -c1 c2 -select * from t1_op_null where c1 <> NULL or c2 = 1; -c1 c2 -1 1 -update t1_op_null set c2 = 0 where c1 != NULL and c2 = 1; -delete from t1_op_null where c1 >= NULL or c2 = 1; -insert into is_t2 select * from t1_op_null where c1 <= NULL and c2 = 1; -select * from t1_op_null where c1 <> NULL or c2=1; -c1 c2 -update t1_op_null set c2 = 0 where c1 =1 and c2 < NULL or c1=NULL; -delete from t1_op_null where c1 >= NULL or c2 = 1 and c1=3 and c2=1 and c2=NULL; -insert into is_t2 select * from t1_op_null where c1 <= NULL or c2 != NULL or c1=NULL or c2=1; - -****** operator with NULL ==> false -select /*+no_rewrite*/* from t2_op_null where c2 = NULL+c1; -c1 c2 -select * from t2_op_null where c2 = NULL+c1; -c1 c2 -update t2_op_null set c1 = c2 + 1 where c2 = c1-NULL; -delete from t2_op_null where c2 =c1*NULL; -insert into is_t2 select * from t2_op_null where c2 = c1/NULL; -update t2_op_null set c1 = c2 + 1 where c2 = c1 | NULL; -delete from t2_op_null where c2 =c1 & NULL; -insert into is_t2 select * from t2_op_null where c2 = c1 mod NULL; - -****** 多个表达式, operator NULL ==> false -select /*+no_rewrite*/* from t2_op_null where c2 = c1+NULL and c1 = 1; -c1 c2 -select * from t2_op_null where c2 = NULL-c1 or c1 = 1; -c1 c2 -update t2_op_null set c2 = c1 + 1 where c2 = c1/NULL or c2 = c1*NULL and c2=c1 & NULL ; -delete from t2_op_null where c2 = c1 mod NULL or c1 = NULL or c2=c1 | NULL or c1=1; -insert into is_t2 select * from t2_op_null where c2 = NULL and c1 =c2 >> NULL and c1=c2 << NULL ; -****** 子查询中 has null ==> false -select /*+no_rewrite*/* from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = NULL limit 1); -c1 c2 -select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = NULL limit 1); -c1 c2 -update t1_op_null set c2 = c1 + 1 where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 != NULL limit 1); -delete from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 >= NULL limit 1); -insert into is_t2 select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 <= NULL limit 1); -select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2+NULL limit 1); -c1 c2 -update t1_op_null set c2 = c1 + 1 where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2-NULL limit 1); -delete from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2*NULL limit 1); -insert into is_t2 select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 =t1_op_null.c2/NULL limit 1); -*****group by having 条件为null ==> false -select * from t1_op_null group by c1 having count(*) = NULL; -c1 c2 -select * from t1_op_null group by c1 having count(*) != NULL; -c1 c2 -select * from t1_op_null where c1 like '%1' group by c1 having count(*) = NULL; -c1 c2 -select * from t1_op_null where c1 like '%1' group by c1 having count(*) != NULL; -c1 c2 - -************************* replace op null condition, end********* - -************************改写向量等值条件 begin********** - -drop table if exists t1, t2; -create table t1 (id int, a int, b int, c varchar(10), d decimal); -create table is_t4 (id int, a int, b int, c varchar(10), d decimal); -insert/*trace*/ into t1 values (0 , 0, 0, '0', 0); -insert/*trace*/ into t1 values (1 , 1, 0, '0', 0); -insert/*trace*/ into t1 values (2 , 0, 1, '0', 0); -insert/*trace*/ into t1 values (3 , 1, 1, '0', 0); -insert/*trace*/ into t1 values (4 , 0, 0, '1', 0); -insert/*trace*/ into t1 values (5 , 1, 0, '1', 0); -insert/*trace*/ into t1 values (6 , 0, 1, '1', 0); -insert/*trace*/ into t1 values (7 , 1, 1, '1', 0); -insert/*trace*/ into t1 values (8 , 0, 0, '0', 1); -insert/*trace*/ into t1 values (9 , 1, 0, '0', 1); -insert/*trace*/ into t1 values (10, 0, 1, '0', 1); -insert/*trace*/ into t1 values (11, 1, 1, '0', 1); -insert/*trace*/ into t1 values (12, 0, 0, '1', 1); -insert/*trace*/ into t1 values (13, 1, 0, '1', 1); -insert/*trace*/ into t1 values (14, 0, 1, '1', 1); -insert/*trace*/ into t1 values (15, 1, 1, '1', 1); - -****** convert_preds_vector_to_scalar: case 1 -select /*+no_rewrite*/* from t1 where (a, b) = (1, 1); -id a b c d -3 1 1 0 0 -7 1 1 1 0 -11 1 1 0 1 -15 1 1 1 1 -select * from t1 where (a, b) = (1, 1); -id a b c d -3 1 1 0 0 -7 1 1 1 0 -11 1 1 0 1 -15 1 1 1 1 -update t1 set a = b + 1 where (a, b) = (1, 1); -delete from t1 where (a, b) = (1, 1); -insert into is_t4 select * from t1 where (a, b) = (1, 1); - -****** convert_preds_vector_to_scalar: case 2 -select /*+no_rewrite*/* from t1 where (a, c) = (1, 1); -id a b c d -5 1 0 1 0 -13 1 0 1 1 -select * from t1 where (a, c) = (1, 1); -id a b c d -5 1 0 1 0 -13 1 0 1 1 -update t1 set a = b + 1 where (a, c) = (1, 1); -delete from t1 where (a, c) = (1, 1); -insert into is_t4 select * from t1 where (a, c) = (1, 1); - -******convert_preds_vector_to_scalar: case 3 -select /*+no_rewrite*/* from t1 where (a, b) = (c, d); -id a b c d -0 0 0 0 0 -10 0 1 0 1 -select * from t1 where (a, b) = (c, d); -id a b c d -0 0 0 0 0 -10 0 1 0 1 -update t1 set a = b + 1 where (a, b) = (c, d); -delete from t1 where (a, b) = (c, d); -insert into is_t4 select * from t1 where (a, b) = (c, d); - -******convert_preds_vector_to_scalar: case 4 -select /*+no_rewrite*/* from t1 where (a, c, d) = (c, d, a); -id a b c d -2 0 1 0 0 -select * from t1 where (a, c, d) = (c, d, a); -id a b c d -2 0 1 0 0 -update t1 set a = b + 1 where (a, c, d) = (c, d, a); -delete from t1 where (a, c, d) = (c, d, a); -insert into is_t4 select * from t1 where (a, c, d) = (c, d, a); -drop table t1; - -************************改写向量等值条件 end********** - -********************remove dummy exprs begin************************ - -drop table if exists t1; -create table t1(a int, b int, c int); -create table t_temp(a int, b int, c int); -insert/*trace*/ into t1 values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5); -set autocommit = 0; - -******false or filter-> filter********** -select * from t1 where false or t1.a < 3; -a b c -1 1 1 -2 2 2 -insert into t_temp select * from t1 where false or t1.a < 3; -insert /*+NO_REWRITE*/into t_temp select * from t1 where false or t1.a < 3; -update t1 set t1.b = t1.b + 100 where false or t1.a < 3; -update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where false or t1.a < 3; -delete from t1 where false or t1.a < 3; -delete /*+NO_REWRITE*/from t1 where false or t1.a < 3; -select * from t1 where t1.a < 3 or 1 > 2; -a b c -select * from t1 where false or t1.a < 3 or t1.b < 3; -a b c -select * from t1 where t1.a < 3 or 1 > 2 or t1.b < 3; -a b c -select * from t1 where false or false or t1.a < 3; -a b c -select * from t1 where t1.a < 3 or false or false; -a b c -select * from t1 where false or (t1.a < 3 and t1.b < 3); -a b c - -******true or filter-> true********** -select * from t1 where t1.a < 3 or true; -a b c -3 3 3 -4 4 4 -5 5 5 -insert into t_temp as select * from t1 where t1.a < 3 or true; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'as select * from t1 where t1.a < 3 or true' at line 1 -insert /*+NO_REWRITE*/into t_temp as select * from t1 where t1.a < 3 or true; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'as select * from t1 where t1.a < 3 or true' at line 1 -update t1 set t1.b = t1.b + 100 where t1.a < 3 or true; -update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where t1.a < 3 or true; -delete from t1 where t1.a < 3 or true; -delete /*+NO_REWRITE*/from t1 where t1.a < 3 or true; -select * from t1 where t1.a < 3 or 1 < 2; -a b c -select * from t1 where true or t1.a < 3; -a b c -select * from t1 where 1 < 2 or t1.a < 3; -a b c -select * from t1 where t1.a < 3 or t1.b < 3 or true; -a b c -select * from t1 where t1.a < 3 or t1.b < 3 or 1 < 2; -a b c -select * from t1 where true or (t1.a < 3 and t1.b < 3); -a b c - -******false and filter-> false********** -select * from t1 where false and t1.a < 3; -a b c -select * from t1 where t1.a < 3 and 1 > 2; -a b c -select * from t1 where t1.a < 3 and false and t1. b < 3; -a b c -select * from t1 where t1.a < 3 and t1.b < 3 and 1 > 2; -a b c -select * from t1 where false and (t1.a < 3 and t1.b < 3); -a b c -insert into t_temp select * from t1 where false and (t1.a < 3 and t1.b < 3); -insert /*+NO_REWRITE*/into t_temp select * from t1 where false and (t1.a < 3 and t1.b < 3); -update t1 set t1.b = t1.b + 100 where false and (t1.a < 3 and t1.b < 3); -update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where false and (t1.a < 3 and t1.b < 3); -delete from t1 where false and (t1.a < 3 and t1.b < 3); -delete /*+NO_REWRITE*/from t1 where false and (t1.a < 3 and t1.b < 3); - -******true and filter-> filter********** -select * from t1 where true and t1.a < 3; -a b c -select * from t1 where t1.a < 3 and true and 1 < 2; -a b c -select * from t1 where t1.a < 3 and 1 < 2 and t1.b < 3; -a b c -select * from t1 where true and (t1.a < 3 and t1.b < 3); -a b c - -**********test cases where we can not remove dummy exprs********** -select * from t1 where 1 + true >= 2; -a b c -select * from t1 where 1 + false >= 2; -a b c -drop table t1; -drop table t_temp; - -drop table if exists cache, resource_assigned; -CREATE TABLE `cache` ( `id` varchar(20) NOT NULL, `name` varchar(200) DEFAULT NULL, `description` varchar(200) DEFAULT NULL, `iaas_id` varchar(200) DEFAULT NULL, `provider_id` varchar(20) DEFAULT NULL, `region_id` varchar(20) DEFAULT NULL, `zone_id` varchar(20) DEFAULT NULL, `tenant_id` varchar(20) DEFAULT NULL, `workspace_id` varchar(20) DEFAULT NULL, `iaas_type` varchar(100) DEFAULT NULL, `status` varchar(50) NOT NULL, `network_type` varchar(50) DEFAULT NULL, `vpc_id` varchar(20) DEFAULT NULL, `v_switch_iaas_id` varchar(200) DEFAULT NULL, `spec_iaas_id` varchar(200) DEFAULT NULL, `capacity` bigint(20) DEFAULT NULL, `qps` bigint(20) DEFAULT NULL, `bandwidth` bigint(20) DEFAULT NULL, `max_connections` bigint(20) DEFAULT NULL, `connection_domain` varchar(200) DEFAULT NULL, `port` bigint(20) DEFAULT NULL, `user_name` varchar(200) DEFAULT NULL, `password` varchar(200) DEFAULT NULL, `utc_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `utc_modified` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `utc_deleted` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `workspace_id` (`workspace_id`) BLOCK_SIZE 16384, KEY `zone_id` (`zone_id`) BLOCK_SIZE 16384, KEY `iaas_id` (`iaas_id`) BLOCK_SIZE 16384, KEY `region_id` (`region_id`) BLOCK_SIZE 16384, KEY `status` (`status`) BLOCK_SIZE 16384 ); -CREATE TABLE `resource_assigned` ( `id` varchar(20) NOT NULL, `resource_id` varchar(20) NOT NULL, `resource_type` varchar(20) NOT NULL, `workspace_id` varchar(20) NOT NULL, `app_id` varchar(20) NOT NULL, `utc_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `utc_modified` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `assignedResource_UNIQUE` (`resource_id`, `resource_type`, `workspace_id`, `app_id`) BLOCK_SIZE 16384, KEY `resource_id` (`resource_id`) BLOCK_SIZE 16384, KEY `workspace_id` (`workspace_id`) BLOCK_SIZE 16384, KEY `app_id` (`app_id`) BLOCK_SIZE 16384 ); -SELECT COUNT(cache.id) FROM cache WHERE false OR cache.workspace_id IN ('0077508610') AND EXISTS ( SELECT resource_assigned.resource_id FROM resource_assigned WHERE resource_assigned.resource_id = cache.id AND resource_assigned.resource_type = 'CACHE' AND resource_assigned.workspace_id IN ('0077508610') AND resource_assigned.app_id IN ('0080452727') ) AND cache.status != 'DELETED'; -COUNT(cache.id) -0 -drop table cache, resource_assigned; - -*********************remove dummy exprs end************************ - -drop table if exists t1, t2; -create table t1 (c1 int); -create table t2 (c1 int primary key); -insert into t1 values (1); -insert into t1 values (2); -insert into t2 values (1); -insert into t2 values (2); -select * from t1 where c1 between coalesce( ( SELECT 1 ), -10 )AND 10; -c1 -1 -2 -select * from t2 where c1 = 1 + (select 1); -c1 -2 -select * from t2 where c1 = 1 + (select 1); -c1 -2 -drop table t1; -drop table t2; - -*********************remove dummy exprs end************************ -drop table if exists t1; -create table t1 (c1 int primary key, c2 int); -select c1, max(c2) from t1 group by c1; -c1 max(c2) -select c1, max(c2) from t1 group by c1 with rollup; -c1 max(c2) -drop table t1; -DROP TABLE IF EXISTS `b`, `cc`; -CREATE TABLE `b` ( -`col_int` int(11) DEFAULT NULL, -`col_varchar` varchar(1) DEFAULT NULL, -`col_varchar_10` varchar(10) DEFAULT NULL, -`col_int_key` int(11) DEFAULT NULL, -`col_varchar_20` varchar(20) DEFAULT NULL, -`pk` int(11) NOT NULL, -`col_varchar_key` varchar(1) DEFAULT NULL, -`col_varchar_10_key` varchar(10) DEFAULT NULL, -`col_varchar_20_key` varchar(20) DEFAULT NULL, -PRIMARY KEY (`pk`), -KEY `idx1` (`pk`, `col_int_key`) , -KEY `idx3` (`pk`, `col_varchar_key`) , -KEY `idx5` (`pk`, `col_varchar_10_key`) , -KEY `idx7` (`pk`, `col_varchar_20_key`) -) ; -CREATE TABLE `cc` ( -`col_int` int(11) DEFAULT NULL, -`col_varchar_10` varchar(10) DEFAULT NULL, -`col_varchar` varchar(1) DEFAULT NULL, -`col_varchar_20_key` varchar(20) DEFAULT NULL, -`col_varchar_key` varchar(1) DEFAULT NULL, -`col_varchar_20` varchar(20) DEFAULT NULL, -`col_int_key` int(11) DEFAULT NULL, -`col_varchar_10_key` varchar(10) DEFAULT NULL, -`pk` int(11) NOT NULL, -PRIMARY KEY (`pk`), -KEY `idx7` (`pk`, `col_varchar_20_key`) , -KEY `idx3` (`pk`, `col_varchar_key`) , -KEY `idx1` (`pk`, `col_int_key`) , -KEY `idx5` (`pk`, `col_varchar_10_key`) -) ; -SELECT table1 . col_varchar_key AS field1, -CONCAT (table2 . `col_varchar_20`, table1 . `col_varchar_20_key`) AS field2, -((table2 . `col_int`) + (table1 . `col_int_key`)) AS field3, -table2 . `col_varchar` AS field4, -(SELECT SUM(SUBQUERY1_t2 . `pk`) AS SUBQUERY1_field1 -FROM (CC AS SUBQUERY1_t1 INNER JOIN B AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk`)) -WHERE SUBQUERY1_t1 . `col_varchar_10` <> table1 . `col_varchar_20` - AND SUBQUERY1_t1 . `col_int_key` = table1 . `col_int_key` ) AS field5, -table1 . `pk` AS field6, -table2 . col_varchar_20_key AS field7, -CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field8, -table2 . `col_int_key` AS field9, -SUM(table2 . `pk`) AS field10, -CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field11, -SUM(table2 . `col_int_key`) AS field12, -table1 . col_varchar_20_key AS field13, -CONCAT (table1 . `col_varchar_20`, table2 . `col_varchar`) AS field14, -((table1 . `pk`) + (table2 . `col_int_key`)) AS field15 -FROM (CC AS table1 -INNER JOIN CC AS table2 ON (table2 . `pk` = table1 . `pk`)) -WHERE (NOT EXISTS ((SELECT 6 FROM DUAL))) -AND table1 . `col_varchar_key` = table1 . `col_varchar_key` -GROUP BY field1, -field2, -field3, -field4, -field5, -field6, -field7, -field8, -field9, -field11, -field13, -field14, -field15 -HAVING ((field2 >= 'r' - AND field1 < 'qr') -AND field10 < 'pq') -ORDER BY field1, -field2, -field3, -field4, -field5, -field6, -field7, -field8, -field9, -field10, -field11, -field12, -field13, -field14, -field15 -LIMIT 100 -OFFSET 2; -field1 field2 field3 field4 field5 field6 field7 field8 field9 field10 field11 field12 field13 field14 field15 -SELECT /*+no_rewrite*/ table1 . col_varchar_key AS field1, -CONCAT (table2 . `col_varchar_20`, table1 . `col_varchar_20_key`) AS field2, -((table2 . `col_int`) + (table1 . `col_int_key`)) AS field3, -table2 . `col_varchar` AS field4, -(SELECT SUM(SUBQUERY1_t2 . `pk`) AS SUBQUERY1_field1 -FROM (CC AS SUBQUERY1_t1 INNER JOIN B AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk`)) -WHERE SUBQUERY1_t1 . `col_varchar_10` <> table1 . `col_varchar_20` - AND SUBQUERY1_t1 . `col_int_key` = table1 . `col_int_key` ) AS field5, -table1 . `pk` AS field6, -table2 . col_varchar_20_key AS field7, -CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field8, -table2 . `col_int_key` AS field9, -SUM(table2 . `pk`) AS field10, -CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field11, -SUM(table2 . `col_int_key`) AS field12, -table1 . col_varchar_20_key AS field13, -CONCAT (table1 . `col_varchar_20`, table2 . `col_varchar`) AS field14, -((table1 . `pk`) + (table2 . `col_int_key`)) AS field15 -FROM (CC AS table1 -INNER JOIN CC AS table2 ON (table2 . `pk` = table1 . `pk`)) -WHERE (NOT EXISTS ((SELECT 6 FROM DUAL))) -AND table1 . `col_varchar_key` = table1 . `col_varchar_key` -GROUP BY field1, -field2, -field3, -field4, -field5, -field6, -field7, -field8, -field9, -field11, -field13, -field14, -field15 -HAVING ((field2 >= 'r' - AND field1 < 'qr') -AND field10 < 'pq') -ORDER BY field1, -field2, -field3, -field4, -field5, -field6, -field7, -field8, -field9, -field10, -field11, -field12, -field13, -field14, -field15 -LIMIT 100 -OFFSET 2; -field1 field2 field3 field4 field5 field6 field7 field8 field9 field10 field11 field12 field13 field14 field15 - -************************消除冗余select begin********** - -drop table if exists t1,t2,t3; -create table t1 (c1 int, c2 int); -create table t2 (c1 int, c2 int); -create table t3 (c1 int, c2 int); -select (select 123 from dual) from dual; -(select 123 from dual) -123 -select /*+no_rewrite*/ (select 123 from dual) from dual; -(select 123 from dual) -123 -select (select sum(c1) from t1) from dual; -(select sum(c1) from t1) -15 -select /*+no_rewrite*/ (select sum(c1) from t1) from dual; -(select sum(c1) from t1) -15 -select (select c1 from t1 limit 1) from dual; -(select c1 from t1 limit 1) -1 -select /*+no_rewrite*/ (select c1 from t1 limit 1) from dual; -(select c1 from t1 limit 1) -1 -select (select sum(c1) over() from t1) from dual; -ERROR 21000: Subquery returns more than 1 row -select * from (select (select 123 from dual) from dual); -(select 123 from dual) -123 -select * from (select /*+no_rewrite*/ (select 123 from dual) from dual); -(select 123 from dual) -123 -select * from (select (select sum(c1) from t1) from dual); -(select sum(c1) from t1) -15 -select * from (select /*+no_rewrite*/ (select sum(c1) from t1) from dual); -(select sum(c1) from t1) -15 -select * from t2,(select (select 123 from dual) as c1 from dual) V where t2.c1 = V.c1; -c1 c2 c1 -select * from t2,(select /*+no_rewrite*/ (select 123 from dual) as c1 from dual) V where t2.c1 = V.c1; -c1 c2 c1 -select * from t2,(select (select sum(c1) from t1) as c1 from dual) V where t2.c1 = V.c1; -c1 c2 c1 -select * from t2,(select /*+no_rewrite*/ (select sum(c1) from t1) as c1 from dual) V where t2.c1 = V.c1; -c1 c2 c1 -select * from t2 where t2.c1 = (select (select 123 from dual) from dual); -c1 c2 -select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select 123 from dual) from dual); -c1 c2 -select * from t2 where t2.c1 = (select (select count(c1) from t1) from dual); -c1 c2 -5 5 -select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select count(c1) from t1) from dual); -c1 c2 -5 5 -select * from t2 where t2.c1 in (select (select 123 from dual) from dual); -c1 c2 -select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select 123 from dual) from dual); -c1 c2 -select * from t2 where t2.c1 in (select (select count(c1) from t1) from dual); -c1 c2 -5 5 -select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select count(c1) from t1) from dual); -c1 c2 -5 5 -select * from t2 where exists (select (select 123 from dual) from dual); -c1 c2 -1 1 -2 2 -3 3 -4 4 -5 5 -select * from t2 where exists (select /*+no_rewrite*/ (select 123 from dual) from dual); -c1 c2 -1 1 -2 2 -3 3 -4 4 -5 5 -select * from t2 where exists (select (select count(c1) from t1) from dual); -c1 c2 -1 1 -2 2 -3 3 -4 4 -5 5 -select * from t2 where exists (select /*+no_rewrite*/ (select count(c1) from t1) from dual); -c1 c2 -1 1 -2 2 -3 3 -4 4 -5 5 -select * from t2 where t2.c1 > all (select (select 123 from dual) from dual); -c1 c2 -select * from t2 where t2.c1 > all (select /*+no_rewrite*/ (select 123 from dual) from dual); -c1 c2 -select * from t2 where t2.c1 > all (select (select count(c1) from t1) from dual); -c1 c2 -select * from t2 where t2.c1 > all (select /*+no_rewrite*/ (select count(c1) from t1) from dual); -c1 c2 -select t2.c1, (select (select 123 from dual) from dual) as s1 from t2 order by s1; -c1 s1 -1 123 -2 123 -3 123 -4 123 -5 123 -select t2.c1, (select /*+no_rewrite*/ (select 123 from dual) from dual) as s1 from t2 order by s1; -c1 s1 -1 123 -2 123 -3 123 -4 123 -5 123 -select t2.c1, (select (select sum(c1) from t1) from dual) as s1 from t2 order by s1; -c1 s1 -1 15 -2 15 -3 15 -4 15 -5 15 -select t2.c1, (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as s1 from t2 order by s1; -c1 s1 -1 15 -2 15 -3 15 -4 15 -5 15 -select t2.c1, (select (select 123 from dual) from dual) as s1 from t2 having s1 > 5; -c1 s1 -1 123 -2 123 -3 123 -4 123 -5 123 -select t2.c1, (select /*+no_rewrite*/ (select 123 from dual) from dual) as s1 from t2 having s1 > 5; -c1 s1 -1 123 -2 123 -3 123 -4 123 -5 123 -select t2.c1, (select (select sum(c1) from t1) from dual) as s1 from t2 having s1 > 5; -c1 s1 -1 15 -2 15 -3 15 -4 15 -5 15 -select t2.c1, (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as s1 from t2 having s1 > 5; -c1 s1 -1 15 -2 15 -3 15 -4 15 -5 15 -select (select (select 123 from dual) from dual) from dual; -(select (select 123 from dual) from dual) -123 -select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual; -(select /*+no_rewrite*/ (select 123 from dual) from dual) -123 -select (select (select sum(c1) from t1) from dual) from dual; -(select (select sum(c1) from t1) from dual) -15 -select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual; -(select /*+no_rewrite*/ (select sum(c1) from t1) from dual) -15 -select * from (select (select (select 123 from dual) from dual) from dual); -(select (select 123 from dual) from dual) -123 -select * from (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); -(select /*+no_rewrite*/ (select 123 from dual) from dual) -123 -select * from (select (select (select sum(c1) from t1) from dual) from dual); -(select (select sum(c1) from t1) from dual) -15 -select * from (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual); -(select /*+no_rewrite*/ (select sum(c1) from t1) from dual) -15 -select * from t2,(select (select (select 123 from dual) from dual) as c1 from dual) V where t2.c1 = V.c1; -c1 c2 c1 -select * from t2,(select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) as c1 from dual) V where t2.c1 = V.c1; -c1 c2 c1 -select * from t2,(select (select (select sum(c1) from t1) from dual) as c1 from dual) V where t2.c1 = V.c1; -c1 c2 c1 -select * from t2,(select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as c1 from dual) V where t2.c1 = V.c1; -c1 c2 c1 -select * from t2 where t2.c1 = (select (select (select 123 from dual) from dual) from dual); -c1 c2 -select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); -c1 c2 -select * from t2 where t2.c1 = (select (select (select count(c1) from t1) from dual) from dual); -c1 c2 -5 5 -select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select count(c1) from t1) from dual) from dual); -c1 c2 -5 5 -select * from t2 where t2.c1 in (select (select (select 123 from dual) from dual) from dual); -c1 c2 -select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); -c1 c2 -select * from t2 where t2.c1 in (select (select (select count(c1) from t1) from dual) from dual); -c1 c2 -5 5 -select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select count(c1) from t1) from dual) from dual); -c1 c2 -5 5 -select t2.c1, (select (select (select 123 from dual) from dual) from dual) as s1 from t2 order by s1; -c1 s1 -1 123 -2 123 -3 123 -4 123 -5 123 -select t2.c1, (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual) as s1 from t2 order by s1; -c1 s1 -1 123 -2 123 -3 123 -4 123 -5 123 -select t2.c1, (select (select (select sum(c1) from t1) from dual) from dual) as s1 from t2 order by s1; -c1 s1 -1 15 -2 15 -3 15 -4 15 -5 15 -select t2.c1, (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual) as s1 from t2 order by s1; -c1 s1 -1 15 -2 15 -3 15 -4 15 -5 15 -drop table t1,t2,t3; - -*********************remove dummy exprs end************************ - -************************消除冗余group by/distinct********** - -drop table if exists t1, t2, t3, tpart1, tpart2, t4, t5, t6; -create table t1 (c1 int, c2 int, c3 int, c4 int); -create table t2 (c1 int, c2 int, c3 int, c4 int); -create table t3 (c1 int, c2 int, c3 int, c4 int); -create table tpart1 (c1 int, c2 int, c3 int, c4 int) partition by hash(c1) partitions 3; -create table tpart2 (c1 int, c2 int, c3 int, c4 int) partition by hash(c1) partitions 3; -create table t4 (c1 int, c2 int, c3 int, c4 int); -create table t5 (c1 int, c2 int, c3 int, c4 int); -create table t6 (c1 int, c2 float, c3 decimal, c4 varchar(20), c5 date); -set autocommit = 1; -select c1, c2, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1,c2; -c1 c2 min(minc3) -1 1 3 -1 2 1 -2 1 2 -NULL NULL NULL -select /*+no_rewrite*/ c1, c2, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1,c2; -c1 c2 min(minc3) -NULL NULL NULL -1 1 3 -1 2 1 -2 1 2 -select c1, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1; -c1 min(minc3) -1 1 -2 2 -NULL NULL -select /*+no_rewrite*/ c1, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1; -c1 min(minc3) -NULL NULL -1 1 -2 2 -select min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2); -min(minc3) -1 -select /*+no_rewrite*/ min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2); -min(minc3) -1 -select min(minc3) from (select min(c3) minc3 from t1); -min(minc3) -1 -select /*+no_rewrite*/ min(minc3) from (select min(c3) minc3 from t1); -min(minc3) -1 -select c1, c2, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1,c2; -c1 c2 max(maxc3) -1 1 5 -1 2 4 -2 1 2 -NULL NULL NULL -select /*+no_rewrite*/ c1, c2, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1,c2; -c1 c2 max(maxc3) -NULL NULL NULL -1 1 5 -1 2 4 -2 1 2 -select c1, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1; -c1 max(maxc3) -1 5 -2 2 -NULL NULL -select /*+no_rewrite*/ c1, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1; -c1 max(maxc3) -NULL NULL -1 5 -2 2 -select max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2); -max(maxc3) -5 -select /*+no_rewrite*/ max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2); -max(maxc3) -5 -select max(maxc3) from (select max(c3) maxc3 from t1); -max(maxc3) -5 -select /*+no_rewrite*/ max(maxc3) from (select max(c3) maxc3 from t1); -max(maxc3) -5 -select c1, c2, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1,c2; -c1 c2 sum(sc3) -1 1 8 -1 2 5 -2 1 2 -NULL NULL NULL -select /*+no_rewrite*/ c1, c2, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1,c2; -c1 c2 sum(sc3) -NULL NULL NULL -1 1 8 -1 2 5 -2 1 2 -select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1; -c1 sum(sc3) -1 13 -2 2 -NULL NULL -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1; -c1 sum(sc3) -NULL NULL -1 13 -2 2 -select sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); -sum(sc3) -15 -select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); -sum(sc3) -15 -select sum(sc3) from (select sum(c3) sc3 from t1); -sum(sc3) -15 -select /*+no_rewrite*/ sum(sc3) from (select sum(c3) sc3 from t1); -sum(sc3) -15 -select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t1 group by c1,c2); -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -1 2 15 1 5 -select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t1 group by c1,c2); -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -1 2 15 1 5 -select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from tpart1 group by c1,c2); -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -1 2 13 1 3 -select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from tpart1 group by c1,c2); -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -1 2 13 1 3 -select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2) group by c1; -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL NULL NULL -select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2) group by c1; -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL NULL NULL -select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2); -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL NULL NULL -select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2); -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL NULL NULL -select sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4); -sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL -select /*+no_rewrite*/ sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4); -sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL -select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2) group by c1; -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2) group by c1; -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2); -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL NULL NULL -select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2); -min(c1) max(c2) sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL NULL NULL -select sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5); -sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL -select /*+no_rewrite*/ sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5); -sum(sc3) min(minc3) max(maxc3) -NULL NULL NULL -select sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1,c2) -union all -(select sum(c3) sc3 from t2 group by c1,c2)); -sum(sc3) -34 -select /*+no_rewrite*/ sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1,c2) -union all -(select sum(c3) sc3 from t2 group by c1,c2)); -sum(sc3) -34 -select max(maxc3) -from ((select max(c3) maxc3 from t1 group by c1,c2) -union all -(select c1 from t2)); -max(maxc3) -5 -select /*+no_rewrite*/ max(maxc3) -from ((select max(c3) maxc3 from t1 group by c1,c2) -union all -(select c1 from t2)); -max(maxc3) -5 -select sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1) -union all -(select min(c3) sc3 from t2 group by c1,c2)); -sum(sc3) -19 -select /*+no_rewrite*/ sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1) -union all -(select min(c3) sc3 from t2 group by c1,c2)); -sum(sc3) -19 -select sum(sc3) -from ((select sum(c3) sc3 from tpart1 group by c1,c2) -union all -(select sum(c3) sc3 from tpart2 group by c1,c2)); -sum(sc3) -44 -select /*+no_rewrite*/ sum(sc3) -from ((select sum(c3) sc3 from tpart1 group by c1,c2) -union all -(select sum(c3) sc3 from tpart2 group by c1,c2)); -sum(sc3) -44 -select sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1,c2) -union all -(select sum(c3) sc3 from tpart2 group by c1,c2)); -sum(sc3) -46 -select /*+no_rewrite*/ sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1,c2) -union all -(select sum(c3) sc3 from tpart2 group by c1,c2)); -sum(sc3) -46 -select sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1,c2) -union all -(select sum(c3) sc3 from t2 group by c1,c2) -union all -(select sum(c3) sc3 from t3 group by c1,c2)); -sum(sc3) -46 -select /*+no_rewrite*/ sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1,c2) -union all -(select sum(c3) sc3 from t2 group by c1,c2) -union all -(select sum(c3) sc3 from t3 group by c1,c2)); -sum(sc3) -46 -select sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1,c2) -union all -(select min(c3) sc3 from t2 group by c1,c2) -union all -(select sum(c3) sc3 from t3 group by c1,c2)); -sum(sc3) -31 -select /*+no_rewrite*/ sum(sc3) -from ((select sum(c3) sc3 from t1 group by c1,c2) -union all -(select min(c3) sc3 from t2 group by c1,c2) -union all -(select sum(c3) sc3 from t3 group by c1,c2)); -sum(sc3) -31 -select min(minc2), min(minc3), min(minc4), min(minc5) from (select min(c2) minc2, min(c3) minc3, min(c4) minc4 , min(c5) minc5 from t6 group by c1); -min(minc2) min(minc3) min(minc4) min(minc5) -2.5 4 ertt 2020-07-12 -select /*+no_rewrite*/ min(minc2), min(minc3), min(minc4), min(minc5) from (select min(c2) minc2, min(c3) minc3, min(c4) minc4 , min(c5) minc5 from t6 group by c1); -min(minc2) min(minc3) min(minc4) min(minc5) -2.5 4 ertt 2020-07-12 -select max(maxc2), max(maxc3), max(maxc4), max(maxc5) from (select max(c2) maxc2, max(c3) maxc3, max(c4) maxc4 , max(c5) maxc5 from t6 group by c1); -max(maxc2) max(maxc3) max(maxc4) max(maxc5) -5.4 9 trew 2020-07-30 -select /*+no_rewrite*/ max(maxc2), max(maxc3), max(maxc4), max(maxc5) from (select max(c2) maxc2, max(c3) maxc3, max(c4) maxc4 , max(c5) maxc5 from t6 group by c1); -max(maxc2) max(maxc3) max(maxc4) max(maxc5) -5.4 9 trew 2020-07-30 -select sum(sumc2), sum(sumc3) from (select sum(c2) sumc2, sum(c3) sumc3 from t6 group by c1); -sum(sumc2) sum(sumc3) -15.299999952316284 24 -select /*+no_rewrite*/ sum(sumc2), sum(sumc3) from (select sum(c2) sumc2, sum(c3) sumc3 from t6 group by c1); -sum(sumc2) sum(sumc3) -15.299999952316284 24 -select sum(sumc3) -from ((select sum(c3) sumc3 from t1 group by c1) -union all -(select sum(c2) from t6 group by c1)); -sum(sumc3) -30.299999952316284 -select /*+no_rewrite*/ sum(sumc3) -from ((select sum(c3) sumc3 from t1 group by c1) -union all -(select sum(c2) from t6 group by c1)); -sum(sumc3) -30.299999952316284 -select sum(sumc3) -from ((select sum(c3) sumc3 from t1 group by c1) -union all -(select sum(c3) from t6 group by c1)); -sum(sumc3) -39 -select /*+no_rewrite*/ sum(sumc3) -from ((select sum(c3) sumc3 from t1 group by c1) -union all -(select sum(c3) from t6 group by c1)); -sum(sumc3) -39 -select min(minc3) -from ((select min(c3) minc3 from t1 group by c1) -union all -(select min(c3) from t6 group by c1)); -min(minc3) -1 -select /*+no_rewrite*/ min(minc3) -from ((select min(c3) minc3 from t1 group by c1) -union all -(select min(c3) from t6 group by c1)); -min(minc3) -1 -select max(maxc3) -from ((select max(c3) maxc3 from t1 group by c1) -union all -(select max(c4) from t6 group by c1)); -max(maxc3) -trew -select /*+no_rewrite*/ max(maxc3) -from ((select max(c3) maxc3 from t1 group by c1) -union all -(select max(c4) from t6 group by c1)); -max(maxc3) -trew -select max(maxc3) -from ((select max(c3) maxc3 from t1 group by c1) -union all -(select max(c5) from t6 group by c1)); -max(maxc3) -5 -select /*+no_rewrite*/ max(maxc3) -from ((select max(c3) maxc3 from t1 group by c1) -union all -(select max(c5) from t6 group by c1)); -max(maxc3) -5 -select c1, sc3 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; -c1 sc3 -NULL NULL -1 5 -2 2 -select /*+no_rewrite*/ c1, sc3 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; -c1 sc3 -NULL NULL -1 5 -2 2 -select c1, c2 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; -c1 c2 -NULL NULL -1 1 -2 1 -select /*+no_rewrite*/c1, c2 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; -c1 c2 -NULL NULL -1 1 -2 1 -select c1, sum(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; -c1 sum(c3) -NULL NULL -1 4 -2 2 -select /*+no_rewrite*/c1, sum(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; -c1 sum(c3) -NULL NULL -1 4 -2 2 -select c1, sum(c3) from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1; -c1 sum(c3) -NULL NULL -1 9 -2 2 -select /*+no_rewrite*/c1, sum(c3) from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1; -c1 sum(c3) -NULL NULL -1 9 -2 2 -select c1, max(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; -c1 max(c3) -NULL NULL -1 3 -2 2 -select /*+no_rewrite*/c1, max(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; -c1 max(c3) -NULL NULL -1 3 -2 2 -select sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2 limit 5); -sum(sc3) -15 -select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2 limit 5); -sum(sc3) -15 -select sum(sc3) from (select distinct c1, c2, sum(c3) sc3 from t1 group by c1,c2); -sum(sc3) -15 -select /*+no_rewrite*/ sum(sc3) from (select distinct c1, c2, sum(c3) sc3 from t1 group by c1,c2); -sum(sc3) -15 -select sum(sc3) from (select c1, c2, sum(distinct c3) sc3 from t1 group by c1,c2); -sum(sc3) -15 -select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(distinct c3) sc3 from t1 group by c1,c2); -sum(sc3) -15 -select sum(distinct sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); -sum(distinct sc3) -15 -select /*+no_rewrite*/ sum(distinct sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); -sum(distinct sc3) -15 -select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 where c1 > 10 group by c1, c2) group by c1; -c1 sum(sc3) -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 where c1 > 10 group by c1, c2) group by c1; -c1 sum(sc3) -select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2 having sc3 > 10) group by c1; -c1 sum(sc3) -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2 having sc3 > 3) group by c1; -c1 sum(sc3) -1 13 -select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) where sc3 > 10 group by c1; -c1 sum(sc3) -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) where sc3 > 3 group by c1; -c1 sum(sc3) -1 13 -select c1, c3 from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1 having c3 > 10; -c1 c3 -select /*+no_rewrite*/ c1, c3 from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1 having c3 > 3; -c1 c3 -1 5 -select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(sc3)> 3; -c1 sum(sc3) -1 13 -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(sc3)> 3; -c1 sum(sc3) -1 13 -select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(c1)> 3; -c1 sum(sc3) -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(c1)> 3; -c1 sum(sc3) -select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having min(c1)> 1; -c1 sum(sc3) -2 2 -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having min(c1)> 1; -c1 sum(sc3) -2 2 -select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having c1> 1; -c1 sum(sc3) -2 2 -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having c1> 1; -c1 sum(sc3) -2 2 -select c1, sum(c1 + sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1; -c1 sum(c1 + sc3) -NULL NULL -1 15 -2 4 -select /*+no_rewrite*/ c1, sum(c1 + sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1; -c1 sum(c1 + sc3) -NULL NULL -1 15 -2 4 -select c1, sum(sc3) from (select c1, c2, 2 + sum(c3) sc3 from t1 group by c1, c2) group by c1; -c1 sum(sc3) -NULL NULL -1 17 -2 4 -select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, 2 + sum(c3) sc3 from t1 group by c1, c2) group by c1; -c1 sum(sc3) -NULL NULL -1 17 -2 4 -select c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2 with rollup) group by c1; -c1 min(c3) -NULL 1 -1 1 -2 2 -select /*+no_rewrite*/ c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2 with rollup) group by c1; -c1 min(c3) -NULL 1 -1 1 -2 2 -select c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1 with rollup; -c1 min(c3) -NULL NULL -1 1 -2 2 -NULL 1 -select /*+no_rewrite*/ c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1 with rollup; -c1 min(c3) -NULL NULL -1 1 -2 2 -NULL 1 -select min(minc3) -from ((select min(c3) minc3 from t1 group by c1,c2 with rollup) -union all -(select min(c3) minc3 from t2 group by c1,c2) -union all -(select min(c3) minc3 from t3 group by c1,c2)); -min(minc3) -1 -select /*+no_rewrite*/ min(minc3) -from ((select min(c3) minc3 from t1 group by c1,c2 with rollup) -union all -(select min(c3) minc3 from t2 group by c1,c2) -union all -(select min(c3) minc3 from t3 group by c1,c2)); -min(minc3) -1 -select distinct c1, c2 from t1 -union all -select distinct c1, c2 from t2; -c1 c2 -1 1 -1 2 -2 1 -NULL NULL -1 1 -2 2 -2 1 -NULL NULL -select distinct c1, c2 from t1 -union -select distinct c1, c2 from t2; -c1 c2 -1 1 -1 2 -2 1 -NULL NULL -2 2 -select distinct c1, c2 from t1 -intersect -select distinct c1, c2 from t2; -c1 c2 -1 1 -2 1 -NULL NULL -select distinct c1, c2 from t1 -except -select distinct c1, c2 from t2; -c1 c2 -1 2 -select distinct c1, c2 from t1 -union -(select distinct c1, c2 from t2 -union all -select distinct c1, c2 from t3); -c1 c2 -1 1 -1 2 -2 1 -NULL NULL -2 2 -select distinct c1, c2 from t1 -union -(select distinct c1, c2 from t2 -union -select distinct c1, c2 from t3); -c1 c2 -1 1 -1 2 -2 1 -NULL NULL -2 2 -select distinct c1, c2 from t1 -union -select distinct c1, c2 from t2 limit 2; -c1 c2 -1 1 -1 2 -select distinct c1, c2 from t1 limit 2 -union -select distinct c1, c2 from t2; -c1 c2 -1 1 -1 2 -2 2 -2 1 -NULL NULL -drop table t1,t2,t3,tpart1,tpart2,t4,t5,t6; -set autocommit = 0; - -************************消除冗余group by/distinct end********** - -*********************push down outer join on condition begin************** - -set autocommit = 1; -drop table if exists t1,t2,t3,t4,t5,tp1,tp2; -create table t1 (c1 int, c2 int); -create table t2 (c1 int, c2 int); -create table t3 (c1 int, c2 int); -create table t4 (c1 int, c2 int); -create table t5 (c1 int, c2 int); -create table tp1 (c1 int, c2 int) partition by hash(c1) partitions 2; -create table tp2 (c1 int, c2 int) partition by hash(c1) partitions 2; -select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3); -c1 c2 c1 c2 -NULL NULL NULL NULL -1 1 1 1 -2 2 NULL NULL -3 3 NULL NULL -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3); -ERROR 0A000: Not supported feature or function -select * from t1 ta left join t1 tb on ta.c1 = tb.c1 and tb.c1 in (select c2 from t3); -c1 c2 c1 c2 -NULL NULL NULL NULL -1 1 1 1 -2 2 2 2 -3 3 NULL NULL -select /*+no_rewrite*/ * from t1 ta left join t1 tb on ta.c1 = tb.c1 and tb.c1 in (select c2 from t3); -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3), t4; -c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL 2 2 -NULL NULL NULL NULL 3 3 -NULL NULL NULL NULL 4 4 -NULL NULL NULL NULL NULL NULL -1 1 1 1 2 2 -1 1 1 1 3 3 -1 1 1 1 4 4 -1 1 1 1 NULL NULL -2 2 NULL NULL 2 2 -2 2 NULL NULL 3 3 -2 2 NULL NULL 4 4 -2 2 NULL NULL NULL NULL -3 3 NULL NULL 2 2 -3 3 NULL NULL 3 3 -3 3 NULL NULL 4 4 -3 3 NULL NULL NULL NULL -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3), t4; -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t4) left join t3 on t1.c1 = t3.c1; -c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL NULL NULL -1 1 NULL NULL 1 1 -2 2 NULL NULL 2 2 -3 3 3 3 NULL NULL -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t4) left join t3 on t1.c1 = t3.c1; -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 and (t1.c1,t2.c1) in (select c1,c2 from t3); -ERROR 0A000: Not supported feature or function -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and (t1.c1,t2.c1) in (select c1,c2 from t3); -ERROR 0A000: Not supported feature or function -select * from tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c2 from t3); -c1 c2 c1 c2 -1 1 1 1 -2 2 2 2 -3 3 NULL NULL -select /*+no_rewrite*/ * from tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c2 from t3); -ERROR 0A000: Not supported feature or function -select * from t1 left join tp1 on t1.c1 = tp1.c1 and tp1.c1 in (select c2 from tp2); -c1 c2 c1 c2 -1 1 1 1 -2 2 2 2 -3 3 3 3 -NULL NULL NULL NULL -select /*+no_rewrite*/ * from t1 left join tp1 on t1.c1 = tp1.c1 and tp1.c1 in (select c2 from tp2); -ERROR 0A000: Not supported feature or function -select * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); -c1 c2 a b -1 1 NULL NULL -2 2 2 1 -3 3 NULL NULL -NULL NULL NULL NULL -select /*+no_rewrite*/ * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); -ERROR 0A000: Not supported feature or function -select t1.*, v.b, v.a, v.c from t1 left join (select c1 a,c2 b, c1 + c2 c from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); -c1 c2 b a c -NULL NULL NULL NULL NULL -1 1 1 1 2 -2 2 NULL NULL NULL -3 3 NULL NULL NULL -select /*+no_rewrite*/ t1.*, v.b, v.a, v.c from t1 left join (select c1 a,c2 b, c1 + c2 c from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); -ERROR 0A000: Not supported feature or function -select * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t4) left join t3 on t1.c1 = t3.c1; -c1 c2 a b c1 c2 -1 1 NULL NULL 1 1 -2 2 2 1 2 2 -3 3 NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL -select /*+no_rewrite*/ * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t4) left join t3 on t1.c1 = t3.c1; -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4); -c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL 1 1 -NULL NULL NULL NULL 2 2 -NULL NULL NULL NULL 4 4 -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4); -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4); -c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL 1 1 -2 2 NULL NULL 2 2 -NULL NULL NULL NULL 4 4 -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4); -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL 1 1 NULL NULL -NULL NULL NULL NULL 2 2 NULL NULL -NULL NULL NULL NULL 4 4 NULL NULL -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL 1 1 NULL NULL -2 2 NULL NULL 2 2 2 2 -NULL NULL NULL NULL 4 4 NULL NULL -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL 1 1 -NULL NULL NULL NULL NULL NULL 2 2 -NULL NULL NULL NULL NULL NULL 5 5 -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; -ERROR 0A000: Not supported feature or function -select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; -c1 c2 c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL NULL NULL NULL NULL -NULL NULL NULL NULL NULL NULL 1 1 -2 2 NULL NULL 2 2 2 2 -NULL NULL NULL NULL NULL NULL 5 5 -select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; -ERROR 0A000: Not supported feature or function -select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 not in (select c1 from t4); -c2 -select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 in (select c1 from t4); -c2 -select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t2.c1 not in (select c1 from t5); -c2 -select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t2.c1 in (select c1 from t5); -c2 -select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t1.c1 not in (select c1 from t5); -c2 -select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t1.c1 in (select c1 from t5); -c2 -select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where (t1.c1, t2.c1) not in (select c1,c2 from t5); -c2 -select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where (t1.c1, t2.c1) in (select c1,c2 from t5); -c2 -select * from t4 where c1 not in (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); -c1 c2 -select * from t4 where c1 in (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); -c1 c2 -2 2 -3 3 -select * from t4 where c1 not in (select t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); -c1 c2 -select * from t4 where c1 in (select t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); -c1 c2 -select * from t4 where c1 not in (select t1.c1 + t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); -c1 c2 -select * from t4 where c1 in (select t1.c1 + t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); -c1 c2 -2 2 -select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 not in (select t4.c1 from t4 left join t5 on t4.c1 = t5.c1 and t5.c1 in (select c2 from t3)); -c1 c2 c1 c2 -explain update t1 left join t2 on t1.c1 = t2.c1 and t2.c2 in (select c1 from t3) set t2.c2 = 10; -Query Plan -================================================= -|ID|OPERATOR |NAME |EST. ROWS|COST| -------------------------------------------------- -|0 |UPDATE | |4 |131 | -|1 | HASH OUTER JOIN | |4 |127 | -|2 | TABLE SCAN |t1 |4 |37 | -|3 | SUBPLAN SCAN |VIEW1|4 |82 | -|4 | HASH RIGHT SEMI JOIN| |4 |82 | -|5 | TABLE SCAN |t3 |4 |37 | -|6 | TABLE SCAN |t2 |4 |37 | -================================================= - -Outputs & filters: -------------------------------------- - 0 - output(nil), filter(nil), table_columns([{t2: ({t2: (VIEW1.t2.__pk_increment, VIEW1.t2.c1, VIEW1.t2.c2)}), hash_distinct}]), - update([VIEW1.t2.c2=?]) - 1 - output([VIEW1.t2.__pk_increment], [VIEW1.t2.c1], [VIEW1.t2.c2], [?]), filter(nil), - equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) - 2 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 3 - output([VIEW1.t2.c1], [VIEW1.t2.c2], [VIEW1.t2.__pk_increment]), filter(nil), - access([VIEW1.t2.c1], [VIEW1.t2.c2], [VIEW1.t2.__pk_increment]) - 4 - output([t2.c1], [t2.c2], [t2.__pk_increment]), filter(nil), - equal_conds([t2.c2 = t3.c1]), other_conds(nil) - 5 - output([t3.c1]), filter(nil), - access([t3.c1]), partitions(p0) - 6 - output([t2.c1], [t2.c2], [t2.__pk_increment]), filter(nil), - access([t2.c1], [t2.c2], [t2.__pk_increment]), partitions(p0) - -update t1 left join t2 on t1.c1 = t2.c1 and t2.c2 in (select c1 from t3) set t2.c2 = 10; -explain update tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c1 from t3) set tp2.c2 = 10; -ERROR HY000: Invalid argument -update tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c1 from t3) set tp2.c2 = 10; -ERROR HY000: Invalid argument -drop table if exists C, D, BB, CC, B; -CREATE TABLE C ( -col_varchar_10 varchar(10), -col_varchar varchar (1), -col_int int, -pk int, -col_varchar_20 varchar(20), -col_varchar_key varchar (1), -col_varchar_10_key varchar(10), -col_int_key int, -col_varchar_20_key varchar(20), -/*Indices*/ -primary key (pk) , -key idx3(pk, col_varchar_key ), -key idx5(pk, col_varchar_10_key ), -key idx1(pk, col_int_key ), -key idx7(pk, col_varchar_20_key )) ; -CREATE TABLE D ( -pk int, -col_varchar_10 varchar(10), -col_varchar_20 varchar(20), -col_varchar_10_key varchar(10), -col_varchar_20_key varchar(20), -col_int int, -col_int_key int, -col_varchar_key varchar (1), -col_varchar varchar (1), -/*Indices*/ -primary key (pk) , -key idx5(pk, col_varchar_10_key ), -key idx7(pk, col_varchar_20_key ), -key idx1(pk, col_int_key ), -key idx3(pk, col_varchar_key )) ; -CREATE TABLE BB ( -col_varchar_20_key varchar(20), -col_int_key int, -col_int int, -col_varchar_10 varchar(10), -col_varchar_10_key varchar(10), -col_varchar_key varchar (1), -col_varchar varchar (1), -col_varchar_20 varchar(20), -pk int, -/*Indices*/ -key idx7(pk, col_varchar_20_key ), -key idx1(pk, col_int_key ), -key idx5(pk, col_varchar_10_key ), -key idx3(pk, col_varchar_key ), -primary key (pk) ) ; -CREATE TABLE CC ( -col_varchar_20_key varchar(20), -col_varchar_key varchar (1), -col_varchar_10_key varchar(10), -col_varchar_20 varchar(20), -col_int int, -pk int, -col_varchar varchar (1), -col_varchar_10 varchar(10), -col_int_key int, -/*Indices*/ -key idx7(pk, col_varchar_20_key ), -key idx3(pk, col_varchar_key ), -key idx5(pk, col_varchar_10_key ), -primary key (pk) , -key idx1(pk, col_int_key )) ; -CREATE TABLE B ( -col_varchar varchar (1), -col_int int, -col_varchar_20 varchar(20), -col_varchar_10 varchar(10), -col_int_key int, -col_varchar_10_key varchar(10), -pk int, -col_varchar_20_key varchar(20), -col_varchar_key varchar (1), -/*Indices*/ -key idx1(pk, col_int_key ), -key idx5(pk, col_varchar_10_key ), -primary key (pk) , -key idx7(pk, col_varchar_20_key ), -key idx3(pk, col_varchar_key )) ; -SELECT table2 . col_int_key AS field1 -FROM ( C AS table1 LEFT JOIN -( CC AS table2 INNER JOIN -( SELECT SUBQUERY1_t2 . * -FROM ( D AS SUBQUERY1_t2 RIGHT JOIN -CC AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `col_varchar_10_key` = SUBQUERY1_t2 . `col_varchar_key` - AND SUBQUERY1_t2 . `col_varchar_10` != SOME ( SELECT CHILD_SUBQUERY1_t1 . `col_varchar_10_key` AS CHILD_SUBQUERY1_field1 -FROM C AS CHILD_SUBQUERY1_t1 ))) -WHERE EXISTS ( SELECT DISTINCT CHILD_SUBQUERY2_t1 . `col_varchar_10` AS CHILD_SUBQUERY1_field1 FROM CC AS CHILD_SUBQUERY2_t1 WHERE CHILD_SUBQUERY2_t1 . `col_int_key` != SUBQUERY1_t3 . `pk` ) ) -AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_20_key` ) ) -ON (table3 . `pk` = table2 . `pk` ) ) -WHERE ( table1 . `col_varchar_10_key` > table3 . `col_varchar_20` AND table1 . `col_int` <> table1 . `col_int` ) GROUP BY field1 ORDER BY field1; -field1 -SELECT SUBQUERY1_t2 . * -FROM ( D AS SUBQUERY1_t2 RIGHT JOIN -CC AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `col_varchar_10_key` = SUBQUERY1_t2 . `col_varchar_key` - AND SUBQUERY1_t2 . `col_varchar_10` != SOME ( SELECT CHILD_SUBQUERY1_t1 . `col_varchar_10_key` AS CHILD_SUBQUERY1_field1 -FROM C AS CHILD_SUBQUERY1_t1 ))) -WHERE EXISTS (SELECT DISTINCT CHILD_SUBQUERY2_t1 . `col_varchar_10` AS CHILD_SUBQUERY1_field1 FROM CC AS CHILD_SUBQUERY2_t1 WHERE CHILD_SUBQUERY2_t1 . `col_int_key` != SUBQUERY1_t2 . `pk`); -pk col_varchar_10 col_varchar_20 col_varchar_10_key col_varchar_20_key col_int col_int_key col_varchar_key col_varchar -select * from ( t1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in ( select c1 from t3))); -c1 c2 c1 c2 -NULL NULL 1 10 -NULL NULL 3 3 -NULL NULL 4 4 -NULL NULL NULL NULL -select * from ( t1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in (select c1 from t3))) -where exists (select distinct c2 from t2 where t1.c2 != t2.c1); -c1 c2 c1 c2 -select * from ( t1 right join t3 on t1.c1 = t3.c1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in ( select c1 from t4))); -c1 c2 c1 c2 c1 c2 -NULL NULL NULL NULL 1 10 -NULL NULL NULL NULL 3 3 -NULL NULL NULL NULL 4 4 -NULL NULL NULL NULL NULL NULL -SELECT Count(table1 . `pk`) AS field1, -table1 . col_varchar_key AS field2 -FROM ( (SELECT DISTINCT SUBQUERY1_t1 . * -FROM ( cc AS SUBQUERY1_t1 -RIGHT JOIN bb AS SUBQUERY1_t2 -ON ( SUBQUERY1_t2 . `pk` = SUBQUERY1_t1 . `col_int` ) ) -WHERE SUBQUERY1_t1 . `pk` < 7) AS table1 -RIGHT OUTER JOIN d AS table2 -ON ( table2 . `pk` = table1 . `col_int_key` -AND ( 9, 7 ) IN (SELECT Sum(SUBQUERY2_t1 . -`col_int_key`) AS -SUBQUERY2_field1, -Count(SUBQUERY2_t1 . `pk`) -AS -SUBQUERY2_field2 -FROM ( cc AS SUBQUERY2_t1 -INNER JOIN cc AS -SUBQUERY2_t2 -ON ( SUBQUERY2_t2 . -`col_int_key` -= -SUBQUERY2_t1 . -`pk` ) -) -) ) ) -WHERE ( EXISTS ((SELECT 5 -FROM DUAL)) ) -OR table1 . `pk` < table1 . `col_int` -GROUP BY field2 -ORDER BY field1, -field2; -field1 field2 -SELECT table1 . col_varchar_key -FROM (SELECT * FROM CC AS SUBQUERY1_t1) AS table1 -RIGHT OUTER JOIN D AS table2 ON table2 . `pk` = table1 . `col_int_key` -AND 9 IN (SELECT `col_int_key` AS SUBQUERY2_field1 FROM CC AS SUBQUERY2_t1); -col_varchar_key -SELECT Min(table2 . `pk`) AS field1 -FROM ( cc AS table1 -RIGHT OUTER JOIN c AS table2 -ON ( table2 . `col_varchar` = table1 . `col_varchar_key` ) -) -WHERE ( ( 9, 5 ) IN (SELECT Sum(SUBQUERY1_t1 . `col_int`) AS SUBQUERY1_field1, -Max(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field2 -FROM ( cc AS SUBQUERY1_t1 -LEFT JOIN ( c AS SUBQUERY1_t2 -INNER JOIN c AS SUBQUERY1_t3 -ON ( SUBQUERY1_t3 . -`col_int_key` = -SUBQUERY1_t2 . -`col_int_key` -OR ( 'x', 'j' ) IN -(SELECT Sum(CHILD_SUBQUERY1_t1 . -`col_varchar_key`) AS -CHILD_SUBQUERY1_field1, -Sum(CHILD_SUBQUERY1_t1 . -`col_varchar` -) -AS -CHILD_SUBQUERY1_field2 -FROM ( cc AS CHILD_SUBQUERY1_t1 -INNER JOIN cc AS -CHILD_SUBQUERY1_t2 -ON ( -CHILD_SUBQUERY1_t2 . -`col_varchar_20` -= -CHILD_SUBQUERY1_t1 . -`col_varchar_key` -) ) -) ) ) -ON ( SUBQUERY1_t3 . `col_varchar` = -SUBQUERY1_t2 . `col_varchar_key` -OR -SUBQUERY1_t3 . `col_varchar_20_key` NOT -IN -(SELECT 5 -UNION -SELECT 8) -) ) -WHERE ( 'i', 'm' ) IN (SELECT Min(CHILD_SUBQUERY3_t1 . -`col_varchar`) AS -CHILD_SUBQUERY3_field1, -Count(CHILD_SUBQUERY3_t1 . -`col_varchar_key`) AS -CHILD_SUBQUERY3_field2 -FROM ( cc AS CHILD_SUBQUERY3_t1 -RIGHT JOIN b AS -CHILD_SUBQUERY3_t2 -ON ( -CHILD_SUBQUERY3_t2 . -`col_varchar_10` = -CHILD_SUBQUERY3_t1 . -`col_varchar_key` ) -) -WHERE -CHILD_SUBQUERY3_t2 . `col_varchar_10` -<= -CHILD_SUBQUERY3_t2 . `col_varchar`)) ) -AND ( table1 . `col_int_key` NOT BETWEEN 226 AND ( 226 + 183 ) -OR table1 . `col_varchar_key` <= 'm' ) -AND (SELECT Max(SUBQUERY2_t1 . `col_varchar_20`) AS SUBQUERY2_field1 -FROM ( cc AS SUBQUERY2_t1 -INNER JOIN c AS SUBQUERY2_t2 -ON ( SUBQUERY2_t2 . `col_varchar_key` = -SUBQUERY2_t1 . `col_varchar` ) )) IS NULL -HAVING field1 > 't' -ORDER BY field1; -field1 -Warnings: -Warning 1292 Truncated incorrect DOUBLE value: 'x' -Warning 1292 Truncated incorrect DOUBLE value: 'j' -SELECT 1 FROM ( cc AS SUBQUERY1_t1 LEFT JOIN ( c AS SUBQUERY1_t2 -INNER JOIN c AS SUBQUERY1_t3 -ON ( SUBQUERY1_t3.`col_int_key` = SUBQUERY1_t2.`col_int_key` -OR 1 IN (SELECT 1 union select 2)) -) ON (SUBQUERY1_t3.`col_varchar_20_key` NOT IN (SELECT 5 UNION SELECT 8))); -1 -drop table t1,t2,t3,t4,t5,tp1,tp2,C,D,BB,CC,B; -set autocommit = 0; - -*********************push down outer join on condition end************** - -************************pullup select expr in query with offset begin********** -************************通过调整逻辑算子分配顺序实现,case不移除********************** - -set autocommit = 1; -drop table if exists t1, t2; -create table t1 (c1 int, c2 int); -create table t2 (c1 int, c2 int); -select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; -c1 c2 (select c1 from t2 where c2 = t1.c1) -3 3 3 -select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; -c1 c2 (select c1 from t2 where c2 = t1.c1) -3 3 3 -select c1, c2, c1 + c2, c2 + (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; -c1 c2 c1 + c2 c2 + (select c1 from t2 where c2 = t1.c1) -3 3 6 6 -select /*+no_rewrite*/ c1, c2, c1 + c2, c2 + (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; -c1 c2 c1 + c2 c2 + (select c1 from t2 where c2 = t1.c1) -3 3 6 6 -select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 order by 3 limit 10 offset 2; -c1 c2 (select c1 from t2 where c2 = t1.c1) -1 1 1 -2 2 2 -3 3 3 -select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 order by 3 limit 10 offset 2; -c1 c2 (select c1 from t2 where c2 = t1.c1) -1 1 1 -2 2 2 -3 3 3 -select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 limit 10 offset 2; -c1 c2 (select c1 from t2 where c2 = t1.c1) -3 3 3 -4 4 NULL -5 5 NULL -select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 limit 10 offset 2; -c1 c2 (select c1 from t2 where c2 = t1.c1) -3 3 3 -4 4 NULL -5 5 NULL -select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 with rollup limit 10 offset 2; -c1 c2 (select c1 from t2 where c2 = t1.c1) -2 2 2 -2 NULL 2 -3 3 3 -3 NULL 3 -4 4 NULL -4 NULL NULL -5 5 NULL -5 NULL NULL -NULL NULL NULL -select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 with rollup limit 10 offset 2; -c1 c2 (select c1 from t2 where c2 = t1.c1) -2 2 2 -2 NULL 2 -3 3 3 -3 NULL 3 -4 4 NULL -4 NULL NULL -5 5 NULL -5 NULL NULL -NULL NULL NULL -drop table t1; -drop table t2; -set autocommit = 0; - -************************pullup select expr in query with offset end********** -DROP TABLE IF EXISTS B, C, BB, CC; -CREATE TABLE B ( -col_varchar_10_key varchar(10), -pk int, -col_varchar_20_key varchar(20), -col_varchar varchar (1), -col_varchar_10 varchar(10), -col_int int, -col_varchar_20 varchar(20), -col_varchar_key varchar (1), -col_int_key int, -/*Indices*/ -key idx5(pk, col_varchar_10_key ), -primary key (pk) , -key idx7(pk, col_varchar_20_key ), -key idx3(pk, col_varchar_key ), -key idx1(pk, col_int_key )) ; -CREATE TABLE C ( -col_varchar_10_key varchar(10), -col_varchar_10 varchar(10), -col_int_key int, -col_varchar_20_key varchar(20), -col_varchar_key varchar (1), -pk int, -col_int int, -col_varchar_20 varchar(20), -col_varchar varchar (1), -/*Indices*/ -key idx5(pk, col_varchar_10_key ), -key idx1(pk, col_int_key ), -key idx7(pk, col_varchar_20_key ), -key idx3(pk, col_varchar_key ), -primary key (pk) ) ; -CREATE TABLE BB ( -col_varchar_20_key varchar(20), -pk int, -col_varchar_10 varchar(10), -col_varchar_key varchar (1), -col_varchar_10_key varchar(10), -col_int_key int, -col_varchar varchar (1), -col_int int, -col_varchar_20 varchar(20), -/*Indices*/ -key idx7(pk, col_varchar_20_key ), -primary key (pk) , -key idx3(pk, col_varchar_key ), -key idx5(pk, col_varchar_10_key ), -key idx1(pk, col_int_key )) ; -CREATE TABLE CC ( -col_varchar_10 varchar(10), -col_varchar varchar (1), -col_int int, -col_varchar_key varchar (1), -pk int, -col_varchar_10_key varchar(10), -col_varchar_20 varchar(20), -col_int_key int, -col_varchar_20_key varchar(20), -/*Indices*/ -key idx3(pk, col_varchar_key ), -primary key (pk) , -key idx5(pk, col_varchar_10_key ), -key idx1(pk, col_int_key ), -key idx7(pk, col_varchar_20_key )) ; -SELECT table1 . col_int_key AS field1, -table1 . col_varchar_20_key AS field2, -MAX(table1 . `col_varchar`) AS field3, -table2 . `col_int_key` AS field4, -(SELECT DISTINCT SUM(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 -FROM C AS SUBQUERY1_t1) AS field5, -CONCAT (table1 . `col_varchar_20`, -table1 . `col_varchar_20_key`) AS field6, -table1 . `col_varchar_20` AS field7, -table2 . col_varchar_10_key AS field8, -table1 . `col_int` AS field9, -table1 . col_varchar_20_key AS field10, -(SELECT MAX(SUBQUERY2_t2 . `pk`) AS SUBQUERY2_field1 -FROM (BB AS SUBQUERY2_t1 -LEFT OUTER JOIN C AS SUBQUERY2_t2 ON (SUBQUERY2_t2 . `col_varchar_key` = SUBQUERY2_t1 . `col_varchar`))) AS field11, -MIN(table1 . `col_int`) AS field12, -table1 . col_varchar_10_key AS field13 -FROM (CC AS table1 -LEFT JOIN ((B AS table2 -INNER JOIN CC AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_10_key`))) ON (table3 . `pk` = table2 . `col_int_key`)) -WHERE (table1 . `col_varchar_10` IN -(SELECT SUBQUERY3_t1 . `col_varchar_20` AS SUBQUERY3_field1 -FROM CC AS SUBQUERY3_t1 -GROUP BY SUBQUERY3_field1)) -AND (table1 . `col_varchar_key` IN ('a') -OR table1 . `col_varchar_key` <> 'g') -AND table1 . `col_varchar` IS NULL -GROUP BY field1, -field2, -field4, -field5, -field6, -field7, -field8, -field9, -field10, -field11, -field13 -HAVING field6 >= 'bx' -ORDER BY field1, -field2, -field3, -field4, -field5, -field6, -field7, -field8, -field9, -field10, -field11, -field12, -field13 -LIMIT 100; -field1 field2 field3 field4 field5 field6 field7 field8 field9 field10 field11 field12 field13 -5 w NULL NULL 3 xw x NULL 2 w 2 2 n -SELECT /*+no_rewrite*/table1 . col_int_key AS field1, -table1 . col_varchar_20_key AS field2, -MAX(table1 . `col_varchar`) AS field3, -table2 . `col_int_key` AS field4, -(SELECT DISTINCT SUM(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 -FROM C AS SUBQUERY1_t1) AS field5, -CONCAT (table1 . `col_varchar_20`, -table1 . `col_varchar_20_key`) AS field6, -table1 . `col_varchar_20` AS field7, -table2 . col_varchar_10_key AS field8, -table1 . `col_int` AS field9, -table1 . col_varchar_20_key AS field10, -(SELECT MAX(SUBQUERY2_t2 . `pk`) AS SUBQUERY2_field1 -FROM (BB AS SUBQUERY2_t1 -LEFT OUTER JOIN C AS SUBQUERY2_t2 ON (SUBQUERY2_t2 . `col_varchar_key` = SUBQUERY2_t1 . `col_varchar`))) AS field11, -MIN(table1 . `col_int`) AS field12, -table1 . col_varchar_10_key AS field13 -FROM (CC AS table1 -LEFT JOIN ((B AS table2 -INNER JOIN CC AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_10_key`))) ON (table3 . `pk` = table2 . `col_int_key`)) -WHERE (table1 . `col_varchar_10` IN -(SELECT SUBQUERY3_t1 . `col_varchar_20` AS SUBQUERY3_field1 -FROM CC AS SUBQUERY3_t1 -GROUP BY SUBQUERY3_field1)) -AND (table1 . `col_varchar_key` IN ('a') -OR table1 . `col_varchar_key` <> 'g') -AND table1 . `col_varchar` IS NULL -GROUP BY field1, -field2, -field4, -field5, -field6, -field7, -field8, -field9, -field10, -field11, -field13 -HAVING field6 >= 'bx' -ORDER BY field1, -field2, -field3, -field4, -field5, -field6, -field7, -field8, -field9, -field10, -field11, -field12, -field13 -LIMIT 100; -field1 field2 field3 field4 field5 field6 field7 field8 field9 field10 field11 field12 field13 -5 w NULL NULL 3 xw x NULL 2 w 2 2 n -drop table if exists t1, t2 ,t3; -create table t1(a int, b int, c int); -create table t2(a int, b int, c int); -create table t3(a int, b int, c int); -create table t_temp(a int, b int, c int); -create table t_temp_join(a int, b int, c int, d int, e int, f int); -set autocommit = 0; -select a, b from (select a, b from t1 order by a) group by a, b; -a b -1 1 -2 2 -3 3 -4 4 -select /*+no_rewrite*/a,b from (select * from t1 order by a) group by a, b; -a b -1 1 -2 2 -3 3 -4 4 -insert into t_temp select * from (select * from t1 order by a) group by a, b; -select * from t_temp; -a b c -1 1 1 -2 2 2 -3 3 3 -4 4 4 -rollback; -insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a) group by a, b; -select * from t_temp; -a b c -rollback; -update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); -select * from t_temp; -a b c -rollback; -update /*+no_rewrite*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); -select * from t_temp; -a b c -rollback; -delete from t_temp where not exists (select null from t1 where t1.a = t_temp.a order by a); -select * from t_temp; -a b c -rollback; -delete /*+no_rewrite*/from t_temp where not exists (select null from t1 where t1.a = t_temp.a order by t_temp.a); -select * from t_temp; -a b c -rollback; -select a, b from (select a, b from t1 order by a) group by a, b limit 1; -a b -select /*+no_rewrite*/ a, b from (select a, b from t1 order by a) group by a, b limit 1; -a b -select a, b from (select a, b from t1 order by a, (select a from t3)) group by a, b; -a b -select /*+no_rewrite*/ a, b from (select a, b from t1 order by a, (select a from t3)) group by a, b; -a b -insert into t_temp select * from (select * from t1 order by a, (select a from t3)) group by a, b; -select * from t_temp; -a b c -rollback; -insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a, (select a from t3)) group by a, b; -select * from t_temp; -a b c -rollback; -update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a, (select a from t3)); -select * from t_temp; -a b c -rollback; -update /*+NO_REWRITE*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a, (select a from t3)); -select * from t_temp; -a b c -rollback; -delete from t_temp where t_temp.b in (select a from t1 order by a, (select a from t3)); -select * from t_temp; -a b c -rollback; -delete /*+NO_REWRITE*/from t_temp where t_temp.b in (select a from t1 order by a, (select a from t3)); -select * from t_temp; -a b c -rollback; -select sum(a) from (select a from t1 order by a); -sum(a) -NULL -select /*+no_rewrite*/sum(a) from (select a from t1 order by a); -sum(a) -NULL -select sum(a) from (select a from t1 order by a) limit 1; -sum(a) -NULL -select /*+no_rewrite*/sum(a) from (select a from t1 order by a) limit 1; -sum(a) -NULL -select sum(a) from (select a from t1 order by a, (select a from t3)); -sum(a) -NULL -select /*+no_rewrite*/sum(a) from (select a from t1 order by a, (select a from t3)); -sum(a) -NULL -select distinct * from (select * from t1 order by a); -a b c -select /*+no_rewrite*/distinct * from (select * from t1 order by a); -a b c -select distinct * from (select * from t1 order by a) limit 1; -a b c -select /*+no_rewrite*/distinct * from (select * from t1 order by a) limit 1; -a b c -select distinct * from (select * from t1 order by a, (select a from t3)); -a b c -select /*+no_rewrite*/distinct * from (select * from t1 order by a, (select a from t3)); -a b c -select * from (select * from t1 order by a) order by b; -a b c -select /*+no_rewrite*/* from (select * from t1 order by a) order by b; -a b c -select * from (select * from t1 order by a) order by b limit 1; -a b c -select /*+no_rewrite*/* from (select * from t1 order by a) order by b limit 1; -a b c -select * from (select * from t1 order by a, (select a from t3)) order by b; -a b c -select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)) order by b; -a b c -select * from (select * from t1 order by a); -a b c -select /*+no_rewrite*/* from (select * from t1 order by a); -a b c -insert into t_temp select * from (select * from t1 order by a); -select * from t_temp; -a b c -rollback; -insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a); -select * from t_temp; -a b c -rollback; -update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); -select * from t_temp; -a b c -rollback; -update /*+NO_REWRITE*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); -select * from t_temp; -a b c -rollback; -delete from t_temp where t_temp.b in (select a from t1 order by a); -select * from t_temp; -a b c -rollback; -delete /*+NO_REWRITE*/from t_temp where t_temp.b in (select a from t1 order by a); -select * from t_temp; -a b c -rollback; -select * from (select * from t1 order by a) limit 1; -a b c -select /*+no_rewrite*/* from (select * from t1 order by a) limit 1; -a b c -select distinct * from (select * from t1 order by a limit 1); -a b c -select /*+no_rewrite*/distinct * from (select * from t1 order by a limit 1); -a b c -select a from (select a from t1 order by a limit 1) group by a; -a -select /*+no_rewrite*/a from (select a from t1 order by a limit 1) group by a; -a -select * from (select * from t1 order by a, (select a from t3)); -a b c -select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)); -a b c -select * from (select * from t1 order by a), t2; -a b c a b c -select /*+no_rewrite*/* from (select * from t1 order by a), t2; -a b c a b c -insert into t_temp_join (select * from (select * from t1 order by a), t2); -insert /*+*/ -select * from (select * from t1 order by a, (select a from t3)), t2; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'select * from (select * from t1 order by a, (select a from t3)), t2' at line 2 -select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)), t2; -a b c a b c -select * from (select * from t1 order by a) v1, (select * from t2 order by a) v2; -a b c a b c -select /*+no_rewrite*/* from (select * from t1 order by a) v1, (select * from t2 order by a) v2; -a b c a b c -select * from (select * from t1 order by a) v left join t2 on v.a = t2.a; -a b c a b c -select /*+no_rewrite*/* from (select * from t1 order by a) v left join t2 on v.a = t2.a; -a b c a b c -select * from (select * from t1 order by a, (select a from t3)) v left join t2 on v.a = t2.a; -a b c a b c -select /*+no_rewrite*/* from (select * from t1 order by a) v left join t2 on v.a = t2.a; -a b c a b c -select * from (select * from t1 order by a) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; -a b c a b c -select /*+no_rewrite*/* from (select * from t1 order by a) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; -a b c a b c -select * from (select * from t1 order by a limit 1) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; -a b c a b c -select /*+no_rewrite*/* from (select * from t1 order by a limit 1) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; -a b c a b c -select * from (select * from t1 order by (select a from t3)), t2; -a b c a b c -select /*+no_rewrite*/* from (select * from t1 order by (select a from t3)), t2; -a b c a b c -select * from (select * from t1 order by a limit 1), t2; -a b c a b c -select /*+no_rewrite*/* from (select * from t1 order by a limit 1), t2; -a b c a b c -drop table if exists t1, t2, t3, t4; -create table t1 (pk int primary key, c1 int, c2 int); -create table t2 (pk int primary key, c1 int, c2 int); -create table t3 (pk int primary key, c1 int, c2 int); -create table t4 (pk int primary key, c1 int, c2 int); -insert/**/ into t3 values (1, 1, 1); -select * from t3 where not exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); -pk c1 c2 -1 1 1 -select /*+no_rewrite*/ * from t3 where not exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); -pk c1 c2 -1 1 1 -select * from t3 where exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); -pk c1 c2 -select /*+no_rewrite*/ * from t3 where exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); -pk c1 c2 -select * from t3 where not exists (select 1 from t4 where t3.c2 = t4.c2 and exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t4.c2)); -pk c1 c2 -1 1 1 -select /*+no_rewrite*/ * from t3 where not exists (select 1 from t4 where t3.c2 = t4.c2 and exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t4.c2)); -pk c1 c2 -1 1 1 -drop table t1,t2,t3,t_temp; -DROP TABLE IF EXISTS `d`, `cc`; -CREATE TABLE `d` ( -`col_varchar_10` varchar(10) DEFAULT NULL, -`col_varchar` varchar(1) DEFAULT NULL, -`col_varchar_20_key` varchar(20) DEFAULT NULL, -`col_varchar_20` varchar(20) DEFAULT NULL, -`col_varchar_10_key` varchar(10) DEFAULT NULL, -`col_int` int(11) DEFAULT NULL, -`col_varchar_key` varchar(1) DEFAULT NULL, -`col_int_key` int(11) DEFAULT NULL, -`pk` int(11) NOT NULL, -PRIMARY KEY (`pk`), -KEY `idx7` (`pk`, `col_varchar_20_key`) BLOCK_SIZE 16384 GLOBAL, -KEY `idx5` (`pk`, `col_varchar_10_key`) BLOCK_SIZE 16384 GLOBAL, -KEY `idx3` (`pk`, `col_varchar_key`) BLOCK_SIZE 16384 GLOBAL, -KEY `idx1` (`pk`, `col_int_key`) BLOCK_SIZE 16384 GLOBAL -) ; -CREATE TABLE `cc` ( -`col_varchar_key` varchar(1) DEFAULT NULL, -`col_int` int(11) DEFAULT NULL, -`col_varchar_20` varchar(20) DEFAULT NULL, -`col_int_key` int(11) DEFAULT NULL, -`col_varchar_20_key` varchar(20) DEFAULT NULL, -`col_varchar` varchar(1) DEFAULT NULL, -`col_varchar_10_key` varchar(10) DEFAULT NULL, -`pk` int(11) NOT NULL, -`col_varchar_10` varchar(10) DEFAULT NULL, -PRIMARY KEY (`pk`), -KEY `idx3` (`pk`, `col_varchar_key`) BLOCK_SIZE 16384 GLOBAL, -KEY `idx1` (`pk`, `col_int_key`) BLOCK_SIZE 16384 GLOBAL, -KEY `idx7` (`pk`, `col_varchar_20_key`) BLOCK_SIZE 16384 GLOBAL, -KEY `idx5` (`pk`, `col_varchar_10_key`) BLOCK_SIZE 16384 GLOBAL -) ; -SELECT DISTINCT MIN(DISTINCT table1 . `col_varchar_10`) AS field1, -table1 . col_varchar_10_key AS field2, -table2 . `col_int_key` AS field3, -table1 . `col_varchar_key` AS field4, -table2 . col_varchar_20_key AS field5, -MIN(table1 . `col_varchar_10`) AS field6, -table1 . col_varchar_20_key AS field7, -table1 . col_varchar_10_key AS field8 -FROM (CC AS table1 -RIGHT OUTER JOIN CC AS table2 ON (table2 . `pk` = table1 . `col_int`)) -WHERE ( -(SELECT MAX(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 -FROM (CC AS SUBQUERY1_t1 -INNER JOIN CC AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk` - AND SUBQUERY1_t2 . `col_varchar_10_key` >= -(SELECT MAX(CHILD_SUBQUERY1_t1 . `col_varchar_20`) AS CHILD_SUBQUERY1_field1 -FROM (CC AS CHILD_SUBQUERY1_t1 -INNER JOIN D AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `pk` = CHILD_SUBQUERY1_t1 . `col_int`)))))) IS NULL) -OR table1 . `col_varchar_key` <= 'n' -GROUP BY field2, -field3, -field4, -field5, -field7, -field8 -ORDER BY 1, -field1, -field2, -field3, -field4, -field5, -field6, -field7, -field8; -field1 field2 field3 field4 field5 field6 field7 field8 -NULL NULL NULL NULL g NULL NULL NULL -NULL NULL 0 NULL e NULL NULL NULL -NULL NULL 0 NULL j NULL NULL NULL -NULL NULL 0 NULL s NULL NULL NULL -NULL NULL 1 NULL NULL NULL NULL NULL -NULL NULL 1 NULL a NULL NULL NULL -NULL NULL 1 NULL f NULL NULL NULL -NULL NULL 1 NULL n NULL NULL NULL -NULL NULL 2 NULL r NULL NULL NULL -NULL NULL 2 NULL s NULL NULL NULL -NULL NULL 2 k NULL NULL v NULL -NULL NULL 3 NULL NULL NULL NULL NULL -NULL NULL 4 NULL m NULL NULL NULL -NULL NULL 4 NULL o NULL NULL NULL -NULL NULL 4 NULL x NULL NULL NULL -NULL NULL 5 NULL m NULL NULL NULL -NULL NULL 5 NULL v NULL NULL NULL -NULL NULL 6 NULL NULL NULL NULL NULL -NULL NULL 7 NULL j NULL NULL NULL -NULL NULL 8 NULL s NULL NULL NULL -NULL NULL 9 NULL c NULL NULL NULL -NULL NULL 9 NULL h NULL NULL NULL -NULL k 2 m NULL NULL NULL k -NULL p 6 h NULL NULL c p -NULL t NULL j d NULL x t -a n NULL NULL d a r n -b b NULL NULL NULL b m b -o NULL 8 t b o h NULL -o c 5 n q o m c -o j 6 g NULL o s j -p i 3 f NULL p g i -q g NULL z d q n g -q r 5 d q q NULL r -s NULL 6 f NULL s f NULL -x i 5 m q x q i -x i 8 j b x a i -y i 8 d b y s i -z h 5 k q z b h -SELECT /*+no_rewrite*/ DISTINCT MIN(DISTINCT table1 . `col_varchar_10`) AS field1, -table1 . col_varchar_10_key AS field2, -table2 . `col_int_key` AS field3, -table1 . `col_varchar_key` AS field4, -table2 . col_varchar_20_key AS field5, -MIN(table1 . `col_varchar_10`) AS field6, -table1 . col_varchar_20_key AS field7, -table1 . col_varchar_10_key AS field8 -FROM (CC AS table1 -RIGHT OUTER JOIN CC AS table2 ON (table2 . `pk` = table1 . `col_int`)) -WHERE ( -(SELECT MAX(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 -FROM (CC AS SUBQUERY1_t1 -INNER JOIN CC AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk` - AND SUBQUERY1_t2 . `col_varchar_10_key` >= -(SELECT MAX(CHILD_SUBQUERY1_t1 . `col_varchar_20`) AS CHILD_SUBQUERY1_field1 -FROM (CC AS CHILD_SUBQUERY1_t1 -INNER JOIN D AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `pk` = CHILD_SUBQUERY1_t1 . `col_int`)))))) IS NULL) -OR table1 . `col_varchar_key` <= 'n' -GROUP BY field2, -field3, -field4, -field5, -field7, -field8 -ORDER BY 1, -field1, -field2, -field3, -field4, -field5, -field6, -field7, -field8; -field1 field2 field3 field4 field5 field6 field7 field8 -NULL NULL NULL NULL g NULL NULL NULL -NULL NULL 0 NULL e NULL NULL NULL -NULL NULL 0 NULL j NULL NULL NULL -NULL NULL 0 NULL s NULL NULL NULL -NULL NULL 1 NULL NULL NULL NULL NULL -NULL NULL 1 NULL a NULL NULL NULL -NULL NULL 1 NULL f NULL NULL NULL -NULL NULL 1 NULL n NULL NULL NULL -NULL NULL 2 NULL r NULL NULL NULL -NULL NULL 2 NULL s NULL NULL NULL -NULL NULL 2 k NULL NULL v NULL -NULL NULL 3 NULL NULL NULL NULL NULL -NULL NULL 4 NULL m NULL NULL NULL -NULL NULL 4 NULL o NULL NULL NULL -NULL NULL 4 NULL x NULL NULL NULL -NULL NULL 5 NULL m NULL NULL NULL -NULL NULL 5 NULL v NULL NULL NULL -NULL NULL 6 NULL NULL NULL NULL NULL -NULL NULL 7 NULL j NULL NULL NULL -NULL NULL 8 NULL s NULL NULL NULL -NULL NULL 9 NULL c NULL NULL NULL -NULL NULL 9 NULL h NULL NULL NULL -NULL k 2 m NULL NULL NULL k -NULL p 6 h NULL NULL c p -NULL t NULL j d NULL x t -a n NULL NULL d a r n -b b NULL NULL NULL b m b -o NULL 8 t b o h NULL -o c 5 n q o m c -o j 6 g NULL o s j -p i 3 f NULL p g i -q g NULL z d q n g -q r 5 d q q NULL r -s NULL 6 f NULL s f NULL -x i 5 m q x q i -x i 8 j b x a i -y i 8 d b y s i -z h 5 k q z b h -SELECT MIN(DISTINCT col_varchar_10), MIN(col_varchar_10) FROM CC WHERE (SELECT /*+unnest*/ MAX(pk) FROM CC) IS NULL; -MIN(DISTINCT col_varchar_10) MIN(col_varchar_10) -NULL NULL -SELECT /*+no_rewrite*/ MIN(DISTINCT col_varchar_10), MIN(col_varchar_10) FROM CC WHERE (SELECT /*+unnest*/ MAX(pk) FROM CC) IS NULL; -MIN(DISTINCT col_varchar_10) MIN(col_varchar_10) -NULL NULL -drop table `d`, `cc`; -drop table if exists t1; -create table t1(a int, b int); -select max(distinct a) over(order by a), max(a) over(order by a) from t1; -max(distinct a) over(order by a) max(a) over(order by a) -1 1 -2 2 -3 3 -4 4 -select /*+no_rewrite*/max(distinct a) over(order by a), max(a) over(order by a) from t1; -max(distinct a) over(order by a) max(a) over(order by a) -1 1 -2 2 -3 3 -4 4 -select max(distinct a) over(order by a), max(a) over(order by a), min(a) over(order by a) , min(distinct a) over(order by a) from t1; -max(distinct a) over(order by a) max(a) over(order by a) min(a) over(order by a) min(distinct a) over(order by a) -1 1 1 1 -2 2 1 1 -3 3 1 1 -4 4 1 1 -select /*+no_rewrite*/max(distinct a) over(order by a), max(a) over(order by a), min(a) over(order by a), min(distinct a) over(order by a) from t1; -max(distinct a) over(order by a) max(a) over(order by a) min(a) over(order by a) min(distinct a) over(order by a) -1 1 1 1 -2 2 1 1 -3 3 1 1 -4 4 1 1 -drop table if exists t1, t2; -create table t1(a int, b int); -create table t2(a int, b int); -insert into t1 select * from t2 order by a; -select/**/ * from t1; -a b -1 1 -2 2 -3 3 -insert into t1 select * from t2 where a > 1 order by a, b; -select/**/ * from t1; -a b -1 1 -2 2 -3 3 -2 2 -3 3 -insert into t1 select * from t2 where a in (select a from t2 order by a) order by a; -select/**/ * from t1; -a b -1 1 -2 2 -3 3 -2 2 -3 3 -1 1 -2 2 -3 3 -drop table t1, t2; - -************************消除冗余case when********** - -drop table if exists t1; -create table t1 (c1 int, c2 int); -select * from t1 where case when t1.c1 > 2 -then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) -else t1.c2 = 5 end; -c1 c2 -3 3 -select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 -then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) -else t1.c2 = 5 end; -c1 c2 -3 3 -select * from t1 where case when t1.c1 > 1 -then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) -when t1.c1 > 2 -then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) -else t1.c2 = 5 end; -c1 c2 -3 3 -select /*+no_rewrite*/* from t1 where case when t1.c1 > 1 -then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) -when t1.c1 > 2 -then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) -else t1.c2 = 5 end; -c1 c2 -3 3 -select * from t1 where case when t1.c1 > 2 -then (case when t1.c1 > 1 -then (case when t1.c1 > 1 then t1.c2 = 3 else t1.c2 = 4 end) -else t1.c2 = 5 end) -else t1.c2 = 6 end; -c1 c2 -3 3 -select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 -then (case when t1.c1 > 1 -then (case when t1.c1 > 1 then t1.c2 = 3 else t1.c2 = 4 end) -else t1.c2 = 5 end) -else t1.c2 = 6 end; -c1 c2 -3 3 -select * from t1 where case when t1.c1 > 2 -then (case when t1.c1 > 2 -then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) -else t1.c2 = 5 end) -else t1.c2 = 6 end; -c1 c2 -3 3 -select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 -then (case when t1.c1 > 2 -then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) -else t1.c2 = 5 end) -else t1.c2 = 6 end; -c1 c2 -3 3 -select * from t1 where case when t1.c1 > 2 -then (case when t1.c1 > 1 -then t1.c2 = 3 -when t1.c1 > 2 -then t1.c2 = 4 -else t1.c2 = 5 end) -else t1.c2 = 6 end; -c1 c2 -3 3 -select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 -then (case when t1.c1 > 1 -then t1.c2 = 3 -when t1.c1 > 2 -then t1.c2 = 4 -else t1.c2 = 5 end) -else t1.c2 = 6 end; -c1 c2 -3 3 -drop table if exists t1; -USE DB_SIMPLIFY; -drop database DB_SIMPLIFY; -alter system set _enable_record_rollback_trans_log=true; -ERROR 42000: System config unknown -set autocommit = 1; diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/basic_mysql.result b/test/mysql_test/test_suite/with_clause/r/mysql/basic_mysql.result deleted file mode 100644 index abd69b849..000000000 --- a/test/mysql_test/test_suite/with_clause/r/mysql/basic_mysql.result +++ /dev/null @@ -1,2787 +0,0 @@ -############################## -## section one cte定义 -## PART 1 定义表名的限制 -## PART 2 单个的定义 -## PART 3 多个定义 -## PART 4 subquery的变化 -## section two cte的使用 -## PART 1 cte出现在normal型查询语句中 -## PART 2 cte出现在set型查询语句中 -## PART 3 主查询中含有inline cte -## PART 4 歧义语法 -## PART 5 出现方式 -## PART 6 定义列的使用 -## section three cte能够出现的句式 -## PART 1 select for update -## PART 2 insert into -## PART 3 update select -## PART 4 select when -## PART 5 delete from -############################## - -############################## -## section one -## PART 1 定义表名的限制 -############################## -## PART 1.1 表名,列名不能是保留关键字,可以是分保留关键字 -WITH explain as (select 1 from dual) select * from explain; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'explain as (select 1 from dual) select * from explain' at line 1 - -WITH cte(explain) as (select 1 from dual) select * from cte; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'explain) as (select 1 from dual) select * from cte' at line 1 - -with cte(name) as (select 1 from dual) select * from cte; -+------+ -| name | -+------+ -| 1 | -+------+ - -## PART 1.2 允许与已有的表重名 -explain basic WITH t4 as (select 1 from dual) select * from t4; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |EXPRESSION| | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([1]), filter(nil) - values({1}) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH t4 as (select 1 from dual) select * from t4; -+---+ -| 1 | -+---+ -| 1 | -+---+ - -############################## -## PART 2 单个的定义 -############################## -## PART 2.1 定义列名重复 -with cte(a,a) as (select 1,1 from dual) select * from cte; -ERROR 5751 (HY000): duplicate name found in column alias list for WITH clause - -## PART 2.2.1 定义列数量与查询产生列一致或不一致 -explain basic with cte(a,b) as (select 1,1 from dual) select * from cte; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |EXPRESSION| | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([1], [1]), filter(nil) - values({1, 1}) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte(a,b) as (select 1,1 from dual) select * from cte; -+---+---+ -| a | b | -+---+---+ -| 1 | 1 | -+---+---+ - -with cte(a,b) as (select 1 from dual) select * from cte; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list - -with cte(a,b,c) as (select 1, 2, 3, 4 from dual) select * from cte; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list - -## PART 2.2.2 不使用定义列使用原来的列 -with cte(a,b) as (select c1,c2 from t1) select c1 from cte; -ERROR 1054 (42S22): Unknown column 'c1' in 'field list' - -############################## -## PART 3 多个的定义 -############################## -## PART 3.1 前面的定义引用后面的,后面的引用前面的 -WITH - cte1 (a, b) AS (SELECT c, d FROM cte2), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -SELECT b, d FROM cte1 JOIN cte2 -on cte1.a = cte2.c; -ERROR 1146 (42S02): Table 'test.cte2' does not exist - -explain basic with - cte1 AS (select c1 from t1), - cte2 AS (select c1 from cte1) -select * from cte1; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS (select c1 from t1), - cte2 AS (select c1 from cte1) -select * from cte1; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -## PART 3.2.1 直接嵌套定义,MySQL支持这样的直接嵌套 -with - cte1 AS ( - with cte2 AS (select c1 from t1) - select c1 from cte2 - ) -select c1 from cte1; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -with - cte1 (cte1col) AS ( - with cte2 (cte2col) AS (select c1 from t1) - select cte2col from cte2 - ) -select cte1col from cte1; -+---------+ -| cte1col | -+---------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+---------+ - -with - cte1 (cte1col) AS ( - with cte2 (cte2col1, cte2col2) AS (select c1, c2 from t1) - select cte2col2 from cte2 - ) -select cte1col from cte1; -+---------+ -| cte1col | -+---------+ -| 2 | -| 5 | -| 8 | -| 11 | -| 14 | -| 17 | -| 20 | -+---------+ - -## PART 3.2.2 在子查询中进行嵌套 -with cte(a) as (select * from (with cteb(a) as (select 1 from dual) select * from cteb) bac) select * from cte; -+---+ -| a | -+---+ -| 1 | -+---+ - -############################## -## PART 4 subquery的变化 -############################## - -## PART 4.1.0 subquery的变化 -## 带有聚合 -explain basic with cte as (select count(*) from t1) select * from cte; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ========================= -|ID|OPERATOR |NAME| -------------------------- -|0 |SCALAR GROUP BY| | -|1 | TABLE SCAN |t1 | -========================= - -Outputs & filters: -------------------------------------- - 0 - output([T_FUN_COUNT(*)]), filter(nil), - group(nil), agg_func([T_FUN_COUNT(*)]) - 1 - output([1]), filter(nil), - access([t1.__pk_increment]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select count(*) from t1) select * from cte; -+----------+ -| count(*) | -+----------+ -| 7 | -+----------+ - -## 带有where -explain basic with - cte1 AS ( select c1 as col1 from t1 where c1 > 1) -select col1 from cte1; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter([t1.c1 > 1]), - access([t1.c1]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS ( select c1 as col1 from t1 where c1 > 1) -select col1 from cte1; -+------+ -| col1 | -+------+ -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -explain basic with - cte1 AS ( select * from t1 where c1+'1'<=3) -select c1 from cte1; -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter([cast(t1.c1, DOUBLE(-1, -1)) + ? <= ?]), - access([t1.c1]), partitions(p0) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS ( select * from t1 where c1+'1'<=3) -select c1 from cte1; -+------+ -| c1 | -+------+ -| 1 | -+------+ - -## 带有group -explain basic with - cte1 AS ( select 1 as c1, 2 as c2 from t1 group by c1) -select c1 from cte1; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ======================== -|ID|OPERATOR |NAME| ------------------------- -|0 |MERGE GROUP BY| | -|1 | SORT | | -|2 | TABLE SCAN |t1 | -======================== - -Outputs & filters: -------------------------------------- - 0 - output([1]), filter(nil), - group([t1.c1]), agg_func(nil) - 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) - 2 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS ( select 1 as c1, 2 as c2 from t1 group by c1) -select c1 from cte1; -+----+ -| c1 | -+----+ -| 1 | -| 1 | -| 1 | -| 1 | -| 1 | -| 1 | -| 1 | -+----+ - -## 带有having -explain basic with - cte1 AS ( select c1, c2 from t1 where t1.c1 > 2) -select c1 from cte1; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter([t1.c1 > 2]), - access([t1.c1]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS ( select c1, c2 from t1 where t1.c1 > 2) -select c1 from cte1; -+------+ -| c1 | -+------+ -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -## 带有order -explain basic with - cte1 AS ( select c1, c2 + 1 as c3 from t1 order by c2) -select c1 from cte1; -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |SORT | | -|1 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]) - 1 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS ( select c1, c2 + 1 as c3 from t1 order by c2) -select c1 from cte1; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -explain basic with - cte2 AS (select * from t1 left join t2 on t1.c1=t2.c21 order by t1.c1) -select c1 from cte2; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ========================== -|ID|OPERATOR |NAME| --------------------------- -|0 |MERGE OUTER JOIN| | -|1 | SORT | | -|2 | TABLE SCAN |t1 | -|3 | SORT | | -|4 | TABLE SCAN |t2 | -========================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds(nil) - 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) - 2 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 3 - output([t2.c21]), filter(nil), sort_keys([t2.c21, ASC]) - 4 - output([t2.c21]), filter(nil), - access([t2.c21]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte2 AS (select * from t1 left join t2 on t1.c1=t2.c21 order by t1.c1) -select c1 from cte2; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -## PART 4.1.1 normal型+hint -## index -## use_nl/use_merge/leading -## hint在cte定义里面 -explain basic with - cte0 AS (select /*+ use_nl(t1 t2) */ * from t2, t1 where t1.c1 = t2.c21) -select * from cte0; -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t2 | -|2 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t2.c21], [t2.c22], [t2.c23], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds(nil) - 1 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), - access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) - 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte0 AS (select /*+ use_nl(t1 t2) */ * from t2, t1 where t1.c1 = t2.c21) -select * from cte0; -+------+------+------+------+------+------+ -| c21 | c22 | c23 | c1 | c2 | c3 | -+------+------+------+------+------+------+ -| 1 | 2 | 3 | 1 | 2 | 3 | -| 4 | 5 | 6 | 4 | 5 | 6 | -| 7 | 8 | 9 | 7 | 8 | 9 | -| 10 | 11 | 12 | 10 | 11 | 12 | -| 13 | 14 | 15 | 13 | 14 | 15 | -| 16 | 17 | 18 | 16 | 17 | 18 | -| 19 | 20 | 21 | 19 | 20 | 21 | -+------+------+------+------+------+------+ - -## hint对cte定义表进行使用,对比与MySQL的一致 -explain basic with cte0 AS (select * from t2) select /*+ leading(t2 cte0) use_nl(cte0)*/ * from cte0, t1 where cte0.c21 = t1.c1; -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t1 | -|2 | TABLE SCAN|t2 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t2.c21], [t2.c22], [t2.c23], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - equal_conds([t2.c21 = t1.c1]), other_conds(nil) - 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - 2 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), - access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte0 AS (select * from t2) select /*+ leading(t2 cte0) use_nl(cte0)*/ * from cte0, t1 where cte0.c21 = t1.c1; -+------+------+------+------+------+------+ -| c21 | c22 | c23 | c1 | c2 | c3 | -+------+------+------+------+------+------+ -| 1 | 2 | 3 | 1 | 2 | 3 | -| 4 | 5 | 6 | 4 | 5 | 6 | -| 7 | 8 | 9 | 7 | 8 | 9 | -| 10 | 11 | 12 | 10 | 11 | 12 | -| 13 | 14 | 15 | 13 | 14 | 15 | -| 16 | 17 | 18 | 16 | 17 | 18 | -| 19 | 20 | 21 | 19 | 20 | 21 | -+------+------+------+------+------+------+ - -## PART 4.1.2 里面是一个set operator -explain basic WITH cte AS -( - SELECT 1 AS col1, 2 AS col2 from dual - UNION ALL - SELECT 3, 4 from dual -) -SELECT col1, col2 FROM cte; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |UNION ALL | | -|1 | EXPRESSION| | -|2 | EXPRESSION| | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([UNION([1])], [UNION([2])]), filter(nil) - 1 - output([1], [2]), filter(nil) - values({1, 2}) - 2 - output([3], [4]), filter(nil) - values({3, 4}) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte AS -( - SELECT 1 AS col1, 2 AS col2 from dual - UNION ALL - SELECT 3, 4 from dual -) -SELECT col1, col2 FROM cte; -+------+------+ -| col1 | col2 | -+------+------+ -| 1 | 2 | -| 3 | 4 | -+------+------+ - -explain basic WITH cte AS -( - select c1, c2 from t1 - UNION all - select c21, c22 from t2 -) -select c1, c2 from cte; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |UNION ALL | | -|1 | TABLE SCAN|t1 | -|2 | TABLE SCAN|t2 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([UNION([1])], [UNION([2])]), filter(nil) - 1 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - 2 - output([t2.c21], [t2.c22]), filter(nil), - access([t2.c21], [t2.c22]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte AS -( - select c1, c2 from t1 - UNION all - select c21, c22 from t2 -) -select c1, c2 from cte; -+------+------+ -| c1 | c2 | -+------+------+ -| 1 | 2 | -| 4 | 5 | -| 7 | 8 | -| 10 | 11 | -| 13 | 14 | -| 16 | 17 | -| 19 | 20 | -| 1 | 2 | -| 4 | 5 | -| 7 | 8 | -| 10 | 11 | -| 13 | 14 | -| 16 | 17 | -| 19 | 20 | -+------+------+ - -## PART 4.1.3 里面是一个where exist(semi join),顺便测试在cte里面as一个列,在外面使用 -explain basic WITH cte AS -( - select 1 as col from t1 where c1 in (select c1 from t1 where exists( (select 1 from dual) union (select 1 from dual))) -) -select * from cte, t1 where t1.c1 = cte.col; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================================== -|ID|OPERATOR |NAME | -------------------------------------- -|0 |NESTED-LOOP JOIN CARTESIAN| | -|1 | HASH RIGHT SEMI JOIN | | -|2 | SUBPLAN SCAN |VIEW1| -|3 | SUBPLAN FILTER | | -|4 | TABLE SCAN |t1 | -|5 | LIMIT | | -|6 | MERGE UNION DISTINCT | | -|7 | LIMIT | | -|8 | EXPRESSION | | -|9 | LIMIT | | -|10| EXPRESSION | | -|11| TABLE SCAN |t1 | -|12| MATERIAL | | -|13| TABLE SCAN |t1 | -===================================== - -Outputs & filters: -------------------------------------- - 0 - output([1], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - conds(nil), nl_params_(nil) - 1 - output([1]), filter(nil), - equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil) - 2 - output([VIEW1.c1]), filter(nil), - access([VIEW1.c1]) - 3 - output([t1.c1]), filter([?]), - exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) - 4 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 5 - output([UNION([1])]), filter(nil), limit(1), offset(nil) - 6 - output([UNION([1])]), filter(nil) - 7 - output([1]), filter(nil), limit(1), offset(nil) - 8 - output([1]), filter(nil) - values({1}) - 9 - output([1]), filter(nil), limit(1), offset(nil) - 10 - output([1]), filter(nil) - values({1}) - 11 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 12 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil) - 13 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c1 = 1]), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte AS -( - select 1 as col from t1 where c1 in (select c1 from t1 where exists( (select 1 from dual) union (select 1 from dual))) -) -select * from cte, t1 where t1.c1 = cte.col; -+-----+------+------+------+ -| col | c1 | c2 | c3 | -+-----+------+------+------+ -| 1 | 1 | 2 | 3 | -| 1 | 1 | 2 | 3 | -| 1 | 1 | 2 | 3 | -| 1 | 1 | 2 | 3 | -| 1 | 1 | 2 | 3 | -| 1 | 1 | 2 | 3 | -| 1 | 1 | 2 | 3 | -+-----+------+------+------+ - -## PART 4.3 有针对某一个分区的操作 -explain basic with cte0 as (select * from t3 partition(p0)) select cte0.c1 from cte0; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t3 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t3.c1]), filter(nil), - access([t3.c1]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte0 as (select * from t3 partition(p0)) select cte0.c1 from cte0; -+----+ -| c1 | -+----+ -| 4 | -| 10 | -| 16 | -+----+ - -explain basic with cte as (select * from t5 partition(p0)) select * from cte; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t5 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil), - access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select * from t5 partition(p0)) select * from cte; -Empty set - -############################## -## section two -## PART 1 cte出现在normal型查询语句中 -############################## -## PART 1.1 最基本用法(单表) -## 不定义别名列列表的时候最简单的使用方法 -explain basic WITH - cte1 AS (select * from t1) -select c1, c2, c3 from cte1; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 AS (select * from t1) -select c1, c2, c3 from cte1; -+------+------+------+ -| c1 | c2 | c3 | -+------+------+------+ -| 1 | 2 | 3 | -| 4 | 5 | 6 | -| 7 | 8 | 9 | -| 10 | 11 | 12 | -| 13 | 14 | 15 | -| 16 | 17 | 18 | -| 19 | 20 | 21 | -+------+------+------+ - -## subquery里面取了别名列,看看主句中能否继续使用 -explain basic with - cte1 AS ( select c1 + 1 as col1 from t1) -select col1 from cte1; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1 + 1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS ( select c1 + 1 as col1 from t1) -select col1 from cte1; -+------+ -| col1 | -+------+ -| 2 | -| 5 | -| 8 | -| 11 | -| 14 | -| 17 | -| 20 | -+------+ - -explain basic with - cte1 AS ( select c1 + 1 as col1 from t1) -select * from cte1; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1 + 1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS ( select c1 + 1 as col1 from t1) -select * from cte1; -+------+ -| col1 | -+------+ -| 2 | -| 5 | -| 8 | -| 11 | -| 14 | -| 17 | -| 20 | -+------+ - -explain basic with - cte1 AS ( select c1 + 1 as col1 from t1) -select col1+3 from cte1; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1 + 1 + 3]), filter(nil), - access([t1.c1]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS ( select c1 + 1 as col1 from t1) -select col1+3 from cte1; -+--------+ -| col1+3 | -+--------+ -| 5 | -| 8 | -| 11 | -| 14 | -| 17 | -| 20 | -| 23 | -+--------+ - -## 这种cte的列其实可能没法用了 -explain basic with - cte AS (select 1 from t1) -select * from cte; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([1]), filter(nil), - access([t1.__pk_increment]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte AS (select 1 from t1) -select * from cte; -+---+ -| 1 | -+---+ -| 1 | -| 1 | -| 1 | -| 1 | -| 1 | -| 1 | -| 1 | -+---+ - -## 主句含有order -explain basic WITH cte2 AS (select c1 from t1) -select c1 from cte2 order by c1; -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |SORT | | -|1 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) - 1 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte2 AS (select c1 from t1) -select c1 from cte2 order by c1; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -## 对主句中的cte取别名后看看能否继续使用 -explain basic WITH cte2 AS (select c1 from t1) -select z1.c1 from cte2 z1, t2 where z1.c1 in (1,4,7,11) and z1.c1 = t2.c21; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t2 | -|2 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds(nil) - 1 - output([t2.c21]), filter([t2.c21 IN (1, 4, 7, 11)]), - access([t2.c21]), partitions(p0) - 2 - output([t1.c1]), filter([t1.c1 IN (1, 4, 7, 11)]), - access([t1.c1]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte2 AS (select c1 from t1) -select z1.c1 from cte2 z1, t2 where z1.c1 in (1,4,7,11) and z1.c1 = t2.c21; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -+------+ - -## 重命名的列出现在where条件中 -explain basic WITH - cte1 AS (SELECT c1 as abc, c2 FROM t1) -select abc from cte1, t2 where abc in (1,4,7) and cte1.abc = t2.c21; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t2 | -|2 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds(nil) - 1 - output([t2.c21]), filter([t2.c21 IN (1, 4, 7)]), - access([t2.c21]), partitions(p0) - 2 - output([t1.c1]), filter([t1.c1 IN (1, 4, 7)]), - access([t1.c1]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 AS (SELECT c1 as abc, c2 FROM t1) -select abc from cte1, t2 where abc in (1,4,7) and cte1.abc = t2.c21; -+------+ -| abc | -+------+ -| 1 | -| 4 | -| 7 | -+------+ - -## 重命名的列出现在order+where中 -explain basic WITH - cte1 (name1, name2) AS (select c1, c2 from t1) -select name1 from cte1 where name1 in (1,4,11) order by name2; -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |SORT | | -|1 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]) - 1 - output([t1.c1], [t1.c2]), filter([t1.c1 IN (1, 4, 11)]), - access([t1.c1], [t1.c2]), partitions(p0) - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (name1, name2) AS (select c1, c2 from t1) -select name1 from cte1 where name1 in (1,4,11) order by name2; -+-------+ -| name1 | -+-------+ -| 1 | -| 4 | -+-------+ - -## 在field list中写了inline,里面使用了cte -explain basic with cte as (select * from t1) select (select count(*) from cte) from t2; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================================== -|ID|OPERATOR |NAME | -------------------------------------- -|0 |NESTED-LOOP JOIN CARTESIAN| | -|1 | SUBPLAN SCAN |VIEW1| -|2 | SCALAR GROUP BY | | -|3 | TABLE SCAN |t1 | -|4 | TABLE SCAN |t2 | -===================================== - -Outputs & filters: -------------------------------------- - 0 - output([VIEW1.count(*)]), filter(nil), - conds(nil), nl_params_(nil) - 1 - output([VIEW1.count(*)]), filter(nil), - access([VIEW1.count(*)]) - 2 - output([T_FUN_COUNT(*)]), filter(nil), - group(nil), agg_func([T_FUN_COUNT(*)]) - 3 - output([1]), filter(nil), - access([t1.__pk_increment]), partitions(p0) - 4 - output([1]), filter(nil), - access([t2.__pk_increment]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select * from t1) select (select count(*) from cte) from t2; -+----------------------------+ -| (select count(*) from cte) | -+----------------------------+ -| 7 | -| 7 | -| 7 | -| 7 | -| 7 | -| 7 | -| 7 | -+----------------------------+ - -## 在cte在外面使用的时候先被取了别名再使用 -explain basic with cte AS (select c1 from t1) -select cte.c1 from cte z1, cte where z1.c1 = cte.c1; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t1 | -|2 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), - equal_conds([t1.c1 = t1.c1]), other_conds(nil) - 1 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 2 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte AS (select c1 from t1) -select cte.c1 from cte z1, cte where z1.c1 = cte.c1; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -explain basic with cte AS (select c1 from t1) -select /*+no_rewrite()*/ cte.c1 from cte z1, cte where z1.c1 = cte.c1; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t1 | -|2 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), - equal_conds([t1.c1 = t1.c1]), other_conds(nil) - 1 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 2 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte AS (select c1 from t1) -select /*+no_rewrite()*/ cte.c1 from cte z1, cte where z1.c1 = cte.c1; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -## join+having not+order by -explain basic with - cte1 AS( select * from t1) -select * from cte1 left join t2 on cte1.c1=t2.c21 where t2.c21 != cte1.c1 order by cte1.c1; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ====================== -|ID|OPERATOR |NAME| ----------------------- -|0 |MERGE JOIN | | -|1 | SORT | | -|2 | TABLE SCAN|t1 | -|3 | SORT | | -|4 | TABLE SCAN|t2 | -====================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c21], [t2.c22], [t2.c23]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds([t2.c21 != t1.c1]) - 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC]) - 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - 3 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), sort_keys([t2.c21, ASC]) - 4 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), - access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with - cte1 AS( select * from t1) -select * from cte1 left join t2 on cte1.c1=t2.c21 where t2.c21 != cte1.c1 order by cte1.c1; -Empty set - -## 对cte使用partition命令 -explain basic WITH cte2 AS (select * from t3) -select * from cte2 partition(p0); -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================================== -|ID|OPERATOR |NAME | -------------------------------------- -|0 |PX COORDINATOR | | -|1 | EXCHANGE OUT DISTR |:EX10000| -|2 | PX PARTITION ITERATOR| | -|3 | TABLE SCAN |t3 | -===================================== - -Outputs & filters: -------------------------------------- - 0 - output([t3.c1], [t3.c2]), filter(nil) - 1 - output([t3.c1], [t3.c2]), filter(nil), dop=1 - 2 - output([t3.c1], [t3.c2]), filter(nil) - 3 - output([t3.c1], [t3.c2]), filter(nil), - access([t3.c1], [t3.c2]), partitions(p[0-1]) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte2 AS (select * from t3) -select * from cte2 partition(p0); -+----+------+ -| c1 | c2 | -+----+------+ -| 4 | 5 | -| 10 | 11 | -| 16 | 17 | -| 1 | 2 | -| 7 | 8 | -| 13 | 14 | -+----+------+ - -## PART 1.2 最基本用法(多表) -explain basic WITH - cte1 AS (SELECT c1, c2 FROM t1), - cte2 AS (SELECT c21, c22 FROM t2) -select c21 from cte2; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t2 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t2.c21]), filter(nil), - access([t2.c21]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 AS (SELECT c1, c2 FROM t1), - cte2 AS (SELECT c21, c22 FROM t2) -select c21 from cte2; - -+------+ -| c21 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -explain basic WITH - cte1 (c1)AS(select c1 from t1), - cte2 AS (select * from t1) -select c1, c2, c3 from cte2; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (c1)AS(select c1 from t1), - cte2 AS (select * from t1) -select c1, c2, c3 from cte2; -+------+------+------+ -| c1 | c2 | c3 | -+------+------+------+ -| 1 | 2 | 3 | -| 4 | 5 | 6 | -| 7 | 8 | 9 | -| 10 | 11 | 12 | -| 13 | 14 | 15 | -| 16 | 17 | 18 | -| 19 | 20 | 21 | -+------+------+------+ - -explain basic WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -SELECT b, d FROM cte1 JOIN cte2 -on cte1.a = cte2.c; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t1 | -|2 | TABLE SCAN|t2 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c2], [t2.c22]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds(nil) - 1 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - 2 - output([t2.c21], [t2.c22]), filter(nil), - access([t2.c21], [t2.c22]), partitions(p0) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -SELECT b, d FROM cte1 JOIN cte2 -on cte1.a = cte2.c; -+------+------+ -| b | d | -+------+------+ -| 2 | 2 | -| 5 | 5 | -| 8 | 8 | -| 11 | 11 | -| 14 | 14 | -| 17 | 17 | -| 20 | 20 | -+------+------+ - -## join+order -explain basic WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select * from cte1 left join cte2 on cte1.a=cte2.c order by cte1.a; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ========================== -|ID|OPERATOR |NAME| --------------------------- -|0 |MERGE OUTER JOIN| | -|1 | SORT | | -|2 | TABLE SCAN |t1 | -|3 | SORT | | -|4 | TABLE SCAN |t2 | -========================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t2.c21], [t2.c22]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds(nil) - 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) - 2 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - 3 - output([t2.c21], [t2.c22]), filter(nil), sort_keys([t2.c21, ASC]) - 4 - output([t2.c21], [t2.c22]), filter(nil), - access([t2.c21], [t2.c22]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select * from cte1 left join cte2 on cte1.a=cte2.c order by cte1.a; -+------+------+------+------+ -| a | b | c | d | -+------+------+------+------+ -| 1 | 2 | 1 | 2 | -| 4 | 5 | 4 | 5 | -| 7 | 8 | 7 | 8 | -| 10 | 11 | 10 | 11 | -| 13 | 14 | 13 | 14 | -| 16 | 17 | 16 | 17 | -| 19 | 20 | 19 | 20 | -+------+------+------+------+ - -## 子查询+join -explain basic WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select t11.c11 as c111 from (select c1 as c11, c2 from t1) t11 join cte2 on t11.c2=cte2.c; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t2 | -|2 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), - equal_conds([t1.c2 = t2.c21]), other_conds(nil) - 1 - output([t2.c21]), filter(nil), - access([t2.c21]), partitions(p0) - 2 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select t11.c11 as c111 from (select c1 as c11, c2 from t1) t11 join cte2 on t11.c2=cte2.c; -Empty set - -## 第二个cte的定义引用了第一个cte,主句中两个表做join -explain basic WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT a, b FROM cte1) -SELECT b, d FROM cte1 JOIN cte2 -on cte1.a = cte2.c; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t1 | -|2 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c2], [t1.c2]), filter(nil), - equal_conds([t1.c1 = t1.c1]), other_conds(nil) - 1 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - 2 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -SELECT b, d FROM cte1 JOIN cte2 -on cte1.a = cte2.c; -+------+------+ -| b | d | -+------+------+ -| 2 | 2 | -| 5 | 5 | -| 8 | 8 | -| 11 | 11 | -| 14 | 14 | -| 17 | 17 | -| 20 | 20 | -+------+------+ - -## 第三cte引用第二个,第二个又引用第一个。结果与MySQL一致。 -explain basic WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT a+1, b-1 FROM cte1), - cte3 (e, f) AS (SELECT c*2, d*3 FROM cte2) -SELECT a, b, e, f FROM cte1 JOIN cte3 -on cte1.a < cte3.e; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ========================== -|ID|OPERATOR |NAME| --------------------------- -|0 |NESTED-LOOP JOIN| | -|1 | TABLE SCAN |t1 | -|2 | MATERIAL | | -|3 | TABLE SCAN |t1 | -========================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t1.c1 + 1 * 2], [t1.c2 - 1 * 3]), filter(nil), - conds([t1.c1 < t1.c1 + 1 * 2]), nl_params_(nil) - 1 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - 2 - output([t1.c1], [t1.c2]), filter(nil) - 3 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT a+1, b-1 FROM cte1), - cte3 (e, f) AS (SELECT c*2, d*3 FROM cte2) -SELECT a, b, e, f FROM cte1 JOIN cte3 -on cte1.a < cte3.e; -+------+------+------+------+ -| a | b | e | f | -+------+------+------+------+ -| 1 | 2 | 4 | 3 | -| 1 | 2 | 10 | 12 | -| 1 | 2 | 16 | 21 | -| 1 | 2 | 22 | 30 | -| 1 | 2 | 28 | 39 | -| 1 | 2 | 34 | 48 | -| 1 | 2 | 40 | 57 | -| 4 | 5 | 10 | 12 | -| 4 | 5 | 16 | 21 | -| 4 | 5 | 22 | 30 | -| 4 | 5 | 28 | 39 | -| 4 | 5 | 34 | 48 | -| 4 | 5 | 40 | 57 | -| 7 | 8 | 10 | 12 | -| 7 | 8 | 16 | 21 | -| 7 | 8 | 22 | 30 | -| 7 | 8 | 28 | 39 | -| 7 | 8 | 34 | 48 | -| 7 | 8 | 40 | 57 | -| 10 | 11 | 16 | 21 | -| 10 | 11 | 22 | 30 | -| 10 | 11 | 28 | 39 | -| 10 | 11 | 34 | 48 | -| 10 | 11 | 40 | 57 | -| 13 | 14 | 16 | 21 | -| 13 | 14 | 22 | 30 | -| 13 | 14 | 28 | 39 | -| 13 | 14 | 34 | 48 | -| 13 | 14 | 40 | 57 | -| 16 | 17 | 22 | 30 | -| 16 | 17 | 28 | 39 | -| 16 | 17 | 34 | 48 | -| 16 | 17 | 40 | 57 | -| 19 | 20 | 22 | 30 | -| 19 | 20 | 28 | 39 | -| 19 | 20 | 34 | 48 | -| 19 | 20 | 40 | 57 | -+------+------+------+------+ - -with - cte0 AS ( - select * from t3 partition(p0) - ), - cte1 AS ( - select /*+ index(t4 i1) */ * from t4 where c2 > 0 - ) -select cte0.c1, cte1.c1 from cte0, cte1 where cte0.c1 = cte1.c1; -Empty set - -## cte出现在主查询in子句中,还有exists子句中 -explain basic WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| =================================== -|ID|OPERATOR |NAME | ------------------------------------ -|0 |HASH RIGHT SEMI JOIN | | -|1 | SUBPLAN SCAN |VIEW1| -|2 | SUBPLAN FILTER | | -|3 | TABLE SCAN |t2 | -|4 | LIMIT | | -|5 | MERGE UNION DISTINCT| | -|6 | SORT | | -|7 | LIMIT | | -|8 | HASH DISTINCT | | -|9 | TABLE SCAN |t1 | -|10| SORT | | -|11| LIMIT | | -|12| HASH DISTINCT | | -|13| TABLE SCAN |t1 | -|14| TABLE SCAN |t1 | -=================================== - -Outputs & filters: -------------------------------------- - 0 - output([1]), filter(nil), - equal_conds([t1.c1 = VIEW1.d]), other_conds(nil) - 1 - output([VIEW1.d]), filter(nil), - access([VIEW1.d]) - 2 - output([t2.c22]), filter([?]), - exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) - 3 - output([t2.c22]), filter(nil), - access([t2.c22]), partitions(p0) - 4 - output([UNION([1])]), filter(nil), limit(1), offset(nil) - 5 - output([UNION([1])]), filter(nil) - 6 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) - 7 - output([t1.c2]), filter(nil), limit(1), offset(nil) - 8 - output([t1.c2]), filter(nil), - distinct([t1.c2]) - 9 - output([t1.c2]), filter(nil), - access([t1.c2]), partitions(p0) - 10 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) - 11 - output([t1.c1]), filter(nil), limit(1), offset(nil) - 12 - output([t1.c1]), filter(nil), - distinct([t1.c1]) - 13 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 14 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); -Empty set - -## 在上面的基础上加入no rewrite hint -explain basic WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select /*+no_rewrite()*/ 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| =================================== -|ID|OPERATOR |NAME | ------------------------------------ -|0 |HASH RIGHT SEMI JOIN | | -|1 | SUBPLAN SCAN |VIEW1| -|2 | SUBPLAN FILTER | | -|3 | TABLE SCAN |t2 | -|4 | LIMIT | | -|5 | MERGE UNION DISTINCT| | -|6 | SORT | | -|7 | LIMIT | | -|8 | HASH DISTINCT | | -|9 | TABLE SCAN |t1 | -|10| SORT | | -|11| LIMIT | | -|12| HASH DISTINCT | | -|13| TABLE SCAN |t1 | -|14| TABLE SCAN |t1 | -=================================== - -Outputs & filters: -------------------------------------- - 0 - output([1]), filter(nil), - equal_conds([t1.c1 = VIEW1.d]), other_conds(nil) - 1 - output([VIEW1.d]), filter(nil), - access([VIEW1.d]) - 2 - output([t2.c22]), filter([?]), - exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) - 3 - output([t2.c22]), filter(nil), - access([t2.c22]), partitions(p0) - 4 - output([UNION([1])]), filter(nil), limit(1), offset(nil) - 5 - output([UNION([1])]), filter(nil) - 6 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) - 7 - output([t1.c2]), filter(nil), limit(1), offset(nil) - 8 - output([t1.c2]), filter(nil), - distinct([t1.c2]) - 9 - output([t1.c2]), filter(nil), - access([t1.c2]), partitions(p0) - 10 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) - 11 - output([t1.c1]), filter(nil), limit(1), offset(nil) - 12 - output([t1.c1]), filter(nil), - distinct([t1.c1]) - 13 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 14 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select /*+no_rewrite()*/ 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); -Empty set - -## 主查询是left join+having not+order -explain basic WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select * from cte1 left join cte2 on cte1.a=cte2.c where cte1.b != cte2.d order by cte1.a; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ====================== -|ID|OPERATOR |NAME| ----------------------- -|0 |MERGE JOIN | | -|1 | SORT | | -|2 | TABLE SCAN|t1 | -|3 | SORT | | -|4 | TABLE SCAN|t2 | -====================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t2.c21], [t2.c22]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds([t1.c2 != t2.c22]) - 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) - 2 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - 3 - output([t2.c21], [t2.c22]), filter(nil), sort_keys([t2.c21, ASC]) - 4 - output([t2.c21], [t2.c22]), filter(nil), - access([t2.c21], [t2.c22]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select * from cte1 left join cte2 on cte1.a=cte2.c where cte1.b != cte2.d order by cte1.a; -Empty set - -############################## -## PART 2 cte出现在set型查询语句中 -############################## - -explain basic WITH cte2 AS (select c1 from t1) -select c1 from cte2 -UNION all -select c21 from t2; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |UNION ALL | | -|1 | TABLE SCAN|t1 | -|2 | TABLE SCAN|t2 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([UNION([1])]), filter(nil) - 1 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 2 - output([t2.c21]), filter(nil), - access([t2.c21]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte2 AS (select c1 from t1) -select c1 from cte2 -UNION all -select c21 from t2; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -explain basic WITH cte2 AS (select c1 from t1) -select /*+no_rewrite()*/ c1 from cte2 -UNION all -select c21 from t2; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |UNION ALL | | -|1 | TABLE SCAN|t1 | -|2 | TABLE SCAN|t2 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([UNION([1])]), filter(nil) - 1 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 2 - output([t2.c21]), filter(nil), - access([t2.c21]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte2 AS (select c1 from t1) -select /*+no_rewrite()*/ c1 from cte2 -UNION all -select c21 from t2; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -explain basic WITH cte2 AS (select c1 from t1) -select * from t1 intersect (select * from t2); -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ================================= -|ID|OPERATOR |NAME| ---------------------------------- -|0 |HASH INTERSECT DISTINCT| | -|1 | TABLE SCAN |t1 | -|2 | TABLE SCAN |t2 | -================================= - -Outputs & filters: -------------------------------------- - 0 - output([INTERSECT([1])], [INTERSECT([2])], [INTERSECT([3])]), filter(nil) - 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - 2 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), - access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte2 AS (select c1 from t1) -select * from t1 intersect (select * from t2); -+------+------+------+ -| c1 | c2 | c3 | -+------+------+------+ -| 1 | 2 | 3 | -| 4 | 5 | 6 | -| 7 | 8 | 9 | -| 10 | 11 | 12 | -| 13 | 14 | 15 | -| 16 | 17 | 18 | -| 19 | 20 | 21 | -+------+------+------+ - -############################## -## PART 3 主查询中含有inline cte -############################## - -## PART 3.1 inline cte与外层同名/不同名 -with cte(a) as (select 1 from dual) select * from (with cteb(a) as (select 1 from dual) select * from cteb) abc; -+---+ -| a | -+---+ -| 1 | -+---+ - -## 同名,这里应该是查询t1 -explain basic with cte as (select c21 from t2) -select * from (with cte as (select c1 from t1) select * from cte) t; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select c21 from t2) -select * from (with cte as (select c1 from t1) select * from cte) t; -+------+ -| c1 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -## 不同名,这里应该是查询t2 -explain basic with cte as (select c21 from t2) -select * from (with cte1 as (select c1 from t1) select * from cte) t; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t2 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t2.c21]), filter(nil), - access([t2.c21]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select c21 from t2) -select * from (with cte1 as (select c1 from t1) select * from cte) t; -+------+ -| c21 | -+------+ -| 1 | -| 4 | -| 7 | -| 10 | -| 13 | -| 16 | -| 19 | -+------+ - -## 三层,这里应该是查询t3 -explain basic with cte as (select c21 from t2) -select * from (with cte as (select c1 from t1) select * from (with cte as (select c1 from t3) select * from cte) cte) t; -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================================== -|ID|OPERATOR |NAME | -------------------------------------- -|0 |PX COORDINATOR | | -|1 | EXCHANGE OUT DISTR |:EX10000| -|2 | PX PARTITION ITERATOR| | -|3 | TABLE SCAN |t3 | -===================================== - -Outputs & filters: -------------------------------------- - 0 - output([t3.c1]), filter(nil) - 1 - output([t3.c1]), filter(nil), dop=1 - 2 - output([t3.c1]), filter(nil) - 3 - output([t3.c1]), filter(nil), - access([t3.c1]), partitions(p[0-1]) - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select c21 from t2) -select * from (with cte as (select c1 from t1) select * from (with cte as (select c1 from t3) select * from cte) cte) t; -+----+ -| c1 | -+----+ -| 4 | -| 10 | -| 16 | -| 1 | -| 7 | -| 13 | -+----+ - -## PART 3.2 inline cte引用外层cte -explain basic with cte as (select 1 from dual) select * from (with cte1 as (select * from cte) select * from cte1); -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |EXPRESSION| | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([1]), filter(nil) - values({1}) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select 1 from dual) select * from (with cte1 as (select * from cte) select * from cte1); -+---+ -| 1 | -+---+ -| 1 | -+---+ - -explain basic WITH cte_outer AS (select * from t2) - select t1.*, t4.* from t1 -left join -( select c21,c22 from cte_outer) t4 -on -t4.c21=t1.c1; -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| =============================== -|ID|OPERATOR |NAME| -------------------------------- -|0 |HASH RIGHT OUTER JOIN| | -|1 | TABLE SCAN |t2 | -|2 | TABLE SCAN |t1 | -=============================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c21], [t2.c22]), filter(nil), - equal_conds([t2.c21 = t1.c1]), other_conds(nil) - 1 - output([t2.c21], [t2.c22]), filter(nil), - access([t2.c21], [t2.c22]), partitions(p0) - 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte_outer AS (select * from t2) - select t1.*, t4.* from t1 -left join -( select c21,c22 from cte_outer) t4 -on -t4.c21=t1.c1; -+------+------+------+------+------+ -| c1 | c2 | c3 | c21 | c22 | -+------+------+------+------+------+ -| 1 | 2 | 3 | 1 | 2 | -| 4 | 5 | 6 | 4 | 5 | -| 7 | 8 | 9 | 7 | 8 | -| 10 | 11 | 12 | 10 | 11 | -| 13 | 14 | 15 | 13 | 14 | -| 16 | 17 | 18 | 16 | 17 | -| 19 | 20 | 21 | 19 | 20 | -+------+------+------+------+------+ - -explain basic WITH cte_outer AS (select * from t2) -select t3.*, t4.* from -( WITH cte_inner AS (select c1 from t1) select c1 from cte_inner where cte_inner.c1 > 1000) t3 - left join -( WITH cte_inner(a, b) AS (select c1,c2 from t1) select c21,c22 from cte_outer where cte_outer.c21 > 1000) t4 -on t4.c21=t3.c1 -order by t4.c22; -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ========================== -|ID|OPERATOR |NAME| --------------------------- -|0 |SORT | | -|1 | HASH OUTER JOIN| | -|2 | TABLE SCAN |t1 | -|3 | TABLE SCAN |t2 | -========================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t2.c21], [t2.c22]), filter(nil), sort_keys([t2.c22, ASC]) - 1 - output([t1.c1], [t2.c21], [t2.c22]), filter(nil), - equal_conds([t2.c21 = t1.c1]), other_conds(nil) - 2 - output([t1.c1]), filter([t1.c1 > 1000]), - access([t1.c1]), partitions(p0) - 3 - output([t2.c21], [t2.c22]), filter([t2.c21 > 1000]), - access([t2.c21], [t2.c22]), partitions(p0) - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH cte_outer AS (select * from t2) -select t3.*, t4.* from -( WITH cte_inner AS (select c1 from t1) select c1 from cte_inner where cte_inner.c1 > 1000) t3 - left join -( WITH cte_inner(a, b) AS (select c1,c2 from t1) select c21,c22 from cte_outer where cte_outer.c21 > 1000) t4 -on t4.c21=t3.c1 -order by t4.c22; -Empty set - -## PART 3.3 inline cte中定义表名与已有表名重名,这里应该是查询了t1才对 -explain basic select * from (WITH t2 AS (select c1 from t1) select c1 from t2 where t2.c1 > 1000) t; -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter([t1.c1 > 1000]), - access([t1.c1]), partitions(p0) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -select * from (WITH t2 AS (select c1 from t1) select c1 from t2 where t2.c1 > 1000) t; -Empty set - -## PART 3.4 inline cte出现在field list -explain basic select ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000), t2.* from t2; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ======================== -|ID|OPERATOR |NAME| ------------------------- -|0 |SUBPLAN FILTER| | -|1 | TABLE SCAN |t2 | -|2 | TABLE SCAN |t1 | -======================== - -Outputs & filters: -------------------------------------- - 0 - output([?], [t2.c21], [t2.c22], [t2.c23]), filter(nil), - exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) - 1 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), - access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) - 2 - output([t1.c1]), filter([t1.c1 > 1000]), - access([t1.c1]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -select ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000), t2.* from t2; -+---------------------------------------------------------------------------+------+------+------+ -| ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) | c21 | c22 | c23 | -+---------------------------------------------------------------------------+------+------+------+ -| NULL | 1 | 2 | 3 | -| NULL | 4 | 5 | 6 | -| NULL | 7 | 8 | 9 | -| NULL | 10 | 11 | 12 | -| NULL | 13 | 14 | 15 | -| NULL | 16 | 17 | 18 | -| NULL | 19 | 20 | 21 | -+---------------------------------------------------------------------------+------+------+------+ - -## PART 3.5 inline cte之后看看列能否正常使用 -explain basic select t3.* from ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 where t3.c1 > 0; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1]), filter([t1.c1 > 0], [t1.c1 > 1000]), - access([t1.c1]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -select t3.* from ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 where t3.c1 > 0; -Empty set - -explain basic select t3.*, t4.* from -(WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 - left join -(WITH cte(a, b) AS (select c1,c2 from t1) select a,b from cte where cte.a > 1000) t4 -on t4.a=t3.c1 -order by t4.b; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ========================== -|ID|OPERATOR |NAME| --------------------------- -|0 |SORT | | -|1 | HASH OUTER JOIN| | -|2 | TABLE SCAN |t1 | -|3 | TABLE SCAN |t1 | -========================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) - 1 - output([t1.c1], [t1.c1], [t1.c2]), filter(nil), - equal_conds([t1.c1 = t1.c1]), other_conds(nil) - 2 - output([t1.c1]), filter([t1.c1 > 1000]), - access([t1.c1]), partitions(p0) - 3 - output([t1.c1], [t1.c2]), filter([t1.c1 > 1000]), - access([t1.c1], [t1.c2]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -select t3.*, t4.* from -(WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 - left join -(WITH cte(a, b) AS (select c1,c2 from t1) select a,b from cte where cte.a > 1000) t4 -on t4.a=t3.c1 -order by t4.b; -Empty set - -## PART 3.6 inline cte别名后与外部cte做join -explain basic with cte as (select * from t1) select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ===================== -|ID|OPERATOR |NAME| ---------------------- -|0 |HASH JOIN | | -|1 | TABLE SCAN|t2 | -|2 | TABLE SCAN|t1 | -===================== - -Outputs & filters: -------------------------------------- - 0 - output([t2.c21], [t2.c22], [t2.c23], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - equal_conds([t2.c21 = t1.c1]), other_conds(nil) - 1 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), - access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) - 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select * from t1) select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; -+------+------+------+------+------+------+ -| c21 | c22 | c23 | c1 | c2 | c3 | -+------+------+------+------+------+------+ -| 1 | 2 | 3 | 1 | 2 | 3 | -| 4 | 5 | 6 | 4 | 5 | 6 | -| 7 | 8 | 9 | 7 | 8 | 9 | -| 10 | 11 | 12 | 10 | 11 | 12 | -| 13 | 14 | 15 | 13 | 14 | 15 | -| 16 | 17 | 18 | 16 | 17 | 18 | -| 19 | 20 | 21 | 19 | 20 | 21 | -+------+------+------+------+------+------+ - ---error 942 -select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; -ERROR 1146 (42S02): Table 'test.cte' does not exist - -with cte as (select * from t1) select (with cte(col1, col2, col3) as(select * from t2) select count(*) from cte) from t1; -+----------------------------------------------------------------------------+ -| (with cte(col1, col2, col3) as(select * from t2) select count(*) from cte) | -+----------------------------------------------------------------------------+ -| 7 | -| 7 | -| 7 | -| 7 | -| 7 | -| 7 | -| 7 | -+----------------------------------------------------------------------------+ - -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select t11.c11 as c111 from (with cte3 as(select * from t3) select c1 as c11, c2 from cte1) cte1 join cte2 on t11.c2=cte2.c; -ERROR 1054 (42S22): Unknown column 'c1' in 'field list' - -#result is correct -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select * from (with cte3 as(select * from t3) select c1 as c11, c2 from cte3) cte1 join cte2 on cte1.c11=cte2.c; -+-----+------+------+------+ -| c11 | c2 | c | d | -+-----+------+------+------+ -| 1 | 2 | 1 | 2 | -| 4 | 5 | 4 | 5 | -| 7 | 8 | 7 | 8 | -| 10 | 11 | 10 | 11 | -| 13 | 14 | 13 | 14 | -| 16 | 17 | 16 | 17 | -+-----+------+------+------+ - -#result is correct -WITH - cte1 (a, b) AS (SELECT c1, c2 FROM t1), - cte2 (c, d) AS (SELECT c21, c22 FROM t2) -select * from (with cte2 as(select * from t3) select c1 as c11, c2 from cte2) cte1 join cte2 on cte1.c11=cte2.c; -+-----+------+------+------+ -| c11 | c2 | c | d | -+-----+------+------+------+ -| 1 | 2 | 1 | 2 | -| 4 | 5 | 4 | 5 | -| 7 | 8 | 7 | 8 | -| 10 | 11 | 10 | 11 | -| 13 | 14 | 13 | 14 | -| 16 | 17 | 16 | 17 | -+-----+------+------+------+ - -############################## -## PART 4 歧义语法 -############################## -## 歧义语法 -## with里面的column和select里面的column重名的情况测试 -## mysql5.6中alias name不能出现在where子句中,但是可以出现在group by、having、order by子句中 -## 如果普通列和alias name重复,那么在group by、having子句中优先使用基础列,并汇报WARNNING -## order by子句中,优先使用alias name -## 这里需要参考mysql8.0中实际使用结果,考虑with clause中定义表中列与基础列重名时的表现 - -## PART 4.1 cte使用时一列被别名为另外一个同名列并在where clause中使用 -with - cte1 (c22, c21) AS (select c1, c2 from t1) -select c22 as c21, c21 from cte1 where c21 = 12; -Empty set - -## cte使用时一列被别名为另外一个同名列并在order_by_clause中使用 -##ERROR 1052 (23000): Column 'c21' in order clause is ambiguous -with - cte1 (c22, c21) AS (select c1, c2 from t1) -select c22 as c21, c21 from cte1 order by c21; -ERROR 1052 (23000): Column 'c21' in order clause is ambiguous - -## cte使用时一列被别名为另外一个同名列并在having clause中使用 -#ERROR 1052 (23000): Column 'c21' in having clause is ambiguous -with - cte1 (c22, c21) AS (select c1, c2 from t1) -select c22 as c21, c21 from cte1 having c21 > 0; -ERROR 1052 (23000): Column 'c21' in having clause is ambiguous - -## cte使用时一列被别名为另外一个同名列并在group_by_clause中使用 -#ERROR 1052 (23000): Column 'c21' in group statement is ambiguous -with - cte1 (c22, c21) AS (select c1, c2 from t1) -select c22 as c21, c21 from cte1 group by c21; -ERROR 1052 (23000): Column 'c21' in group statement is ambiguous - -with - cte1 (c22, c21) AS (select * from t1) -select c22 as c21, c21 from cte1 group by c21; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list - -## cte的列名已经无法在被使用了,这种用法比较特殊 -explain basic with cte as (select count(*) as k from t1) select * from cte where k = 1; -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ========================= -|ID|OPERATOR |NAME| -------------------------- -|0 |SCALAR GROUP BY| | -|1 | TABLE SCAN |t1 | -========================= - -Outputs & filters: -------------------------------------- - 0 - output([T_FUN_COUNT(*)]), filter([T_FUN_COUNT(*) = 1]), - group(nil), agg_func([T_FUN_COUNT(*)]) - 1 - output([1]), filter(nil), - access([t1.__pk_increment]), partitions(p0) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select count(*) as k from t1) select * from cte where k = 1; -Empty set - -############################## -## section three -## PART 1 select for update -############################## - -explain basic WITH - cte0 AS ( select * from t1) -select * from cte0 for update; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ==================== -|ID|OPERATOR |NAME| --------------------- -|0 |TABLE SCAN|t1 | -==================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH - cte0 AS ( select * from t1) -select * from cte0 for update; -+------+------+------+ -| c1 | c2 | c3 | -+------+------+------+ -| 1 | 2 | 3 | -| 4 | 5 | 6 | -| 7 | 8 | 9 | -| 10 | 11 | 12 | -| 13 | 14 | 15 | -| 16 | 17 | 18 | -| 19 | 20 | 21 | -+------+------+------+ - -############################## -## PART 2 insert into -############################## - -explain basic insert into t1 with cte as (select * from t1) SELECT * FROM cte; -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ======================== -|ID|OPERATOR |NAME | ------------------------- -|0 |INSERT | | -|1 | SUBPLAN SCAN|VIEW1| -|2 | TABLE SCAN |t1 | -======================== - -Outputs & filters: -------------------------------------- - 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c3)]), filter(nil), - columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]), partitions(p0) - 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), - access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) - 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -insert into t1 with cte as (select * from t1) SELECT * FROM cte; - -explain basic insert into t1 with cte (a,b,c) as (select c21,c22,c23 from t2) select a,b,a from cte; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ======================== -|ID|OPERATOR |NAME | ------------------------- -|0 |INSERT | | -|1 | SUBPLAN SCAN|VIEW1| -|2 | TABLE SCAN |t2 | -======================== - -Outputs & filters: -------------------------------------- - 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)]), filter(nil), - columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]), partitions(p0) - 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.a]), filter(nil), - access([VIEW1.a], [VIEW1.b], [VIEW1.a]) - 2 - output([t2.c21], [t2.c22], [t2.c21]), filter(nil), - access([t2.c21], [t2.c22]), partitions(p0) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -insert into t1 with cte (a,b,c) as (select c21,c22,c23 from t2) select a,b,a from cte; -select * from t1; -+------+------+------+ -| c1 | c2 | c3 | -+------+------+------+ -| 1 | 2 | 3 | -| 4 | 5 | 6 | -| 7 | 8 | 9 | -| 10 | 11 | 12 | -| 13 | 14 | 15 | -| 16 | 17 | 18 | -| 19 | 20 | 21 | -| 1 | 2 | 3 | -| 4 | 5 | 6 | -| 7 | 8 | 9 | -| 10 | 11 | 12 | -| 13 | 14 | 15 | -| 16 | 17 | 18 | -| 19 | 20 | 21 | -| 1 | 2 | 1 | -| 4 | 5 | 4 | -| 7 | 8 | 7 | -| 10 | 11 | 10 | -| 13 | 14 | 13 | -| 16 | 17 | 16 | -| 19 | 20 | 19 | -+------+------+------+ - -############################## -## PART 3 update select -############################## - -explain basic update t1 set c1=(with cte as (select count(*)+99 from t2 where c21=1) select * from cte) where c2 = 2; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| =========================================== -|ID|OPERATOR |NAME| -------------------------------------------- -|0 |UPDATE | | -|1 | NESTED-LOOP OUTER JOIN CARTESIAN| | -|2 | TABLE SCAN |t1 | -|3 | MATERIAL | | -|4 | SUBPLAN SCAN |cte | -|5 | SCALAR GROUP BY | | -|6 | TABLE SCAN |t2 | -=========================================== - -Outputs & filters: -------------------------------------- - 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]), - update([t1.c1=column_conv(INT,PS:(11,0),NULL,cast(cte.count(*)+99, INT(-1, 0)))]) - 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3], [column_conv(INT,PS:(11,0),NULL,cast(cte.count(*)+99, INT(-1, 0)))]), filter(nil), - conds(nil), nl_params_(nil) - 2 - output([t1.c1], [t1.__pk_increment], [t1.c2], [t1.c3]), filter([t1.c2 = 2]), - access([t1.c1], [t1.__pk_increment], [t1.c2], [t1.c3]), partitions(p0) - 3 - output([cte.count(*)+99]), filter(nil) - 4 - output([cte.count(*)+99]), filter(nil), - access([cte.count(*)+99]) - 5 - output([T_FUN_COUNT(*) + 99]), filter(nil), - group(nil), agg_func([T_FUN_COUNT(*)]) - 6 - output([1]), filter([t2.c21 = 1]), - access([t2.c21]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -update t1 set c1=(with cte as (select count(*)+99 from t2 where c21=1) select * from cte) where c2 = 2; -select * from t1; -+------+------+------+ -| c1 | c2 | c3 | -+------+------+------+ -| 100 | 2 | 3 | -| 4 | 5 | 6 | -| 7 | 8 | 9 | -| 10 | 11 | 12 | -| 13 | 14 | 15 | -| 16 | 17 | 18 | -| 19 | 20 | 21 | -| 100 | 2 | 3 | -| 4 | 5 | 6 | -| 7 | 8 | 9 | -| 10 | 11 | 12 | -| 13 | 14 | 15 | -| 16 | 17 | 18 | -| 19 | 20 | 21 | -| 100 | 2 | 1 | -| 4 | 5 | 4 | -| 7 | 8 | 7 | -| 10 | 11 | 10 | -| 13 | 14 | 13 | -| 16 | 17 | 16 | -| 19 | 20 | 19 | -+------+------+------+ - -############################## -## PART 4 select when -############################## - -explain basic with cte as (select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from t1 group by c1 order by c1) select * from cte; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ======================== -|ID|OPERATOR |NAME| ------------------------- -|0 |MERGE GROUP BY| | -|1 | SORT | | -|2 | TABLE SCAN |t1 | -======================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [T_FUN_MAX(t1.c2)], [CASE WHEN T_FUN_MAX(t1.c2) = 4 THEN 4 WHEN T_FUN_MAX(t1.c2) = 43 THEN 43 ELSE 1 END]), filter(nil), - group([t1.c1]), agg_func([T_FUN_MAX(t1.c2)]) - 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) - 2 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte as (select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from t1 group by c1 order by c1) select * from cte; -+------+---------+-------------------------------------------------------+ -| c1 | max(c2) | CASE max(c2) when 4 then 4 when 43 then 43 else 1 end | -+------+---------+-------------------------------------------------------+ -| 4 | 5 | 1 | -| 7 | 8 | 1 | -| 10 | 11 | 1 | -| 13 | 14 | 1 | -| 16 | 17 | 1 | -| 19 | 20 | 1 | -| 100 | 2 | 1 | -+------+---------+-------------------------------------------------------+ - -explain basic with cte(c1, c2) as (select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c21) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ======================== -|ID|OPERATOR |NAME| ------------------------- -|0 |MERGE GROUP BY| | -|1 | SORT | | -|2 | HASH JOIN | | -|3 | TABLE SCAN |t2 | -|4 | TABLE SCAN |t1 | -======================== - -Outputs & filters: -------------------------------------- - 0 - output([t1.c1], [T_FUN_MAX(t1.c2)], [CASE WHEN T_FUN_MAX(t1.c2) = 4 THEN 4 WHEN T_FUN_MAX(t1.c2) = 43 THEN 43 ELSE 1 END]), filter(nil), - group([t1.c1]), agg_func([T_FUN_MAX(t1.c2)]) - 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) - 2 - output([t1.c1], [t1.c2]), filter(nil), - equal_conds([t1.c1 = t2.c21]), other_conds(nil) - 3 - output([t2.c21]), filter(nil), - access([t2.c21]), partitions(p0) - 4 - output([t1.c1], [t1.c2]), filter(nil), - access([t1.c1], [t1.c2]), partitions(p0) - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -with cte(c1, c2) as (select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c21) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; -+------+---------+-------------------------------------------------------+ -| c1 | max(c2) | CASE max(c2) when 4 then 4 when 43 then 43 else 1 end | -+------+---------+-------------------------------------------------------+ -| 4 | 5 | 1 | -| 7 | 8 | 1 | -| 10 | 11 | 1 | -| 13 | 14 | 1 | -| 16 | 17 | 1 | -| 19 | 20 | 1 | -+------+---------+-------------------------------------------------------+ - -############################## -## PART 5 delete from -############################## - -explain basic delete from t1 where c1 = ( with cte as (select max( c1 ) from ( select * from t1 )) select * from cte); -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================ -|ID|OPERATOR |NAME| ----------------------------- -|0 |DELETE | | -|1 | NESTED-LOOP JOIN | | -|2 | SUBPLAN SCAN |cte | -|3 | SCALAR GROUP BY| | -|4 | TABLE SCAN |t1 | -|5 | TABLE SCAN |t1 | -============================ - -Outputs & filters: -------------------------------------- - 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]) - 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - conds([t1.c1 = cte.max( c1 )]), nl_params_(nil) - 2 - output([cte.max( c1 )]), filter(nil), - access([cte.max( c1 )]) - 3 - output([T_FUN_MAX(t1.c1)]), filter(nil), - group(nil), agg_func([T_FUN_MAX(t1.c1)]) - 4 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 5 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -delete from t1 where c1 = ( with cte as (select max( c1 ) from ( select * from t1 )) select * from cte); - -explain basic delete from t1 where c1 = ( with cte (a) as (select max( c1 ) from t1 ) select * from cte); -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================ -|ID|OPERATOR |NAME| ----------------------------- -|0 |DELETE | | -|1 | NESTED-LOOP JOIN | | -|2 | SUBPLAN SCAN |cte | -|3 | SCALAR GROUP BY| | -|4 | TABLE SCAN |t1 | -|5 | TABLE SCAN |t1 | -============================ - -Outputs & filters: -------------------------------------- - 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]) - 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - conds([t1.c1 = cte.max( c1 )]), nl_params_(nil) - 2 - output([cte.max( c1 )]), filter(nil), - access([cte.max( c1 )]) - 3 - output([T_FUN_MAX(t1.c1)]), filter(nil), - group(nil), agg_func([T_FUN_MAX(t1.c1)]) - 4 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 5 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -1 row in set (0.01 sec) - -MySQL [test]> delete from t1 where c1 = ( with cte as (select max( c1 ) from ( select * from t1 )) select * from cte); -Query OK, 5 rows affected (0.01 sec) - -MySQL [test]> explain basic delete from t1 where c1 = ( with cte (a) as (select max( c1 ) from t1 ) select * from cte); -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================ -|ID|OPERATOR |NAME| ----------------------------- -|0 |DELETE | | -|1 | NESTED-LOOP JOIN | | -|2 | SUBPLAN SCAN |cte | -|3 | SCALAR GROUP BY| | -|4 | TABLE SCAN |t1 | -|5 | TABLE SCAN |t1 | -============================ - -Outputs & filters: -------------------------------------- - 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]) - 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - conds([t1.c1 = cte.a]), nl_params_(nil) - 2 - output([cte.a]), filter(nil), - access([cte.a]) - 3 - output([T_FUN_MAX(t1.c1)]), filter(nil), - group(nil), agg_func([T_FUN_MAX(t1.c1)]) - 4 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 5 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), - access([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), partitions(p0) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -delete from t1 where c1 = ( with cte (a) as (select max( c1 ) from t1 ) select * from cte); - - -############################## -## other -############################## -with cte as (select * from t1) select 1 from dual; -+---+ -| 1 | -+---+ -| 1 | -+---+ diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/dis_recursive_mysql.result b/test/mysql_test/test_suite/with_clause/r/mysql/dis_recursive_mysql.result deleted file mode 100644 index 0124d4c11..000000000 --- a/test/mysql_test/test_suite/with_clause/r/mysql/dis_recursive_mysql.result +++ /dev/null @@ -1,4739 +0,0 @@ -create table disemp ( -EMPno number, -ENAME varchar(30) , -JOB varchar(30) , -MGR number(4), -HIREDATE date, -SAL number(7,2), -COMM number(7,2), -DEPTNO number(2) -); -INSERT INTO disemp values (7369,'SMITH','CLERK',7902, str_to_date('1980-11-17','%Y-%m-%d'),800,NULL, 20) ; -INSERT INTO disemp VALUES (7499, 'ALLEN','SALESMAN',7698,str_to_date('1981-01-20','%Y-%m-%d'),1600,300,30) ; -INSERT INTO disemp VALUES (7521,'WARD','SALESMAN',7698, str_to_date('1981-01-22','%Y-%m-%d'),1250, 500, 30) ; -INSERT INTO disemp VALUES (7566,'JONES','MANAGER',7839, str_to_date('1981-04-02','%Y-%m-%d'), 2975, NULL, 20) ; -INSERT INTO disemp VALUES (7654,'MARTIN','SALESMAN', 7698, str_to_date('1981-09-28','%Y-%m-%d'), 1250, 1400, 30) ; -INSERT INTO disemp VALUES (7698, 'BLAKE','MANAGER', 7839, str_to_date('1981-03-01','%Y-%m-%d'), 2850, NULL, 30) ; -INSERT INTO disemp VALUES (7782, 'CLARK','MANAGER', 7839, str_to_date('1981-06-09','%Y-%m-%d'), 2450, NULL, 10) ; -insert into disemp values (7788,'SCOTT','ANALYST', 7566, str_to_date('1987-04-19','%Y-%m-%d'), 3000, null, 20) ; -INSERT INTO disemp VALUES (7839, 'KING','PRESIDENT', NULL, str_to_date('1981-11-17','%Y-%m-%d'), 5000, NULL, 10) ; -INSERT INTO disemp VALUES (7844, 'TURNER','SALESMAN', 7698, str_to_date('1981-09-08','%Y-%m-%d'), 1500, 0, 30) ; -INSERT INTO disemp VALUES(7876, 'ADAMS','CLERK', 7788, str_to_date('1987-05-23','%Y-%m-%d'), 1100, NULL, 20) ; -INSERT INTO disemp VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-11-03','%Y-%m-%d'), 950, NULL, 30) ; -INSERT INTO disemp VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-11-03','%Y-%m-%d'), 3000, NULL, 20) ; -INSERT INTO disemp VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-01-23','%Y-%m-%d'), 1300,NULL, 10) ; -drop table EMP; -create table EMP ( -EMPno number, -ENAME varchar(30), -JOB varchar(30), -MGR number(4), -HIREDATE date, -SAL number(7,2), -COMM number(7,2), -DEPTNO number(2) -); -insert into EMP values (7369,'SMITH','CLERK',7902, str_to_date('1980-12-17','%Y-%m-%d'),800,NULL, 20) ; -INSERT INTO EMP VALUES (7499, 'ALLEN','SALESMAN',7698,str_to_date('1981-02-20','%Y-%m-%d'),1600,300,30) ; -INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698, str_to_date('1981-02-22','%Y-%m-%d'),1250, 500, 30) ; -INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839, str_to_date('1981-08-02','%Y-%m-%d'), 2975, NULL, 20) ; -INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN', 7698, str_to_date('1981-09-28','%Y-%m-%d'), 1250, 1400, 30) ; -INSERT INTO EMP VALUES (7698, 'BLAKE','MANAGER', 7839, str_to_date('1981-05-01','%Y-%m-%d'), 2850, NULL, 30) ; -INSERT INTO EMP VALUES (7782, 'CLARK','MANAGER', 7839, str_to_date('1981-06-09','%Y-%m-%d'), 2450, NULL, 10) ; -insert into EMP values (7788,'SCOTT','ANALYST', 7566, str_to_date('1987-08-19','%Y-%m-%d'), 3000, null, 20) ; -INSERT INTO EMP VALUES (7839, 'KING','PRESIDENT', NULL, str_to_date('1981-11-17','%Y-%m-%d'), 5000, NULL, 10) ; -INSERT INTO EMP VALUES (7844, 'TURNER','SALESMAN', 7698, str_to_date('1981-09-08','%Y-%m-%d'), 1500, 0, 30) ; -INSERT INTO EMP VALUES(7876, 'ADAMS','CLERK', 7788, str_to_date('1987-05-23','%Y-%m-%d'), 1100, NULL, 20) ; -INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-12-03','%Y-%m-%d'), 950, NULL, 30) ; -INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-12-03','%Y-%m-%d'), 3000, NULL, 20) ; -INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-06-23','%Y-%m-%d'), 1300,NULL, 10) ; -drop table emp1; -CREATE TABLE emp1 ( -empno VARCHAR(4000) NOT NULL, -ename VARCHAR(14), -job VARCHAR(9), -mgr VARCHAR(4000), -hiredate DATE, -sal NUMBER(7,2), -comm NUMBER(7,2), -deptno NUMBER(2)); -INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', '%Y-%m-%d'), 800, null, 20); -INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); -INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); -INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); -INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); -INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); -INSERT INTO emp1 values (7839, 'KING', 'PRESIDENT', null, str_to_date('1981-11-17', '%Y-%m-%d'), 5000, null, 10); -INSERT INTO emp1 values (7844, 'TURNER', 'SALESMAN', 7698, str_to_date('1981-09-08', '%Y-%m-%d'), 1500, 0, 30); -INSERT INTO emp1 values (7876, 'ADAMS', 'CLERK', 7788, str_to_date('1987-05-23', '%Y-%m-%d'), 1100, null, 20); -INSERT INTO emp1 values (7900, 'JAMES', 'CLERK', 7698, str_to_date('1981-12-03', '%Y-%m-%d'), 950, null, 30); -INSERT INTO emp1 values (7902, 'FORD', 'ANALYST', 7566, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); -INSERT INTO emp1 values (7934, 'MILLER', 'CLERK', 7782, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); -INSERT INTO emp1 values (8100, 'Eve', 'MANAGER', 7839, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01','%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); -drop table dsemp; -create table dsemp (id int, name varchar(20), leaderid int) partition by hash (id) partitions 3; -insert into dsemp values(1, 'A', '0'); -insert into dsemp values(2, 'AA', '1'); -insert into dsemp values(3, 'AB', '1'); -insert into dsemp values(4, 'ABA', '3'); -insert into dsemp values(5, 'AAA', '2'); -insert into dsemp values(6, 'ABB', '3'); -insert into dsemp values(7, 'AAA', '5'); -insert into dsemp values(8, 'AAA', '7'); -insert into dsemp values(9, 'AAAA', '5'); -insert into dsemp values(10, 'AAAB', '5'); -insert into dsemp values(11, 'AAAC', '5'); -insert into dsemp values(12, 'AAAA', '5'); -create table dsemp1 (id int, name varchar(20), leaderid int) partition by hash (leaderid) partitions 3; -insert into dsemp1 values(1, 'A', '0'); -insert into dsemp1 values(2, 'AA', '1'); -insert into dsemp1 values(3, 'AB', '1'); -insert into dsemp1 values(4, 'ABA', '3'); -insert into dsemp1 values(5, 'AAA', '2'); -insert into dsemp1 values(6, 'ABB', '3'); -insert into dsemp1 values(7, 'AAA', '5'); -insert into dsemp1 values(8, 'AAA', '7'); -insert into dsemp1 values(9, 'AAAA', '5'); -insert into dsemp1 values(10, 'AAAB', '5'); -insert into dsemp1 values(11, 'AAAC', '5'); -insert into dsemp1 values(12, 'AAAA', '5'); -result_format: 4 - -############################## -## section 1 聚合一张表是分布式表(disemp) -## section 2 聚合的两表是分布式表(disemp,emp1) -## section 3 聚合的两表在join条件上可能形成wise join(disemp,emp1) -## section 4 额外添加recursive member变化 -############################## - -############################## -## section 1 聚合一张表是分布式表(disemp) -############################## -## ======================================================================= -## Test Case 1: -## - recursive WITH Query: Nested Loop Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |29 |219 | -|1 | RECURSIVE UNION ALL| |29 |215 | -|2 | TABLE SCAN |e |1 |46 | -|3 | HASH JOIN | |28 |157 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 2: -## - recursive WITH Query: SORT MERGE Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |29 |219 | -|1 | RECURSIVE UNION ALL| |29 |215 | -|2 | TABLE SCAN |e |1 |46 | -|3 | HASH JOIN | |28 |157 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 3: -## - recursive WITH Query: Hash Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; - -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |29 |219 | -|1 | RECURSIVE UNION ALL| |29 |215 | -|2 | TABLE SCAN |e |1 |46 | -|3 | HASH JOIN | |28 |157 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno - FROM disemp e, disemp d - WHERE e.sal = d. sal - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e, disemp d - WHERE r.empno = e.mgr and e.sal = d.sal -) -SELECT ename, empno, mgr -FROM rw; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |47 |374 | -|1 | RECURSIVE UNION ALL| |47 |368 | -|2 | HASH JOIN | |17 |110 | -|3 | TABLE SCAN |d |14 |39 | -|4 | TABLE SCAN |e |14 |40 | -|5 | HASH JOIN | |30 |239 | -|6 | HASH JOIN | |17 |110 | -|7 | TABLE SCAN |d |14 |39 | -|8 | TABLE SCAN |e |14 |40 | -|9 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.SAL = d.SAL]), other_conds(nil) - 3 - output([d.SAL]), filter(nil), - access([d.SAL]), partitions(p0) - 4 - output([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - access([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 5 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 6 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.SAL = d.SAL]), other_conds(nil) - 7 - output([d.SAL]), filter(nil), - access([d.SAL]), partitions(p0) - 8 - output([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), partitions(p0) - 9 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH rw (ename, mgr, empno) AS -( - SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno - FROM disemp e, disemp d - WHERE e.sal = d. sal - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e, disemp d - WHERE r.empno = e.mgr and e.sal = d.sal -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| SMITH | 7369 | 7902 | -| ALLEN | 7499 | 7698 | -| WARD | 7521 | 7698 | -| WARD | 7521 | 7698 | -| JONES | 7566 | 7839 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| BLAKE | 7698 | 7839 | -| CLARK | 7782 | 7839 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| KING | 7839 | NULL | -| TURNER | 7844 | 7698 | -| ADAMS | 7876 | 7788 | -| JAMES | 7900 | 7698 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| MILLER | 7934 | 7782 | -| WARD | 7521 | 7698 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| JONES | 7566 | 7839 | -| BLAKE | 7698 | 7839 | -| CLARK | 7782 | 7839 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -| MILLER | 7934 | 7782 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| WARD | 7521 | 7698 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| TURNER | 7844 | 7698 | -| JAMES | 7900 | 7698 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| MILLER | 7934 | 7782 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 6: -## - recursive WITH Query: Hash Join without using hints -## Static input on build side and fits in memory -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.MGR = r.empno]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 7: -## - recursive WITH Query: Hash Join without using hints -## Static input on probe side and fits in memory -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## 测试8-15都是在测试join的顺序或者hint的顺序 -## Test Case 8: -## - recursive WITH Query: Join Order tests -## pump >< disemp >< emp1 -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, disemp e, emp1 n - WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, disemp e, emp1 n - WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 9: -## - recursive WITH Query: Join Order tests -## disemp >< pump >< emp1 -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, rw r, emp1 n - WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, rw r, emp1 n - WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 10: -## - recursive WITH Query: Join Order tests -## disemp >< emp1 >< pump -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, emp1 n, rw r - WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, emp1 n, rw r - WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 11: -## - recursive WITH Query: Join Order tests -## emp1 >< disemp >< pump -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 12: -## - recursive WITH Query: Join Order tests -## pump >< disemp -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 13: -## - recursive WITH Query: Join Order tests -## disemp >< pump -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.MGR = r.empno]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 14: -## - recursive WITH Query: Join Order tests -## emp1 >< pump >< disemp -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, rw r, disemp e - WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, rw r, disemp e - WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - - -## ======================================================================= -## Test Case 15: -## - recursive WITH Query: Join Order tests -## pump >< emp1 >< disemp -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, emp1 n, disemp e - WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, emp1 n, disemp e - WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - - -## ======================================================================= -## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr and e.empno < e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |10 |179 | -|1 | RECURSIVE UNION ALL| |10 |177 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |8 |127 | -|4 | TABLE SCAN |e |5 |42 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.EMPno], [e.ENAME]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.ENAME]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr and e.empno < e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -+--------+-------+------+ - -############################## -## section 2 聚合的两表是分布式表(disemp,emp1) -############################## -## -## emp1 也进行分布式化 -drop table emp1; -CREATE TABLE emp1 ( - empno VARCHAR(4000) NOT NULL, - ename VARCHAR(14), - job VARCHAR(9), - mgr VARCHAR(4000), - hiredate DATE, - sal NUMBER(7,2), - comm NUMBER(7,2), - deptno NUMBER(2) -); - -INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', '%Y-%m-%d'), 800, null, 20); -INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); -INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); -INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); -INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); -INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); -INSERT INTO emp1 values (7839, 'KING', 'PRESIDENT', null, str_to_date('1981-11-17', '%Y-%m-%d'), 5000, null, 10); -INSERT INTO emp1 values (7844, 'TURNER', 'SALESMAN', 7698, str_to_date('1981-09-08', '%Y-%m-%d'), 1500, 0, 30); -INSERT INTO emp1 values (7876, 'ADAMS', 'CLERK', 7788, str_to_date('1987-05-23', '%Y-%m-%d'), 1100, null, 20); -INSERT INTO emp1 values (7900, 'JAMES', 'CLERK', 7698, str_to_date('1981-12-03', '%Y-%m-%d'), 950, null, 30); -INSERT INTO emp1 values (7902, 'FORD', 'ANALYST', 7566, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); -INSERT INTO emp1 values (7934, 'MILLER', 'CLERK', 7782, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); -INSERT INTO emp1 values (8100, 'Eve', 'MANAGER', 7839, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01','%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); - -## ======================================================================= -## Test Case 1: -## - recursive WITH Query: Nested Loop Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 2: -## - recursive WITH Query: SORT MERGE Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 3: -## - recursive WITH Query: Hash Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch -## 与oracle的结果顺序不一样 -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno - FROM disemp e, disemp d - WHERE e.sal = d. sal - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e, disemp d - WHERE r.empno = e.mgr and e.sal = d.sal -) -SELECT ename, empno, mgr -FROM rw; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |47 |374 | -|1 | RECURSIVE UNION ALL| |47 |368 | -|2 | HASH JOIN | |17 |110 | -|3 | TABLE SCAN |d |14 |39 | -|4 | TABLE SCAN |e |14 |40 | -|5 | HASH JOIN | |30 |239 | -|6 | HASH JOIN | |17 |110 | -|7 | TABLE SCAN |d |14 |39 | -|8 | TABLE SCAN |e |14 |40 | -|9 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.SAL = d.SAL]), other_conds(nil) - 3 - output([d.SAL]), filter(nil), - access([d.SAL]), partitions(p0) - 4 - output([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - access([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 5 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 6 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.SAL = d.SAL]), other_conds(nil) - 7 - output([d.SAL]), filter(nil), - access([d.SAL]), partitions(p0) - 8 - output([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), partitions(p0) - 9 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno - FROM disemp e, disemp d - WHERE e.sal = d. sal - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e, disemp d - WHERE r.empno = e.mgr and e.sal = d.sal -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| SMITH | 7369 | 7902 | -| ALLEN | 7499 | 7698 | -| WARD | 7521 | 7698 | -| WARD | 7521 | 7698 | -| JONES | 7566 | 7839 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| BLAKE | 7698 | 7839 | -| CLARK | 7782 | 7839 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| KING | 7839 | NULL | -| TURNER | 7844 | 7698 | -| ADAMS | 7876 | 7788 | -| JAMES | 7900 | 7698 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| MILLER | 7934 | 7782 | -| WARD | 7521 | 7698 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| JONES | 7566 | 7839 | -| BLAKE | 7698 | 7839 | -| CLARK | 7782 | 7839 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -| MILLER | 7934 | 7782 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| WARD | 7521 | 7698 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| TURNER | 7844 | 7698 | -| JAMES | 7900 | 7698 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| MILLER | 7934 | 7782 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 6: -## - recursive WITH Query: Hash Join without using hints -## Static input on build side and fits in memory -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.MGR = r.empno]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 7: -## - recursive WITH Query: Hash Join without using hints -## Static input on probe side and fits in memory -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| BLAKE | 7698 | 7839 | -| CLARK | 7782 | 7839 | -| JONES | 7566 | 7839 | -| ALLEN | 7499 | 7698 | -| JAMES | 7900 | 7698 | -| MARTIN | 7654 | 7698 | -| TURNER | 7844 | 7698 | -| WARD | 7521 | 7698 | -| MILLER | 7934 | 7782 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## 测试8-15都是在测试join的顺序或者hint的顺序 -## Test Case 8: -## - recursive WITH Query: Join Order tests -## pump >< disemp >< emp1 -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, disemp e, emp1 n - WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, disemp e, emp1 n - WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 9: -## - recursive WITH Query: Join Order tests -## disemp >< pump >< emp1 -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, rw r, emp1 n - WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, rw r, emp1 n - WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 10: -## - recursive WITH Query: Join Order tests -## disemp >< emp1 >< pump -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, emp1 n, rw r - WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, emp1 n, rw r - WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 11: -## - recursive WITH Query: Join Order tests -## emp1 >< disemp >< pump -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 12: -## - recursive WITH Query: Join Order tests -## pump >< disemp -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 13: -## - recursive WITH Query: Join Order tests -## disemp >< pump -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.MGR = r.empno]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT /*+log_level(DEBUG)*/ ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 14: -## - recursive WITH Query: Join Order tests -## emp1 >< pump >< disemp -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, rw r, disemp e - WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, rw r, disemp e - WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 15: -## - recursive WITH Query: Join Order tests -## pump >< emp1 >< disemp -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, emp1 n, disemp e - WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, emp1 n, disemp e - WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr and e.empno < e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |10 |179 | -|1 | RECURSIVE UNION ALL| |10 |177 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |8 |127 | -|4 | TABLE SCAN |e |5 |42 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.EMPno], [e.ENAME]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.ENAME]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr and e.empno < e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -+--------+-------+------+ - - - -############################## -## section 3 聚合的两表在join条件上可能形成wise join(disemp,emp1) -############################## -## -## emp1 也进行分布式化 -drop table emp1; -CREATE TABLE emp1 ( - empno VARCHAR(4000) NOT NULL, - ename VARCHAR(14), - job VARCHAR(9), - mgr VARCHAR(4000), - hiredate DATE, - sal NUMBER(7,2), - comm NUMBER(7,2), - deptno NUMBER(2) -); - -INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', '%Y-%m-%d'), 800, null, 20); -INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); -INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); -INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); -INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); -INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); -INSERT INTO emp1 values (7839, 'KING', 'PRESIDENT', null, str_to_date('1981-11-17', '%Y-%m-%d'), 5000, null, 10); -INSERT INTO emp1 values (7844, 'TURNER', 'SALESMAN', 7698, str_to_date('1981-09-08', '%Y-%m-%d'), 1500, 0, 30); -INSERT INTO emp1 values (7876, 'ADAMS', 'CLERK', 7788, str_to_date('1987-05-23', '%Y-%m-%d'), 1100, null, 20); -INSERT INTO emp1 values (7900, 'JAMES', 'CLERK', 7698, str_to_date('1981-12-03', '%Y-%m-%d'), 950, null, 30); -INSERT INTO emp1 values (7902, 'FORD', 'ANALYST', 7566, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); -INSERT INTO emp1 values (7934, 'MILLER', 'CLERK', 7782, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); -INSERT INTO emp1 values (8100, 'Eve', 'MANAGER', 7839, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01','%Y-%m-%d'), 2850, null, 30); -INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); - -## ======================================================================= -## Test Case 1: -## - recursive WITH Query: Nested Loop Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 2: -## - recursive WITH Query: SORT MERGE Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 3: -## - recursive WITH Query: Hash Join -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT /*+log_level(DEBUG)*/ ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch -## 与oracle的结果顺序不一样 -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno - FROM disemp e, disemp d - WHERE e.sal = d. sal - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e, disemp d - WHERE r.empno = e.mgr and e.sal = d.sal -) -SELECT ename, empno, mgr -FROM rw; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |47 |374 | -|1 | RECURSIVE UNION ALL| |47 |368 | -|2 | HASH JOIN | |17 |110 | -|3 | TABLE SCAN |d |14 |39 | -|4 | TABLE SCAN |e |14 |40 | -|5 | HASH JOIN | |30 |239 | -|6 | HASH JOIN | |17 |110 | -|7 | TABLE SCAN |d |14 |39 | -|8 | TABLE SCAN |e |14 |40 | -|9 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.SAL = d.SAL]), other_conds(nil) - 3 - output([d.SAL]), filter(nil), - access([d.SAL]), partitions(p0) - 4 - output([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - access([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 5 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 6 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.SAL = d.SAL]), other_conds(nil) - 7 - output([d.SAL]), filter(nil), - access([d.SAL]), partitions(p0) - 8 - output([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), partitions(p0) - 9 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno - FROM disemp e, disemp d - WHERE e.sal = d. sal - UNION ALL - SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e, disemp d - WHERE r.empno = e.mgr and e.sal = d.sal -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| SMITH | 7369 | 7902 | -| ALLEN | 7499 | 7698 | -| WARD | 7521 | 7698 | -| WARD | 7521 | 7698 | -| JONES | 7566 | 7839 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| BLAKE | 7698 | 7839 | -| CLARK | 7782 | 7839 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| KING | 7839 | NULL | -| TURNER | 7844 | 7698 | -| ADAMS | 7876 | 7788 | -| JAMES | 7900 | 7698 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| MILLER | 7934 | 7782 | -| WARD | 7521 | 7698 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| JONES | 7566 | 7839 | -| BLAKE | 7698 | 7839 | -| CLARK | 7782 | 7839 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -| MILLER | 7934 | 7782 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| WARD | 7521 | 7698 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| TURNER | 7844 | 7698 | -| JAMES | 7900 | 7698 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| MILLER | 7934 | 7782 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 6: -## - recursive WITH Query: Hash Join without using hints -## Static input on build side and fits in memory -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.MGR = r.empno]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 7: -## - recursive WITH Query: Hash Join without using hints -## Static input on probe side and fits in memory -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## 测试8-15都是在测试join的顺序或者hint的顺序 -## Test Case 8: -## - recursive WITH Query: Join Order tests -## pump >< disemp >< emp1 -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, disemp e, emp1 n - WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, disemp e, emp1 n - WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 9: -## - recursive WITH Query: Join Order tests -## disemp >< pump >< emp1 -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, rw r, emp1 n - WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, rw r, emp1 n - WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 10: -## - recursive WITH Query: Join Order tests -## disemp >< emp1 >< pump -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, emp1 n, rw r - WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM disemp e, emp1 n, rw r - WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 11: -## - recursive WITH Query: Join Order tests -## emp1 >< disemp >< pump -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 12: -## - recursive WITH Query: Join Order tests -## pump >< disemp -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 13: -## - recursive WITH Query: Join Order tests -## disemp >< pump -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([e.MGR = r.empno]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno - FROM disemp e, rw r - WHERE e.mgr = r.empno -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| ALLEN | 7499 | 7698 | -| WARD | 7521 | 7698 | -| JAMES | 7900 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 14: -## - recursive WITH Query: Join Order tests -## emp1 >< pump >< disemp -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, rw r, disemp e - WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, rw r, disemp e - WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 15: -## - recursive WITH Query: Join Order tests -## pump >< emp1 >< disemp -## ======================================================================= -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, emp1 n, disemp e - WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================== -|ID|OPERATOR |NAME|EST. ROWS|COST| ----------------------------------------------- -|0 |SORT | |1 |308 | -|1 | SUBPLAN SCAN |rw |1 |307 | -|2 | RECURSIVE UNION ALL| |1 |307 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |167 | -|9 | HASH JOIN | |1 |93 | -|10| TABLE SCAN |e |5 |42 | -|11| TABLE SCAN |n |17 |39 | -|12| TABLE SCAN |r |1 |1 | -============================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([r.mgr = e.EMPno]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM rw r, emp1 n, disemp e - WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7499 | 7839 | 2 | 4450.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7521 | 7839 | 2 | 4100.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7654 | 7839 | 2 | 4100.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -## ======================================================================= -## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |28 |217 | -|1 | RECURSIVE UNION ALL| |28 |213 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |26 |156 | -|4 | TABLE SCAN |e |14 |39 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -+--------+-------+------+ - -## ======================================================================= -## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter -## ======================================================================= -explain -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr and e.empno < e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================================= -|ID|OPERATOR |NAME|EST. ROWS|COST| ---------------------------------------------- -|0 |SUBPLAN SCAN |rw |10 |179 | -|1 | RECURSIVE UNION ALL| |10 |177 | -|2 | TABLE SCAN |e |3 |46 | -|3 | HASH JOIN | |8 |127 | -|4 | TABLE SCAN |e |5 |42 | -|5 | TABLE SCAN |r |1 |1 | -============================================= - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), - access([rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), - access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.EMPno], [e.ENAME]), filter([e.EMPno < e.MGR]), - access([e.MGR], [e.EMPno], [e.ENAME]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (ename, mgr, empno) AS -( - SELECT ename, mgr, empno - FROM disemp e - WHERE job = 'PRESIDENT' - UNION ALL - SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno - FROM rw r, disemp e - WHERE r.empno = e.mgr and e.empno < e.mgr -) -SELECT ename, empno, mgr -FROM rw; -+--------+-------+------+ -| ename | empno | mgr | -+--------+-------+------+ -| KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | -| JONES | 7566 | 7839 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -+--------+-------+------+ - -############################## -## section 4 额外添加recursive member变化 -############################## -drop table t1; -create table t1(c1 int, c2 int, c3 int); -insert into t1 values(1, 2, 3); -insert into t1 values(4, 5, 6); -insert into t1 values(7, 8, 9); -insert into t1 values(10, 11, 12); -insert into t1 values(13, 14, 15); -insert into t1 values(16, 17, 18); -insert into t1 values(19, 20, 21); - -create table disemp1 ( - EMPno number, - ENAME varchar(30), - JOB varchar(30), - MGR number(4), - HIREDATE date, - SAL number(7,2), - COMM number(7,2), - DEPTNO number(2) -); - -INSERT INTO disemp1 values (7369,'SMITH','CLERK',7902, str_to_date('1980-11-17','%Y-%m-%d'),800,NULL, 20) ; -INSERT INTO disemp1 VALUES (7499, 'ALLEN','SALESMAN',7698,str_to_date('1981-01-20','%Y-%m-%d'),1600,300,30) ; -INSERT INTO disemp1 VALUES (7521,'WARD','SALESMAN',7698, str_to_date('1981-01-22','%Y-%m-%d'),1250, 500, 30) ; -INSERT INTO disemp1 VALUES (7566,'JONES','MANAGER',7839, str_to_date('1981-04-02','%Y-%m-%d'), 2975, NULL, 20) ; -INSERT INTO disemp1 VALUES (7654,'MARTIN','SALESMAN', 7698, str_to_date('1981-09-28','%Y-%m-%d'), 1250, 1400, 30) ; -INSERT INTO disemp1 VALUES (7698, 'BLAKE','MANAGER', 7839, str_to_date('1981-03-01','%Y-%m-%d'), 2850, NULL, 30) ; -INSERT INTO disemp1 VALUES (7782, 'CLARK','MANAGER', 7839, str_to_date('1981-06-09','%Y-%m-%d'), 2450, NULL, 10) ; -insert into disemp1 values (7788,'SCOTT','ANALYST', 7566, str_to_date('1987-04-19','%Y-%m-%d'), 3000, null, 20) ; -INSERT INTO disemp1 VALUES (7839, 'KING','PRESIDENT', NULL, str_to_date('1981-11-17','%Y-%m-%d'), 5000, NULL, 10) ; -INSERT INTO disemp1 VALUES (7844, 'TURNER','SALESMAN', 7698, str_to_date('1981-09-08','%Y-%m-%d'), 1500, 0, 30) ; -INSERT INTO disemp1 VALUES (7876, 'ADAMS','CLERK', 7788, str_to_date('1987-05-23','%Y-%m-%d'), 1100, NULL, 20) ; -INSERT INTO disemp1 VALUES (7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-11-03','%Y-%m-%d'), 950, NULL, 30) ; -INSERT INTO disemp1 VALUES (7902, 'FORD','ANALYST',7566, str_to_date('1981-11-03','%Y-%m-%d'), 3000, NULL, 20) ; -INSERT INTO disemp1 VALUES (7934,'MILLER','CLERK', 7782, str_to_date('1982-01-23','%Y-%m-%d'), 1300,NULL, 10) ; - -## 这个case 测试了subplan filter -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| =================================================== -|ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------- -|0 |SORT | |1 |344 | -|1 | SUBPLAN SCAN |rw |1 |344 | -|2 | RECURSIVE UNION ALL | |1 |344 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |205 | -|9 | NESTED-LOOP SEMI JOIN| |1 |133 | -|10| HASH JOIN | |1 |87 | -|11| TABLE SCAN |e |1 |42 | -|12| TABLE SCAN |n |17 |39 | -|13| MATERIAL | |7 |47 | -|14| SUBPLAN SCAN |VIEW1|7 |45 | -|15| MERGE GROUP BY | |7 |44 | -|16| SORT | |7 |43 | -|17| TABLE SCAN |t1 |7 |38 | -|18| TABLE SCAN |r |1 |1 | -=================================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - conds([e.EMPno > VIEW1.c1]), nl_params_(nil) - 10 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 11 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno = e.MGR]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 12 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 13 - output([VIEW1.c1]), filter(nil) - 14 - output([VIEW1.c1]), filter(nil), - access([VIEW1.c1]) - 15 - output([cast(t1.c1, DECIMAL(11, 0))]), filter(nil), - group([t1.c1]), agg_func(nil) - 16 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) - 17 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 18 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ - -explain -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) and e.empno in (select e.empno from disemp1) - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| =============================================================== -|ID|OPERATOR |NAME |EST. ROWS|COST| ---------------------------------------------------------------- -|0 |SORT | |1 |387 | -|1 | SUBPLAN SCAN |rw |1 |387 | -|2 | RECURSIVE UNION ALL | |1 |387 | -|3 | HASH JOIN | |1 |140 | -|4 | HASH JOIN | |1 |93 | -|5 | TABLE SCAN |e |5 |42 | -|6 | TABLE SCAN |n1 |17 |39 | -|7 | TABLE SCAN |n2 |17 |39 | -|8 | HASH JOIN | |1 |248 | -|9 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |176 | -|10| NESTED-LOOP SEMI JOIN | |1 |136 | -|11| HASH JOIN | |1 |89 | -|12| TABLE SCAN |e |1 |44 | -|13| TABLE SCAN |n |17 |39 | -|14| MATERIAL | |7 |47 | -|15| SUBPLAN SCAN |VIEW1 |7 |45 | -|16| MERGE GROUP BY | |7 |44 | -|17| SORT | |7 |43 | -|18| TABLE SCAN |t1 |7 |38 | -|19| MATERIAL | |14 |41 | -|20| TABLE SCAN |disemp1|14 |38 | -|21| TABLE SCAN |r |1 |1 | -=============================================================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) - 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), - access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) - 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), - equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) - 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), - equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) - 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), - access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) - 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), - access([n1.empno]), partitions(p0) - 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), - access([n2.empno]), partitions(p0) - 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), - equal_conds([e.EMPno = r.mgr]), other_conds(nil) - 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - conds(nil), nl_params_(nil) - 10 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - conds([e.EMPno > VIEW1.c1]), nl_params_(nil) - 11 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), - equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) - 12 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno = e.MGR], [e.EMPno = e.EMPno]), - access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) - 13 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), - access([n.empno]), partitions(p0) - 14 - output([VIEW1.c1]), filter(nil) - 15 - output([VIEW1.c1]), filter(nil), - access([VIEW1.c1]) - 16 - output([cast(t1.c1, DECIMAL(11, 0))]), filter(nil), - group([t1.c1]), agg_func(nil) - 17 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) - 18 - output([t1.c1]), filter(nil), - access([t1.c1]), partitions(p0) - 19 - output([1]), filter(nil) - 20 - output([1]), filter(nil), - access([disemp1.__pk_increment]), partitions(p0) - 21 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), - access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) - | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH rw (empno, mgr, iters, sal) AS - ( - SELECT e.empno, e.mgr, 1, e.sal - FROM disemp e, emp1 n1, emp1 n2 - WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr - UNION ALL - SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal - FROM emp1 n, disemp e, rw r - WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) and e.empno in (select e.empno from disemp1) - ) - SELECT * - FROM rw - ORDER BY 1, 3; -+-------+------+-------+---------+ -| empno | mgr | iters | sal | -+-------+------+-------+---------+ -| 7369 | 7902 | 1 | 800.00 | -| 7499 | 7698 | 1 | 1600.00 | -| 7521 | 7698 | 1 | 1250.00 | -| 7566 | 7839 | 1 | 2975.00 | -| 7654 | 7698 | 1 | 1250.00 | -| 7698 | 7839 | 1 | 2850.00 | -| 7782 | 7839 | 1 | 2450.00 | -+-------+------+-------+---------+ diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_bug_mysql.result b/test/mysql_test/test_suite/with_clause/r/mysql/recursive_bug_mysql.result deleted file mode 100644 index 369724821..000000000 --- a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_bug_mysql.result +++ /dev/null @@ -1,14 +0,0 @@ -with cte1(c1, c2) as - (select 1, '0' from dual - union all select 2, '1' from dual - ), -cte2(c1, c2) as - (select '0', 1 from dual - union all select cte1.c2, cte1.c1 from cte2, cte1 where 10 = cte2.c1) -select * from cte1; -+------+------+ -| c1 | c2 | -+------+------+ -| 1 | 0 | -| 2 | 1 | -+------+------+ \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_optimize_mysql.result b/test/mysql_test/test_suite/with_clause/r/mysql/recursive_optimize_mysql.result deleted file mode 100644 index 13bb6932c..000000000 --- a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_optimize_mysql.result +++ /dev/null @@ -1,102 +0,0 @@ -drop database if exists ctetest; -create database ctetest; -use ctetest; -create table EMP ( -EMPno number, -ENAME varchar(30), -JOB varchar(30), -MGR number(4), -HIREDATE date, -SAL number(7,2), -COMM number(7,2), -DEPTNO number(2) -) ; -create table DEPT( -DEPTNO number(2), -DNAME char(45), -LOC varchar(39) -) ; -insert into EMP values (7369,'SMITH','CLERK',7902, str_to_date('17-DEC-80','%d-%b-%Y'),800,NULL, 20) ; -INSERT INTO EMP VALUES (7499, 'ALLEN','SALESMAN',7698,str_to_date('20-FEB-81','%d-%b-%Y'),1600,300,30) ; -INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698, str_to_date('22-FEB-81','%d-%b-%Y'),1250, 500, 30) ; -INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839, str_to_date('02-APR-81','%d-%b-%Y'), 2975, NULL, 20) ; -INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN', 7698, str_to_date('28-SEP-81','%d-%b-%Y'), 1250, 1400, 30) ; -INSERT INTO EMP VALUES (7698, 'BLAKE','MANAGER', 7839, str_to_date('01-MAY-81','%d-%b-%Y'), 2850, NULL, 30) ; -INSERT INTO EMP VALUES (7782, 'CLARK','MANAGER', 7839, str_to_date('09-JUN-81','%d-%b-%Y'), 2450, NULL, 10) ; -insert into EMP values (7788,'SCOTT','ANALYST', 7566, str_to_date('19-APR-87','%d-%b-%Y'), 3000, null, 20) ; -INSERT INTO EMP VALUES (7839, 'KING','PRESIDENT', NULL, str_to_date('17-NOV-81','%d-%b-%Y'), 5000, NULL, 10) ; -INSERT INTO EMP VALUES (7844, 'TURNER','SALESMAN', 7698, str_to_date('08-SEP-81','%d-%b-%Y'), 1500, 0, 30) ; -INSERT INTO EMP VALUES(7876, 'ADAMS','CLERK', 7788, str_to_date('23-MAY-87','%d-%b-%Y'), 1100, NULL, 20) ; -INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('03-DEC-81','%d-%b-%Y'), 950, NULL, 30) ; -INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('03-DEC-81','%d-%b-%Y'), 3000, NULL, 20) ; -INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('23-JAN-82','%d-%b-%Y'), 1300,NULL, 10) ; -result_format: 4 - -## ======================================================================= -## Test Case 1: -## - recursive WITH Query: Optimization on query with outside filter. -## Predicate pushdown optimization on static value job. -## The plan should reflect optimization or development can provide -## parameter to show that pushdown optimization happened for init branch -## ======================================================================= -explain basic -WITH rw (ename, mgr, empno, job) AS -( - SELECT ename, mgr, empno, job - FROM emp e - UNION ALL - SELECT e.ename, e.mgr, e.empno, e.job - FROM rw r, emp e - WHERE r.empno = e.mgr -) -SELECT ename, empno, mgr, job -FROM rw -WHERE job = 'PRESIDENT' ; -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| Query Plan | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ============================== -|ID|OPERATOR |NAME| ------------------------------- -|0 |SUBPLAN SCAN |rw | -|1 | RECURSIVE UNION ALL| | -|2 | TABLE SCAN |e | -|3 | HASH JOIN | | -|4 | TABLE SCAN |e | -|5 | TABLE SCAN |r | -============================== - -Outputs & filters: -------------------------------------- - 0 - output([rw.ename], [rw.empno], [rw.mgr], [rw.job]), filter([rw.job = 'PRESIDENT']), - access([rw.job], [rw.ename], [rw.empno], [rw.mgr]) - 1 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) - 2 - output([e.ENAME], [e.MGR], [e.EMPno], [e.JOB]), filter(nil), - access([e.ENAME], [e.MGR], [e.EMPno], [e.JOB]), partitions(p0) - 3 - output([e.ENAME], [e.MGR], [e.EMPno], [e.JOB]), filter(nil), - equal_conds([r.empno = e.MGR]), other_conds(nil) - 4 - output([e.MGR], [e.ENAME], [e.EMPno], [e.JOB]), filter(nil), - access([e.MGR], [e.ENAME], [e.EMPno], [e.JOB]), partitions(p0) - 5 - output([r.empno]), filter(nil), - access([r.empno]), partitions(nil) - | -+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -WITH rw (ename, mgr, empno, job) AS -( - SELECT ename, mgr, empno, job - FROM emp e - UNION ALL - SELECT e.ename, e.mgr, e.empno, e.job - FROM rw r, emp e - WHERE r.empno = e.mgr -) -SELECT /*+ :HINT: */ ename, empno, mgr, job -FROM rw -WHERE job = 'PRESIDENT' ; -+-------+-------+------+-----------+ -| ename | empno | mgr | job | -+-------+-------+------+-----------+ -| KING | 7839 | NULL | PRESIDENT | -+-------+-------+------+-----------+ - diff --git a/test/mysql_test/test_suite/with_clause/t/recursive_bug_mysql.test b/test/mysql_test/test_suite/with_clause/t/recursive_bug_mysql.test deleted file mode 100644 index 5fe91c67b..000000000 --- a/test/mysql_test/test_suite/with_clause/t/recursive_bug_mysql.test +++ /dev/null @@ -1,8 +0,0 @@ -with cte1(c1, c2) as - (select 1, '0' from dual - union all select 2, '1' from dual - ), -cte2(c1, c2) as - (select '0', 1 from dual - union all select cte1.c2, cte1.c1 from cte2, cte1 where 10 = cte2.c1) -select * from cte1; \ No newline at end of file diff --git a/tools/deploy/.gitignore b/tools/deploy/.gitignore new file mode 100644 index 000000000..45ee48f27 --- /dev/null +++ b/tools/deploy/.gitignore @@ -0,0 +1,6 @@ +/mysqltest +/mysqltest.down +/ob1mysql.sh +bquery/* +obclient +obclient.down diff --git a/test/mysql_test/test_suite/alter/r/mysql/alter_log_archive_option.result b/tools/deploy/mysql_test/test_suite/alter/r/mysql/alter_log_archive_option.result similarity index 95% rename from test/mysql_test/test_suite/alter/r/mysql/alter_log_archive_option.result rename to tools/deploy/mysql_test/test_suite/alter/r/mysql/alter_log_archive_option.result index d921b07b4..44653de6f 100644 --- a/test/mysql_test/test_suite/alter/r/mysql/alter_log_archive_option.result +++ b/tools/deploy/mysql_test/test_suite/alter/r/mysql/alter_log_archive_option.result @@ -1,5 +1,3 @@ -connect obsys1,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys1; alter system set backup_log_archive_option='MANDATORY'; alter system set backup_log_archive_option='MANDATORY compression=disable'; alter system set backup_log_archive_option='MANDATORY compression =enable'; diff --git a/test/mysql_test/test_suite/alter/t/alter_log_archive_option.test b/tools/deploy/mysql_test/test_suite/alter/t/alter_log_archive_option.test similarity index 96% rename from test/mysql_test/test_suite/alter/t/alter_log_archive_option.test rename to tools/deploy/mysql_test/test_suite/alter/t/alter_log_archive_option.test index 538ccee1f..6b833a0ef 100644 --- a/test/mysql_test/test_suite/alter/t/alter_log_archive_option.test +++ b/tools/deploy/mysql_test/test_suite/alter/t/alter_log_archive_option.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: yaoying.yyy +# owner group: trans +# description: test alter system set backup_log_archive_option connect (obsys1,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection obsys1; diff --git a/tools/deploy/mysql_test/test_suite/executor/r/mysql/full_join.result b/tools/deploy/mysql_test/test_suite/executor/r/mysql/full_join.result new file mode 100644 index 000000000..ebbf58242 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/executor/r/mysql/full_join.result @@ -0,0 +1,2452 @@ +drop table if exists t_h3_01_20; +drop table if exists t_h3_05_24; +drop table if exists t_h3_09_28; +drop table if exists t_h5_01_20; +drop table if exists t_h5_05_24; +drop table if exists t_h5_09_28; +drop table if exists t_r4_01_20; +drop table if exists t_r4_05_24; +drop table if exists t_r4_09_28; +drop table if exists t_r5_01_20; +drop table if exists t_r5_05_24; +drop table if exists t_r5_09_28; +drop table if exists t_h3_r4_01_20; +drop table if exists t_h3_r5_09_28; +drop table if exists t_h5_r4_01_20; +drop table if exists t_h5_r5_09_28; +drop table if exists t_refered; +drop table if exists t_h5_int; +drop table if exists t_r4_int; +drop table if exists t_r4_date; +drop table if exists t_r4_datetime; +drop table if exists t_r4_timestamp; +drop table if exists t_h5_r4_int_int; +drop table if exists t_h5_r4_int_int_datetime; +drop table if exists t_r4_h2_date_int; +drop table if exists t_r4_h3_date_int; +drop table if exists t_r4_h3_date_bigint; +drop table if exists tt; +drop table if exists t_many_range_part; +create table t_h3_01_20(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; +create table t_h3_05_24(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; +create table t_h3_09_28(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 3; +create table t_h5_01_20(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; +create table t_h5_05_24(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; +create table t_h5_09_28(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; +create table t_r4_01_20(a int, b int, c datetime, primary key (a,b)) +partition by range columns(a) +( +partition p6 values less than (6), +partition p11 values less than (11), +partition p16 values less than (16), +partition pm values less than (MAXVALUE) +); +create table t_r4_05_24(a int, b int, c datetime, primary key (a)) +partition by range columns(a) +( +partition p10 values less than (10), +partition p15 values less than (15), +partition p20 values less than (20), +partition pm values less than (MAXVALUE) +); +create table t_r4_09_28(a int, b int, c datetime, primary key (a)) +partition by range columns(a) +( +partition p14 values less than (14), +partition p19 values less than (19), +partition p24 values less than (24), +partition pm values less than (MAXVALUE) +); +create table t_r5_01_20(a int, b int, c datetime, primary key (a)) +partition by range columns(a) +( +partition p5 values less than (5), +partition p9 values less than (9), +partition p13 values less than (13), +partition p17 values less than (17), +partition pm values less than (MAXVALUE) +); +create table t_r5_05_24(a int, b int, c datetime, primary key (a)) +partition by range columns(a) +( +partition p9 values less than (9), +partition p13 values less than (13), +partition p17 values less than (17), +partition p21 values less than (21), +partition pm values less than (MAXVALUE) +); +create table t_r5_09_28(a int, b int, c datetime, primary key (a,b)) +partition by range columns(a) +( +partition p13 values less than (13), +partition p17 values less than (17), +partition p21 values less than (21), +partition p25 values less than (25), +partition pm values less than (MAXVALUE) +); +create table t_h3_r4_01_20(a int, b int, c int, d int, e datetime, primary key (a, b, c)) +partition by hash(a) +subpartition by range(b) +subpartition template ( +subpartition p6 values less than (6), +subpartition p11 values less than (11), +subpartition p16 values less than (16), +subpartition pm values less than (MAXVALUE) +) +partitions 3; +create table t_h3_r5_09_28(a int, b int, c int, d int, e datetime, primary key (a, b)) +partition by hash(a) +subpartition by range(b) +subpartition template ( +subpartition p13 values less than (13), +subpartition p17 values less than (17), +subpartition p21 values less than (21), +subpartition p25 values less than (25), +subpartition pm values less than (MAXVALUE) +) +partitions 3; +create table t_h5_r4_01_20(a int, b int, c int, d int, e datetime, primary key (a, b)) +partition by hash(a) +subpartition by range(b) +subpartition template ( +subpartition p6 values less than (6), +subpartition p11 values less than (11), +subpartition p16 values less than (16), +subpartition pm values less than (MAXVALUE) +) +partitions 5; +create table t_h5_r5_09_28(a int, b int, c int, d int, e datetime, primary key (a, b, c)) +partition by hash(a) +subpartition by range(b) +subpartition template ( +subpartition p13 values less than (13), +subpartition p17 values less than (17), +subpartition p21 values less than (21), +subpartition p25 values less than (25), +subpartition pm values less than (MAXVALUE) +) +partitions 5; +create table t_refered(a int, aa bigint, b int unsigned, bb bigint unsigned, c datetime, d date, e timestamp, primary key (a)) partition by hash(a) partitions 3; +create table t_h5_int(a int, b int, c datetime, primary key (a)) partition by hash(a) partitions 5; +create table t_r4_int(a int, b int, c date, primary key (a,b)) +partition by range columns(a) +( +partition p6 values less than (6), +partition p11 values less than (11), +partition p16 values less than (16), +partition pm values less than (MAXVALUE) +); +create table t_r4_date(a int, b int, c date, primary key (b,c)) +partition by range columns(c) +( +partition p11 values less than ("20161101"), +partition p12 values less than ("20161201"), +partition p171 values less than ("20170101"), +partition pm values less than (MAXVALUE) +); +create table t_r4_datetime(a int, b int, c datetime, primary key (b,c)) +partition by range columns(c) +( +partition p11 values less than ("20161101"), +partition p12 values less than ("20161201"), +partition p171 values less than ("20170101"), +partition pm values less than (MAXVALUE) +); +create table t_r4_timestamp(a int, b int, c timestamp, primary key (a)) +partition by range columns(a) +( +partition p11 values less than (10), +partition p12 values less than (100), +partition p171 values less than (1000), +partition pm values less than (MAXVALUE) +); +create table t_h5_r4_int_int(a int, b int, c datetime, primary key (a, b)) +partition by hash(a) +subpartition by range columns(b) +subpartition template ( +subpartition p6 values less than (6), +subpartition p11 values less than (11), +subpartition p16 values less than (16), +subpartition pm values less than (MAXVALUE) +); +create table t_r4_h3_date_int(a date, b int, c int, primary key (a, b)) +partition by range columns(a) subpartition by hash(b) subpartitions 3 +( +partition p11 values less than ("20161101"), +partition p12 values less than ("20161201"), +partition p171 values less than ("20170101"), +partition pm values less than (MAXVALUE) +); +create table t_r4_h2_date_int(a date, b int, c int, primary key (a, b)) +partition by range columns(a) subpartition by hash(b) subpartitions 2 +( +partition p11 values less than ("20161101"), +partition p12 values less than ("20161201"), +partition p171 values less than ("20170101"), +partition pm values less than (MAXVALUE) +); +create table t_r4_h3_date_bigint(a date, b bigint, c int, primary key (a, b)) +partition by range columns(a) subpartition by hash(b) subpartitions 3 +( +partition p11 values less than ("20161101"), +partition p12 values less than ("20161201"), +partition p171 values less than ("20170101"), +partition pm values less than (MAXVALUE) +); +create table t_h5_r4_int_int_datetime(a int, b int, c datetime, primary key (a, b, c)) +partition by hash(a) +subpartition by range columns(b, c) +subpartition template ( +subpartition p6 values less than (6, "20170510"), +subpartition p11 values less than (11, "20170510"), +subpartition p16 values less than (16, "20170510"), +subpartition pm values less than (MAXVALUE, MAXVALUE) +); +create table tt (a int, b int, c date, primary key(a, b)); +insert into t_h3_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), +( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); +insert into t_h3_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); +insert into t_h3_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), +(25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); +insert into t_h5_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), +( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); +insert into t_h5_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); +insert into t_h5_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), +(25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); +insert into t_r4_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), +( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); +insert into t_r4_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); +insert into t_r4_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), +(25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); +insert into t_r5_01_20 values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), +( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120); +insert into t_r5_05_24 values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); +insert into t_r5_09_28 values ( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), +(25, 25, 20161125), (26, 26, 20161126), (27, 27, 20161127), (28, 28, 20161128); +insert into t_h3_r4_01_20 values ( 1, 1, 1, 1, 20161101), ( 2, 2, 2, 2, 20161102), ( 3, 3, 3, 3, 20161103), ( 4, 4, 4, 4, 20161104), +( 5, 5, 5, 5, 20161105), ( 6, 6, 6, 6, 20161106), ( 7, 7, 7, 7, 20161107), ( 8, 8, 8, 8, 20161108), +( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), +(13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), +(17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120); +insert into t_h3_r5_09_28 values ( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), +(13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), +(17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120), +(21, 21, 21, 21, 20161121), (22, 22, 22, 22, 20161122), (23, 23, 23, 23, 20161123), (24, 24, 24, 24, 20161124), +(25, 25, 25, 25, 20161125), (26, 26, 26, 26, 20161126), (27, 27, 27, 27, 20161127), (28, 28, 28, 28, 20161128); +insert into t_h5_r4_01_20 values ( 1, 1, 1, 1, 20161101), ( 2, 2, 2, 2, 20161102), ( 3, 3, 3, 3, 20161103), ( 4, 4, 4, 4, 20161104), +( 5, 5, 5, 5, 20161105), ( 6, 6, 6, 6, 20161106), ( 7, 7, 7, 7, 20161107), ( 8, 8, 8, 8, 20161108), +( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), +(13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), +(17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120); +insert into t_h5_r5_09_28 values ( 9, 9, 9, 9, 20161109), (10, 10, 10, 10, 20161110), (11, 11, 11, 11, 20161111), (12, 12, 12, 12, 20161112), +(13, 13, 13, 13, 20161113), (14, 14, 14, 14, 20161114), (15, 15, 15, 15, 20161115), (16, 16, 16, 16, 20161116), +(17, 17, 17, 17, 20161117), (18, 18, 18, 18, 20161118), (19, 19, 19, 19, 20161119), (20, 20, 20, 20, 20161120), +(21, 21, 21, 21, 20161121), (22, 22, 22, 22, 20161122), (23, 23, 23, 23, 20161123), (24, 24, 24, 24, 20161124), +(25, 25, 25, 25, 20161125), (26, 26, 26, 26, 20161126), (27, 27, 27, 27, 20161127), (28, 28, 28, 28, 20161128); +insert into t_refered values ( 1, 1, 1, 1, 20161101, 20161101, 20161101), ( 2, 2, 2, 2, 20161101, 20161102, 20161102), ( 3, 3, 3, 3, 20161103, 20161101, 20161103), ( 4, 4, 4, 4, 20161104, 20161101, 20161104); +insert into t_h5_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), ( 5, 5, 20161105); +insert into t_r4_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104), ( 5, 5, 20161105); +insert into t_r4_date values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); +insert into t_r4_datetime values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); +insert into t_r4_timestamp values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); +insert into t_h5_r4_int_int values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); +insert into t_h5_r4_int_int_datetime values ( 1, 1, 20161101), ( 2, 2, 20161102), ( 3, 3, 20161103), ( 4, 4, 20161104); +insert into tt values ( 5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124), +(5, 6, 20161105), ( 6, 7, 20161106), ( 7, 8, 20161107), ( 8, 9, 20161108), +(9, 10, 20161109), (10, 11, 20161110), (11, 12, 20161111), (12, 13, 20161112), +(13, 14, 20161113), (14, 15, 20161114), (15, 16, 20161115), (16, 17, 20161116), +(17, 18, 20161117), (18, 19, 20161118), (19, 20, 20161119), (20, 21, 20161120), +(21, 22, 20161121), (22, 23, 20161122), (23, 24, 20161123), (24, 25, 20161124); +insert into t_r4_h2_date_int(b, c, a) values (5, 5, 20161105), ( 6, 6, 20161106), ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123), (24, 24, 20161124); +insert into t_r4_h3_date_int(b, c, a) values ( 7, 7, 20161107), ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122), (23, 23, 20161123); +insert into t_r4_h3_date_bigint(b, c, a) values ( 8, 8, 20161108), +( 9, 9, 20161109), (10, 10, 20161110), (11, 11, 20161111), (12, 12, 20161112), +(13, 13, 20161113), (14, 14, 20161114), (15, 15, 20161115), (16, 16, 20161116), +(17, 17, 20161117), (18, 18, 20161118), (19, 19, 20161119), (20, 20, 20161120), +(21, 21, 20161121), (22, 22, 20161122); +create table t_many_range_part(a int, b int, primary key (a)) +partition by range columns(a) +( +partition p05 values less than (5), +partition p10 values less than (10), +partition p15 values less than (15), +partition p20 values less than (20), +partition p25 values less than (25), +partition p30 values less than (30), +partition p35 values less than (35), +partition p40 values less than (40), +partition p45 values less than (45), +partition p50 values less than (50), +partition p55 values less than (55), +partition p60 values less than (60), +partition p65 values less than (65), +partition p70 values less than (70), +partition p75 values less than (75), +partition p80 values less than (80), +partition p85 values less than (85), +partition pm values less than (MAXVALUE) +); +insert into t_many_range_part values (01, 01), (02, 02), (03, 03), (04, 04), (05, 05), (06, 06), (07, 07), (08, 08), (09, 09), (10, 10), +(11, 11), (12, 12), (13, 13), (14, 14), (15, 15), (16, 16), (17, 17), (18, 18), (19, 19), (20, 20), +(21, 21), (22, 22), (23, 23), (24, 24), (25, 25), (26, 26), (27, 27), (28, 28), (29, 29), (30, 30), +(31, 31), (32, 32), (33, 33), (34, 34), (35, 35), (36, 36), (37, 37), (38, 38), (39, 39), (40, 40), +(41, 41), (42, 42), (43, 43), (44, 44), (45, 45), (46, 46), (47, 47), (48, 48), (49, 49), (50, 50); +set @@ob_enable_transformation=0; +result_format: 4 +explain_protocol: 2 +################################ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |21 |119 | +|1 | EXCHANGE OUT DISTR |:EX10000|21 |117 | +|2 | SORT | |21 |117 | +|3 | PX PARTITION ITERATOR | |21 |94 | +|4 | MERGE FULL OUTER JOIN | |21 |94 | +|5 | TABLE SCAN |t1 |18 |39 | +|6 | TABLE SCAN |t2 |21 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |107 | +|1 | EXCHANGE OUT DISTR |:EX10000|10 |106 | +|2 | SORT | |10 |106 | +|3 | PX PARTITION ITERATOR | |10 |96 | +|4 | MERGE FULL OUTER JOIN | |10 |96 | +|5 | TABLE SCAN |t1 |20 |39 | +|6 | TABLE SCAN |t2 |20 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |120 | +|1 | EXCHANGE OUT DISTR |:EX10000|20 |118 | +|2 | SORT | |20 |118 | +|3 | PX PARTITION ITERATOR | |20 |97 | +|4 | MERGE FULL OUTER JOIN | |20 |97 | +|5 | TABLE SCAN |t1 |20 |40 | +|6 | TABLE SCAN |t2 |20 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 5 | +| 6 | 6 | +| 7 | 7 | +| 8 | 8 | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |108 | +|1 | EXCHANGE OUT DISTR |:EX10000|10 |107 | +|2 | SORT | |10 |107 | +|3 | PX PARTITION ITERATOR | |10 |97 | +|4 | MERGE FULL OUTER JOIN | |10 |97 | +|5 | TABLE SCAN |t1 |20 |40 | +|6 | TABLE SCAN |t2 |20 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | +| 21 | 21 | +| 22 | 22 | +| 23 | 23 | +| 24 | 24 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |21 |119 | +|1 | EXCHANGE OUT DISTR |:EX10000|21 |117 | +|2 | SORT | |21 |117 | +|3 | PX PARTITION ITERATOR | |21 |94 | +|4 | MERGE FULL OUTER JOIN | |21 |94 | +|5 | TABLE SCAN |t1 |18 |39 | +|6 | TABLE SCAN |t2 |21 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |107 | +|1 | EXCHANGE OUT DISTR |:EX10000|10 |106 | +|2 | SORT | |10 |106 | +|3 | PX PARTITION ITERATOR | |10 |96 | +|4 | MERGE FULL OUTER JOIN | |10 |96 | +|5 | TABLE SCAN |t1 |20 |39 | +|6 | TABLE SCAN |t2 |20 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |120 | +|1 | EXCHANGE OUT DISTR |:EX10000|20 |118 | +|2 | SORT | |20 |118 | +|3 | PX PARTITION ITERATOR | |20 |97 | +|4 | MERGE FULL OUTER JOIN | |20 |97 | +|5 | TABLE SCAN |t1 |20 |40 | +|6 | TABLE SCAN |t2 |20 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 5 | +| 6 | 6 | +| 7 | 7 | +| 8 | 8 | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |108 | +|1 | EXCHANGE OUT DISTR |:EX10000|10 |107 | +|2 | SORT | |10 |107 | +|3 | PX PARTITION ITERATOR | |10 |97 | +|4 | MERGE FULL OUTER JOIN | |10 |97 | +|5 | TABLE SCAN |t1 |20 |40 | +|6 | TABLE SCAN |t2 |20 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | +| 21 | 21 | +| 22 | 22 | +| 23 | 23 | +| 24 | 24 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |21 |140 | +|1 | EXCHANGE OUT DISTR |:EX10000|21 |138 | +|2 | SORT | |21 |138 | +|3 | PX PARTITION ITERATOR | |21 |116 | +|4 | HASH FULL OUTER JOIN | |21 |116 | +|5 | TABLE SCAN |t1 |18 |39 | +|6 | TABLE SCAN |t2 |21 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |130 | +|1 | EXCHANGE OUT DISTR |:EX10000|10 |129 | +|2 | SORT | |10 |129 | +|3 | PX PARTITION ITERATOR | |10 |119 | +|4 | HASH FULL OUTER JOIN | |10 |119 | +|5 | TABLE SCAN |t1 |20 |39 | +|6 | TABLE SCAN |t2 |20 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |143 | +|1 | EXCHANGE OUT DISTR |:EX10000|20 |141 | +|2 | SORT | |20 |141 | +|3 | PX PARTITION ITERATOR | |20 |120 | +|4 | HASH FULL OUTER JOIN | |20 |120 | +|5 | TABLE SCAN |t1 |20 |40 | +|6 | TABLE SCAN |t2 |20 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r4_01_20 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 5 | +| 6 | 6 | +| 7 | 7 | +| 8 | 8 | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |131 | +|1 | EXCHANGE OUT DISTR |:EX10000|10 |130 | +|2 | SORT | |10 |130 | +|3 | PX PARTITION ITERATOR | |10 |120 | +|4 | HASH FULL OUTER JOIN | |10 |120 | +|5 | TABLE SCAN |t1 |20 |40 | +|6 | TABLE SCAN |t2 |20 |40 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil) + 4 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 6 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_09_28 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 13 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | +| 21 | 21 | +| 22 | 22 | +| 23 | 23 | +| 24 | 24 | ++----+----+ + +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |136 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |134 | +|2 | SORT | |20 |134 | +|3 | MERGE FULL OUTER JOIN | |20 |112 | +|4 | EXCHANGE IN MERGE SORT DISTR| |18 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|18 |39 | +|6 | PX PARTITION ITERATOR | |18 |39 | +|7 | TABLE SCAN |t1 |18 |39 | +|8 | SORT | |20 |57 | +|9 | PX PARTITION ITERATOR | |20 |39 | +|10| TABLE SCAN |t2 |20 |39 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), Local Order + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 8 - output([t2.a]), filter(nil), sort_keys([t2.a, ASC]), local merge sort + 9 - output([t2.a]), filter(nil) + 10 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |11 |127 | +|1 | EXCHANGE OUT DISTR |:EX10001|11 |126 | +|2 | SORT | |11 |126 | +|3 | MERGE FULL OUTER JOIN | |11 |116 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | SORT | |21 |58 | +|9 | PX PARTITION ITERATOR | |21 |40 | +|10| TABLE SCAN |t2 |21 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), Local Order + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil), sort_keys([t2.a, ASC]), local merge sort + 9 - output([t2.a]), filter(nil) + 10 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |121 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |119 | +|2 | SORT | |20 |119 | +|3 | MERGE FULL OUTER JOIN | |20 |98 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |41 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |40 | +|6 | PX PARTITION ITERATOR | |20 |40 | +|7 | TABLE SCAN |t1 |20 |40 | +|8 | PX PARTITION ITERATOR | |20 |40 | +|9 | TABLE SCAN |t2 |20 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |108 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |107 | +|2 | SORT | |10 |107 | +|3 | MERGE FULL OUTER JOIN | |10 |97 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | PX PARTITION ITERATOR | |20 |39 | +|9 | TABLE SCAN |t2 |20 |39 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |118 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |116 | +|2 | SORT | |20 |116 | +|3 | MERGE FULL OUTER JOIN | |20 |95 | +|4 | EXCHANGE IN MERGE SORT DISTR| |18 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|18 |39 | +|6 | PX PARTITION ITERATOR | |18 |39 | +|7 | TABLE SCAN |t1 |18 |39 | +|8 | PX PARTITION ITERATOR | |20 |39 | +|9 | TABLE SCAN |t2 |20 |39 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), Local Order + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |108 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |107 | +|2 | SORT | |10 |107 | +|3 | MERGE FULL OUTER JOIN | |10 |97 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | PX PARTITION ITERATOR | |20 |40 | +|9 | TABLE SCAN |t2 |20 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), Local Order + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |21 |141 | +|1 | EXCHANGE OUT DISTR |:EX10001|21 |139 | +|2 | SORT | |21 |139 | +|3 | MERGE FULL OUTER JOIN | |21 |116 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |41 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |40 | +|6 | PX PARTITION ITERATOR | |20 |40 | +|7 | TABLE SCAN |t1 |20 |40 | +|8 | SORT | |21 |58 | +|9 | PX PARTITION ITERATOR | |21 |40 | +|10| TABLE SCAN |t2 |21 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 8 - output([t2.a]), filter(nil), sort_keys([t2.a, ASC]), local merge sort + 9 - output([t2.a]), filter(nil) + 10 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |125 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |124 | +|2 | SORT | |10 |124 | +|3 | MERGE FULL OUTER JOIN | |10 |114 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | SORT | |20 |57 | +|9 | PX PARTITION ITERATOR | |20 |39 | +|10| TABLE SCAN |t2 |20 |39 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil), sort_keys([t2.a, ASC]), local merge sort + 9 - output([t2.a]), filter(nil) + 10 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_nl(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |136 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |134 | +|2 | SORT | |20 |134 | +|3 | MERGE FULL OUTER JOIN | |20 |112 | +|4 | EXCHANGE IN MERGE SORT DISTR| |18 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|18 |39 | +|6 | PX PARTITION ITERATOR | |18 |39 | +|7 | TABLE SCAN |t1 |18 |39 | +|8 | SORT | |20 |57 | +|9 | PX PARTITION ITERATOR | |20 |39 | +|10| TABLE SCAN |t2 |20 |39 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), Local Order + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 8 - output([t2.a]), filter(nil), sort_keys([t2.a, ASC]), local merge sort + 9 - output([t2.a]), filter(nil) + 10 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |11 |127 | +|1 | EXCHANGE OUT DISTR |:EX10001|11 |126 | +|2 | SORT | |11 |126 | +|3 | MERGE FULL OUTER JOIN | |11 |116 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | SORT | |21 |58 | +|9 | PX PARTITION ITERATOR | |21 |40 | +|10| TABLE SCAN |t2 |21 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), Local Order + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil), sort_keys([t2.a, ASC]), local merge sort + 9 - output([t2.a]), filter(nil) + 10 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |121 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |119 | +|2 | SORT | |20 |119 | +|3 | MERGE FULL OUTER JOIN | |20 |98 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |41 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |40 | +|6 | PX PARTITION ITERATOR | |20 |40 | +|7 | TABLE SCAN |t1 |20 |40 | +|8 | PX PARTITION ITERATOR | |20 |40 | +|9 | TABLE SCAN |t2 |20 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |108 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |107 | +|2 | SORT | |10 |107 | +|3 | MERGE FULL OUTER JOIN | |10 |97 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | PX PARTITION ITERATOR | |20 |39 | +|9 | TABLE SCAN |t2 |20 |39 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |118 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |116 | +|2 | SORT | |20 |116 | +|3 | MERGE FULL OUTER JOIN | |20 |95 | +|4 | EXCHANGE IN MERGE SORT DISTR| |18 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|18 |39 | +|6 | PX PARTITION ITERATOR | |18 |39 | +|7 | TABLE SCAN |t1 |18 |39 | +|8 | PX PARTITION ITERATOR | |20 |39 | +|9 | TABLE SCAN |t2 |20 |39 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), Local Order + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |108 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |107 | +|2 | SORT | |10 |107 | +|3 | MERGE FULL OUTER JOIN | |10 |97 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | PX PARTITION ITERATOR | |20 |40 | +|9 | TABLE SCAN |t2 |20 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), Local Order + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |21 |141 | +|1 | EXCHANGE OUT DISTR |:EX10001|21 |139 | +|2 | SORT | |21 |139 | +|3 | MERGE FULL OUTER JOIN | |21 |116 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |41 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |40 | +|6 | PX PARTITION ITERATOR | |20 |40 | +|7 | TABLE SCAN |t1 |20 |40 | +|8 | SORT | |21 |58 | +|9 | PX PARTITION ITERATOR | |21 |40 | +|10| TABLE SCAN |t2 |21 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 8 - output([t2.a]), filter(nil), sort_keys([t2.a, ASC]), local merge sort + 9 - output([t2.a]), filter(nil) + 10 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |125 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |124 | +|2 | SORT | |10 |124 | +|3 | MERGE FULL OUTER JOIN | |10 |114 | +|4 | EXCHANGE IN MERGE SORT DISTR| |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY) |:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | SORT | |20 |57 | +|9 | PX PARTITION ITERATOR | |20 |39 | +|10| TABLE SCAN |t2 |20 |39 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil), sort_keys([t2.a, ASC]), local merge sort + 9 - output([t2.a]), filter(nil) + 10 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_mj(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |139 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |137 | +|2 | SORT | |20 |137 | +|3 | HASH FULL OUTER JOIN | |20 |116 | +|4 | EXCHANGE IN DISTR | |18 |40 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|18 |39 | +|6 | PX PARTITION ITERATOR | |18 |39 | +|7 | TABLE SCAN |t1 |18 |39 | +|8 | PX PARTITION ITERATOR | |20 |39 | +|9 | TABLE SCAN |t2 |20 |39 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |11 |132 | +|1 | EXCHANGE OUT DISTR |:EX10001|11 |131 | +|2 | SORT | |11 |131 | +|3 | HASH FULL OUTER JOIN | |11 |120 | +|4 | EXCHANGE IN DISTR | |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | PX PARTITION ITERATOR | |21 |40 | +|9 | TABLE SCAN |t2 |21 |40 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |144 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |142 | +|2 | SORT | |20 |142 | +|3 | HASH FULL OUTER JOIN | |20 |121 | +|4 | EXCHANGE IN DISTR | |20 |41 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|20 |40 | +|6 | PX PARTITION ITERATOR | |20 |40 | +|7 | TABLE SCAN |t1 |20 |40 | +|8 | PX PARTITION ITERATOR | |20 |40 | +|9 | TABLE SCAN |t2 |20 |40 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |131 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |130 | +|2 | SORT | |10 |130 | +|3 | HASH FULL OUTER JOIN | |10 |120 | +|4 | EXCHANGE IN DISTR | |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | PX PARTITION ITERATOR | |20 |39 | +|9 | TABLE SCAN |t2 |20 |39 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |20 |139 | +|1 | EXCHANGE OUT DISTR |:EX10001|20 |137 | +|2 | SORT | |20 |137 | +|3 | HASH FULL OUTER JOIN | |20 |116 | +|4 | EXCHANGE IN DISTR | |18 |40 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|18 |39 | +|6 | PX PARTITION ITERATOR | |18 |39 | +|7 | TABLE SCAN |t1 |18 |39 | +|8 | PX PARTITION ITERATOR | |20 |39 | +|9 | TABLE SCAN |t2 |20 |39 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-2]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-3]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h3_01_20 t1 full join t_r4_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |131 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |130 | +|2 | SORT | |10 |130 | +|3 | HASH FULL OUTER JOIN | |10 |120 | +|4 | EXCHANGE IN DISTR | |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | PX PARTITION ITERATOR | |20 |40 | +|9 | TABLE SCAN |t2 |20 |40 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_h5_01_20 t1 full join t_r5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |21 |145 | +|1 | EXCHANGE OUT DISTR |:EX10001|21 |143 | +|2 | SORT | |21 |143 | +|3 | HASH FULL OUTER JOIN | |21 |121 | +|4 | EXCHANGE IN DISTR | |20 |41 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|20 |40 | +|6 | PX PARTITION ITERATOR | |20 |40 | +|7 | TABLE SCAN |t1 |20 |40 | +|8 | PX PARTITION ITERATOR | |21 |40 | +|9 | TABLE SCAN |t2 |21 |40 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-3]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-2]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r4_01_20 t1 full join t_h3_09_28 t2 on t1.a = t2.a order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| NULL | 21 | +| NULL | 22 | +| NULL | 23 | +| NULL | 24 | +| NULL | 25 | +| NULL | 26 | +| NULL | 27 | +| NULL | 28 | +| 1 | NULL | +| 2 | NULL | +| 3 | NULL | +| 4 | NULL | +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ +EXPLAIN select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | |10 |131 | +|1 | EXCHANGE OUT DISTR |:EX10001|10 |130 | +|2 | SORT | |10 |130 | +|3 | HASH FULL OUTER JOIN | |10 |120 | +|4 | EXCHANGE IN DISTR | |20 |40 | +|5 | EXCHANGE OUT DISTR (PKEY)|:EX10000|20 |39 | +|6 | PX PARTITION ITERATOR | |20 |39 | +|7 | TABLE SCAN |t1 |20 |39 | +|8 | PX PARTITION ITERATOR | |20 |39 | +|9 | TABLE SCAN |t2 |20 |39 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 1 - output([t1.a], [t2.a]), filter(nil), dop=1 + 2 - output([t1.a], [t2.a]), filter(nil), sort_keys([t1.a, ASC], [t2.a, ASC]) + 3 - output([t1.a], [t2.a]), filter([(T_OP_BTW, cast(t1.a, DECIMAL(11, 0)), ?, ?)]), + equal_conds([t1.a = t2.a]), other_conds(nil) + 4 - output([t1.a]), filter(nil) + 5 - (#keys=1, [t1.a]), output([t1.a]), filter(nil), dop=1 + 6 - output([t1.a]), filter(nil) + 7 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p[0-4]) + 8 - output([t2.a]), filter(nil) + 9 - output([t2.a]), filter(nil), + access([t2.a]), partitions(p[0-4]) + +select /*+use_hash(t1 t2)*/ t1.a, t2.a from t_r5_01_20 t1 full join t_h5_09_28 t2 on t1.a = t2.a where t1.a between 5 and 24 order by t1.a, t2.a; ++----+----+ +| a | a | ++----+----+ +| 5 | NULL | +| 6 | NULL | +| 7 | NULL | +| 8 | NULL | +| 9 | 9 | +| 10 | 10 | +| 11 | 11 | +| 12 | 12 | +| 13 | 13 | +| 14 | 14 | +| 15 | 15 | +| 16 | 16 | +| 17 | 17 | +| 18 | 18 | +| 19 | 19 | +| 20 | 20 | ++----+----+ + +drop table if exists t_h3_01_20; +drop table if exists t_h3_05_24; +drop table if exists t_h3_09_28; +drop table if exists t_h5_01_20; +drop table if exists t_h5_05_24; +drop table if exists t_h5_09_28; +drop table if exists t_r4_01_20; +drop table if exists t_r4_05_24; +drop table if exists t_r4_09_28; +drop table if exists t_r5_01_20; +drop table if exists t_r5_05_24; +drop table if exists t_r5_09_28; +drop table if exists t_h3_r4_01_20; +drop table if exists t_h3_r5_09_28; +drop table if exists t_h5_r4_01_20; +drop table if exists t_h5_r5_09_28; + +drop table if exists t_refered; +drop table if exists t_h5_int; +drop table if exists t_r4_int; +drop table if exists t_r4_date; +drop table if exists t_r4_datetime; +drop table if exists t_r4_timestamp; +drop table if exists t_h5_r4_int_int; +drop table if exists t_h5_r4_int_int_datetime; + +drop table if exists t_r4_h2_date_int; +drop table if exists t_r4_h3_date_int; +drop table if exists t_r4_h3_date_bigint; +drop table if exists tt; + +drop table if exists t_many_range_part; + diff --git a/test/mysql_test/test_suite/executor/t/full_join.test b/tools/deploy/mysql_test/test_suite/executor/t/full_join.test similarity index 98% rename from test/mysql_test/test_suite/executor/t/full_join.test rename to tools/deploy/mysql_test/test_suite/executor/t/full_join.test index baa481183..48de6fce2 100644 --- a/test/mysql_test/test_suite/executor/t/full_join.test +++ b/tools/deploy/mysql_test/test_suite/executor/t/full_join.test @@ -1,9 +1,12 @@ +# owner: yibo.tyf +# owner group: SQL3 +# tags: optimizer --source mysql_test/test_suite/executor/include/cleanup.inc --source mysql_test/test_suite/executor/include/load_data.inc set @@ob_enable_transformation=0; - - +--result_format 4 +--explain_protocol 2 ################################ # 1 full join diff --git a/test/mysql_test/test_suite/expr/r/mysql/collation_expr.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/collation_expr.result similarity index 98% rename from test/mysql_test/test_suite/expr/r/mysql/collation_expr.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/collation_expr.result index 1ba80459c..3d07888d1 100644 --- a/test/mysql_test/test_suite/expr/r/mysql/collation_expr.result +++ b/tools/deploy/mysql_test/test_suite/expr/r/mysql/collation_expr.result @@ -8,7 +8,7 @@ coll_test CREATE TABLE `coll_test` ( `ub` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, `b` varbinary(10) DEFAULT NULL, PRIMARY KEY (`pk`) -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0 +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 insert into coll_test values (1314, 'abc', 'def', 'xyz'); select * from coll_test; pk uc ub b diff --git a/test/mysql_test/test_suite/expr/r/mysql/expr_ceil.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_ceil.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/expr_ceil.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_ceil.result diff --git a/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_convert_tz.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_convert_tz.result new file mode 100644 index 000000000..7a7fea09e --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_convert_tz.result @@ -0,0 +1,287 @@ +================ expression convert_tz ================ +SELECT CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00'); +CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00') +2021-01-01 20:00:00.000000 +SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00'); +CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00') +2021-01-01 19:00:00.000000 +SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30'); +CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30') +2021-01-01 17:30:00.000000 +SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10'); +CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10') +2021-01-01 21:10:00.000000 +SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00'); +CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00') +2021-01-01 23:30:00.000000 +SELECT CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00'); +CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00') +2021-01-02 12:30:00.000000 +SELECT CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00'); +CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00') +2021-01-02 13:00:00.000000 +SELECT CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00'); +CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00') +2021-01-02 01:00:00.000000 +SELECT CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00'); +CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00') +2021-01-03 00:59:59.000000 +SELECT CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12'); +CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12') +2021-01-02 10:09:38.000000 +SELECT CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11'); +CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11') +2021-01-01 10:35:35.000000 +SELECT CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00'); +CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00') +2020-12-31 03:01:00.000000 +SELECT CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00'); +CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00') +2020-12-31 13:11:00.000000 +SELECT CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00'); +CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00') +2021-02-28 13:11:00.000000 +SELECT CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00'); +CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00') +2021-05-31 13:11:00.000000 +SELECT CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00'); +CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00') +2020-02-29 13:11:00.000000 +SELECT CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00'); +CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00') +2020-02-29 10:11:00.000000 +SELECT CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00'); +CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00') +2021-01-01 15:11:00.000000 +SELECT CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00'); +CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00') +NULL +SELECT CONVERT_TZ('2020-12-31 23:11:00','+11:00', null); +CONVERT_TZ('2020-12-31 23:11:00','+11:00', null) +NULL +SELECT CONVERT_TZ(null,'-13:00','+11:00'); +CONVERT_TZ(null,'-13:00','+11:00') +NULL +SELECT CONVERT_TZ(null, null,'+11:00'); +CONVERT_TZ(null, null,'+11:00') +NULL +SELECT CONVERT_TZ(null, null, null); +CONVERT_TZ(null, null, null) +NULL +SELECT CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo'); +CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo') +2021-01-01 14:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin'); +CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin') +2021-01-01 15:41:00.000000 +SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam'); +CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam') +2021-01-01 07:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida'); +CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida') +2021-01-01 00:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','Libya'); +CONVERT_TZ('2021-01-01 07:11:00','MET','Libya') +2021-01-01 08:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','MST'); +CONVERT_TZ('2021-01-01 07:11:00','MET','MST') +2020-12-31 23:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','MST'); +CONVERT_TZ('2021-01-01 07:11:00','PRC','MST') +2020-12-31 16:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC'); +CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC') +2021-01-01 07:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC'); +CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC') +2021-01-01 15:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC'); +CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC') +2021-01-01 15:11:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC'); +CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC') +2021-01-02 00:41:00.000000 +SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC'); +CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC') +2021-03-01 01:11:00.000000 +SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore'); +CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore') +2021-03-01 01:11:00.000000 +SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC'); +CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC') +2021-03-01 06:11:00.000000 +SELECT CONVERT_TZ('2021-02-28 17:11:00', null,'ROC'); +CONVERT_TZ('2021-02-28 17:11:00', null,'ROC') +NULL +SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null); +CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null) +NULL +SELECT CONVERT_TZ('2021-02-28 17:11:00', null, null); +CONVERT_TZ('2021-02-28 17:11:00', null, null) +NULL +SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC'); +CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC') +2021-03-01 01:11:00.000000 +SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan'); +CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan') +2021-02-28 12:11:00.000000 +SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00'); +CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00') +2021-02-28 09:11:00.000000 +SELECT CONVERT_TZ('2021-02-28 17:11:00', 'US/Michigan', '+00:00'); +CONVERT_TZ('2021-02-28 17:11:00', 'US/Michigan', '+00:00') +2021-02-28 22:11:00.000000 +SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58'); +CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58') +2021-02-28 22:09:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00', 'UCT','-12:58'); +CONVERT_TZ('2021-01-01 07:11:00', 'UCT','-12:58') +2020-12-31 18:13:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT'); +CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT') +2021-01-01 20:09:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan'); +CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan') +2021-01-01 15:09:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET'); +CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET') +2021-01-01 02:59:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC'); +CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC') +2021-01-01 11:39:00.000000 +SELECT CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC'); +CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC') +2021-01-01 03:39:00.000000 +SELECT CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00'); +CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00') +NULL +SELECT CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00'); +CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00') +NULL +SELECT CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC'); +CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC') +NULL +SELECT CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK'); +CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK') +NULL +drop table if exists t; +create table t(c1 timestamp); +insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00')); +insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00')); +insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC')); +insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK')); +select * from t; +c1 +NULL +NULL +NULL +NULL +delete from t; +select convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00'); +convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00') +NULL +select convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00'); +convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00') +NULL +insert into t values(convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00')); +insert into t values(convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00')); +select * from t; +c1 +NULL +NULL +SELECT CONVERT_TZ(123456,'-12:00','+10:00'); +CONVERT_TZ(123456,'-12:00','+10:00') +NULL +SELECT CONVERT_TZ('','-12:00','+10:00'); +CONVERT_TZ('','-12:00','+10:00') +NULL +SELECT CONVERT_TZ('aa','-12:00','+10:00'); +CONVERT_TZ('aa','-12:00','+10:00') +NULL +SELECT CONVERT_TZ('张三','-12:00','+10:00'); +CONVERT_TZ('张三','-12:00','+10:00') +NULL +SELECT CONVERT_TZ('1asd561ad','-12:00','+10:00'); +CONVERT_TZ('1asd561ad','-12:00','+10:00') +NULL +SELECT CONVERT_TZ('¥¥%……&*¥','-12:00','+10:00'); +CONVERT_TZ('¥¥%……&*¥','-12:00','+10:00') +NULL +drop table t; +create table t(c1 year); +insert into t values('1901'),('2155'), ('0000'), ('0001'); +SELECT c1, CONVERT_TZ(c1,'+00:00','+00:00') from t; +c1 CONVERT_TZ(c1,'+00:00','+00:00') +1901 NULL +2155 NULL +0000 NULL +2001 NULL +drop table t; +create table t(a1 int,a2 year,c1 timestamp,c2 timestamp); +insert into t values(1,'1998','1998-12-12 12:12:12','2038-01-19 03:14:07'); +insert into t values(2,'2002','2002-02-02 10:00:00','2034-02-22 00:50:20'); +insert into t values(3,'2006','2006-04-15 06:06:20','2038-01-19 03:14:07'); +insert into t values(4,'2012','2012-12-12 12:12:12','2030-08-16 14:05:50'); +select c1,c2 ,case c1 when convert_tz(c1,'+06:00','+00:00')<'2006-04-15 06:06:20' then convert_tz('2020-02-02 02:02:02','+00:00','+00:00') else convert_tz('1999-09-09 09:09:09','+00:00','+00:00') end as c1 from t; +c1 c2 c1 +1998-12-12 12:12:12 2038-01-19 03:14:07 1999-09-09 09:09:09.000000 +2002-02-02 10:00:00 2034-02-22 00:50:20 1999-09-09 09:09:09.000000 +2006-04-15 06:06:20 2038-01-19 03:14:07 1999-09-09 09:09:09.000000 +2012-12-12 12:12:12 2030-08-16 14:05:50 1999-09-09 09:09:09.000000 +drop table t; +create table t(c1 timestamp(0), c2 timestamp(3), c3 decimal(20,4)); +insert into t values('2020-01-01 12:00:00.123456', '2020-01-01 12:00:00.123456', '20200101120000.123456'); +select c1, convert_tz(c1, '+00:00', '+08:00') from t; +c1 convert_tz(c1, '+00:00', '+08:00') +2020-01-01 12:00:00 2020-01-01 20:00:00 +select c2, convert_tz(c2, '+00:00', '+08:00') from t; +c2 convert_tz(c2, '+00:00', '+08:00') +2020-01-01 12:00:00.123 2020-01-01 20:00:00.123 +select c3, convert_tz(c3, '+00:00', '+08:00') from t; +c3 convert_tz(c3, '+00:00', '+08:00') +20200101120000.1235 2020-01-01 20:00:00.1235 +drop table t; +SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') AS time1, +CONVERT_TZ('2007-03-11 2:00:01','US/Eastern','US/Central') AS time2, +CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') AS time3, +CONVERT_TZ('2007-03-11 3:00:01','US/Eastern','US/Central') AS time4; +time1 time2 time3 time4 +NULL NULL 2007-03-11 01:00:00.000000 2007-03-11 01:00:01.000000 +SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','+00:00') AS time1, +CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','+00:00') AS time2, +CONVERT_TZ('2007-03-11 3:00:01','US/Eastern','+00:00') AS time3; +time1 time2 time3 +NULL 2007-03-11 07:00:00.000000 2007-03-11 07:00:01.000000 +SELECT CONVERT_TZ('2007-11-04 01:00:00','US/Eastern','+00:00') AS time1, +CONVERT_TZ('2007-11-04 01:00:01','US/Eastern','+00:00') AS time2, +CONVERT_TZ('2007-11-04 02:00:00','US/Eastern','+00:00') AS time3, +CONVERT_TZ('2007-11-04 02:00:01','US/Eastern','+00:00') AS time4; +time1 time2 time3 time4 +2007-11-04 05:00:00.000000 2007-11-04 05:00:01.000000 2007-11-04 07:00:00.000000 2007-11-04 07:00:01.000000 +create table t(c1 datetime); +insert into t values('2007-03-11 2:00:00'), ('2007-03-11 2:00:01'), ('2007-03-11 3:00:00'), ('2007-03-11 3:00:01'); +insert into t values('2007-11-04 1:00:00'), ('2007-11-04 1:00:01'), ('2007-11-04 2:00:00'), ('2007-11-04 2:00:01'); +select convert_tz(c1, 'US/Eastern', '+00:00') from t; +convert_tz(c1, 'US/Eastern', '+00:00') +NULL +NULL +2007-03-11 07:00:00 +2007-03-11 07:00:01 +2007-11-04 05:00:00 +2007-11-04 05:00:01 +2007-11-04 07:00:00 +2007-11-04 07:00:01 +drop table t; +create table t(c1 timestamp); +insert into t values('2007-03-11 1:59:59'), ('2007-03-11 3:00:00'), ('2007-03-11 3:00:01'); +insert into t values('2007-11-04 1:00:00'), ('2007-11-04 1:00:01'), ('2007-11-04 2:00:00'), ('2007-11-04 2:00:01'); +select convert_tz(c1, 'US/Eastern', '+00:00') from t; +convert_tz(c1, 'US/Eastern', '+00:00') +2007-03-11 06:59:59 +2007-03-11 07:00:00 +2007-03-11 07:00:01 +2007-11-04 05:00:00 +2007-11-04 05:00:01 +2007-11-04 07:00:00 +2007-11-04 07:00:01 +drop table t; diff --git a/test/mysql_test/test_suite/expr/r/mysql/expr_export_set.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_export_set.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/expr_export_set.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_export_set.result diff --git a/test/mysql_test/test_suite/expr/r/mysql/expr_floor.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_floor.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/expr_floor.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_floor.result diff --git a/test/mysql_test/test_suite/expr/r/mysql/expr_instr.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_instr.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/expr_instr.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_instr.result diff --git a/test/mysql_test/test_suite/expr/r/mysql/expr_locate.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_locate.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/expr_locate.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_locate.result diff --git a/test/mysql_test/test_suite/expr/r/mysql/expr_nseq.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_nseq.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/expr_nseq.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_nseq.result diff --git a/test/mysql_test/test_suite/expr/r/mysql/expr_position.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_position.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/expr_position.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/expr_position.result diff --git a/test/mysql_test/test_suite/expr/r/mysql/func_equal.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/func_equal.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/func_equal.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/func_equal.result diff --git a/test/mysql_test/test_suite/expr/r/mysql/func_length.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/func_length.result similarity index 100% rename from test/mysql_test/test_suite/expr/r/mysql/func_length.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/func_length.result diff --git a/test/mysql_test/test_suite/expr/r/mysql/func_regexp.result b/tools/deploy/mysql_test/test_suite/expr/r/mysql/func_regexp.result similarity index 87% rename from test/mysql_test/test_suite/expr/r/mysql/func_regexp.result rename to tools/deploy/mysql_test/test_suite/expr/r/mysql/func_regexp.result index 03944aa20..6d42d08aa 100644 --- a/test/mysql_test/test_suite/expr/r/mysql/func_regexp.result +++ b/tools/deploy/mysql_test/test_suite/expr/r/mysql/func_regexp.result @@ -5386,6 +5386,888 @@ id name 523 abd 524 abcd 573 ab +select * from t1 where name regexp 'a' "bc" '|de'; +id name +138 abc +139 abc +142 abc +203 abc +272 abc +273 abc +311 abcac +313 abcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +390 AabC +394 aBCd +405 abc +438 abc +440 abc +445 xyzaaabcaababdacd +446 aaabc +469 abcd +470 abc +475 abc +477 abc +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +486 abc +487 abcc +488 abcbc +493 abcdef +498 abcd +500 abcd +502 abcd +507 abcd +509 abcd +513 abcd +515 abcd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +524 abcd +select * from t1 where name regexp "a" '|' "b" '|' "c"; +id name +138 abc +139 abc +142 abc +146 a( +152 a) +158 ab +163 a^b +165 a$b +192 b +203 abc +272 abc +273 abc +287 ab +289 ab +291 aab +299 a{,2} +301 a{,} +311 abcac +313 abcac +315 abbcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +325 a +344 a{b} +384 -%@a?X- +385 -%@aX0- +386 aSSTb +387 aNTb +388 a019b +389 Sa%bS +390 AabC +391 NaSbN +393 aSNTb +394 aBCd +395 p0f3Cq +405 abc +406 abd +407 abbd +409 aaaaabaaaabaaaabaaaab +411 aaaaabaaaabaaaabaaaab +413 aaaaabaaaabaaaabaaaabweeknights +415 a12345678901234567890123456789b +416 a123456789012345678901234567890b +417 a1234567890123456789012345678901b +418 a12345678901234567890123456789012b +419 a123456789012345678901234567890123b +421 a1234567890123456789012345678901234567890123456789012345678901234567890b +423 xacegikmoq +424 xacegikmoq +425 xacegikmoqy +426 xacegikmoqy +438 abc +439 aba +440 abc +441 abd +442 accd +445 xyzaaabcaababdacd +446 aaabc +469 abcd +470 abc +471 abd +472 abbd +473 acd +474 ad +475 abc +476 ac +477 abc +478 abbbc +479 ac +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +485 ac +486 abc +487 abcc +488 abcbc +489 abb +490 abb +491 abbb +492 abbb +493 abcdef +494 bc +497 ad +498 abcd +499 abd +500 abcd +501 ad +502 abcd +503 ad +504 ad +505 abd +506 ad +507 abcd +508 ad +509 abcd +510 abd +511 acd +512 abd +513 abcd +514 abd +515 abcd +516 acbd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +523 abd +524 abcd +567 A1 +571 CC11 +573 ab +select * from t1 where name regexp "a"'()'"b"; +id name +138 abc +139 abc +142 abc +158 ab +203 abc +272 abc +273 abc +287 ab +289 ab +291 aab +311 abcac +313 abcac +315 abbcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +390 AabC +394 aBCd +405 abc +406 abd +407 abbd +409 aaaaabaaaabaaaabaaaab +411 aaaaabaaaabaaaabaaaab +413 aaaaabaaaabaaaabaaaabweeknights +438 abc +439 aba +440 abc +441 abd +445 xyzaaabcaababdacd +446 aaabc +469 abcd +470 abc +471 abd +472 abbd +475 abc +477 abc +478 abbbc +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +486 abc +487 abcc +488 abcbc +489 abb +490 abb +491 abbb +492 abbb +493 abcdef +498 abcd +499 abd +500 abcd +502 abcd +505 abd +507 abcd +509 abcd +510 abd +512 abd +513 abcd +514 abd +515 abcd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +523 abd +524 abcd +573 ab +select * from t1 where name regexp "$" "$"; +id name +1 hello +2 hell +3 hel +4 hello1 +5 hell1 +6 hel1 +7 hel +1 +8 hel1 +9 hel 1 +10 hel +1o +11 111 Hello World 222 +138 abc +139 abc +142 abc +146 a( +152 a) +153 ) +158 ab +163 a^b +165 a$b +170 "" +173 "" +174 "" +192 b +203 abc +272 abc +273 abc +287 ab +289 ab +291 aab +299 a{,2} +301 a{,} +311 abcac +313 abcac +315 abbcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +325 a +344 a{b} +384 -%@a?X- +385 -%@aX0- +386 aSSTb +387 aNTb +388 a019b +389 Sa%bS +390 AabC +391 NaSbN +392 S%-&T +393 aSNTb +394 aBCd +395 p0f3Cq +405 abc +406 abd +407 abbd +409 aaaaabaaaabaaaabaaaab +411 aaaaabaaaabaaaabaaaab +413 aaaaabaaaabaaaabaaaabweeknights +415 a12345678901234567890123456789b +416 a123456789012345678901234567890b +417 a1234567890123456789012345678901b +418 a12345678901234567890123456789012b +419 a123456789012345678901234567890123b +421 a1234567890123456789012345678901234567890123456789012345678901234567890b +423 xacegikmoq +424 xacegikmoq +425 xacegikmoqy +426 xacegikmoqy +438 abc +439 aba +440 abc +441 abd +442 accd +443 weeknights +444 weeknights +445 xyzaaabcaababdacd +446 aaabc +452 /*x*/ +454 /*x*/y/*z*/ +456 /*x*/ +457 /*x*/y/*z*/ +459 /*x**/y/*z*/ +461 /*x*/ +462 /*x*/y/*z*/ +463 /*x**/y/*z*/ +464 /*x****/y/*z*/ +465 /*x**x*/y/*z*/ +466 /*x***x/y/*z*/ +469 abcd +470 abc +471 abd +472 abbd +473 acd +474 ad +475 abc +476 ac +477 abc +478 abbbc +479 ac +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +485 ac +486 abc +487 abcc +488 abcbc +489 abb +490 abb +491 abbb +492 abbb +493 abcdef +494 bc +497 ad +498 abcd +499 abd +500 abcd +501 ad +502 abcd +503 ad +504 ad +505 abd +506 ad +507 abcd +508 ad +509 abcd +510 abd +511 acd +512 abd +513 abcd +514 abd +515 abcd +516 acbd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +523 abd +524 abcd +567 A1 +571 CC11 +573 ab +select * from t1 where name regexp 'a' "*" '(' "^" 'b' "$" ')' "c" '*'; +id name +192 b +select * from t1 where name regexp 'a' "b" "{" "0" ',' "0" '}' "c"; +id name +311 abcac +313 abcac +315 abbcac +317 acabc +319 acabc +423 xacegikmoq +424 xacegikmoq +425 xacegikmoqy +426 xacegikmoqy +442 accd +445 xyzaaabcaababdacd +473 acd +476 ac +479 ac +485 ac +511 acd +516 acbd +select * from t1 where name regexp '[' "[" ':' "a" "lnum" ':' "]" ']' "+"; +id name +1 hello +2 hell +3 hel +4 hello1 +5 hell1 +6 hel1 +7 hel +1 +8 hel1 +9 hel 1 +10 hel +1o +11 111 Hello World 222 +138 abc +139 abc +142 abc +146 a( +152 a) +158 ab +163 a^b +165 a$b +192 b +203 abc +272 abc +273 abc +287 ab +289 ab +291 aab +299 a{,2} +301 a{,} +311 abcac +313 abcac +315 abbcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +325 a +344 a{b} +384 -%@a?X- +385 -%@aX0- +386 aSSTb +387 aNTb +388 a019b +389 Sa%bS +390 AabC +391 NaSbN +392 S%-&T +393 aSNTb +394 aBCd +395 p0f3Cq +405 abc +406 abd +407 abbd +409 aaaaabaaaabaaaabaaaab +411 aaaaabaaaabaaaabaaaab +413 aaaaabaaaabaaaabaaaabweeknights +415 a12345678901234567890123456789b +416 a123456789012345678901234567890b +417 a1234567890123456789012345678901b +418 a12345678901234567890123456789012b +419 a123456789012345678901234567890123b +421 a1234567890123456789012345678901234567890123456789012345678901234567890b +423 xacegikmoq +424 xacegikmoq +425 xacegikmoqy +426 xacegikmoqy +438 abc +439 aba +440 abc +441 abd +442 accd +443 weeknights +444 weeknights +445 xyzaaabcaababdacd +446 aaabc +452 /*x*/ +454 /*x*/y/*z*/ +456 /*x*/ +457 /*x*/y/*z*/ +459 /*x**/y/*z*/ +461 /*x*/ +462 /*x*/y/*z*/ +463 /*x**/y/*z*/ +464 /*x****/y/*z*/ +465 /*x**x*/y/*z*/ +466 /*x***x/y/*z*/ +469 abcd +470 abc +471 abd +472 abbd +473 acd +474 ad +475 abc +476 ac +477 abc +478 abbbc +479 ac +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +485 ac +486 abc +487 abcc +488 abcbc +489 abb +490 abb +491 abbb +492 abbb +493 abcdef +494 bc +497 ad +498 abcd +499 abd +500 abcd +501 ad +502 abcd +503 ad +504 ad +505 abd +506 ad +507 abcd +508 ad +509 abcd +510 abd +511 acd +512 abd +513 abcd +514 abd +515 abcd +516 acbd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +523 abd +524 abcd +567 A1 +571 CC11 +573 ab +select * from t1 where name regexp 'a' "(" "(" '(' "b" ')' ")" ')' 'c'; +id name +138 abc +139 abc +142 abc +203 abc +272 abc +273 abc +311 abcac +313 abcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +390 AabC +394 aBCd +405 abc +438 abc +440 abc +445 xyzaaabcaababdacd +446 aaabc +469 abcd +470 abc +475 abc +477 abc +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +486 abc +487 abcc +488 abcbc +493 abcdef +498 abcd +500 abcd +502 abcd +507 abcd +509 abcd +513 abcd +515 abcd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +524 abcd +select * from t1 where name regexp 'a'"("'b'"|"'('"c"')'")"'d'; +id name +406 abd +441 abd +445 xyzaaabcaababdacd +471 abd +473 acd +499 abd +505 abd +510 abd +511 acd +512 abd +514 abd +523 abd +select * from t1 where name regexp 'a'""'('"b"'*'"|"'c'")"'d'; +id name +406 abd +407 abbd +441 abd +445 xyzaaabcaababdacd +471 abd +472 abbd +473 acd +474 ad +497 ad +499 abd +501 ad +503 ad +504 ad +505 abd +506 ad +508 ad +510 abd +511 acd +512 abd +514 abd +523 abd +select * from t1 where name regexp '[ab]'"[cd]"'[ef]'"[gh]"'[ij]'"[kl]"'[mn]'; +id name +423 xacegikmoq +424 xacegikmoq +425 xacegikmoqy +426 xacegikmoqy +select * from t1 where name regexp '[a]'"b"'[c]'; +id name +138 abc +139 abc +142 abc +203 abc +272 abc +273 abc +311 abcac +313 abcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +390 AabC +394 aBCd +405 abc +438 abc +440 abc +445 xyzaaabcaababdacd +446 aaabc +469 abcd +470 abc +475 abc +477 abc +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +486 abc +487 abcc +488 abcbc +493 abcdef +498 abcd +500 abcd +502 abcd +507 abcd +509 abcd +513 abcd +515 abcd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +524 abcd +select * from t1 where name regexp '[abc]'"b"'[abc]'; +id name +138 abc +139 abc +142 abc +203 abc +272 abc +273 abc +311 abcac +313 abcac +315 abbcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +390 AabC +394 aBCd +405 abc +407 abbd +409 aaaaabaaaabaaaabaaaab +411 aaaaabaaaabaaaabaaaab +413 aaaaabaaaabaaaabaaaabweeknights +438 abc +439 aba +440 abc +445 xyzaaabcaababdacd +446 aaabc +469 abcd +470 abc +472 abbd +475 abc +477 abc +478 abbbc +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +486 abc +487 abcc +488 abcbc +489 abb +490 abb +491 abbb +492 abbb +493 abcdef +498 abcd +500 abcd +502 abcd +507 abcd +509 abcd +513 abcd +515 abcd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +524 abcd +select * from t1 where name regexp 'a'"(b?c)"'+'"d"; +id name +394 aBCd +442 accd +445 xyzaaabcaababdacd +469 abcd +473 acd +480 abcdef +482 abcdefghijk +483 abcdefghijkl +493 abcdef +498 abcd +500 abcd +502 abcd +507 abcd +509 abcd +511 acd +513 abcd +515 abcd +517 abcd +518 abcd +520 abcbcd +521 abcd +524 abcd +select * from t1 where name regexp '(wee|week)'"(knights"'|'"night)"; +id name +413 aaaaabaaaabaaaabaaaabweeknights +443 weeknights +444 weeknights +select * from t1 where name regexp 'a'"[ab]"'c'; +id name +138 abc +139 abc +142 abc +203 abc +272 abc +273 abc +311 abcac +313 abcac +317 acabc +319 acabc +321 abcabbc +323 abcabbc +390 AabC +394 aBCd +405 abc +438 abc +440 abc +445 xyzaaabcaababdacd +446 aaabc +469 abcd +470 abc +475 abc +477 abc +480 abcdef +482 abcdefghijk +483 abcdefghijkl +484 abc +486 abc +487 abcc +488 abcbc +493 abcdef +498 abcd +500 abcd +502 abcd +507 abcd +509 abcd +513 abcd +515 abcd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +524 abcd +select * from t1 where name regexp '(a|ab)'"(bc([de]+)"'f|cde)'; +id name +480 abcdef +482 abcdefghijk +483 abcdefghijkl +493 abcdef +select * from t1 where name regexp 'a(bbb'"+"'|bb'"+"'|b'")b"; +id name +315 abbcac +321 abcabbc +323 abcabbc +407 abbd +472 abbd +478 abbbc +489 abb +490 abb +491 abbb +492 abbb +select * from t1 where name regexp 'a'"("'b'"|"'c'")"'{'"1"','"}"'d'; +id name +394 aBCd +406 abd +407 abbd +441 abd +442 accd +445 xyzaaabcaababdacd +469 abcd +471 abd +472 abbd +473 acd +480 abcdef +482 abcdefghijk +483 abcdefghijkl +493 abcdef +498 abcd +499 abd +500 abcd +502 abcd +505 abd +507 abcd +509 abcd +510 abd +511 acd +512 abd +513 abcd +514 abd +515 abcd +516 acbd +517 abcd +518 abcd +519 abcbd +520 abcbcd +521 abcd +522 abcbd +523 abd +524 abcd drop table if exists t1; create table t1 (a varchar(50) primary key) ; insert into t1 values('abcdef'); diff --git a/test/mysql_test/test_suite/expr/t/collation_expr.test b/tools/deploy/mysql_test/test_suite/expr/t/collation_expr.test similarity index 98% rename from test/mysql_test/test_suite/expr/t/collation_expr.test rename to tools/deploy/mysql_test/test_suite/expr/t/collation_expr.test index a84ba63e6..d5b5dcdad 100644 --- a/test/mysql_test/test_suite/expr/t/collation_expr.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/collation_expr.test @@ -1,6 +1,11 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: luofan.zp +# owner group: SQL3 +# description: collation of all expression operator +# Author: zhuweng.yzf +# ....yzf....Fri, 21 Aug 2015....17:55.... # set-up --disable_warnings diff --git a/test/mysql_test/test_suite/expr/t/expr_ceil.test b/tools/deploy/mysql_test/test_suite/expr/t/expr_ceil.test similarity index 97% rename from test/mysql_test/test_suite/expr/t/expr_ceil.test rename to tools/deploy/mysql_test/test_suite/expr/t/expr_ceil.test index d75032ff2..9378655c0 100644 --- a/test/mysql_test/test_suite/expr/t/expr_ceil.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/expr_ceil.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#### owner: peihan.dph +#### owner group: sql3 +#### description: 测试向上取整函数(天花板函数) --echo ================ expression ceil ================ --disable_warnings drop table if exists test; diff --git a/tools/deploy/mysql_test/test_suite/expr/t/expr_convert_tz.test b/tools/deploy/mysql_test/test_suite/expr/t/expr_convert_tz.test new file mode 100644 index 000000000..22e77fc5c --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/expr/t/expr_convert_tz.test @@ -0,0 +1,155 @@ +--disable_query_log +set @@session.explicit_defaults_for_timestamp=on; +--enable_query_log +# owner: dachuan.sdc +# owner group: SQL2 +# Test of functions convert_tz + + +--echo ================ expression convert_tz ================ +--source mysql_test/test_suite/otimestamp/t/otimestamp_import_time_zone_mysql.inc +# 直接时刻类型 +SELECT CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00'); +SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00'); +SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30'); +SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10'); +SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00'); +SELECT CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00'); +SELECT CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00'); +SELECT CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00'); +SELECT CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00'); +SELECT CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12'); +SELECT CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11'); +SELECT CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00'); +SELECT CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00'); +SELECT CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00'); +SELECT CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00'); +SELECT CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00'); +SELECT CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00'); +SELECT CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00'); + +#直接时刻类型异常 +SELECT CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00'); +SELECT CONVERT_TZ('2020-12-31 23:11:00','+11:00', null); +SELECT CONVERT_TZ(null,'-13:00','+11:00'); +SELECT CONVERT_TZ(null, null,'+11:00'); +SELECT CONVERT_TZ(null, null, null); + +#时区类型 +SELECT CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo'); +SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin'); +SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam'); +SELECT CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida'); +SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','Libya'); +SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','MST'); +SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','MST'); +SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC'); +SELECT CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC'); +SELECT CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC'); +SELECT CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC'); +SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC'); +SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore'); +SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC'); + +#时区类型异常 +SELECT CONVERT_TZ('2021-02-28 17:11:00', null,'ROC'); +SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null); +SELECT CONVERT_TZ('2021-02-28 17:11:00', null, null); + +#混合类型 +SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC'); +SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan'); +SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00'); +SELECT CONVERT_TZ('2021-02-28 17:11:00', 'US/Michigan', '+00:00'); +SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58'); +SELECT CONVERT_TZ('2021-01-01 07:11:00', 'UCT','-12:58'); +SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT'); +SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan'); +SELECT CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET'); +SELECT CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC'); +SELECT CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC'); + +##bugfix: https://work.aone.alibaba-inc.com/issue/37089894 +SELECT CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00'); +SELECT CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00'); +SELECT CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC'); +SELECT CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK'); +--disable_warnings +drop table if exists t; +--enable_warnings +create table t(c1 timestamp); +insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00')); +insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00')); +insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC')); +insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK')); +select * from t; +delete from t; + +## test result out of range +select convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00'); +select convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00'); +insert into t values(convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00')); +insert into t values(convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00')); +select * from t; + + +##bugfix: https://work.aone.alibaba-inc.com/issue/37089982 +SELECT CONVERT_TZ(123456,'-12:00','+10:00'); +SELECT CONVERT_TZ('','-12:00','+10:00'); +SELECT CONVERT_TZ('aa','-12:00','+10:00'); +SELECT CONVERT_TZ('张三','-12:00','+10:00'); +SELECT CONVERT_TZ('1asd561ad','-12:00','+10:00'); +SELECT CONVERT_TZ('¥¥%……&*¥','-12:00','+10:00'); + + +##bugfix: https://work.aone.alibaba-inc.com/issue/37090102 +drop table t; +create table t(c1 year); +insert into t values('1901'),('2155'), ('0000'), ('0001'); +SELECT c1, CONVERT_TZ(c1,'+00:00','+00:00') from t; + + +##bugfix: https://work.aone.alibaba-inc.com/issue/37090351 +drop table t; +create table t(a1 int,a2 year,c1 timestamp,c2 timestamp); +insert into t values(1,'1998','1998-12-12 12:12:12','2038-01-19 03:14:07'); +insert into t values(2,'2002','2002-02-02 10:00:00','2034-02-22 00:50:20'); +insert into t values(3,'2006','2006-04-15 06:06:20','2038-01-19 03:14:07'); +insert into t values(4,'2012','2012-12-12 12:12:12','2030-08-16 14:05:50'); +select c1,c2 ,case c1 when convert_tz(c1,'+06:00','+00:00')<'2006-04-15 06:06:20' then convert_tz('2020-02-02 02:02:02','+00:00','+00:00') else convert_tz('1999-09-09 09:09:09','+00:00','+00:00') end as c1 from t; +drop table t; + +create table t(c1 timestamp(0), c2 timestamp(3), c3 decimal(20,4)); +insert into t values('2020-01-01 12:00:00.123456', '2020-01-01 12:00:00.123456', '20200101120000.123456'); +select c1, convert_tz(c1, '+00:00', '+08:00') from t; +select c2, convert_tz(c2, '+00:00', '+08:00') from t; +select c3, convert_tz(c3, '+00:00', '+08:00') from t; +drop table t; + + +##bugfix: https://work.aone.alibaba-inc.com/issue/38186028 +SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') AS time1, + CONVERT_TZ('2007-03-11 2:00:01','US/Eastern','US/Central') AS time2, + CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') AS time3, + CONVERT_TZ('2007-03-11 3:00:01','US/Eastern','US/Central') AS time4; + +SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','+00:00') AS time1, + CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','+00:00') AS time2, + CONVERT_TZ('2007-03-11 3:00:01','US/Eastern','+00:00') AS time3; + +SELECT CONVERT_TZ('2007-11-04 01:00:00','US/Eastern','+00:00') AS time1, + CONVERT_TZ('2007-11-04 01:00:01','US/Eastern','+00:00') AS time2, + CONVERT_TZ('2007-11-04 02:00:00','US/Eastern','+00:00') AS time3, + CONVERT_TZ('2007-11-04 02:00:01','US/Eastern','+00:00') AS time4; + +create table t(c1 datetime); +insert into t values('2007-03-11 2:00:00'), ('2007-03-11 2:00:01'), ('2007-03-11 3:00:00'), ('2007-03-11 3:00:01'); +insert into t values('2007-11-04 1:00:00'), ('2007-11-04 1:00:01'), ('2007-11-04 2:00:00'), ('2007-11-04 2:00:01'); +select convert_tz(c1, 'US/Eastern', '+00:00') from t; +drop table t; + +create table t(c1 timestamp); +insert into t values('2007-03-11 1:59:59'), ('2007-03-11 3:00:00'), ('2007-03-11 3:00:01'); +insert into t values('2007-11-04 1:00:00'), ('2007-11-04 1:00:01'), ('2007-11-04 2:00:00'), ('2007-11-04 2:00:01'); +select convert_tz(c1, 'US/Eastern', '+00:00') from t; +drop table t; \ No newline at end of file diff --git a/test/mysql_test/test_suite/expr/t/expr_export_set.test b/tools/deploy/mysql_test/test_suite/expr/t/expr_export_set.test similarity index 93% rename from test/mysql_test/test_suite/expr/t/expr_export_set.test rename to tools/deploy/mysql_test/test_suite/expr/t/expr_export_set.test index 89fb136a1..c6c91eec1 100644 --- a/test/mysql_test/test_suite/expr/t/expr_export_set.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/expr_export_set.test @@ -6,6 +6,7 @@ set @@session.explicit_defaults_for_timestamp=off; --enable_abort_on_error --echo ================ expression export_set ================ +# 基本检查 select export_set(0,"Y","N","-",5); select export_set(7,"Y","N","-",5); select export_set(11,"Y","N","-",5); @@ -22,6 +23,7 @@ select export_set(100,"Y","N",".",5); select export_set(100,"Y","N",".",7); select export_set(100,"Y","N",".",10); +# 参数NULL检查 select export_set(null,"Y","N",".",5); select export_set(0,"Y","N",".",5); select export_set(5,null,"N",".",5); @@ -41,6 +43,7 @@ select export_set(1000,'',1); select export_set(1000,1,''); select export_set(1000,1,0,''); +# 默认参数检查 select export_set(8,"Y","N"); select export_set(88,"Y","N"); select export_set(888,"Y","N"); @@ -51,6 +54,7 @@ select export_set(8,"Y","N",'+'); select export_set(8,"1","0",'*'); select export_set(8,"X","Y",'*'); +# 参数类型不同 select export_set(7,1,0,"-",5); select export_set(7,11,00,"-",5); select export_set(7,111,000,"-",5); @@ -64,6 +68,9 @@ select export_set(2.4,1,0); select export_set(1.4,"y","n"); select export_set(2.4,"y","n"); +# 边界检查 +# 超过uint64的上界,int64的下界,ob对溢出的处理和mysql不同,这是mysql的bug,不兼容 +# 目前保证-9223372036854775808到18446744073709551615与mysql兼容 # select export_set(1111111111111111111111111111111111111111111111111111,"Y","N"); select export_set(9223372036854775808,"Y","N"); select export_set(9223372036854775809,"Y","N"); @@ -78,6 +85,7 @@ select export_set(-9223372036854775808,"Y","N",",",-9223372036854775808000000000 select export_set(18446744073709551615,"Y","N",",",18446744073709551615); select export_set(18446744073709551615,"Y","N",",",1844674407370955161500000000000); +# 参数错误检查 --error 1582 select export_set(); --error 1582 @@ -97,6 +105,7 @@ select export_set(1,2,3,a); --error 1054 select export_set(1,2,3,4,a); +# 用表数据做参数 --disable_warnings drop table if exists test; --enable_warnings @@ -141,6 +150,7 @@ desc t1; drop table t1; +## bugfix#https://work.aone.alibaba-inc.com/issue/36895309 --disable_warnings drop table if exists T_36895309; --enable_warnings diff --git a/test/mysql_test/test_suite/expr/t/expr_floor.test b/tools/deploy/mysql_test/test_suite/expr/t/expr_floor.test similarity index 97% rename from test/mysql_test/test_suite/expr/t/expr_floor.test rename to tools/deploy/mysql_test/test_suite/expr/t/expr_floor.test index a9cab4973..4f2db148c 100644 --- a/test/mysql_test/test_suite/expr/t/expr_floor.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/expr_floor.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#### owner: yuchen.wyc +#### owner group: sql3 +#### description: 测试地板函数(向下取整函数,高斯函数) #/--disableabortonerror/ #/test for floor function in ob_expr_func_floor.cpp/ --enable_abort_on_error diff --git a/test/mysql_test/test_suite/expr/t/expr_instr.test b/tools/deploy/mysql_test/test_suite/expr/t/expr_instr.test similarity index 96% rename from test/mysql_test/test_suite/expr/t/expr_instr.test rename to tools/deploy/mysql_test/test_suite/expr/t/expr_instr.test index 4037a03ca..3fe1afc04 100644 --- a/test/mysql_test/test_suite/expr/t/expr_instr.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/expr_instr.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#### owner: yuchen.wyc +#### owner group: sql3 +#### description: 测试instr函数 --echo ================ expression instr ================ select instr('abc', ''); select instr('', ''); diff --git a/test/mysql_test/test_suite/expr/t/expr_locate.test b/tools/deploy/mysql_test/test_suite/expr/t/expr_locate.test similarity index 98% rename from test/mysql_test/test_suite/expr/t/expr_locate.test rename to tools/deploy/mysql_test/test_suite/expr/t/expr_locate.test index 9db06b951..9e3a65d47 100644 --- a/test/mysql_test/test_suite/expr/t/expr_locate.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/expr_locate.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#### owner: yuchen.wyc +#### owner group: sql3 +#### description: 测试locate函数 +# tags: expr, datatype --echo ================ expression locate ================ diff --git a/test/mysql_test/test_suite/expr/t/expr_nseq.test b/tools/deploy/mysql_test/test_suite/expr/t/expr_nseq.test similarity index 93% rename from test/mysql_test/test_suite/expr/t/expr_nseq.test rename to tools/deploy/mysql_test/test_suite/expr/t/expr_nseq.test index 3de179e77..00afbe6c7 100644 --- a/test/mysql_test/test_suite/expr/t/expr_nseq.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/expr_nseq.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#### owner: yuchen.wyc +#### owner group: sql3 +#### description: 测试<=>运算符 --disable_warnings drop table if exists t1,t2; --enable_warnings diff --git a/test/mysql_test/test_suite/expr/t/expr_position.test b/tools/deploy/mysql_test/test_suite/expr/t/expr_position.test similarity index 95% rename from test/mysql_test/test_suite/expr/t/expr_position.test rename to tools/deploy/mysql_test/test_suite/expr/t/expr_position.test index 9017ab0ef..a3fb43d1e 100644 --- a/test/mysql_test/test_suite/expr/t/expr_position.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/expr_position.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#### owner: yuchen.wyc +#### owner group: sql3 +#### description: 测试position函数 --echo ================ expression position ================ select position(' ' in 'abc'); select position('abcd' in 'abc'); diff --git a/test/mysql_test/test_suite/expr/t/func_equal.test b/tools/deploy/mysql_test/test_suite/expr/t/func_equal.test similarity index 94% rename from test/mysql_test/test_suite/expr/t/func_equal.test rename to tools/deploy/mysql_test/test_suite/expr/t/func_equal.test index e47f1435e..5783d391f 100644 --- a/test/mysql_test/test_suite/expr/t/func_equal.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/func_equal.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#### owner: yuchen.wyc +#### owner group: sql3 +#### description: 测试相等比较运算符 # Initialise --disable_warnings drop table if exists t1,t2; diff --git a/test/mysql_test/test_suite/expr/t/func_length.test b/tools/deploy/mysql_test/test_suite/expr/t/func_length.test similarity index 97% rename from test/mysql_test/test_suite/expr/t/func_length.test rename to tools/deploy/mysql_test/test_suite/expr/t/func_length.test index 8f2f9c85f..4aa510719 100644 --- a/test/mysql_test/test_suite/expr/t/func_length.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/func_length.test @@ -1,6 +1,8 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: guoping.wgp +#owner group: sql1 --disable_abort_on_error --disable_warnings diff --git a/test/mysql_test/test_suite/expr/t/func_regexp.test b/tools/deploy/mysql_test/test_suite/expr/t/func_regexp.test similarity index 92% rename from test/mysql_test/test_suite/expr/t/func_regexp.test rename to tools/deploy/mysql_test/test_suite/expr/t/func_regexp.test index c691893b8..811239823 100644 --- a/test/mysql_test/test_suite/expr/t/func_regexp.test +++ b/tools/deploy/mysql_test/test_suite/expr/t/func_regexp.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: guoyun.lgy +# modifier: jiangxiu.wt +# owner group: SQL1 +# description: regexp的测试 --disable_warnings drop table if exists t1; @@ -395,6 +399,26 @@ select * from t1 where name regexp '(A[1])|(A[2])|(A[3])|(A[4])|(A[5])|(A[6])|(A select * from t1 where name regexp 'CC[13]1|a{21}[23][EO][123][Es][12]a{15}aa[34][EW]aaaaaaa[X]a'; select * from t1 where name regexp 'a?b'; +##bug:https://aone.alibaba-inc.com/req/34761589 +select * from t1 where name regexp 'a' "bc" '|de'; +select * from t1 where name regexp "a" '|' "b" '|' "c"; +select * from t1 where name regexp "a"'()'"b"; +select * from t1 where name regexp "$" "$"; +select * from t1 where name regexp 'a' "*" '(' "^" 'b' "$" ')' "c" '*'; +select * from t1 where name regexp 'a' "b" "{" "0" ',' "0" '}' "c"; +select * from t1 where name regexp '[' "[" ':' "a" "lnum" ':' "]" ']' "+"; +select * from t1 where name regexp 'a' "(" "(" '(' "b" ')' ")" ')' 'c'; +select * from t1 where name regexp 'a'"("'b'"|"'('"c"')'")"'d'; +select * from t1 where name regexp 'a'""'('"b"'*'"|"'c'")"'d'; +select * from t1 where name regexp '[ab]'"[cd]"'[ef]'"[gh]"'[ij]'"[kl]"'[mn]'; +select * from t1 where name regexp '[a]'"b"'[c]'; +select * from t1 where name regexp '[abc]'"b"'[abc]'; +select * from t1 where name regexp 'a'"(b?c)"'+'"d"; +select * from t1 where name regexp '(wee|week)'"(knights"'|'"night)"; +select * from t1 where name regexp 'a'"[ab]"'c'; +select * from t1 where name regexp '(a|ab)'"(bc([de]+)"'f|cde)'; +select * from t1 where name regexp 'a(bbb'"+"'|bb'"+"'|b'")b"; +select * from t1 where name regexp 'a'"("'b'"|"'c'")"'{'"1"','"}"'d'; --disable_warnings drop table if exists t1; diff --git a/tools/deploy/mysql_test/test_suite/global_index/r/mysql/global_index_select.result b/tools/deploy/mysql_test/test_suite/global_index/r/mysql/global_index_select.result new file mode 100644 index 000000000..1e792c299 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/global_index/r/mysql/global_index_select.result @@ -0,0 +1,786 @@ +result_format: 4 +##--explain_protocol 2 +##test query on one table having global index +drop table if exists t1; +create table t1 (c1 int, c2 int, c3 int, c4 int, primary key (c1, c2)) partition by hash(c1) partitions 4; +create index gkey1 on t1(c2,c3) global; +create index gkey2 on t1(c2,c3) global partition by hash(c3) partitions 2; +## test full scan +select /*+index(t1 primary)*/ c2, c3 from t1 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | +| 10 | 11 | +| 11 | 12 | ++----+------+ +select /*+index(t1 gkey1)*/ c2, c3 from t1 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | +| 10 | 11 | +| 11 | 12 | ++----+------+ +select /*+index(t1 gkey2)*/ c2, c3 from t1 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | +| 10 | 11 | +| 11 | 12 | ++----+------+ + +select /*+index(t1 primary)*/ * from t1 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +## test where statement +select /*+index(t1 primary)*/ c2, c3 from t1 where c2 < 10 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ +select /*+index(t1 gkey1)*/ c2, c3 from t1 where c2 < 10 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ +select /*+index(t1 gkey2)*/ c2, c3 from t1 where c2 < 10 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ + +select /*+index(t1 primary)*/ * from t1 where c2 < 10 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 where c2 < 10 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 where c2 < 10 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | ++----+----+------+------+ + +select /*+index(t1 primary)*/ * from t1 where c4 < 6 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 where c4 < 6 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 where c4 < 6 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ + +select /*+index(t1 primary)*/ * from t1 where c2 < 10 and c4 < 6 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 where c2 < 10 and c4 < 6 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 where c2 < 10 and c4 < 6 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ + +select /*+index(t1 primary)*/ * from t1 where c2 < 10 and c4 < 6 and c3 + c4 < 10 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 where c2 < 10 and c4 < 6 and c3 + c4 < 10 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 where c2 < 10 and c4 < 6 and c3 + c4 < 10 order by c1; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | ++----+----+------+------+ + +## test group by statement +select /*+index(t1 primary)*/ c2, sum(c3) from t1 where c2 < 10 group by c1; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 5 | 6 | +| 9 | 10 | +| 2 | 3 | +| 6 | 7 | +| 3 | 4 | +| 7 | 8 | +| 4 | 5 | +| 8 | 9 | ++----+---------+ +select /*+index(t1 gkey1)*/ c2, sum(c3) from t1 where c2 < 10 group by c1; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+---------+ +select /*+index(t1 gkey2)*/ c2, sum(c3) from t1 where c2 < 10 group by c1; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 3 | 4 | +| 5 | 6 | +| 7 | 8 | +| 9 | 10 | +| 2 | 3 | +| 4 | 5 | +| 6 | 7 | +| 8 | 9 | ++----+---------+ + +select /*+index(t1 primary)*/ c2, sum(c3) from t1 where c2 < 10 group by c2 having sum(c3) > 5 order by c2; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+---------+ +select /*+index(t1 gkey1)*/ c2, sum(c3) from t1 where c2 < 10 group by c2 having sum(c3) > 5 order by c2; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+---------+ +select /*+index(t1 gkey2)*/ c2, sum(c3) from t1 where c2 < 10 group by c2 having sum(c3) > 5 order by c2; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+---------+ + +select /*+index(t1 primary)*/ c2, sum(c3) from t1 where c2 < 10 group by c4 having sum(c4) > 6 order by c4; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+---------+ +select /*+index(t1 gkey1)*/ c2, sum(c3) from t1 where c2 < 10 group by c4 having sum(c4) > 6 order by c4; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+---------+ +select /*+index(t1 gkey2)*/ c2, sum(c3) from t1 where c2 < 10 group by c4 having sum(c4) > 6 order by c4; ++----+---------+ +| c2 | sum(c3) | ++----+---------+ +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+---------+ + +##test distinct statement +select /*+index(t1 primary)*/ distinct c2, c3 from t1 where c2 < 10 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ +select /*+index(t1 gkey1)*/ distinct c2, c3 from t1 where c2 < 10 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ +select /*+index(t1 gkey2)*/ distinct c2, c3 from t1 where c2 < 10 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ + +select /*+index(t1 primary)*/ distinct c2, c3 from t1 where c2 < 10 order by c1; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ +select /*+index(t1 gkey1)*/ distinct c2, c3 from t1 where c2 < 10 order by c1; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ +select /*+index(t1 gkey2)*/ distinct c2, c3 from t1 where c2 < 10 order by c1; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | ++----+------+ + +select /*+index(t1 primary)*/ distinct c2, c3, c4 from t1 where c2 < 10 order by c1; ++----+------+------+ +| c2 | c3 | c4 | ++----+------+------+ +| 2 | 3 | 4 | +| 3 | 4 | 5 | +| 4 | 5 | 6 | +| 5 | 6 | 7 | +| 6 | 7 | 8 | +| 7 | 8 | 9 | +| 8 | 9 | 10 | +| 9 | 10 | 11 | ++----+------+------+ +select /*+index(t1 gkey1)*/ distinct c2, c3, c4 from t1 where c2 < 10 order by c1; ++----+------+------+ +| c2 | c3 | c4 | ++----+------+------+ +| 2 | 3 | 4 | +| 3 | 4 | 5 | +| 4 | 5 | 6 | +| 5 | 6 | 7 | +| 6 | 7 | 8 | +| 7 | 8 | 9 | +| 8 | 9 | 10 | +| 9 | 10 | 11 | ++----+------+------+ +select /*+index(t1 gkey2)*/ distinct c2, c3, c4 from t1 where c2 < 10 order by c1; ++----+------+------+ +| c2 | c3 | c4 | ++----+------+------+ +| 2 | 3 | 4 | +| 3 | 4 | 5 | +| 4 | 5 | 6 | +| 5 | 6 | 7 | +| 6 | 7 | 8 | +| 7 | 8 | 9 | +| 8 | 9 | 10 | +| 9 | 10 | 11 | ++----+------+------+ + +## test order by statement +select /*+index(t1 primary)*/ c2, c3 from t1 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | +| 10 | 11 | +| 11 | 12 | ++----+------+ +select /*+index(t1 gkey1)*/ c2, c3 from t1 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | +| 10 | 11 | +| 11 | 12 | ++----+------+ +select /*+index(t1 gkey2)*/ c2, c3 from t1 order by c2; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | +| 5 | 6 | +| 6 | 7 | +| 7 | 8 | +| 8 | 9 | +| 9 | 10 | +| 10 | 11 | +| 11 | 12 | ++----+------+ + +select /*+index(t1 primary)*/ * from t1 order by c2; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 order by c2; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 order by c2; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ + +select /*+index(t1 primary)*/ * from t1 order by c2, c3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 order by c2, c3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 order by c2, c3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ + +select /*+index(t1 primary)*/ * from t1 order by c3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 order by c3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 order by c3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | +| 4 | 5 | 6 | 7 | +| 5 | 6 | 7 | 8 | +| 6 | 7 | 8 | 9 | +| 7 | 8 | 9 | 10 | +| 8 | 9 | 10 | 11 | +| 9 | 10 | 11 | 12 | +| 10 | 11 | 12 | 13 | ++----+----+------+------+ + +## test limit statement +select /*+index(t1 primary)*/ c2, c3 from t1 order by c2 limit 3; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | ++----+------+ +select /*+index(t1 gkey1)*/ c2, c3 from t1 order by c2 limit 3; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | ++----+------+ +select /*+index(t1 gkey2)*/ c2, c3 from t1 order by c2 limit 3; ++----+------+ +| c2 | c3 | ++----+------+ +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | ++----+------+ + +select /*+index(t1 primary)*/ * from t1 order by c2 limit 3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 order by c2 limit 3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 order by c2 limit 3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | ++----+----+------+------+ + +select /*+index(t1 primary)*/ * from t1 order by c2, c3 limit 3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | ++----+----+------+------+ +select /*+index(t1 gkey1)*/ * from t1 order by c2, c3 limit 3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | ++----+----+------+------+ +select /*+index(t1 gkey2)*/ * from t1 order by c2, c3 limit 3; ++----+----+------+------+ +| c1 | c2 | c3 | c4 | ++----+----+------+------+ +| 1 | 2 | 3 | 4 | +| 2 | 3 | 4 | 5 | +| 3 | 4 | 5 | 6 | ++----+----+------+------+ + +##test scala group by +select /*+index(t1 primary)*/ count(*) from t1; ++----------+ +| count(*) | ++----------+ +| 10 | ++----------+ +select /*+index(t1 gkey1)*/ count(*) from t1; ++----------+ +| count(*) | ++----------+ +| 10 | ++----------+ +select /*+index(t1 gkey2)*/ count(*) from t1; ++----------+ +| count(*) | ++----------+ +| 10 | ++----------+ +drop table if exists t1; + +drop table if exists t1; +create table t1(a int, b int, c int, d int, primary key(a,b)) partition by hash(a) partitions 3; +create unique index idx on t1(c) partition by hash(c) partitions 5; +insert into t1 values (1,1,1,1),(2,2,2,2),(3,3,3,3); +update t1 set d=d+1 where (a,b)>=(1,1) and c=1; +drop table if exists t1; + +drop table if exists obright_part; +create table obright_part(grp_id bigint, row_id bigint, row_hex varchar(2048), trx_grp bigint, +v1 varchar(65536), v1_check bigint, v2 varchar(65536), v2_check bigint, r1 int, r2 int, glike varchar(4096), +c1 bigint, c2 bigint, c3 bigint, c4 bigint, c5 bigint, c6 tinyint, c7 bigint, c8 bigint, c9 bigint, c10 bigint, v3 varchar(1024), +ts timestamp(6) DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), t1 timestamp(6) null, t2 datetime(6), +dec1 decimal(16,4), dec2 decimal(16,4), dec3 decimal(16,6), +b1 boolean, d1 bigint default 0, ac1 bigint auto_increment, gmt_create timestamp(6) default now(6), gmt_modified timestamp(6) default now(6), +gen_v1 varchar(10) GENERATED ALWAYS AS (substr(v1,1,10)) virtual, +gen_v2 varchar(10) GENERATED ALWAYS AS (substr(v1,1,10)) stored, +primary key(grp_id, row_id, row_hex), +index obright_part2(trx_grp,row_id, ac1) LOCAL, +index obright_part3(glike) LOCAL, +index obright_part4(t1,ts,dec1,dec2) storing(v1,v1_check,r1,r2) LOCAL, +index obright_part5(v1_check,v2_check) LOCAL, +index obright_part6(row_hex,v1_check) storing(glike,t1,r1) LOCAL, +unique index obright_part1_uniq(t1,grp_id,row_id,row_hex) LOCAL, +unique index obright_part2_uniq(trx_grp,r1,row_hex,row_id,grp_id) LOCAL, +unique index obright_part3_uniq(row_hex,grp_id,row_id) LOCAL) +partition by key (grp_id) partitions 2; + +create index obright_part1 on obright_part(row_id) global partition by HASH(row_id) partitions 2; +select grp_id, max(row_id), max(row_hex), max(trx_grp), abs(row_id)%2 as row_id_mod from obright_part where grp_id=6447+length('a')-1 group by row_id_mod order by row_id_mod desc limit 1; ++--------+-------------+--------------+--------------+------------+ +| grp_id | max(row_id) | max(row_hex) | max(trx_grp) | row_id_mod | ++--------+-------------+--------------+--------------+------------+ ++--------+-------------+--------------+--------------+------------+ +drop table if exists obright_part; diff --git a/test/mysql_test/test_suite/global_index/t/global_index_select.test b/tools/deploy/mysql_test/test_suite/global_index/t/global_index_select.test similarity index 98% rename from test/mysql_test/test_suite/global_index/t/global_index_select.test rename to tools/deploy/mysql_test/test_suite/global_index/t/global_index_select.test index 667023397..30332c9a4 100644 --- a/test/mysql_test/test_suite/global_index/t/global_index_select.test +++ b/tools/deploy/mysql_test/test_suite/global_index/t/global_index_select.test @@ -1,10 +1,13 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner:guoping.wgp +#owner group: sql1 +# tags: optimizer, global_index #test different select statement of global index - - +--result_format 4 +##--explain_protocol 2 ##test query on one table having global index --disable_warnings diff --git a/test/mysql_test/test_suite/groupby/r/mysql/group_by_basic.result b/tools/deploy/mysql_test/test_suite/groupby/r/mysql/group_by_basic.result similarity index 58% rename from test/mysql_test/test_suite/groupby/r/mysql/group_by_basic.result rename to tools/deploy/mysql_test/test_suite/groupby/r/mysql/group_by_basic.result index 9b06117a8..c9d20a606 100644 --- a/test/mysql_test/test_suite/groupby/r/mysql/group_by_basic.result +++ b/tools/deploy/mysql_test/test_suite/groupby/r/mysql/group_by_basic.result @@ -244,18 +244,18 @@ select group_concat(c2) from t2 group by c4; group_concat(c2) NULL -Warning 1260 Row 3 was cut by GROUP_CONCAT() -Warnings: d1,d2,d d5 +Warnings: +Warning 1260 Row 3 was cut by GROUP_CONCAT() select group_concat(c2, c3) from t2 group by c4; group_concat(c2, c3) NULL NULL -Warning 1260 Row 2 was cut by GROUP_CONCAT() -Warnings: d1s1,d4 +Warnings: +Warning 1260 Row 2 was cut by GROUP_CONCAT() set group_concat_max_len = 10; select @@group_concat_max_len; @@group_concat_max_len @@ -379,3 +379,33 @@ c1 c2 group_concat(distinct c3 order by c3 desc) 2 NULL 3,2 NULL NULL 3,2,1 drop table t1, t2, t3, t4, t5; +drop table if exists t1, t2; +drop table if exists `rpup_list_mcs_asoc_b`, `bidprcu_mcs_regcert_b`, `rpup_mcs_list_info_b`; +create table t1(c1 int, c2 int); +create table t2(c1 int, c2 int); +insert into t1 values (1, 1); +insert into t2 values (2, 2); +CREATE TABLE `rpup_list_mcs_asoc_b` ( `LIST_MCS_ASOC_ID` varchar(40) NOT NULL COMMENT '目录耗材关联ID', `RPUP_CNT_ITEM_ID` varchar(40) DEFAULT NULL COMMENT '报量项目ID', `MCS_LIST_ID` varchar(40) DEFAULT NULL COMMENT '耗材目录ID', `MCS_REGNO` varchar(100) DEFAULT NULL COMMENT '耗材注册证编号', `MCS_CODE` varchar(100) DEFAULT NULL COMMENT '耗材代码', `MCS_NAME` varchar(500) DEFAULT NULL COMMENT '耗材名称', `MCS_MOL` varchar(500) DEFAULT NULL COMMENT '耗材型号', `RID` varchar(40) NOT NULL DEFAULT '' COMMENT '数据唯一记录号', `CRTER_ID` varchar(20) DEFAULT NULL COMMENT '创建人ID', `CRTER_NAME` varchar(50) DEFAULT NULL COMMENT '创建人姓名', `CRTE_OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '创建机构编号', `CRTE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间', `OPTER_ID` varchar(20) DEFAULT NULL COMMENT '经办人ID', `OPTER_NAME` varchar(50) DEFAULT NULL COMMENT '经办人姓名', `OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '经办机构编号', `UPDT_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据更新时间', `INVD_FLAG` varchar(3) NOT NULL DEFAULT '0' COMMENT '无效标志', PRIMARY KEY (`LIST_MCS_ASOC_ID`) USING BTREE, KEY `IDX_RPUP_LIST_MCS_ASOC_B_1` (`RPUP_CNT_ITEM_ID`) USING BTREE, KEY `IDX_RPUP_LIST_MCS_ASOC_B_2` (`MCS_LIST_ID`) USING BTREE, KEY `IDX_RPUP_LIST_MCS_ASOC_B_3` (`MCS_CODE`) USING BTREE, KEY `IDX_RPUP_LIST_MCS_ASOC_B_4` (`MCS_REGNO`) USING BTREE ); +CREATE TABLE `bidprcu_mcs_regcert_b` ( `MCS_REGCERT_ID` varchar(40) NOT NULL COMMENT '耗材注册证ID', `MCS_REGNO` varchar(100) NOT NULL DEFAULT '' COMMENT '耗材注册证编号', `MCS_REGCERT_NAME` varchar(200) NOT NULL DEFAULT '' COMMENT '耗材注册证名称', `REGCERT_EXPY_BEGNTIME` datetime NOT NULL DEFAULT '1970-01-01 08:00:00' COMMENT '注册证有效期开始时间', `REGCERT_EXPY_ENDTIME` datetime NOT NULL DEFAULT '1970-01-01 08:00:00' COMMENT '注册证有效期结束时间', `PRODENTP_CODE` varchar(50) NOT NULL DEFAULT '' COMMENT '生产企业代码', `PRODENTP_NAME` varchar(200) NOT NULL DEFAULT '' COMMENT '生产企业名称', `PRXY_ENTP_CODE` varchar(50) NOT NULL DEFAULT '' COMMENT '代理企业代码', `PRXY_ENTP_NAME` varchar(200) NOT NULL DEFAULT '' COMMENT '代理企业名称', `MGT_TYPE_CODE` varchar(10) NOT NULL DEFAULT '' COMMENT '管理类别代码', `REGCERT_FILE_ID` varchar(500) NOT NULL DEFAULT '' COMMENT '注册证文件ID', `MANL_FILE_ID` varchar(500) DEFAULT NULL COMMENT '说明书文件ID', `OTH_FILE_ID` varchar(500) NOT NULL DEFAULT '' COMMENT '其他文件ID', `RID` varchar(40) NOT NULL DEFAULT '' COMMENT '数据唯一记录号', `CRTER_ID` varchar(20) DEFAULT NULL COMMENT '创建人ID', `CRTER_NAME` varchar(50) DEFAULT NULL COMMENT '创建人姓名', `CRTE_OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '创建机构编号', `CRTE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间', `OPT_TIME` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '经办时间', `OPTER_ID` varchar(20) DEFAULT NULL COMMENT '经办人ID', `OPTER_NAME` varchar(50) DEFAULT NULL COMMENT '经办人姓名', `OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '经办机构编号', `UPDT_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据更新时间', `INVD_FLAG` varchar(3) NOT NULL DEFAULT '0' COMMENT '无效标志', `MANU_ADDR` varchar(2048) DEFAULT NULL COMMENT '生产地址', `APB_SCP` longtext COMMENT '适用范围', `STRU_COMP` longtext COMMENT '结构及组成', `PROD_SOUC` varchar(3) DEFAULT NULL COMMENT '耗材来源', `PROD_SOUC_CODE` varchar(3) DEFAULT NULL COMMENT '耗材来源', `SPEC_MOL` longtext COMMENT '规格型号', `MEMO` longtext COMMENT '备注', PRIMARY KEY (`MCS_REGCERT_ID`) USING BTREE, KEY `IDX_BIDPRCU_MCS_REGCERT_B_1` (`MCS_REGNO`) USING BTREE ); +CREATE TABLE `rpup_mcs_list_info_b` ( `MCS_LIST_ID` varchar(40) NOT NULL COMMENT '耗材目录ID', `RPUP_CNT_ITEM_ID` varchar(40) DEFAULT NULL COMMENT '报量项目ID', `MCS_LIST_CODE` varchar(40) DEFAULT NULL COMMENT '耗材目录代码', `LV1_LIST_NAME` varchar(100) DEFAULT NULL COMMENT '一级目录名称', `LV2_LIST_NAME` varchar(100) DEFAULT NULL COMMENT '二级目录名称', `LV3_LIST_NAME` varchar(100) DEFAULT NULL COMMENT '三级目录名称', `GENNAME` varchar(100) DEFAULT NULL COMMENT '通用名', `MATL` varchar(100) DEFAULT NULL COMMENT '材质', `SPEC` varchar(200) DEFAULT NULL COMMENT '规格', `ISU_FLAG` varchar(3) DEFAULT NULL COMMENT '下发标志', `RID` varchar(40) NOT NULL DEFAULT '' COMMENT '数据唯一记录号', `CRTER_ID` varchar(20) DEFAULT NULL COMMENT '创建人ID', `CRTER_NAME` varchar(50) DEFAULT NULL COMMENT '创建人姓名', `CRTE_OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '创建机构编号', `CRTE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间', `OPTER_ID` varchar(20) DEFAULT NULL COMMENT '经办人ID', `OPTER_NAME` varchar(50) DEFAULT NULL COMMENT '经办人姓名', `OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '经办机构编号', `UPDT_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据更新时间', `INVD_FLAG` varchar(3) NOT NULL DEFAULT '0' COMMENT '无效标志', PRIMARY KEY (`MCS_LIST_ID`) USING BTREE, KEY `IDX_RPUP_MCS_LIST_INFO_B_1` (`RPUP_CNT_ITEM_ID`) USING BTREE, KEY `IDX_RPUP_MCS_LIST_INFO_B_2` (`MCS_LIST_CODE`) USING BTREE, KEY `IDX_RPUP_MCS_LIST_INFO_B_3` (`GENNAME`) USING BTREE ); +SELECT rpup_list_mcs_asoc_b.LIST_MCS_ASOC_ID, rpup_list_mcs_asoc_b.RPUP_CNT_ITEM_ID, rpup_list_mcs_asoc_b.RPUP_CNT_ITEM_ID AS rupuCntItemId, rpup_list_mcs_asoc_b.MCS_REGNO, +rpup_list_mcs_asoc_b.MCS_NAME, rpup_list_mcs_asoc_b.MCS_MOL, rpup_mcs_list_info_b.MCS_LIST_CODE, rpup_mcs_list_info_b.LV1_LIST_NAME, +rpup_mcs_list_info_b.LV2_LIST_NAME, rpup_mcs_list_info_b.LV3_LIST_NAME, rpup_mcs_list_info_b.GENNAME, rpup_mcs_list_info_b.MATL, +rpup_mcs_list_info_b.SPEC, bidprcu_mcs_regcert_b.PRODENTP_CODE, bidprcu_mcs_regcert_b.PRODENTP_NAME, rpup_list_mcs_asoc_b.RID, rpup_list_mcs_asoc_b.CRTER_ID, +rpup_list_mcs_asoc_b.CRTER_NAME, rpup_list_mcs_asoc_b.CRTE_OPTINS_NO, rpup_list_mcs_asoc_b.CRTE_TIME, rpup_list_mcs_asoc_b.OPTER_ID, +rpup_list_mcs_asoc_b.OPTER_NAME, rpup_list_mcs_asoc_b.OPTINS_NO, rpup_list_mcs_asoc_b.UPDT_TIME, rpup_list_mcs_asoc_b.INVD_FLAG +FROM rpup_list_mcs_asoc_b LEFT JOIN bidprcu_mcs_regcert_b ON bidprcu_mcs_regcert_b.mcs_regno = rpup_list_mcs_asoc_b.MCS_REGNO +LEFT JOIN rpup_mcs_list_info_b ON rpup_mcs_list_info_b.MCS_LIST_ID = rpup_list_mcs_asoc_b.MCS_LIST_ID +WHERE rpup_list_mcs_asoc_b.INVD_FLAG = '0' AND rpup_mcs_list_info_b.INVD_FLAG = '0' +AND rpup_list_mcs_asoc_b.RPUP_CNT_ITEM_ID = '1403980836851798017' AND bidprcu_mcs_regcert_b.PRODENTP_NAME IS NOT NULL +GROUP BY MCS_LIST_CODE, MCS_REGNO, MCS_NAME, PRODENTP_NAME, MCS_MOL; +LIST_MCS_ASOC_ID RPUP_CNT_ITEM_ID rupuCntItemId MCS_REGNO MCS_NAME MCS_MOL MCS_LIST_CODE LV1_LIST_NAME LV2_LIST_NAME LV3_LIST_NAME GENNAME MATL SPEC PRODENTP_CODE PRODENTP_NAME RID CRTER_ID CRTER_NAME CRTE_OPTINS_NO CRTE_TIME OPTER_ID OPTER_NAME OPTINS_NO UPDT_TIME INVD_FLAG +select t1.c1 from t1, t2 group by c1; +c1 +1 +select * from t1, t2 group by c1; +ERROR 23000: Column 'c1' in group statement is ambiguous +select 1 from t1, t2 group by c1; +ERROR 23000: Column 'c1' in group statement is ambiguous +drop table t1, t2; +drop table `rpup_list_mcs_asoc_b`, `bidprcu_mcs_regcert_b`, `rpup_mcs_list_info_b`; diff --git a/test/mysql_test/test_suite/groupby/t/group_by_basic.test b/tools/deploy/mysql_test/test_suite/groupby/t/group_by_basic.test similarity index 50% rename from test/mysql_test/test_suite/groupby/t/group_by_basic.test rename to tools/deploy/mysql_test/test_suite/groupby/t/group_by_basic.test index e89423579..539a6ed4d 100644 --- a/test/mysql_test/test_suite/groupby/t/group_by_basic.test +++ b/tools/deploy/mysql_test/test_suite/groupby/t/group_by_basic.test @@ -1,11 +1,16 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: guoping.wgp +#owner group: sql1 ## +## Test Name: group_by_basic +## +## Scope: Test basic function of group-by operation ## ## -## +## Date: 2015-9-16 ## --disable_warnings @@ -215,3 +220,39 @@ select c1,c2, group_concat(distinct c3 order by c3 desc) from t1 group by c1,c2; select c1,c2, group_concat(distinct c3 order by c3 desc) from t1 group by c1,c2 with rollup; drop table t1, t2, t3, t4, t5; + +## https://work.aone.alibaba-inc.com/issue/35012791 +--disable_warnings +drop table if exists t1, t2; +drop table if exists `rpup_list_mcs_asoc_b`, `bidprcu_mcs_regcert_b`, `rpup_mcs_list_info_b`; +--enable_warnings + +create table t1(c1 int, c2 int); +create table t2(c1 int, c2 int); +insert into t1 values (1, 1); +insert into t2 values (2, 2); + +CREATE TABLE `rpup_list_mcs_asoc_b` ( `LIST_MCS_ASOC_ID` varchar(40) NOT NULL COMMENT '目录耗材关联ID', `RPUP_CNT_ITEM_ID` varchar(40) DEFAULT NULL COMMENT '报量项目ID', `MCS_LIST_ID` varchar(40) DEFAULT NULL COMMENT '耗材目录ID', `MCS_REGNO` varchar(100) DEFAULT NULL COMMENT '耗材注册证编号', `MCS_CODE` varchar(100) DEFAULT NULL COMMENT '耗材代码', `MCS_NAME` varchar(500) DEFAULT NULL COMMENT '耗材名称', `MCS_MOL` varchar(500) DEFAULT NULL COMMENT '耗材型号', `RID` varchar(40) NOT NULL DEFAULT '' COMMENT '数据唯一记录号', `CRTER_ID` varchar(20) DEFAULT NULL COMMENT '创建人ID', `CRTER_NAME` varchar(50) DEFAULT NULL COMMENT '创建人姓名', `CRTE_OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '创建机构编号', `CRTE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间', `OPTER_ID` varchar(20) DEFAULT NULL COMMENT '经办人ID', `OPTER_NAME` varchar(50) DEFAULT NULL COMMENT '经办人姓名', `OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '经办机构编号', `UPDT_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据更新时间', `INVD_FLAG` varchar(3) NOT NULL DEFAULT '0' COMMENT '无效标志', PRIMARY KEY (`LIST_MCS_ASOC_ID`) USING BTREE, KEY `IDX_RPUP_LIST_MCS_ASOC_B_1` (`RPUP_CNT_ITEM_ID`) USING BTREE, KEY `IDX_RPUP_LIST_MCS_ASOC_B_2` (`MCS_LIST_ID`) USING BTREE, KEY `IDX_RPUP_LIST_MCS_ASOC_B_3` (`MCS_CODE`) USING BTREE, KEY `IDX_RPUP_LIST_MCS_ASOC_B_4` (`MCS_REGNO`) USING BTREE ); +CREATE TABLE `bidprcu_mcs_regcert_b` ( `MCS_REGCERT_ID` varchar(40) NOT NULL COMMENT '耗材注册证ID', `MCS_REGNO` varchar(100) NOT NULL DEFAULT '' COMMENT '耗材注册证编号', `MCS_REGCERT_NAME` varchar(200) NOT NULL DEFAULT '' COMMENT '耗材注册证名称', `REGCERT_EXPY_BEGNTIME` datetime NOT NULL DEFAULT '1970-01-01 08:00:00' COMMENT '注册证有效期开始时间', `REGCERT_EXPY_ENDTIME` datetime NOT NULL DEFAULT '1970-01-01 08:00:00' COMMENT '注册证有效期结束时间', `PRODENTP_CODE` varchar(50) NOT NULL DEFAULT '' COMMENT '生产企业代码', `PRODENTP_NAME` varchar(200) NOT NULL DEFAULT '' COMMENT '生产企业名称', `PRXY_ENTP_CODE` varchar(50) NOT NULL DEFAULT '' COMMENT '代理企业代码', `PRXY_ENTP_NAME` varchar(200) NOT NULL DEFAULT '' COMMENT '代理企业名称', `MGT_TYPE_CODE` varchar(10) NOT NULL DEFAULT '' COMMENT '管理类别代码', `REGCERT_FILE_ID` varchar(500) NOT NULL DEFAULT '' COMMENT '注册证文件ID', `MANL_FILE_ID` varchar(500) DEFAULT NULL COMMENT '说明书文件ID', `OTH_FILE_ID` varchar(500) NOT NULL DEFAULT '' COMMENT '其他文件ID', `RID` varchar(40) NOT NULL DEFAULT '' COMMENT '数据唯一记录号', `CRTER_ID` varchar(20) DEFAULT NULL COMMENT '创建人ID', `CRTER_NAME` varchar(50) DEFAULT NULL COMMENT '创建人姓名', `CRTE_OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '创建机构编号', `CRTE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间', `OPT_TIME` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '经办时间', `OPTER_ID` varchar(20) DEFAULT NULL COMMENT '经办人ID', `OPTER_NAME` varchar(50) DEFAULT NULL COMMENT '经办人姓名', `OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '经办机构编号', `UPDT_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据更新时间', `INVD_FLAG` varchar(3) NOT NULL DEFAULT '0' COMMENT '无效标志', `MANU_ADDR` varchar(2048) DEFAULT NULL COMMENT '生产地址', `APB_SCP` longtext COMMENT '适用范围', `STRU_COMP` longtext COMMENT '结构及组成', `PROD_SOUC` varchar(3) DEFAULT NULL COMMENT '耗材来源', `PROD_SOUC_CODE` varchar(3) DEFAULT NULL COMMENT '耗材来源', `SPEC_MOL` longtext COMMENT '规格型号', `MEMO` longtext COMMENT '备注', PRIMARY KEY (`MCS_REGCERT_ID`) USING BTREE, KEY `IDX_BIDPRCU_MCS_REGCERT_B_1` (`MCS_REGNO`) USING BTREE ); +CREATE TABLE `rpup_mcs_list_info_b` ( `MCS_LIST_ID` varchar(40) NOT NULL COMMENT '耗材目录ID', `RPUP_CNT_ITEM_ID` varchar(40) DEFAULT NULL COMMENT '报量项目ID', `MCS_LIST_CODE` varchar(40) DEFAULT NULL COMMENT '耗材目录代码', `LV1_LIST_NAME` varchar(100) DEFAULT NULL COMMENT '一级目录名称', `LV2_LIST_NAME` varchar(100) DEFAULT NULL COMMENT '二级目录名称', `LV3_LIST_NAME` varchar(100) DEFAULT NULL COMMENT '三级目录名称', `GENNAME` varchar(100) DEFAULT NULL COMMENT '通用名', `MATL` varchar(100) DEFAULT NULL COMMENT '材质', `SPEC` varchar(200) DEFAULT NULL COMMENT '规格', `ISU_FLAG` varchar(3) DEFAULT NULL COMMENT '下发标志', `RID` varchar(40) NOT NULL DEFAULT '' COMMENT '数据唯一记录号', `CRTER_ID` varchar(20) DEFAULT NULL COMMENT '创建人ID', `CRTER_NAME` varchar(50) DEFAULT NULL COMMENT '创建人姓名', `CRTE_OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '创建机构编号', `CRTE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据创建时间', `OPTER_ID` varchar(20) DEFAULT NULL COMMENT '经办人ID', `OPTER_NAME` varchar(50) DEFAULT NULL COMMENT '经办人姓名', `OPTINS_NO` varchar(20) DEFAULT NULL COMMENT '经办机构编号', `UPDT_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据更新时间', `INVD_FLAG` varchar(3) NOT NULL DEFAULT '0' COMMENT '无效标志', PRIMARY KEY (`MCS_LIST_ID`) USING BTREE, KEY `IDX_RPUP_MCS_LIST_INFO_B_1` (`RPUP_CNT_ITEM_ID`) USING BTREE, KEY `IDX_RPUP_MCS_LIST_INFO_B_2` (`MCS_LIST_CODE`) USING BTREE, KEY `IDX_RPUP_MCS_LIST_INFO_B_3` (`GENNAME`) USING BTREE ); + +SELECT rpup_list_mcs_asoc_b.LIST_MCS_ASOC_ID, rpup_list_mcs_asoc_b.RPUP_CNT_ITEM_ID, rpup_list_mcs_asoc_b.RPUP_CNT_ITEM_ID AS rupuCntItemId, rpup_list_mcs_asoc_b.MCS_REGNO, + rpup_list_mcs_asoc_b.MCS_NAME, rpup_list_mcs_asoc_b.MCS_MOL, rpup_mcs_list_info_b.MCS_LIST_CODE, rpup_mcs_list_info_b.LV1_LIST_NAME, + rpup_mcs_list_info_b.LV2_LIST_NAME, rpup_mcs_list_info_b.LV3_LIST_NAME, rpup_mcs_list_info_b.GENNAME, rpup_mcs_list_info_b.MATL, + rpup_mcs_list_info_b.SPEC, bidprcu_mcs_regcert_b.PRODENTP_CODE, bidprcu_mcs_regcert_b.PRODENTP_NAME, rpup_list_mcs_asoc_b.RID, rpup_list_mcs_asoc_b.CRTER_ID, + rpup_list_mcs_asoc_b.CRTER_NAME, rpup_list_mcs_asoc_b.CRTE_OPTINS_NO, rpup_list_mcs_asoc_b.CRTE_TIME, rpup_list_mcs_asoc_b.OPTER_ID, + rpup_list_mcs_asoc_b.OPTER_NAME, rpup_list_mcs_asoc_b.OPTINS_NO, rpup_list_mcs_asoc_b.UPDT_TIME, rpup_list_mcs_asoc_b.INVD_FLAG +FROM rpup_list_mcs_asoc_b LEFT JOIN bidprcu_mcs_regcert_b ON bidprcu_mcs_regcert_b.mcs_regno = rpup_list_mcs_asoc_b.MCS_REGNO + LEFT JOIN rpup_mcs_list_info_b ON rpup_mcs_list_info_b.MCS_LIST_ID = rpup_list_mcs_asoc_b.MCS_LIST_ID +WHERE rpup_list_mcs_asoc_b.INVD_FLAG = '0' AND rpup_mcs_list_info_b.INVD_FLAG = '0' +AND rpup_list_mcs_asoc_b.RPUP_CNT_ITEM_ID = '1403980836851798017' AND bidprcu_mcs_regcert_b.PRODENTP_NAME IS NOT NULL +GROUP BY MCS_LIST_CODE, MCS_REGNO, MCS_NAME, PRODENTP_NAME, MCS_MOL; + +select t1.c1 from t1, t2 group by c1; +--error 1052 +select * from t1, t2 group by c1; +--error 1052 +select 1 from t1, t2 group by c1; + +drop table t1, t2; +drop table `rpup_list_mcs_asoc_b`, `bidprcu_mcs_regcert_b`, `rpup_mcs_list_info_b`; \ No newline at end of file diff --git a/test/mysql_test/test_suite/hierarchical_query/r/mysql/hierarchical_basic_mysql.result b/tools/deploy/mysql_test/test_suite/hierarchical_query/r/mysql/hierarchical_basic_mysql.result similarity index 100% rename from test/mysql_test/test_suite/hierarchical_query/r/mysql/hierarchical_basic_mysql.result rename to tools/deploy/mysql_test/test_suite/hierarchical_query/r/mysql/hierarchical_basic_mysql.result diff --git a/test/mysql_test/test_suite/hierarchical_query/t/hierarchical_basic_mysql.test b/tools/deploy/mysql_test/test_suite/hierarchical_query/t/hierarchical_basic_mysql.test similarity index 59% rename from test/mysql_test/test_suite/hierarchical_query/t/hierarchical_basic_mysql.test rename to tools/deploy/mysql_test/test_suite/hierarchical_query/t/hierarchical_basic_mysql.test index 31d34a665..f20396d67 100644 --- a/test/mysql_test/test_suite/hierarchical_query/t/hierarchical_basic_mysql.test +++ b/tools/deploy/mysql_test/test_suite/hierarchical_query/t/hierarchical_basic_mysql.test @@ -1,3 +1,5 @@ +#owner: dachuan.sdc +#owner group: SQL3 --error 1305 select SYS_CONNECT_BY_PATH(2,1) from dual; diff --git a/test/mysql_test/test_suite/information_schema/r/mysql/information_schema-big.result b/tools/deploy/mysql_test/test_suite/information_schema/r/mysql/information_schema-big.result similarity index 89% rename from test/mysql_test/test_suite/information_schema/r/mysql/information_schema-big.result rename to tools/deploy/mysql_test/test_suite/information_schema/r/mysql/information_schema-big.result index ab4fbf791..7a7d5386b 100644 --- a/test/mysql_test/test_suite/information_schema/r/mysql/information_schema-big.result +++ b/tools/deploy/mysql_test/test_suite/information_schema/r/mysql/information_schema-big.result @@ -1,5 +1,3 @@ -connect obsys1,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys1; drop tenant if exists tt1 force; drop resource pool if exists mypool1; drop resource unit if exists mybox1; @@ -11,17 +9,9 @@ create_time modify_time resource_pool_id mypool1 1 unit_config_id zone -1 0 0 select * from oceanbase.__all_tenant where tenant_name='tt1'; gmt_create gmt_modified tenant_id tenant_name replica_num zone_list primary_zone locked collation_type info read_only rewrite_merge_version locality logonly_replica_num previous_locality storage_format_version storage_format_work_version default_tablegroup_id compatibility_mode drop_tenant_time status in_recyclebin create_time modify_time tenant_id tt1 -1 zone zone 0 0 0 0 locality logonly_replica_num previous_locality storage_format_version storage_format_work_version -1 0 -1 TENANT_STATUS_NORMAL 0 -disconnect obsys1; -connect tt1_root,$TE_SERVER_IP,root@tt1,,*NO-ONE*,$TE_SERVER_PORT; -connection tt1_root; create user testtt1 identified by 'testtt1'; create database tt1_test; GRANT ALL ON *.* TO testtt1; -connect ob_sys_check_schema,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection ob_sys_check_schema; -disconnect ob_sys_check_schema; -connect conn1,$TE_SERVER_IP,testtt1@tt1,testtt1,tt1_test,$TE_SERVER_PORT; -connection conn1; use test; DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5; DROP VIEW IF EXISTS v1; @@ -60,8 +50,6 @@ c2.column_name LIKE '%SCHEMA%') AND t.table_name NOT LIKE 'ndb%' AND t.table_name NOT LIKE 'innodb%'; table_name column_name -connect conn_root,$OBMYSQL_MS0,root@sys,,*NO-ONE*,$OBMYSQL_PORT; -connection conn_root; SELECT t.table_name, c1.column_name FROM information_schema.tables t INNER JOIN @@ -117,16 +105,11 @@ USER_PRIVILEGES GRANTEE select 1; 1 1 -connection conn1; use test; create table if not exists t1(i1 int, v2 varchar(80), i3 char(20),i4 float, d4 datetime(6),i5 decimal(5,3), primary key(i1)); -connection conn1; create table if not exists t2(i1 int, v2 varchar(80), i3 char(20),i4 float, d4 datetime(6),i5 decimal(5,3), primary key(i1)); -connection conn1; create table if not exists t3(i1 int, v2 varchar(80), i3 char(20),i4 float, d4 datetime(6),i5 decimal(5,3), primary key(i1)); -connection conn1; create table if not exists t4(i1 int, v2 varchar(80), i3 char(20),i4 float, d4 datetime(6),i5 decimal(5,3), primary key(i1)); -connection conn1; SELECT t.table_name, c1.column_name FROM information_schema.tables t INNER JOIN @@ -159,9 +142,6 @@ c2.column_name LIKE '%SCHEMA%') AND t.table_name NOT LIKE 'ndb%' AND t.table_name NOT LIKE 'innodb%'; table_name column_name -connect obsys1,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys1; drop tenant if exists tt1 force; drop resource pool if exists mypool1; drop resource unit if exists mybox1; -disconnect obsys1; diff --git a/test/mysql_test/test_suite/information_schema/r/mysql/information_schema_desc.result b/tools/deploy/mysql_test/test_suite/information_schema/r/mysql/information_schema_desc.result similarity index 93% rename from test/mysql_test/test_suite/information_schema/r/mysql/information_schema_desc.result rename to tools/deploy/mysql_test/test_suite/information_schema/r/mysql/information_schema_desc.result index 06fc841a1..d2ca6e3f0 100644 --- a/test/mysql_test/test_suite/information_schema/r/mysql/information_schema_desc.result +++ b/tools/deploy/mysql_test/test_suite/information_schema/r/mysql/information_schema_desc.result @@ -1,5 +1,3 @@ -connect obsys1,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys1; drop tenant if exists tt1 force; drop resource pool if exists mypool1; drop resource unit if exists mybox1; @@ -12,8 +10,6 @@ create_time modify_time resource_pool_id mypool1 1 unit_config_id zone tenant_id select * from oceanbase.__all_tenant where tenant_name='tt1'; gmt_create gmt_modified tenant_id tenant_name replica_num zone_list primary_zone locked collation_type info read_only rewrite_merge_version locality logonly_replica_num previous_locality storage_format_version storage_format_work_version default_tablegroup_id compatibility_mode drop_tenant_time status in_recyclebin create_time modify_time tenant_id tt1 -1 zone zone 0 0 0 0 locality logonly_replica_num previous_locality storage_format_version storage_format_work_version -1 0 -1 TENANT_STATUS_NORMAL 0 -disconnect obsys1; -connect conn1,$TE_SERVER_IP,root@tt1,,*NO-ONE*,$TE_SERVER_PORT; use information_schema; show variables like "%lower%"; Variable_name Value @@ -255,7 +251,7 @@ Table Create Table GLOBAL_STATUS CREATE TABLE `GLOBAL_STATUS` ( `VARIABLE_NAME` varchar(128) NOT NULL DEFAULT '', `VARIABLE_VALUE` varchar(1024) DEFAULT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' show create table global_variables; View Create View character_set_client collation_connection GLOBAL_VARIABLES CREATE VIEW `GLOBAL_VARIABLES` AS SELECT `variable_name` as VARIABLE_NAME, `value` as VARIABLE_VALUE FROM oceanbase.__tenant_virtual_global_variable utf8mb4 utf8mb4_general_ci @@ -290,7 +286,7 @@ PARTITIONS CREATE TABLE `PARTITIONS` ( `PARTITION_COMMENT` varchar(1024) NOT NULL DEFAULT '', `NODEGROUP` varchar(12) NOT NULL DEFAULT '', `TABLESPACE_NAME` varchar(128) DEFAULT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 show create table processlist; View Create View character_set_client collation_connection PROCESSLIST CREATE VIEW `PROCESSLIST` AS SELECT id AS ID, user AS USER, host AS HOST, db AS DB, command AS COMMAND, time AS TIME, state AS STATE, info AS INFO FROM oceanbase.__all_virtual_processlist WHERE is_serving_tenant(svr_ip, svr_port, effective_tenant_id()) utf8mb4 utf8mb4_general_ci @@ -302,7 +298,7 @@ SCHEMA_PRIVILEGES CREATE TABLE `SCHEMA_PRIVILEGES` ( `TABLE_SCHEMA` varchar(128) NOT NULL DEFAULT '', `PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '', `IS_GRANTABLE` varchar(3) NOT NULL DEFAULT '' -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' show create table schemata; View Create View character_set_client collation_connection SCHEMATA CREATE VIEW `SCHEMATA` AS SELECT 'def' AS CATALOG_NAME, DATABASE_NAME AS SCHEMA_NAME, 'utf8mb4' AS DEFAULT_CHARACTER_SET_NAME, 'utf8mb4_general_ci' AS DEFAULT_COLLATION_NAME, NULL AS SQL_PATH, 'NO' as DEFAULT_ENCRYPTION FROM oceanbase.__all_virtual_database a WHERE a.tenant_id = effective_tenant_id() and in_recyclebin = 0 and database_name != '__recyclebin' utf8mb4 utf8mb4_general_ci @@ -311,13 +307,13 @@ Table Create Table SESSION_STATUS CREATE TABLE `SESSION_STATUS` ( `VARIABLE_NAME` varchar(128) NOT NULL DEFAULT '', `VARIABLE_VALUE` varchar(1024) DEFAULT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 show create table session_variables; Table Create Table SESSION_VARIABLES CREATE TABLE `SESSION_VARIABLES` ( `VARIABLE_NAME` varchar(128) NOT NULL DEFAULT '', `VARIABLE_VALUE` varchar(1024) DEFAULT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' show create table statistics; View Create View character_set_client collation_connection STATISTICS CREATE VIEW `STATISTICS` AS SELECT 'def' as TABLE_CATALOG, table_schema AS TABLE_SCHEMA, `table` as TABLE_NAME, non_unique AS NON_UNIQUE, index_schema as INDEX_SCHEMA, key_name as INDEX_NAME, seq_in_index as SEQ_IN_INDEX, column_name as COLUMN_NAME, collation as COLLATION, cardinality as CARDINALITY, sub_part as SUB_PART, packed as PACKED, `null` as NULLABLE, index_type as INDEX_TYPE, COMMENT, index_comment as INDEX_COMMENT, is_visible as IS_VISIBLE FROM oceanbase.__tenant_virtual_table_index utf8mb4 utf8mb4_general_ci @@ -330,7 +326,7 @@ TABLE_CONSTRAINTS CREATE TABLE `TABLE_CONSTRAINTS` ( `TABLE_SCHEMA` varchar(128) NOT NULL DEFAULT '', `TABLE_NAME` varchar(256) NOT NULL DEFAULT '', `CONSTRAINT_TYPE` varchar(128) NOT NULL DEFAULT '' -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 show create table table_privileges; Table Create Table TABLE_PRIVILEGES CREATE TABLE `TABLE_PRIVILEGES` ( @@ -340,7 +336,7 @@ TABLE_PRIVILEGES CREATE TABLE `TABLE_PRIVILEGES` ( `TABLE_NAME` varchar(64) NOT NULL DEFAULT '', `PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '', `IS_GRANTABLE` varchar(3) NOT NULL DEFAULT '' -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' show create table tables; View Create View character_set_client collation_connection TABLES CREATE VIEW `TABLES` AS select /*+ READ_CONSISTENCY(WEAK), use_merge(b, c, d, e)*/ 'def' as TABLE_CATALOG, b.database_name as TABLE_SCHEMA, a.table_name as TABLE_NAME, case when a.database_id & 0xFFFFFFFFFF = 2 then 'SYSTEM VIEW' when (a.table_type = 1 or a.table_type = 4) then 'VIEW' when a.table_type = 2 then 'SYSTEM TABLE' when a.table_type = 1 then 'INDEX' else 'BASE TABLE' end as TABLE_TYPE, 'OceanBase' as ENGINE, NULL as VERSION, NULL as ROW_FORMAT, sum(c.row_count) as TABLE_ROWS, case when sum(c.row_count) = 0 then 0 else sum(c.data_size)/sum(c.row_count) end as AVG_ROW_LENGTH, sum(c.data_size) as DATA_LENGTH, NULL as MAX_DATA_LENGTH, NULL as INDEX_LENGTH, NULL as DATA_FREE, NULL as AUTO_INCREMENT, a.gmt_create as CREATE_TIME, a.gmt_modified as UPDATE_TIME, NULL as CHECK_TIME, d.collation as TABLE_COLLATION, cast(NULL as unsigned) as CHECKSUM, NULL as CREATE_OPTIONS, a.comment as TABLE_COMMENT from oceanbase.__all_virtual_table a inner join oceanbase.__all_virtual_database b on a.database_id = b.database_id left join oceanbase.__all_virtual_tenant_partition_meta_table c on a.table_id = c.table_id and c.tenant_id = effective_tenant_id() and a.tenant_id = c.tenant_id and c.role = 1 inner join oceanbase.__all_collation d on a.collation_type = d.id where a.tenant_id = effective_tenant_id() and b.tenant_id = effective_tenant_id() and a.table_type != 5 and b.database_name != '__recyclebin' and b.in_recyclebin = 0 and 0 = sys_privilege_check('table_acc', effective_tenant_id(), b.database_name, a.table_name) group by a.table_id, b.database_name, a.table_name, a.table_type, a.gmt_create, a.gmt_modified, d.collation, a.comment utf8mb4 utf8mb4_general_ci @@ -351,11 +347,10 @@ USER_PRIVILEGES CREATE TABLE `USER_PRIVILEGES` ( `TABLE_CATALOG` varchar(4096) NOT NULL DEFAULT '', `PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '', `IS_GRANTABLE` varchar(3) NOT NULL DEFAULT '' -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' show create table views; View Create View character_set_client collation_connection VIEWS CREATE VIEW `VIEWS` AS select /*+ READ_CONSISTENCY(WEAK) */ 'def' AS TABLE_CATALOG, d.database_name as TABLE_SCHEMA, t.table_name as TABLE_NAME, t.view_definition as VIEW_DEFINITION, 'NONE' as CHECK_OPTION, case t.view_is_updatable when 1 then 'YES' else 'NO' end as IS_UPDATABLE, 'NONE' as DEFINER, 'NONE' AS SECURITY_TYPE, case t.collation_type when 45 then 'utf8mb4' else 'NONE' end AS CHARACTER_SET_CLIENT, case t.collation_type when 45 then 'utf8mb4_general_ci' else 'NONE' end AS COLLATION_CONNECTION from oceanbase.__all_virtual_table as t join oceanbase.__all_virtual_database as d on t.tenant_id = effective_tenant_id() and d.tenant_id = effective_tenant_id() and t.database_id = d.database_id where (t.table_type = 1 or t.table_type = 4) and d.in_recyclebin = 0 and d.database_name != '__recyclebin' and d.database_name != 'information_schema' and d.database_name != 'oceanbase' and 0 = sys_privilege_check('table_acc', effective_tenant_id(), d.database_name, t.table_name) utf8mb4 utf8mb4_general_ci -connect conn_sys,$OBMYSQL_MS0,root@sys,,*NO-ONE*,$OBMYSQL_PORT; drop tenant tt1 force; drop resource pool mypool1; drop resource unit mybox1; diff --git a/test/mysql_test/test_suite/information_schema/t/information_schema-big.test b/tools/deploy/mysql_test/test_suite/information_schema/t/information_schema-big.test similarity index 99% rename from test/mysql_test/test_suite/information_schema/t/information_schema-big.test rename to tools/deploy/mysql_test/test_suite/information_schema/t/information_schema-big.test index afb7aff83..abe6e039f 100644 --- a/test/mysql_test/test_suite/information_schema/t/information_schema-big.test +++ b/tools/deploy/mysql_test/test_suite/information_schema/t/information_schema-big.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: yanmu.ztl +#owner group:sql2 +#description:information_schema test # This test uses grants, which can't get tested for embedded server #-- source mysql_test/include/big_test.inc -- source mysql_test/include/not_embedded.inc diff --git a/test/mysql_test/test_suite/information_schema/t/information_schema_desc.test b/tools/deploy/mysql_test/test_suite/information_schema/t/information_schema_desc.test similarity index 98% rename from test/mysql_test/test_suite/information_schema/t/information_schema_desc.test rename to tools/deploy/mysql_test/test_suite/information_schema/t/information_schema_desc.test index 6f5417002..6efe43161 100644 --- a/test/mysql_test/test_suite/information_schema/t/information_schema_desc.test +++ b/tools/deploy/mysql_test/test_suite/information_schema/t/information_schema_desc.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: yanmu.ztl +#owner group:sql2 +#tags: ddl +#description:information schema connect (obsys1,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection obsys1; diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type.result similarity index 94% rename from test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type.result index 56c8a37b9..6ac6bac7f 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type.result @@ -157,7 +157,7 @@ __all_virtual_data_type CREATE TABLE `__all_virtual_data_type` ( `data_type_str` varchar(128) NOT NULL, `data_type_class` bigint(20) NOT NULL, PRIMARY KEY (`data_type`) -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 TABLEGROUP = 'oceanbase' desc __all_virtual_data_type; Field Type Null Key Default Extra data_type bigint(20) NO PRI NULL diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type_class.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type_class.result similarity index 91% rename from test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type_class.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type_class.result index cab2393d1..ef68a5120 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type_class.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_data_type_class.result @@ -104,7 +104,7 @@ __all_virtual_data_type_class CREATE TABLE `__all_virtual_data_type_class` ( `data_type_class` bigint(20) NOT NULL, `data_type_class_str` varchar(128) NOT NULL, PRIMARY KEY (`data_type_class`) -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 TABLEGROUP = 'oceanbase' desc __all_virtual_data_type_class; Field Type Null Key Default Extra data_type_class bigint(20) NO PRI NULL diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_engine.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_engine.result similarity index 82% rename from test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_engine.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_engine.result index dfdb1c8aa..18c1a8aa1 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_engine.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_engine.result @@ -14,7 +14,7 @@ __all_virtual_engine CREATE TABLE `__all_virtual_engine` ( `Transactions` varchar(4) NOT NULL, `XA` varchar(4) NOT NULL, `Savepoints` varchar(4) NOT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 TABLEGROUP = 'oceanbase' desc __all_virtual_engine; Field Type Null Key Default Extra Engine varchar(64) NO NULL diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_interm_result.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_interm_result.result similarity index 100% rename from test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_interm_result.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_interm_result.result diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_pg_partition_info.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_pg_partition_info.result similarity index 97% rename from test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_pg_partition_info.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_pg_partition_info.result index 8b46658a3..9b9bb3757 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_pg_partition_info.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_pg_partition_info.result @@ -1,4 +1,3 @@ -connect conn_admin,$OBMYSQL_MS0,admin@sys,admin,*NO-ONE*,$OBMYSQL_PORT; desc oceanbase.__all_virtual_pg_partition_info; Field Type Null Key Default Extra svr_ip varchar(46) NO NULL diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result similarity index 97% rename from test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result index e79b94d6c..c6d0d0363 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result @@ -1,5 +1,3 @@ -connect my_obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection my_obsys; select tenant_id, table_name from oceanbase.__all_virtual_table where table_name = '__all_virtual_sys_parameter_stat'; tenant_id table_name 1 __all_virtual_sys_parameter_stat @@ -64,6 +62,8 @@ cpu_count cpu_quota_concurrency cpu_reserved datafile_disk_percentage +datafile_maxsize +datafile_next datafile_size data_copy_concurrency data_dir @@ -88,6 +88,7 @@ enable_ddl enable_early_lock_release enable_election_group enable_global_freeze_trigger +enable_kv_ttl enable_log_archive enable_major_freeze enable_manual_merge @@ -133,6 +134,8 @@ index_cache_priority index_clog_cache_priority index_info_block_cache_priority internal_sql_execute_timeout +kv_ttl_duty_duration +kv_ttl_history_recycle_interval large_query_threshold large_query_worker_percentage leak_mod_to_check @@ -201,6 +204,9 @@ plsql_v2_compatibility plsql_warnings px_task_size px_workers_per_cpu_quota +query_response_time_flush +query_response_time_range_base +query_response_time_stats rebuild_replica_data_lag_threshold recyclebin_object_expire_time redundancy_level @@ -290,6 +296,8 @@ _cache_wash_interval _chunk_row_store_mem_limit _clog_aggregation_buffer_amount _create_table_partition_distribution_strategy +_datafile_usage_lower_bound_percentage +_datafile_usage_upper_bound_percentage _data_storage_io_timeout _enable_block_file_punch_hole _enable_compaction_diagnose @@ -306,6 +314,7 @@ _enable_parallel_minor_merge _enable_plan_cache_mem_diagnosis _enable_sparse_row _enable_static_typing_engine +_enable_trans_ctx_size_limit _flush_clog_aggregation_buffer_timeout _follower_replica_merge_level _force_hash_join_spill @@ -371,4 +380,3 @@ ROOT_SERVICE specifies whether major_freeze function is turned on. Value: True: TENANT major_compact_trigger alias to minor_freeze_times, Range: [0,65535] in integer show parameters; show parameters like '%log%'; -disconnect my_obsys; diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_upgrade_inspection.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_upgrade_inspection.result similarity index 84% rename from test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_upgrade_inspection.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_upgrade_inspection.result index af9cdcb55..a6eaa14e8 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/all_virtual_upgrade_inspection.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_upgrade_inspection.result @@ -1,4 +1,3 @@ -connect conn_admin,$OBMYSQL_MS0,admin@sys,admin,*NO-ONE*,$OBMYSQL_PORT; desc oceanbase.__all_virtual_upgrade_inspection; Field Type Null Key Default Extra name varchar(128) NO NULL diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/character_sets.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/character_sets.result similarity index 100% rename from test/mysql_test/test_suite/inner_table/r/mysql/character_sets.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/character_sets.result diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/collation_character_set_applicability.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/collation_character_set_applicability.result similarity index 100% rename from test/mysql_test/test_suite/inner_table/r/mysql/collation_character_set_applicability.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/collation_character_set_applicability.result diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/collations.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/collations.result similarity index 100% rename from test/mysql_test/test_suite/inner_table/r/mysql/collations.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/collations.result diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/global_status.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/global_status.result similarity index 66% rename from test/mysql_test/test_suite/inner_table/r/mysql/global_status.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/global_status.result index 3413795b6..28275982c 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/global_status.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/global_status.result @@ -7,7 +7,7 @@ Table Create Table GLOBAL_STATUS CREATE TABLE `GLOBAL_STATUS` ( `VARIABLE_NAME` varchar(128) NOT NULL DEFAULT '', `VARIABLE_VALUE` varchar(1024) DEFAULT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 TABLEGROUP = 'oceanbase' desc global_status; Field Type Null Key Default Extra VARIABLE_NAME varchar(128) NO diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/global_variables.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/global_variables.result similarity index 100% rename from test/mysql_test/test_suite/inner_table/r/mysql/global_variables.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/global_variables.result diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result similarity index 99% rename from test/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result index 124f0644b..ad3fd60c5 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result @@ -1,5 +1,3 @@ -connect obsys1,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys1; use oceanbase; set @@ob_query_timeout = 10000000000; set @@ob_log_level = 'WARN'; @@ -192,6 +190,8 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 317 __all_backup_info 0 1099511627777 1 318 __all_backup_log_archive_status_v2 0 1099511627777 1 321 __all_backup_backup_log_archive_status_v2 0 1099511627777 1 +410 __all_kv_ttl_task 0 1099511627777 1 +411 __all_kv_ttl_task_history 0 1099511627777 1 10001 __tenant_virtual_all_table 2 1099511627777 1 10002 __tenant_virtual_table_column 2 1099511627777 1 10003 __tenant_virtual_table_index 2 1099511627777 1 @@ -470,6 +470,9 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 12202 __all_virtual_backup_backupset_task 2 1099511627777 1 12203 __all_virtual_pg_backup_backupset_task 2 1099511627777 1 12206 __all_virtual_global_transaction 2 1099511627777 1 +12325 __all_virtual_query_response_time 2 1099511627777 65536 +12326 __all_virtual_kv_ttl_task 2 1099511627777 1 +12327 __all_virtual_kv_ttl_task_history 2 1099511627777 1 15001 ALL_VIRTUAL_TABLE_AGENT 2 1099511627782 1 15002 ALL_VIRTUAL_COLUMN_AGENT 2 1099511627782 1 15003 ALL_VIRTUAL_DATABASE_AGENT 2 1099511627782 1 @@ -780,6 +783,11 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 21143 CDB_OB_BACKUP_ARCHIVELOG 1 1099511627777 1 21144 CDB_OB_BACKUP_BACKUP_ARCHIVELOG 1 1099511627777 1 21150 COLUMN_PRIVILEGES 1 1099511627778 1 +21300 DBA_OB_KV_TTL_TASKS 1 1099511627777 1 +21301 DBA_OB_KV_TTL_TASK_HISTORY 1 1099511627777 1 +21306 QUERY_RESPONSE_TIME 1 1099511627778 1 +21307 CDB_OB_KV_TTL_TASKS 1 1099511627777 1 +21308 CDB_OB_KV_TTL_TASK_HISTORY 1 1099511627777 1 25001 DBA_SYNONYMS 1 1099511627782 1 25002 DBA_OBJECTS 1 1099511627782 1 25003 ALL_OBJECTS 1 1099511627782 1 @@ -1280,6 +1288,30 @@ DEFINER varchar(4) NO SECURITY_TYPE varchar(4) NO CHARACTER_SET_CLIENT varchar(7) NO NULL COLLATION_CONNECTION varchar(18) NO NULL +desc information_schema.TRIGGERS; +Field Type Null Key Default Extra +TRIGGER_CATALOG varchar(64) NO +TRIGGER_SCHEMA varchar(64) NO +TRIGGER_NAME varchar(64) NO +EVENT_MANIPULATION null NO +EVENT_OBJECT_CATALOG varchar(64) NO +EVENT_OBJECT_SCHEMA varchar(64) NO +EVENT_OBJECT_TABLE varchar(64) NO +ACTION_ORDER bigint(0) unsigned NO +ACTION_CONDITION varbinary(0) NO +ACTION_STATEMENT null NO +ACTION_ORIENTATION varchar(3) NO +ACTION_TIMING null NO +ACTION_REFERENCE_OLD_TABLE varbinary(0) NO +ACTION_REFERENCE_NEW_TABLE varbinary(0) NO +ACTION_REFERENCE_OLD_ROW varchar(3) NO +ACTION_REFERENCE_NEW_ROW varchar(3) NO +CREATED time(2) NO +SQL_MODE null NO +DEFINER varchar(288) NO +CHARACTER_SET_CLIENT varchar(64) NO +COLLATION_CONNECTION varchar(64) NO +DATABASE_COLLATION varchar(64) NO desc mysql.db; Field Type Null Key Default Extra host varchar(128) NO NULL @@ -5597,6 +5629,7 @@ cpu_max_assigned double NO NULL mem_capacity bigint(20) NO NULL mem_max_assigned bigint(20) NO NULL ssl_key_expired_time bigint(20) NO NULL +disk_actual bigint(20) NO NULL desc oceanbase.__all_virtual_session_event; Field Type Null Key Default Extra session_id bigint(20) NO PRI NULL @@ -6263,6 +6296,7 @@ select * from information_schema.TABLE_PRIVILEGES limit 1; select * from information_schema.USER_PRIVILEGES limit 1; select * from information_schema.USER_RECYCLEBIN limit 1; select * from information_schema.VIEWS limit 1; +select * from information_schema.TRIGGERS limit 1; select * from mysql.db limit 1; select * from mysql.proc limit 1; select * from mysql.time_zone limit 1; diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/partitions.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/partitions.result similarity index 84% rename from test/mysql_test/test_suite/inner_table/r/mysql/partitions.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/partitions.result index 88d555ecd..5341a2894 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/partitions.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/partitions.result @@ -2,9 +2,9 @@ drop table if exists pt1; create table pt1 (c1 int primary key, c2 int) partition by key(c1) partitions 3; select * from information_schema.partitions where table_name = 'pt1'; TABLE_CATALOG TABLE_SCHEMA TABLE_NAME PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION PARTITION_DESCRIPTION TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM PARTITION_COMMENT NODEGROUP TABLESPACE_NAME -def test pt1 p0 NULL 0 0 KEY NULL c1 NULL 0 0 0 0 0 0 NULL NULL NULL NULL NULL default -def test pt1 p1 NULL 1 0 KEY NULL c1 NULL 0 0 0 0 0 0 NULL NULL NULL NULL NULL default -def test pt1 p2 NULL 2 0 KEY NULL c1 NULL 0 0 0 0 0 0 NULL NULL NULL NULL NULL default +def test pt1 p0 NULL 0 0 KEY NULL c1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL default +def test pt1 p1 NULL 1 0 KEY NULL c1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL default +def test pt1 p2 NULL 2 0 KEY NULL c1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL default select table_schema, table_name from information_schema.partitions where table_name = 'pt1'; table_schema table_name test pt1 diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/schemata.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/schemata.result similarity index 100% rename from test/mysql_test/test_suite/inner_table/r/mysql/schemata.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/schemata.result diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/session_status.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/session_status.result similarity index 66% rename from test/mysql_test/test_suite/inner_table/r/mysql/session_status.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/session_status.result index 3413795b6..28275982c 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/session_status.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/session_status.result @@ -7,7 +7,7 @@ Table Create Table GLOBAL_STATUS CREATE TABLE `GLOBAL_STATUS` ( `VARIABLE_NAME` varchar(128) NOT NULL DEFAULT '', `VARIABLE_VALUE` varchar(1024) DEFAULT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 TABLEGROUP = 'oceanbase' desc global_status; Field Type Null Key Default Extra VARIABLE_NAME varchar(128) NO diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/session_variables.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/session_variables.result similarity index 81% rename from test/mysql_test/test_suite/inner_table/r/mysql/session_variables.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/session_variables.result index 718ca0e32..d69846040 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/session_variables.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/session_variables.result @@ -17,7 +17,7 @@ Table Create Table SESSION_VARIABLES CREATE TABLE `SESSION_VARIABLES` ( `VARIABLE_NAME` varchar(128) NOT NULL DEFAULT '', `VARIABLE_VALUE` varchar(1024) DEFAULT NULL -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 TABLEGROUP = 'oceanbase' desc session_variables; Field Type Null Key Default Extra VARIABLE_NAME varchar(128) NO diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/table_constraints.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/table_constraints.result new file mode 100644 index 000000000..e661e8fea --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/table_constraints.result @@ -0,0 +1,19 @@ +result_format: 4 +drop database if exists xiaofeng_db; +create database xiaofeng_db; +use xiaofeng_db; +create table t1(c1 int primary key); +create table t2(c1 int unique, c2 int, c3 varchar(10), c4 varchar(10), constraint test_for_table_constraints_check_name check(c3 = substr(c4, 1, 1)), + constraint test_for_table_constraints_fk_name_1 foreign key (c1) references t1(c1), + constraint test_for_table_constraints_fk_name_2 foreign key (c2) references t2(c1)); +select * from information_schema.table_constraints where CONSTRAINT_SCHEMA = 'xiaofeng_db'; ++--------------------+-------------------+---------------------------------------+--------------+------------+-----------------+ +| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | ++--------------------+-------------------+---------------------------------------+--------------+------------+-----------------+ +| def | xiaofeng_db | PRIMARY | xiaofeng_db | t1 | PRIMARY KEY | +| def | xiaofeng_db | c1 | xiaofeng_db | t2 | UNIQUE | +| def | xiaofeng_db | test_for_table_constraints_check_name | xiaofeng_db | t2 | CHECK | +| def | xiaofeng_db | test_for_table_constraints_fk_name_2 | xiaofeng_db | t2 | FOREIGN KEY | +| def | xiaofeng_db | test_for_table_constraints_fk_name_1 | xiaofeng_db | t2 | FOREIGN KEY | ++--------------------+-------------------+---------------------------------------+--------------+------------+-----------------+ +drop database xiaofeng_db; diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/table_privileges.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/table_privileges.result similarity index 89% rename from test/mysql_test/test_suite/inner_table/r/mysql/table_privileges.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/table_privileges.result index 5458f5c0c..23d8987fc 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/table_privileges.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/table_privileges.result @@ -11,7 +11,7 @@ TABLE_PRIVILEGES CREATE TABLE `TABLE_PRIVILEGES` ( `TABLE_NAME` varchar(64) NOT NULL DEFAULT '', `PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '', `IS_GRANTABLE` varchar(3) NOT NULL DEFAULT '' -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 TABLEGROUP = 'oceanbase' desc information_schema.table_privileges; Field Type Null Key Default Extra GRANTEE varchar(81) NO diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_event_name.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_event_name.result similarity index 100% rename from test/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_event_name.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_event_name.result diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_partition_stat.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_partition_stat.result similarity index 77% rename from test/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_partition_stat.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_partition_stat.result index cff5be6ca..e9fc376a5 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_partition_stat.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_partition_stat.result @@ -5,5 +5,4 @@ partition_id bigint(20) NO NULL partition_cnt bigint(20) NO NULL row_count bigint(20) NO NULL diff_percentage bigint(20) NO NULL -connect conn_admin,$OBMYSQL_MS0,admin@sys,admin,*NO-ONE*,$OBMYSQL_PORT; pass diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_statname.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_statname.result similarity index 100% rename from test/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_statname.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/tenant_virtual_statname.result diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/user_privileges.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/user_privileges.result similarity index 94% rename from test/mysql_test/test_suite/inner_table/r/mysql/user_privileges.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/user_privileges.result index 64b62ade8..b5533cb1d 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/user_privileges.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/user_privileges.result @@ -5,7 +5,7 @@ USER_PRIVILEGES CREATE TABLE `USER_PRIVILEGES` ( `TABLE_CATALOG` varchar(4096) NOT NULL DEFAULT '', `PRIVILEGE_TYPE` varchar(64) NOT NULL DEFAULT '', `IS_GRANTABLE` varchar(3) NOT NULL DEFAULT '' -) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = COMPACT COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 10 TABLEGROUP = 'oceanbase' +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'none' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 TABLEGROUP = 'oceanbase' desc information_schema.user_privileges; Field Type Null Key Default Extra GRANTEE varchar(81) NO diff --git a/test/mysql_test/test_suite/inner_table/r/mysql/views.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/views.result similarity index 99% rename from test/mysql_test/test_suite/inner_table/r/mysql/views.result rename to tools/deploy/mysql_test/test_suite/inner_table/r/mysql/views.result index c07836a78..e298289d4 100644 --- a/test/mysql_test/test_suite/inner_table/r/mysql/views.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/views.result @@ -1,5 +1,3 @@ -connect obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys; use information_schema; select * from views order by table_name desc; TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION @@ -460,5 +458,3 @@ DEFINER varchar(4) NO SECURITY_TYPE varchar(4) NO CHARACTER_SET_CLIENT varchar(7) NO NULL COLLATION_CONNECTION varchar(18) NO NULL -disconnect obsys; -connection default; diff --git a/test/mysql_test/test_suite/inner_table/t/all_virtual_data_type.test b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_data_type.test similarity index 87% rename from test/mysql_test/test_suite/inner_table/t/all_virtual_data_type.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_data_type.test index 5602f1438..8a39cda4a 100644 --- a/test/mysql_test/test_suite/inner_table/t/all_virtual_data_type.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_data_type.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test oceanbase.__all_virtual_data_type use oceanbase; diff --git a/test/mysql_test/test_suite/inner_table/t/all_virtual_data_type_class.test b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_data_type_class.test similarity index 86% rename from test/mysql_test/test_suite/inner_table/t/all_virtual_data_type_class.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_data_type_class.test index 614778e3b..53804610d 100644 --- a/test/mysql_test/test_suite/inner_table/t/all_virtual_data_type_class.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_data_type_class.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test oceanbase.__all_virtual_data_type_class use oceanbase; diff --git a/test/mysql_test/test_suite/inner_table/t/all_virtual_engine.test b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_engine.test similarity index 80% rename from test/mysql_test/test_suite/inner_table/t/all_virtual_engine.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_engine.test index 29ed69475..99aac60ce 100644 --- a/test/mysql_test/test_suite/inner_table/t/all_virtual_engine.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_engine.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test oceanbase.__all_virtual_engine use oceanbase; diff --git a/test/mysql_test/test_suite/inner_table/t/all_virtual_interm_result.test b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_interm_result.test similarity index 92% rename from test/mysql_test/test_suite/inner_table/t/all_virtual_interm_result.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_interm_result.test index 7f194463f..7f959d889 100644 --- a/test/mysql_test/test_suite/inner_table/t/all_virtual_interm_result.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_interm_result.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: yuchen.wyc +# owner group: SQL1 +# description: 虚拟表__tenant_virtual_interm_result的简单测试 select * from oceanbase.__tenant_virtual_interm_result where svr_ip = '0.0.0.0' and svr_port = 0; --disable_result_log diff --git a/test/mysql_test/test_suite/inner_table/t/all_virtual_pg_partition_info.test b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_pg_partition_info.test similarity index 94% rename from test/mysql_test/test_suite/inner_table/t/all_virtual_pg_partition_info.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_pg_partition_info.test index 52ffdaa92..77f6019a9 100644 --- a/test/mysql_test/test_suite/inner_table/t/all_virtual_pg_partition_info.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_pg_partition_info.test @@ -1,12 +1,16 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : shanyan.g +#owner group : transaction +#description : 测试虚拟表__all_virtual_pg_partition_info --disable_abort_on_error --disable_warnings connect (conn_admin,$OBMYSQL_MS0,admin@sys,admin,*NO-ONE*,$OBMYSQL_PORT); +## case:检查表结构 desc oceanbase.__all_virtual_pg_partition_info; #测试PG内的表 diff --git a/test/mysql_test/test_suite/inner_table/t/all_virtual_sys_parameter_stat.test b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_sys_parameter_stat.test similarity index 84% rename from test/mysql_test/test_suite/inner_table/t/all_virtual_sys_parameter_stat.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_sys_parameter_stat.test index 09c69cf07..52faaa219 100644 --- a/test/mysql_test/test_suite/inner_table/t/all_virtual_sys_parameter_stat.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_sys_parameter_stat.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: guoping.wgp +# owner group: SQL1 +# description: 测试虚拟表__all_virtual_sys_parameter_stat +#tags : parameter connect (my_obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection my_obsys; diff --git a/test/mysql_test/test_suite/inner_table/t/all_virtual_upgrade_inspection.test b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_upgrade_inspection.test similarity index 77% rename from test/mysql_test/test_suite/inner_table/t/all_virtual_upgrade_inspection.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_upgrade_inspection.test index fafab1ca2..ff08c869b 100644 --- a/test/mysql_test/test_suite/inner_table/t/all_virtual_upgrade_inspection.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/all_virtual_upgrade_inspection.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : zhenjiang.xzj +#owner group : STORAGE +#description : 测试虚拟表__all_virtual_upgrade_inspection --disable_abort_on_error --disable_warnings diff --git a/test/mysql_test/test_suite/inner_table/t/character_sets.test b/tools/deploy/mysql_test/test_suite/inner_table/t/character_sets.test similarity index 83% rename from test/mysql_test/test_suite/inner_table/t/character_sets.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/character_sets.test index 0962caf81..3fb3c76f0 100644 --- a/test/mysql_test/test_suite/inner_table/t/character_sets.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/character_sets.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test information_schema.character_sets use information_schema; diff --git a/test/mysql_test/test_suite/inner_table/t/collation_character_set_applicability.test b/tools/deploy/mysql_test/test_suite/inner_table/t/collation_character_set_applicability.test similarity index 84% rename from test/mysql_test/test_suite/inner_table/t/collation_character_set_applicability.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/collation_character_set_applicability.test index c70ce1fe8..ca16adb74 100644 --- a/test/mysql_test/test_suite/inner_table/t/collation_character_set_applicability.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/collation_character_set_applicability.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : xiaofeng.lby +#owner group : sql2 +#desription : test collation_character_set_applicability use information_schema; diff --git a/test/mysql_test/test_suite/inner_table/t/collations.test b/tools/deploy/mysql_test/test_suite/inner_table/t/collations.test similarity index 82% rename from test/mysql_test/test_suite/inner_table/t/collations.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/collations.test index 96445ee8e..4012f7477 100644 --- a/test/mysql_test/test_suite/inner_table/t/collations.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/collations.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test information_schema.collations use information_schema; diff --git a/test/mysql_test/test_suite/inner_table/t/global_status.test b/tools/deploy/mysql_test/test_suite/inner_table/t/global_status.test similarity index 74% rename from test/mysql_test/test_suite/inner_table/t/global_status.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/global_status.test index 2332f04c6..48194f6a2 100644 --- a/test/mysql_test/test_suite/inner_table/t/global_status.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/global_status.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test information_schema.global_status use information_schema; diff --git a/test/mysql_test/test_suite/inner_table/t/global_variables.test b/tools/deploy/mysql_test/test_suite/inner_table/t/global_variables.test similarity index 91% rename from test/mysql_test/test_suite/inner_table/t/global_variables.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/global_variables.test index aebc4c8cd..b6edd8a62 100644 --- a/test/mysql_test/test_suite/inner_table/t/global_variables.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/global_variables.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test information_schema.global_variables use information_schema; diff --git a/test/mysql_test/test_suite/inner_table/t/inner_table_overall.test b/tools/deploy/mysql_test/test_suite/inner_table/t/inner_table_overall.test similarity index 96% rename from test/mysql_test/test_suite/inner_table/t/inner_table_overall.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/inner_table_overall.test index 5d7ce6211..33779bcc7 100644 --- a/test/mysql_test/test_suite/inner_table/t/inner_table_overall.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/inner_table_overall.test @@ -1,6 +1,11 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: yanmu.ztl +#owner group: SQL2 +# tags: optimizer +#description: 该case是为了验证内部表是否符合规范 +## 规范: 1.基础系统表保持OB既有风格,以’__all_’开头,统一用单数、主动、第一人称一般时(不搞ing、ed、s等) ## 2.虚拟表保持OB既有风格,以’__all_virtual’或者’__tenant_virtual’开头,统一用单数、主动、第一人称一般时(不搞ing、ed、s等)。__all_virtual为展示系统内部信息的虚拟表,支持直接查询,可基于此建立兼容其他数据库的视图;__tenant_virtual虚拟表为支持特定操作(如show)而创建的,一般不支持直接查询。 ## 3.基础系统表和虚拟表属OB系统内部实现,其定义要考虑版本平滑升级和扩展性的需要,不建议DBA及普通用户直接使用这两类对象。后续会增加对该类对象可见性的控制,在通常的show table等外部命令的一般性输出中不显示内部对象。 ## 4.明确_all_table对象的类型,区分基础系统表、用户表、虚拟表、系统视图、用户视图,同时确认各种对象table_id的范围符合设计。 @@ -47,6 +52,7 @@ if ($view_table_count == $view_count_with_tid) ## Check all sys tables created before 2018-11-15, new table added after this date should ## add it's own case, can not depends on this hot point any more. ## +## table list are selected by: select concat(a, ".", b) from (select d.database_name a, t.table_name b from __all_virtual_database d, __all_virtual_table t where t.database_id = d.database_id and t.table_type in (0, 1, 2) and t.table_name not in ('__tenant_virtual_all_table','__tenant_virtual_current_tenant','__tenant_virtual_show_create_table','__tenant_virtual_show_create_database','__tenant_virtual_table_column','__all_virtual_proxy_schema', '__all_virtual_proxy_partition_info', '__all_virtual_proxy_partition', '__all_virtual_proxy_sub_partition', '__all_virtual_proxy_route','__tenant_virtual_show_create_procedure', '__all_virtual_partition_location', '__tenant_virtual_show_tables', '__tenant_virtual_show_create_tablegroup') order by 1,2) x; # desc information_schema.CHARACTER_SETS; @@ -73,6 +79,7 @@ desc information_schema.TABLE_PRIVILEGES; desc information_schema.USER_PRIVILEGES; desc information_schema.USER_RECYCLEBIN; desc information_schema.VIEWS; +desc information_schema.TRIGGERS; desc mysql.db; desc mysql.proc; desc mysql.time_zone; @@ -369,6 +376,7 @@ select * from information_schema.TABLE_PRIVILEGES limit 1; select * from information_schema.USER_PRIVILEGES limit 1; select * from information_schema.USER_RECYCLEBIN limit 1; select * from information_schema.VIEWS limit 1; +select * from information_schema.TRIGGERS limit 1; select * from mysql.db limit 1; select * from mysql.proc limit 1; select * from mysql.time_zone limit 1; @@ -612,6 +620,7 @@ select * from oceanbase.__all_virtual_tenant_disk_stat limit 1; select * from oceanbase.__all_virtual_tenant_memstore_allocator_info limit 1; select * from oceanbase.__all_virtual_tenant_memstore_info limit 1; select * from oceanbase.__all_virtual_tenant_stat limit 1; +#bug: https://work.aone.alibaba-inc.com/issue/27146409 #select * from oceanbase.__all_virtual_trace_log limit 1; select * from oceanbase.__all_virtual_trans_audit limit 1; select * from oceanbase.__all_virtual_trans_lock_stat limit 1; diff --git a/test/mysql_test/test_suite/inner_table/t/partitions.test b/tools/deploy/mysql_test/test_suite/inner_table/t/partitions.test similarity index 83% rename from test/mysql_test/test_suite/inner_table/t/partitions.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/partitions.test index 04d7d5bc0..68289860f 100644 --- a/test/mysql_test/test_suite/inner_table/t/partitions.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/partitions.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : xiaofeng.lby +#owner group : sql2 +#description : test information_schema.partitions --disable_warnings drop table if exists pt1; diff --git a/test/mysql_test/test_suite/inner_table/t/schemata.test b/tools/deploy/mysql_test/test_suite/inner_table/t/schemata.test similarity index 79% rename from test/mysql_test/test_suite/inner_table/t/schemata.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/schemata.test index 4b1661058..fff0a2952 100644 --- a/test/mysql_test/test_suite/inner_table/t/schemata.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/schemata.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test information_schema.schemata use information_schema; select * from schemata limit 0; diff --git a/test/mysql_test/test_suite/inner_table/t/session_status.test b/tools/deploy/mysql_test/test_suite/inner_table/t/session_status.test similarity index 74% rename from test/mysql_test/test_suite/inner_table/t/session_status.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/session_status.test index 2332f04c6..48194f6a2 100644 --- a/test/mysql_test/test_suite/inner_table/t/session_status.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/session_status.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test information_schema.global_status use information_schema; diff --git a/test/mysql_test/test_suite/inner_table/t/session_variables.test b/tools/deploy/mysql_test/test_suite/inner_table/t/session_variables.test similarity index 91% rename from test/mysql_test/test_suite/inner_table/t/session_variables.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/session_variables.test index 9979b2426..c62398b61 100644 --- a/test/mysql_test/test_suite/inner_table/t/session_variables.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/session_variables.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : nijia.nj +#owner group : sql2 +#description : test information_schema.session_variables use information_schema; diff --git a/test/mysql_test/test_suite/inner_table/t/table_constraints.test b/tools/deploy/mysql_test/test_suite/inner_table/t/table_constraints.test similarity index 82% rename from test/mysql_test/test_suite/inner_table/t/table_constraints.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/table_constraints.test index 36fc2c916..bcf2a8fcc 100644 --- a/test/mysql_test/test_suite/inner_table/t/table_constraints.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/table_constraints.test @@ -1,7 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log - +#owner : xiaofeng.lby +#owner group : sql2 +#description : test information_schema.table_constraints +--result_format 4 --disable_warnings drop database if exists xiaofeng_db; @@ -13,4 +16,4 @@ create table t2(c1 int unique, c2 int, c3 varchar(10), c4 varchar(10), constrain constraint test_for_table_constraints_fk_name_1 foreign key (c1) references t1(c1), constraint test_for_table_constraints_fk_name_2 foreign key (c2) references t2(c1)); select * from information_schema.table_constraints where CONSTRAINT_SCHEMA = 'xiaofeng_db'; -drop database xiaofeng_db; +drop database xiaofeng_db; \ No newline at end of file diff --git a/test/mysql_test/test_suite/inner_table/t/table_privileges.test b/tools/deploy/mysql_test/test_suite/inner_table/t/table_privileges.test similarity index 92% rename from test/mysql_test/test_suite/inner_table/t/table_privileges.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/table_privileges.test index 7a31696bc..0749ad2a4 100644 --- a/test/mysql_test/test_suite/inner_table/t/table_privileges.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/table_privileges.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : xinqi.zlm +#owner group : sql1 +#description : test information_schema. create user tmp_user_test_user_priv identified by '123'; create database test_user_priv_db; diff --git a/test/mysql_test/test_suite/inner_table/t/tenant_virtual_event_name.test b/tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_event_name.test similarity index 83% rename from test/mysql_test/test_suite/inner_table/t/tenant_virtual_event_name.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_event_name.test index 15706c4df..e743905ad 100644 --- a/test/mysql_test/test_suite/inner_table/t/tenant_virtual_event_name.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_event_name.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: xiaoyi.xy +#owner group : storage +#description : __tenant_virtual_event_name --disable_abort_on_error --disable_warnings diff --git a/test/mysql_test/test_suite/inner_table/t/tenant_virtual_partition_stat.test b/tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_partition_stat.test similarity index 80% rename from test/mysql_test/test_suite/inner_table/t/tenant_virtual_partition_stat.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_partition_stat.test index 7726483ae..6ccd49199 100644 --- a/test/mysql_test/test_suite/inner_table/t/tenant_virtual_partition_stat.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_partition_stat.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : zhenjiang.xzj +#owner group : STORAGE +#description : 测试虚拟表__tenant_virtual_partition_stat --disable_abort_on_error --disable_warnings diff --git a/test/mysql_test/test_suite/inner_table/t/tenant_virtual_statname.test b/tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_statname.test similarity index 83% rename from test/mysql_test/test_suite/inner_table/t/tenant_virtual_statname.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_statname.test index 7734e5a99..c99ecf70e 100644 --- a/test/mysql_test/test_suite/inner_table/t/tenant_virtual_statname.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/tenant_virtual_statname.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: xiaoyi.xy +#owner group : storage +#description : __tenant_virtual_statname --disable_abort_on_error --disable_warnings diff --git a/test/mysql_test/test_suite/inner_table/t/user_privileges.test b/tools/deploy/mysql_test/test_suite/inner_table/t/user_privileges.test similarity index 94% rename from test/mysql_test/test_suite/inner_table/t/user_privileges.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/user_privileges.test index 519f7ec44..a9c5b0772 100644 --- a/test/mysql_test/test_suite/inner_table/t/user_privileges.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/user_privileges.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : xinqi.zlm +#owner group : sql1 +#description : test information_schema.user_privileges #table format diff --git a/test/mysql_test/test_suite/inner_table/t/views.test b/tools/deploy/mysql_test/test_suite/inner_table/t/views.test similarity index 84% rename from test/mysql_test/test_suite/inner_table/t/views.test rename to tools/deploy/mysql_test/test_suite/inner_table/t/views.test index 9dc821e06..f8ba59342 100644 --- a/test/mysql_test/test_suite/inner_table/t/views.test +++ b/tools/deploy/mysql_test/test_suite/inner_table/t/views.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : xiaofeng.lby +#owner group : sql2 +#description : test information_schema.views connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection obsys; diff --git a/tools/deploy/mysql_test/test_suite/join/r/mysql/anti_semi_join.result b/tools/deploy/mysql_test/test_suite/join/r/mysql/anti_semi_join.result new file mode 100644 index 000000000..d4ad772f2 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/join/r/mysql/anti_semi_join.result @@ -0,0 +1,4214 @@ +result_format: 4 +explain_protocol: 2 +drop table if exists xy_t1, xy_t2; +create table xy_t1(c1 int, c2 int); +create table xy_t2(c1 int, c2 int); +insert/*insert trace*/ into xy_t1 values(0, 0), (1,1), (2,2), (5,5), (5,5), (6,7), (6,6), (7,7); +insert/*insert trace*/ into xy_t2 values(1,1), (3,3), (5,5), (5,5), (6,6); + + +# ************** 测试anti仅含equal condition的情况 ******* +EXPLAIN select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |3 |89 | +|1 | TABLE SCAN |xy_t1|8 |38 | +|2 | MATERIAL | |5 |38 | +|3 | TABLE SCAN |xy_t2|5 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + conds([xy_t1.c1 = xy_t2.c1]), nl_params_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([xy_t2.c1]), filter(nil) + 3 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + +select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | 2 | +| 7 | 7 | ++------+------+ + +EXPLAIN select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE ANTI JOIN| |3 |91 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | SORT | |5 |41 | +|4 | TABLE SCAN |xy_t2|5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c1]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 4 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + +select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | 2 | +| 7 | 7 | ++------+------+ + +EXPLAIN select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |3 |86 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds(nil) + 1 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | 2 | +| 7 | 7 | ++------+------+ +# ************* end ******************* + +# ************** 测试anti含other condition的情况 ******* +EXPLAIN select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |7 |92 | +|1 | TABLE SCAN |xy_t1|8 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |xy_t2|5 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + conds([xy_t1.c1 = xy_t2.c1], [xy_t1.c2 > xy_t2.c2]), nl_params_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil) + 3 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + +select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 1 | 1 | +| 2 | 2 | +| 5 | 5 | +| 5 | 5 | +| 6 | 6 | +| 7 | 7 | ++------+------+ + +EXPLAIN select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE ANTI JOIN| |7 |90 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | SORT | |5 |42 | +|4 | TABLE SCAN |xy_t2|5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c2 > xy_t2.c2]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 4 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + +select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 1 | 1 | +| 2 | 2 | +| 5 | 5 | +| 5 | 5 | +| 6 | 6 | +| 7 | 7 | ++------+------+ + +EXPLAIN select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |7 |85 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c2 > xy_t2.c2]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 1 | 1 | +| 2 | 2 | +| 5 | 5 | +| 5 | 5 | +| 6 | 6 | +| 7 | 7 | ++------+------+ +# ************** end ********* + +# ************** 测试semi仅含equal condition的情况 ******* +EXPLAIN select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN| |5 |89 | +|1 | TABLE SCAN |xy_t1|8 |38 | +|2 | MATERIAL | |5 |38 | +|3 | TABLE SCAN |xy_t2|5 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + conds([xy_t1.c1 = xy_t2.c1]), nl_params_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([xy_t2.c1]), filter(nil) + 3 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + +select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 6 | 7 | +| 6 | 6 | ++------+------+ + +EXPLAIN select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN| |5 |91 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | SORT | |5 |41 | +|4 | TABLE SCAN |xy_t2|5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c1]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 4 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + +select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 6 | 7 | +| 6 | 6 | ++------+------+ + +EXPLAIN select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |5 |86 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds(nil) + 1 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 6 | 7 | +| 6 | 6 | ++------+------+ +# ************* end ******************* + +# ************** 测试semi join含other condition的情况 ******* +EXPLAIN select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN| |2 |92 | +|1 | TABLE SCAN |xy_t1|8 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |xy_t2|5 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + conds([xy_t1.c1 = xy_t2.c1], [xy_t1.c2 > xy_t2.c2]), nl_params_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil) + 3 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + +select /*+ USE_NL(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 6 | 7 | ++------+------+ + +EXPLAIN select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN| |2 |90 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | SORT | |5 |42 | +|4 | TABLE SCAN |xy_t2|5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c2 > xy_t2.c2]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 4 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + +select /*+ USE_MERGE(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 6 | 7 | ++------+------+ + +EXPLAIN select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |2 |85 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c2 > xy_t2.c2]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ USE_HASH(xy_t1, xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 6 | 7 | ++------+------+ +# ************** end ********* + +# ************** 测试上层算子需要投影的情况 ******** +EXPLAIN select /*+ USE_NL(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |7 |92 | +|1 | TABLE SCAN |xy_t1|8 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |xy_t2|5 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2], [xy_t1.c1], [xy_t1.c2]), filter(nil), + conds([xy_t1.c1 = xy_t2.c1], [xy_t1.c2 > xy_t2.c2]), nl_params_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil) + 3 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + +select /*+ USE_NL(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 0 | 0 | 0 | 0 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 5 | 5 | 5 | 5 | +| 5 | 5 | 5 | 5 | +| 6 | 6 | 6 | 6 | +| 7 | 7 | 7 | 7 | ++------+------+------+------+ + +EXPLAIN select /*+ USE_MERGE(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE ANTI JOIN| |7 |90 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | SORT | |5 |42 | +|4 | TABLE SCAN |xy_t2|5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2], [xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c2 > xy_t2.c2]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 4 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + +select /*+ USE_MERGE(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 0 | 0 | 0 | 0 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 5 | 5 | 5 | 5 | +| 5 | 5 | 5 | 5 | +| 6 | 6 | 6 | 6 | +| 7 | 7 | 7 | 7 | ++------+------+------+------+ + +EXPLAIN select /*+ USE_HASH(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |7 |85 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2], [xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c2 > xy_t2.c2]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ USE_HASH(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 0 | 0 | 0 | 0 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 5 | 5 | 5 | 5 | +| 5 | 5 | 5 | 5 | +| 6 | 6 | 6 | 6 | +| 7 | 7 | 7 | 7 | ++------+------+------+------+ + +EXPLAIN select /*+ USE_NL(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN| |2 |92 | +|1 | TABLE SCAN |xy_t1|8 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |xy_t2|5 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2], [xy_t1.c1], [xy_t1.c2]), filter(nil), + conds([xy_t1.c1 = xy_t2.c1], [xy_t1.c2 > xy_t2.c2]), nl_params_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil) + 3 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + +select /*+ USE_NL(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 6 | 7 | 6 | 7 | ++------+------+------+------+ + +EXPLAIN select /*+ USE_MERGE(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN| |2 |90 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | SORT | |5 |42 | +|4 | TABLE SCAN |xy_t2|5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2], [xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c2 > xy_t2.c2]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 4 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + +select /*+ USE_MERGE(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 6 | 7 | 6 | 7 | ++------+------+------+------+ + +EXPLAIN select /*+ USE_HASH(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |2 |85 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2], [xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c2 > xy_t2.c2]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ USE_HASH(xy_t1, xy_t2)*/ c1, c2, c1, c2 from xy_t1 where exists (select 1 from xy_t2 where xy_t1.c1 = xy_t2.c1 and xy_t1.c2 > xy_t2.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 6 | 7 | 6 | 7 | ++------+------+------+------+ +# ************** end ******** +drop table xy_t1, xy_t2; + +drop table if exists xy_x_t, xy_y_t; +create table xy_x_t(x1 int, x2 varchar(100)); +create table xy_y_t(y1 int, y2 varchar(100)); +insert/*insert trace*/ into xy_x_t values(NULL,"VECPQ"),(NULL,"bdarkyzh"),(NULL,"it"),(NULL,"tgn"),(NULL,"had"),(NULL,"b"),(NULL,"g"),(NULL,"it's"),(NULL,"r"),(NULL,"KSZCK"),(NULL,"s"),(NULL,"UJRXI"),(NULL,"HLKDP"),(NULL,"about"),(NULL,"ROITX"),(NULL,"OEJAP"),(NULL,"u"),(NULL,"egisjnib"),(NULL,"ozkegisjn"),(NULL,"oh"),(NULL,"lrlmds"),(NULL,"r"),(NULL,"a"),(NULL,"here"),(NULL,"ihrad"),(NULL,"good"),(-2139029504,"eyqjoq"),(-2061369344,"GSUGA"),(-1882128384,"there"),(-1552613376,"d"),(-1511981056,"and"),(-1504706560,"and"),(-1259929600,"o"),(-973340672,"at"),(-918945792,"DNMFW"),(-778960896,"r"),(-753336320,"PKGAE"),(-593821696,"UGSPN"),(-457179136,"got"),(-314638336,"will"),(-233701376,"o"),(-104202240,"SUEUH"),(0,"yzh"),(0,"i"),(1,"TQOYB"),(1,"FFHTJ"),(2,"it's"),(2,"ezcuilyxac"),(2,"VZLUW"),(2,"want"),(2,"think"),(3,"prsazev"),(3,"get"),(3,"out"),(4,"a"),(4,"PVYPZ"),(4,"k"),(4,"bpqswbeyqj"),(4,"isjn"),(4,"that's"),(4,"well"),(5,"arkyz"),(5,"w"),(5,"with"),(5,"just"),(5,"PFBCU"),(6,"uyslpcybda"),(6,"co"),(6,"u"),(6,"j"),(6,"g"),(7,"cybdark"),(7,"BKWPE"),(8,"lmdsl"),(8,"NNIGT"),(8,"of"),(9,"etu"),(9,"TBMEI"),(9,"QPPLC"),(9,"mdsl"),(27262976,"n"),(162267136,"to"),(199884800,"y"),(334364672,"h"),(597295104,"did"),(748814336,"rhljip"),(769916928,"OQKEV"),(839778304,"USTRY"),(947585024,"hey"),(1210777600,"want"),(1232601088,"azev"),(1250689024,"a"),(1329463296,"QAMOL"),(1573126144,"zcuilyx"),(1594753024,"yeah"),(1730215936,"PMUMX"),(1925709824,"g"),(2048262144,"b"),(2082275328,"k"),(2131492864,"was"); +insert/*insert trace*/ into xy_y_t values(NULL,"mmkfu"),(NULL,"c"),(NULL,"know"),(NULL,"ZYTQH"),(NULL,"j"),(NULL,"y"),(NULL,"what"),(NULL,"SXXNL"),(NULL,"b"),(NULL,"NFZFZ"),(-1992359936,"not"),(-1711210496,"uoorvy"),(-1150287872,"BKNFS"),(-926613504,"was"),(-858128384,"y"),(-549126144,"v"),(-537198592,"now"),(-491651072,"t"),(-66125824,"here"),(0,"XCYGJ"),(1,"YGHBI"),(2,"g"),(6,"kfuoorvyvn"),(7,"EGBLS"),(9,"jsnsdfm"),(1584463872,"face"); + + +EXPLAIN select /*+use_hash(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |9 |273 | +|1 | TABLE SCAN |xy_y_t|26 |42 | +|2 | TABLE SCAN |xy_x_t|100 |92 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_x_t.x1], [xy_x_t.x2]), filter(nil), + equal_conds([xy_x_t.x1 = xy_y_t.y1]), other_conds([xy_y_t.y2 < xy_x_t.x2]) + 1 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil), + access([xy_y_t.y2], [xy_y_t.y1]), partitions(p0) + 2 - output([xy_x_t.x2], [xy_x_t.x1]), filter(nil), + access([xy_x_t.x2], [xy_x_t.x1]), partitions(p0) + +select /*+use_hash(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); ++------+------------+ +| x1 | x2 | ++------+------------+ +| 0 | yzh | +| 2 | it's | +| 2 | VZLUW | +| 2 | want | +| 2 | think | +| 6 | uyslpcybda | +| 6 | u | +| 9 | TBMEI | +| 9 | QPPLC | +| 9 | mdsl | ++------+------------+ +EXPLAIN select /*+use_merge(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |MERGE SEMI JOIN| |9 |607 | +|1 | SORT | |100 |443 | +|2 | TABLE SCAN |xy_x_t|100 |92 | +|3 | SORT | |26 |128 | +|4 | TABLE SCAN |xy_y_t|26 |42 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_x_t.x1], [xy_x_t.x2]), filter(nil), + equal_conds([xy_x_t.x1 = xy_y_t.y1]), other_conds([xy_y_t.y2 < xy_x_t.x2]) + 1 - output([xy_x_t.x1], [xy_x_t.x2]), filter(nil), sort_keys([xy_x_t.x1, ASC]) + 2 - output([xy_x_t.x2], [xy_x_t.x1]), filter(nil), + access([xy_x_t.x2], [xy_x_t.x1]), partitions(p0) + 3 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil), sort_keys([xy_y_t.y1, ASC]) + 4 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil), + access([xy_y_t.y2], [xy_y_t.y1]), partitions(p0) + +select /*+use_merge(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); ++------+------------+ +| x1 | x2 | ++------+------------+ +| 0 | yzh | +| 2 | think | +| 2 | want | +| 2 | VZLUW | +| 2 | it's | +| 6 | uyslpcybda | +| 6 | u | +| 9 | TBMEI | +| 9 | QPPLC | +| 9 | mdsl | ++------+------------+ +EXPLAIN select /*+use_nl(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP SEMI JOIN| |9 |2493| +|1 | TABLE SCAN |xy_x_t|100 |92 | +|2 | MATERIAL | |26 |106 | +|3 | TABLE SCAN |xy_y_t|26 |42 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_x_t.x1], [xy_x_t.x2]), filter(nil), + conds([xy_y_t.y2 < xy_x_t.x2], [xy_x_t.x1 = xy_y_t.y1]), nl_params_(nil) + 1 - output([xy_x_t.x2], [xy_x_t.x1]), filter(nil), + access([xy_x_t.x2], [xy_x_t.x1]), partitions(p0) + 2 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil) + 3 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil), + access([xy_y_t.y2], [xy_y_t.y1]), partitions(p0) + +select /*+use_nl(xy_x_t xy_y_t)*/ * from xy_x_t where x1 in (select y1 from xy_y_t where y2 < xy_x_t.x2); ++------+------------+ +| x1 | x2 | ++------+------------+ +| 0 | yzh | +| 2 | it's | +| 2 | VZLUW | +| 2 | want | +| 2 | think | +| 6 | uyslpcybda | +| 6 | u | +| 9 | TBMEI | +| 9 | QPPLC | +| 9 | mdsl | ++------+------------+ + +drop table xy_x_t, xy_y_t; +create table xy_x_t(x1 int not null, x2 varchar(100) not null); +create table xy_y_t(y1 int not null, y2 varchar(100) not null); +insert/*insert trace*/ into xy_x_t values(-2139029504,"eyqjoq"),(-2061369344,"GSUGA"),(-1882128384,"there"),(-1552613376,"d"),(-1511981056,"and"),(-1504706560,"and"),(-1259929600,"o"),(-973340672,"at"),(-918945792,"DNMFW"),(-778960896,"r"),(-753336320,"PKGAE"),(-593821696,"UGSPN"),(-457179136,"got"),(-314638336,"will"),(-233701376,"o"),(-104202240,"SUEUH"),(0,"yzh"),(0,"i"),(1,"TQOYB"),(1,"FFHTJ"),(2,"it's"),(2,"ezcuilyxac"),(2,"VZLUW"),(2,"want"),(2,"think"),(3,"prsazev"),(3,"get"),(3,"out"),(4,"a"),(4,"PVYPZ"),(4,"k"),(4,"bpqswbeyqj"),(4,"isjn"),(4,"that's"),(4,"well"),(5,"arkyz"),(5,"w"),(5,"with"),(5,"just"),(5,"PFBCU"),(6,"uyslpcybda"),(6,"co"),(6,"u"),(6,"j"),(6,"g"),(7,"cybdark"),(7,"BKWPE"),(8,"lmdsl"),(8,"NNIGT"),(8,"of"),(9,"etu"),(9,"TBMEI"),(9,"QPPLC"),(9,"mdsl"),(27262976,"n"),(162267136,"to"),(199884800,"y"),(334364672,"h"),(597295104,"did"),(748814336,"rhljip"),(769916928,"OQKEV"),(839778304,"USTRY"),(947585024,"hey"),(1210777600,"want"),(1232601088,"azev"),(1250689024,"a"),(1329463296,"QAMOL"),(1573126144,"zcuilyx"),(1594753024,"yeah"),(1730215936,"PMUMX"),(1925709824,"g"),(2048262144,"b"),(2082275328,"k"),(2131492864,"was"); +insert/*insert trace*/ into xy_y_t values(-1992359936,"not"),(-1711210496,"uoorvy"),(-1150287872,"BKNFS"),(-926613504,"was"),(-858128384,"y"),(-549126144,"v"),(-537198592,"now"),(-491651072,"t"),(-66125824,"here"),(0,"XCYGJ"),(1,"YGHBI"),(2,"g"),(6,"kfuoorvyvn"),(7,"EGBLS"),(9,"jsnsdfm"),(1584463872,"face"); + +EXPLAIN select /*+use_hash(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |69 |180 | +|1 | TABLE SCAN |xy_y_t|16 |40 | +|2 | TABLE SCAN |xy_x_t|74 |51 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_x_t.x1], [xy_x_t.x2]), filter(nil), + equal_conds([xy_x_t.x1 = xy_y_t.y1]), other_conds([xy_y_t.y2 < xy_x_t.x2]) + 1 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil), + access([xy_y_t.y2], [xy_y_t.y1]), partitions(p0) + 2 - output([xy_x_t.x2], [xy_x_t.x1]), filter(nil), + access([xy_x_t.x2], [xy_x_t.x1]), partitions(p0) + +select /*+use_hash(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); ++-------------+------------+ +| x1 | x2 | ++-------------+------------+ +| -2139029504 | eyqjoq | +| -2061369344 | GSUGA | +| -1882128384 | there | +| -1552613376 | d | +| -1511981056 | and | +| -1504706560 | and | +| -1259929600 | o | +| -973340672 | at | +| -918945792 | DNMFW | +| -778960896 | r | +| -753336320 | PKGAE | +| -593821696 | UGSPN | +| -457179136 | got | +| -314638336 | will | +| -233701376 | o | +| -104202240 | SUEUH | +| 0 | i | +| 1 | TQOYB | +| 1 | FFHTJ | +| 2 | ezcuilyxac | +| 3 | prsazev | +| 3 | get | +| 3 | out | +| 4 | a | +| 4 | PVYPZ | +| 4 | k | +| 4 | bpqswbeyqj | +| 4 | isjn | +| 4 | that's | +| 4 | well | +| 5 | arkyz | +| 5 | w | +| 5 | with | +| 5 | just | +| 5 | PFBCU | +| 6 | co | +| 6 | j | +| 6 | g | +| 7 | cybdark | +| 7 | BKWPE | +| 8 | lmdsl | +| 8 | NNIGT | +| 8 | of | +| 9 | etu | +| 27262976 | n | +| 162267136 | to | +| 199884800 | y | +| 334364672 | h | +| 597295104 | did | +| 748814336 | rhljip | +| 769916928 | OQKEV | +| 839778304 | USTRY | +| 947585024 | hey | +| 1210777600 | want | +| 1232601088 | azev | +| 1250689024 | a | +| 1329463296 | QAMOL | +| 1573126144 | zcuilyx | +| 1594753024 | yeah | +| 1730215936 | PMUMX | +| 1925709824 | g | +| 2048262144 | b | +| 2082275328 | k | +| 2131492864 | was | ++-------------+------------+ +EXPLAIN select /*+use_merge(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |MERGE ANTI JOIN| |69 |423 | +|1 | SORT | |74 |308 | +|2 | TABLE SCAN |xy_x_t|74 |51 | +|3 | SORT | |16 |92 | +|4 | TABLE SCAN |xy_y_t|16 |40 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_x_t.x1], [xy_x_t.x2]), filter(nil), + equal_conds([xy_x_t.x1 = xy_y_t.y1]), other_conds([xy_y_t.y2 < xy_x_t.x2]) + 1 - output([xy_x_t.x1], [xy_x_t.x2]), filter(nil), sort_keys([xy_x_t.x1, ASC]) + 2 - output([xy_x_t.x2], [xy_x_t.x1]), filter(nil), + access([xy_x_t.x2], [xy_x_t.x1]), partitions(p0) + 3 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil), sort_keys([xy_y_t.y1, ASC]) + 4 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil), + access([xy_y_t.y2], [xy_y_t.y1]), partitions(p0) + +select /*+use_merge(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); ++-------------+------------+ +| x1 | x2 | ++-------------+------------+ +| -2139029504 | eyqjoq | +| -2061369344 | GSUGA | +| -1882128384 | there | +| -1552613376 | d | +| -1511981056 | and | +| -1504706560 | and | +| -1259929600 | o | +| -973340672 | at | +| -918945792 | DNMFW | +| -778960896 | r | +| -753336320 | PKGAE | +| -593821696 | UGSPN | +| -457179136 | got | +| -314638336 | will | +| -233701376 | o | +| -104202240 | SUEUH | +| 0 | i | +| 1 | TQOYB | +| 1 | FFHTJ | +| 2 | ezcuilyxac | +| 3 | prsazev | +| 3 | get | +| 3 | out | +| 4 | a | +| 4 | PVYPZ | +| 4 | k | +| 4 | bpqswbeyqj | +| 4 | isjn | +| 4 | that's | +| 4 | well | +| 5 | PFBCU | +| 5 | just | +| 5 | with | +| 5 | arkyz | +| 5 | w | +| 6 | co | +| 6 | j | +| 6 | g | +| 7 | cybdark | +| 7 | BKWPE | +| 8 | NNIGT | +| 8 | of | +| 8 | lmdsl | +| 9 | etu | +| 27262976 | n | +| 162267136 | to | +| 199884800 | y | +| 334364672 | h | +| 597295104 | did | +| 748814336 | rhljip | +| 769916928 | OQKEV | +| 839778304 | USTRY | +| 947585024 | hey | +| 1210777600 | want | +| 1232601088 | azev | +| 1250689024 | a | +| 1329463296 | QAMOL | +| 1573126144 | zcuilyx | +| 1594753024 | yeah | +| 1730215936 | PMUMX | +| 1925709824 | g | +| 2048262144 | b | +| 2082275328 | k | +| 2131492864 | was | ++-------------+------------+ +EXPLAIN select /*+use_nl(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP ANTI JOIN| |69 |1176| +|1 | TABLE SCAN |xy_x_t|74 |51 | +|2 | MATERIAL | |16 |79 | +|3 | TABLE SCAN |xy_y_t|16 |40 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_x_t.x1], [xy_x_t.x2]), filter(nil), + conds([xy_y_t.y2 < xy_x_t.x2], [xy_x_t.x1 = xy_y_t.y1]), nl_params_(nil) + 1 - output([xy_x_t.x2], [xy_x_t.x1]), filter(nil), + access([xy_x_t.x2], [xy_x_t.x1]), partitions(p0) + 2 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil) + 3 - output([xy_y_t.y2], [xy_y_t.y1]), filter(nil), + access([xy_y_t.y2], [xy_y_t.y1]), partitions(p0) + +select /*+use_nl(xy_x_t xy_y_t)*/ * from xy_x_t where x1 not in (select y1 from xy_y_t where y2 < xy_x_t.x2); ++-------------+------------+ +| x1 | x2 | ++-------------+------------+ +| -2139029504 | eyqjoq | +| -2061369344 | GSUGA | +| -1882128384 | there | +| -1552613376 | d | +| -1511981056 | and | +| -1504706560 | and | +| -1259929600 | o | +| -973340672 | at | +| -918945792 | DNMFW | +| -778960896 | r | +| -753336320 | PKGAE | +| -593821696 | UGSPN | +| -457179136 | got | +| -314638336 | will | +| -233701376 | o | +| -104202240 | SUEUH | +| 0 | i | +| 1 | TQOYB | +| 1 | FFHTJ | +| 2 | ezcuilyxac | +| 3 | prsazev | +| 3 | get | +| 3 | out | +| 4 | a | +| 4 | PVYPZ | +| 4 | k | +| 4 | bpqswbeyqj | +| 4 | isjn | +| 4 | that's | +| 4 | well | +| 5 | arkyz | +| 5 | w | +| 5 | with | +| 5 | just | +| 5 | PFBCU | +| 6 | co | +| 6 | j | +| 6 | g | +| 7 | cybdark | +| 7 | BKWPE | +| 8 | lmdsl | +| 8 | NNIGT | +| 8 | of | +| 9 | etu | +| 27262976 | n | +| 162267136 | to | +| 199884800 | y | +| 334364672 | h | +| 597295104 | did | +| 748814336 | rhljip | +| 769916928 | OQKEV | +| 839778304 | USTRY | +| 947585024 | hey | +| 1210777600 | want | +| 1232601088 | azev | +| 1250689024 | a | +| 1329463296 | QAMOL | +| 1573126144 | zcuilyx | +| 1594753024 | yeah | +| 1730215936 | PMUMX | +| 1925709824 | g | +| 2048262144 | b | +| 2082275328 | k | +| 2131492864 | was | ++-------------+------------+ + +drop table xy_x_t, xy_y_t; + +### ********************* test right semi/anti join +drop table if exists xy_t1, xy_t2, xy_t3, xy_t4; +create table xy_t1(c1 int, c2 int, key idx_c2(c2, c1)); +create table xy_t2(c1 int, c2 int, key idx_c2(c2, c1)); +create table xy_t3(c1 int, c2 int, key idx_c2(c2, c1)); +create table xy_t4(c1 int, c2 int, key idx_c2(c2, c1)); +insert/*insert trace*/ into xy_t1 values(0, 0), (1,1), (2, null),(2,2), (5,5), (5,5), (5,7),(6,7), (6,6), (6, null),(7,7), (7, 0), (8,0), (8,8), (8, 5), (9, 0), (9, 7), (10,10), (null, 1), (1,1), (3,3), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (0, 0), (1,1), (2, null),(2,2), (5,5), (5,5), (5,7),(6,7), (6,6), (6, null),(7,7), (7, 0), (8,0), (8,8), (8, 5), (9, 0), (9, 7), (10,10), (null, 1), (1,1), (3,3), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (0, 0), (1,1), (2, null),(2,2), (5,5), (5,5), (5,7),(6,7), (6,6), (6, null),(7,7), (7, 0), (8,0), (8,8), (8, 5), (9, 0), (9, 7), (10,10), (null, 1), (1,1), (3,3), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (0, 0), (1,1), (2, null),(2,2), (5,5), (5,5), (5,7),(6,7), (6,6), (6, null),(7,7), (7, 0), (8,0), (8,8), (8, 5), (9, 0), (9, 7), (10,10), (null, 1), (1,1), (3,3), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1), (20,1); +insert/*insert trace*/ into xy_t2 values(null, 1), (1,1), (3,3), (5,5), (5,6), (5,4), (6,6), (9,9); +insert/*insert trace*/ into xy_t3 values(1,1), (3,3), (5,5), (5,6), (5,4), (6,6), (9,9), (5,7),(6,7), (6,6), (6, null),(7,7); +insert/*insert trace*/ into xy_t4 values(1,1), (3,3); + + +***************** RIGHT HASH SEMI 最优 +EXPLAIN select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |10 |185 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |96 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN| |10 |401 | +|1 | TABLE SCAN |xy_t1|116 |96 | +|2 | MATERIAL | |8 |39 | +|3 | TABLE SCAN |xy_t2|8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + conds([xy_t2.c1 = xy_t1.c1]), nl_params_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([xy_t2.c1]), filter(nil) + 3 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | ++------+------+ +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |10 |185 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |96 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN| |10 |311 | +|1 | SORT | |116 |245 | +|2 | TABLE SCAN |xy_t1|116 |96 | +|3 | SORT | |8 |44 | +|4 | TABLE SCAN |xy_t2|8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c1]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 4 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 1 | +| 1 | 1 | +| 1 | 1 | +| 1 | 1 | +| 1 | 1 | +| 1 | 1 | +| 1 | 1 | +| 3 | 3 | +| 3 | 3 | +| 3 | 3 | +| 3 | 3 | +| 5 | 7 | +| 5 | 7 | +| 5 | 5 | +| 5 | 5 | +| 5 | 5 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 5 | 5 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | NULL | +| 6 | 7 | +| 6 | NULL | +| 6 | 6 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 6 | 6 | +| 6 | 7 | +| 9 | 7 | +| 9 | 0 | +| 9 | 0 | +| 9 | 7 | +| 9 | 7 | +| 9 | 0 | +| 9 | 0 | +| 9 | 7 | ++------+------+ +EXPLAIN select /*+ no_rewrite */ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER| |58 |4521| +|1 | TABLE SCAN |xy_t1|116 |96 | +|2 | TABLE SCAN |xy_t2|1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([xy_t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([1]), filter([xy_t2.c1 = ?]), + access([xy_t2.c1]), partitions(p0) + +select /*+ no_rewrite */ * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | ++------+------+ + + +***************** HASH SEMI 最优 +EXPLAIN select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |HASH SEMI JOIN| |8 |184 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |93 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 9 | 9 | +| 1 | 1 | +| 6 | 6 | +| 3 | 3 | +| 5 | 4 | +| 5 | 6 | +| 5 | 5 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN| |8 |418 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | MATERIAL | |116 |114 | +|3 | TABLE SCAN |xy_t1|116 |93 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + conds([xy_t2.c1 = xy_t1.c1]), nl_params_(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1]), filter(nil) + 3 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 6 | +| 5 | 4 | +| 6 | 6 | +| 9 | 9 | ++------+------+ +EXPLAIN select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |HASH SEMI JOIN| |8 |184 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |93 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 9 | 9 | +| 1 | 1 | +| 6 | 6 | +| 3 | 3 | +| 5 | 4 | +| 5 | 6 | +| 5 | 5 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN| |8 |287 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | SORT | |116 |220 | +|4 | TABLE SCAN |xy_t1|116 |93 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c1]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 4 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 6 | +| 5 | 4 | +| 6 | 6 | +| 9 | 9 | ++------+------+ + + +**************** NL SEMI 最优 +EXPLAIN select * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN| |2 |110 | +|1 | TABLE SCAN |xy_t4 |2 |37 | +|2 | TABLE SCAN |xy_t1(idx_c2)|1 |36 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + conds(nil), nl_params_([xy_t4.c1]) + 1 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + access([xy_t4.c1], [xy_t4.c2]), partitions(p0) + 2 - output([1]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 3 | 3 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN| |2 |110 | +|1 | TABLE SCAN |xy_t4 |2 |37 | +|2 | TABLE SCAN |xy_t1(idx_c2)|1 |36 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + conds(nil), nl_params_([xy_t4.c1]) + 1 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + access([xy_t4.c1], [xy_t4.c2]), partitions(p0) + 2 - output([1]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_nl(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 3 | 3 | ++------+------+ +EXPLAIN select /*+ use_hash(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |HASH SEMI JOIN| |2 |171 | +|1 | TABLE SCAN |xy_t4 |2 |37 | +|2 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + equal_conds([xy_t4.c1 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + access([xy_t4.c1], [xy_t4.c2]), partitions(p0) + 2 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | +| 1 | 1 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |MERGE SEMI JOIN| |2 |148 | +|1 | SORT | |2 |38 | +|2 | TABLE SCAN |xy_t4 |2 |37 | +|3 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + equal_conds([xy_t4.c1 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), sort_keys([xy_t4.c1, ASC]) + 2 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + access([xy_t4.c1], [xy_t4.c2]), partitions(p0) + 3 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_merge(xy_t4 xy_t1)*/ * from xy_t4 where exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 3 | 3 | ++------+------+ + + +**************** MERGE SEMI 最优 +EXPLAIN select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |MERGE SEMI JOIN| |8 |152 | +|1 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|2 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 6 | +| 6 | 6 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |MERGE JOIN | |9 |190 | +|1 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|2 | SUBPLAN SCAN |VIEW2 |101 |133 | +|3 | MERGE DISTINCT| |101 |119 | +|4 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c2 = VIEW2.VIEW1.xy_t1.c2]), other_conds(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([VIEW2.VIEW1.xy_t1.c2]), filter(nil), + access([VIEW2.VIEW1.xy_t1.c2]) + 3 - output([xy_t1.c2]), filter(nil), + distinct([xy_t1.c2]) + 4 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 6 | +| 6 | 6 | ++------+------+ +EXPLAIN select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |HASH SEMI JOIN| |8 |184 | +|1 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|2 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| NULL | 1 | +| 6 | 6 | +| 5 | 6 | +| 3 | 3 | +| 5 | 5 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |MERGE SEMI JOIN| |8 |152 | +|1 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|2 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 6 | +| 6 | 6 | ++------+------+ + + +***************** RIGHT HASH ANTI 最优 +EXPLAIN select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |107 |185 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |96 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |107 |401 | +|1 | TABLE SCAN |xy_t1|116 |96 | +|2 | MATERIAL | |8 |39 | +|3 | TABLE SCAN |xy_t2|8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + conds([xy_t2.c1 = xy_t1.c1]), nl_params_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([xy_t2.c1]), filter(nil) + 3 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | ++------+------+ +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |107 |185 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |96 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE ANTI JOIN| |107 |311 | +|1 | SORT | |116 |245 | +|2 | TABLE SCAN |xy_t1|116 |96 | +|3 | SORT | |8 |44 | +|4 | TABLE SCAN |xy_t2|8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c1]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 4 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | +| NULL | 1 | +| NULL | 1 | +| NULL | 1 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 2 | NULL | +| 2 | NULL | +| 2 | 2 | +| 2 | 2 | +| 2 | 2 | +| 2 | 2 | +| 2 | NULL | +| 2 | NULL | +| 7 | 7 | +| 7 | 0 | +| 7 | 7 | +| 7 | 7 | +| 7 | 0 | +| 7 | 0 | +| 7 | 7 | +| 7 | 0 | +| 8 | 5 | +| 8 | 5 | +| 8 | 5 | +| 8 | 8 | +| 8 | 0 | +| 8 | 0 | +| 8 | 0 | +| 8 | 5 | +| 8 | 8 | +| 8 | 8 | +| 8 | 0 | +| 8 | 8 | +| 10 | 10 | +| 10 | 10 | +| 10 | 10 | +| 10 | 10 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | ++------+------+ +EXPLAIN select /*+ no_rewrite */ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER| |58 |4521| +|1 | TABLE SCAN |xy_t1|116 |96 | +|2 | TABLE SCAN |xy_t2|1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([xy_t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 2 - output([1]), filter([xy_t2.c1 = ?]), + access([xy_t2.c1]), partitions(p0) + +select /*+ no_rewrite */ * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | ++------+------+ + + +***************** HASH ANTI 最优 +EXPLAIN select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |HASH ANTI JOIN| |0 |184 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |93 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |418 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | MATERIAL | |116 |114 | +|3 | TABLE SCAN |xy_t1|116 |93 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + conds([xy_t2.c1 = xy_t1.c1]), nl_params_(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1]), filter(nil) + 3 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | ++------+------+ +EXPLAIN select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |HASH ANTI JOIN| |0 |184 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |93 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE ANTI JOIN| |0 |287 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | SORT | |116 |220 | +|4 | TABLE SCAN |xy_t1|116 |93 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c1]), filter(nil), sort_keys([xy_t1.c1, ASC]) + 4 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | ++------+------+ + + +**************** NL ANTI 最优 +EXPLAIN select * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |110 | +|1 | TABLE SCAN |xy_t4 |2 |37 | +|2 | TABLE SCAN |xy_t1(idx_c2)|1 |36 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + conds(nil), nl_params_([xy_t4.c1]) + 1 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + access([xy_t4.c1], [xy_t4.c2]), partitions(p0) + 2 - output([1]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select /*+ use_nl(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |110 | +|1 | TABLE SCAN |xy_t4 |2 |37 | +|2 | TABLE SCAN |xy_t1(idx_c2)|1 |36 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + conds(nil), nl_params_([xy_t4.c1]) + 1 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + access([xy_t4.c1], [xy_t4.c2]), partitions(p0) + 2 - output([1]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_nl(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select /*+ use_hash(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |HASH ANTI JOIN| |0 |171 | +|1 | TABLE SCAN |xy_t4 |2 |37 | +|2 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + equal_conds([xy_t4.c1 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + access([xy_t4.c1], [xy_t4.c2]), partitions(p0) + 2 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select /*+ use_merge(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |MERGE ANTI JOIN| |0 |148 | +|1 | SORT | |2 |38 | +|2 | TABLE SCAN |xy_t4 |2 |37 | +|3 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + equal_conds([xy_t4.c1 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), sort_keys([xy_t4.c1, ASC]) + 2 - output([xy_t4.c1], [xy_t4.c2]), filter(nil), + access([xy_t4.c1], [xy_t4.c2]), partitions(p0) + 3 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_merge(xy_t4 xy_t1)*/ * from xy_t4 where not exists (select 1 from xy_t1 where xy_t4.c1 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ + + +**************** MERGE ANTI 最优 +EXPLAIN select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |MERGE ANTI JOIN| |0 |152 | +|1 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|2 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 4 | +| 9 | 9 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |332 | +|1 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|2 | TABLE SCAN |xy_t1(idx_c2)|1 |36 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + conds(nil), nl_params_([xy_t2.c2]) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([1]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_nl(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 4 | +| 9 | 9 | ++------+------+ +EXPLAIN select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |HASH ANTI JOIN| |0 |184 | +|1 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|2 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 9 | 9 | +| 5 | 4 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |MERGE ANTI JOIN| |0 |152 | +|1 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|2 | TABLE SCAN |xy_t1(idx_c2)|116 |93 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c2]), filter(nil), + access([xy_t1.c2]), partitions(p0) + +select /*+ use_merge(xy_t2 xy_t1)*/ * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c2 = xy_t1.c2); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 4 | +| 9 | 9 | ++------+------+ + + +*************** 测试3表情况 +EXPLAIN select sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |240 | +|1 | HASH SEMI JOIN | |2 |239 | +|2 | HASH RIGHT SEMI JOIN| |10 |185 | +|3 | TABLE SCAN |xy_t2|8 |38 | +|4 | TABLE SCAN |xy_t1|116 |96 | +|5 | TABLE SCAN |xy_t3|12 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t3.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 3 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 4 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 5 - output([xy_t3.c1]), filter(nil), + access([xy_t3.c1]), partitions(p0) + +select sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| 224 | 168 | ++---------+---------+ +EXPLAIN select /*+ use_hash(xy_t3, xy_t1) use_hash(xy_t2, xy_t1)*/ sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |240 | +|1 | HASH SEMI JOIN | |2 |239 | +|2 | HASH RIGHT SEMI JOIN| |10 |185 | +|3 | TABLE SCAN |xy_t2|8 |38 | +|4 | TABLE SCAN |xy_t1|116 |96 | +|5 | TABLE SCAN |xy_t3|12 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t3.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 3 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 4 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 5 - output([xy_t3.c1]), filter(nil), + access([xy_t3.c1]), partitions(p0) + +select /*+ use_hash(xy_t3, xy_t1) use_hash(xy_t2, xy_t1)*/ sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| 224 | 168 | ++---------+---------+ +EXPLAIN select /*+ no_rewrite*/ sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |9061| +|1 | SUBPLAN FILTER| |29 |9054| +|2 | TABLE SCAN |xy_t1|116 |96 | +|3 | TABLE SCAN |xy_t3|1 |39 | +|4 | TABLE SCAN |xy_t2|1 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_EXISTS, subquery(2))]), + exec_params_([xy_t1.c1], [xy_t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 3 - output([1]), filter([xy_t3.c1 = ?]), + access([xy_t3.c1]), partitions(p0) + 4 - output([1]), filter([xy_t2.c1 = ?]), + access([xy_t2.c1]), partitions(p0) + +select /*+ no_rewrite*/ sum(c1), sum(c2) from xy_t1 where exists (select 1 from xy_t3 where c1 = xy_t1.c1) and exists (select 1 from xy_t2 where c1 = xy_t1.c1); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| 224 | 168 | ++---------+---------+ + + +EXPLAIN select sum(c1), sum(c2) from xy_t1 where not exists (select 1 from xy_t3 where c2 = xy_t1.c2) and exists (select 1 from xy_t2 where c2 = xy_t1.c2); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |199 | +|1 | MERGE ANTI JOIN | |9 |197 | +|2 | MERGE SEMI JOIN| |10 |155 | +|3 | TABLE SCAN |xy_t1(idx_c2)|116 |96 | +|4 | TABLE SCAN |xy_t2(idx_c2)|8 |38 | +|5 | TABLE SCAN |xy_t3(idx_c2)|12 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t3.c2 = xy_t1.c2]), other_conds(nil) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds(nil) + 3 - output([xy_t1.c2], [xy_t1.c1]), filter(nil), + access([xy_t1.c2], [xy_t1.c1]), partitions(p0) + 4 - output([xy_t2.c2]), filter(nil), + access([xy_t2.c2]), partitions(p0) + 5 - output([xy_t3.c2]), filter(nil), + access([xy_t3.c2]), partitions(p0) + +select sum(c1), sum(c2) from xy_t1 where not exists (select 1 from xy_t3 where c2 = xy_t1.c2) and exists (select 1 from xy_t2 where c2 = xy_t1.c2); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| NULL | NULL | ++---------+---------+ +EXPLAIN select /*+ no_rewrite*/ sum(c1), sum(c2) from xy_t1 where not exists (select 1 from xy_t3 where c2 = xy_t1.c2) and exists (select 1 from xy_t2 where c2 = xy_t1.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |SCALAR GROUP BY| |1 |8486| +|1 | SUBPLAN FILTER| |29 |8479| +|2 | TABLE SCAN |xy_t1 |116 |96 | +|3 | TABLE SCAN |xy_t3(idx_c2)|1 |36 | +|4 | TABLE SCAN |xy_t2(idx_c2)|1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(xy_t1.c1)], [T_FUN_SUM(xy_t1.c2)]) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))], [(T_OP_EXISTS, subquery(2))]), + exec_params_([xy_t1.c2], [xy_t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 2 - output([xy_t1.c2], [xy_t1.c1]), filter(nil), + access([xy_t1.c2], [xy_t1.c1]), partitions(p0) + 3 - output([1]), filter(nil), + access([xy_t3.c2]), partitions(p0) + 4 - output([1]), filter(nil), + access([xy_t2.c2]), partitions(p0) + +select /*+ no_rewrite*/ sum(c1), sum(c2) from xy_t1 where not exists (select 1 from xy_t3 where c2 = xy_t1.c2) and exists (select 1 from xy_t2 where c2 = xy_t1.c2); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| NULL | NULL | ++---------+---------+ + + +*************** 测试limit下压 HASH RIGHT SEMI加limit后情况, limit 小时, SEMI代价会小, limit 太大后代价不影响 +EXPLAIN select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |10 |185 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |96 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | ++------+------+ +EXPLAIN select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 3; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |LIMIT | |3 |105 | +|1 | HASH RIGHT SEMI JOIN| |3 |104 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | TABLE SCAN |xy_t1|39 |44 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), limit(3), offset(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 3 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 3; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | ++------+------+ +EXPLAIN select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 1000; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |LIMIT | |10 |186 | +|1 | HASH RIGHT SEMI JOIN| |10 |185 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | TABLE SCAN |xy_t1|116 |96 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), limit(1000), offset(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 3 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select * from xy_t1 where exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 1000; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | +| 1 | 1 | +| 5 | 5 | +| 5 | 5 | +| 5 | 7 | +| 6 | 7 | +| 6 | 6 | +| 6 | NULL | +| 9 | 0 | +| 9 | 7 | +| 1 | 1 | +| 3 | 3 | ++------+------+ + + +*************** 测试limit下压 HASH LEFT SEMI加limit后情况, limit不影响SEMI代价 +EXPLAIN select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |HASH SEMI JOIN| |8 |184 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |93 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 9 | 9 | +| 1 | 1 | +| 6 | 6 | +| 3 | 3 | +| 5 | 4 | +| 5 | 6 | +| 5 | 5 | ++------+------+ +EXPLAIN select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 3; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |LIMIT | |3 |185 | +|1 | HASH SEMI JOIN| |8 |184 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | TABLE SCAN |xy_t1|116 |93 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), limit(3), offset(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 3; ++------+------+ +| c1 | c2 | ++------+------+ +| 9 | 9 | +| 1 | 1 | +| 6 | 6 | ++------+------+ +EXPLAIN select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 1000; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |LIMIT | |8 |185 | +|1 | HASH SEMI JOIN| |8 |184 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | TABLE SCAN |xy_t1|116 |93 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), limit(1000), offset(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select * from xy_t2 where exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 1000; ++------+------+ +| c1 | c2 | ++------+------+ +| 9 | 9 | +| 1 | 1 | +| 6 | 6 | +| 3 | 3 | +| 5 | 4 | +| 5 | 6 | +| 5 | 5 | ++------+------+ + + +*************** 测试limit下压 HASH RIGHT ANTI加limit后情况, limit 小时, ANTI代价会小, limit 太大后代价不影响 +EXPLAIN select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |107 |185 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |96 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | ++------+------+ +EXPLAIN select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 3; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |LIMIT | |3 |85 | +|1 | HASH RIGHT ANTI JOIN| |3 |84 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | TABLE SCAN |xy_t1|4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), limit(3), offset(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 3 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 3; ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | ++------+------+ +EXPLAIN select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 1000; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |LIMIT | |107 |200 | +|1 | HASH RIGHT ANTI JOIN| |107 |185 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | TABLE SCAN |xy_t1|116 |96 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), limit(1000), offset(nil) + 1 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t2.c1]), filter(nil), + access([xy_t2.c1]), partitions(p0) + 3 - output([xy_t1.c1], [xy_t1.c2]), filter(nil), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select * from xy_t1 where not exists (select 1 from xy_t2 where xy_t2.c1 = xy_t1.c1) limit 1000; ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 0 | 0 | +| 2 | NULL | +| 2 | 2 | +| 7 | 7 | +| 7 | 0 | +| 8 | 0 | +| 8 | 8 | +| 8 | 5 | +| 10 | 10 | +| NULL | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | +| 20 | 1 | ++------+------+ + + +*************** 测试limit下压 HASH LEFT ANTI加limit后情况, limit 不影响ANTI代价 +EXPLAIN select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |HASH ANTI JOIN| |0 |184 | +|1 | TABLE SCAN |xy_t2|8 |38 | +|2 | TABLE SCAN |xy_t1|116 |93 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | ++------+------+ +EXPLAIN select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 3; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |LIMIT | |0 |184 | +|1 | HASH ANTI JOIN| |0 |184 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | TABLE SCAN |xy_t1|116 |93 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), limit(3), offset(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 3; ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | ++------+------+ +EXPLAIN select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 1000; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |LIMIT | |0 |184 | +|1 | HASH ANTI JOIN| |0 |184 | +|2 | TABLE SCAN |xy_t2|8 |38 | +|3 | TABLE SCAN |xy_t1|116 |93 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), limit(1000), offset(nil) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds(nil) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c1]), filter(nil), + access([xy_t1.c1]), partitions(p0) + +select * from xy_t2 where not exists (select 1 from xy_t1 where xy_t2.c1 = xy_t1.c1) limit 1000; ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | 1 | ++------+------+ + +drop table xy_t1, xy_t2, xy_t3; + + +************** 测试SEMI/ANTI 含unique order的场景 +create table xy_t1(c1 int primary key, c2 int, c3 int); +create table xy_t2(c1 int primary key, c2 int, c3 int); +insert/*insert trace*/ into xy_t1 values(0, 0, 0), (1,1, 1), (2,2, 2), (3,5, 5), (5,5, 5), (6,7,7), (7,6, 6), (8, 7,8); +insert/*insert trace*/ into xy_t2 values(1,1, 1), (3,3,3), (4,5,5), (5,5, 5), (6,6,7); + + +//两边都无序hash right +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |SORT | |2 |87 | +|1 | HASH RIGHT SEMI JOIN| |2 |85 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | TABLE SCAN |xy_t1|8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC], [xy_t1.c3, ASC]) + 1 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + equal_conds([xy_t1.c2 = xy_t2.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 6 | 6 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |SORT | |2 |92 | +|1 | MERGE SEMI JOIN| |2 |90 | +|2 | SORT | |8 |46 | +|3 | TABLE SCAN |xy_t1|8 |38 | +|4 | SORT | |5 |42 | +|5 | TABLE SCAN |xy_t2|5 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC], [xy_t1.c3, ASC]), prefix_pos(1) + 1 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + equal_conds([xy_t1.c2 = xy_t2.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC]) + 3 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + 4 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c2, ASC]) + 5 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c2]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 6 | 6 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |SORT | |2 |94 | +|1 | NESTED-LOOP SEMI JOIN| |2 |92 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | MATERIAL | |5 |39 | +|4 | TABLE SCAN |xy_t2|5 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC], [xy_t1.c3, ASC]) + 1 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + conds([xy_t1.c3 < xy_t2.c3], [xy_t1.c2 = xy_t2.c2]), nl_params_(nil) + 2 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c3], [xy_t2.c2]), filter(nil) + 4 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c2]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 6 | 6 | ++------+------+ +EXPLAIN select /*+ no_rewrite*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SORT | |4 |342 | +|1 | SUBPLAN FILTER| |4 |338 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | TABLE SCAN |xy_t2|2 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC], [xy_t1.c3, ASC]) + 1 - output([xy_t1.c2], [xy_t1.c3]), filter([xy_t1.c2 = ANY(subquery(1))]), + exec_params_([xy_t1.c3]), onetime_exprs_(nil), init_plan_idxs_(nil) + 2 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + 3 - output([xy_t2.c2]), filter([? < xy_t2.c3]), + access([xy_t2.c3], [xy_t2.c2]), partitions(p0) + +select /*+ no_rewrite*/ c2, c3 from xy_t1 where c2 in (select c2 from xy_t2 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 6 | 6 | ++------+------+ + + +//两边都无序hash left +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SORT | |2 |87 | +|1 | HASH SEMI JOIN| |2 |85 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | TABLE SCAN |xy_t1|8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC], [xy_t2.c3, ASC]) + 1 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 6 | 7 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |SORT | |2 |92 | +|1 | MERGE SEMI JOIN| |2 |90 | +|2 | SORT | |5 |42 | +|3 | TABLE SCAN |xy_t2|5 |37 | +|4 | SORT | |8 |46 | +|5 | TABLE SCAN |xy_t1|8 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC], [xy_t2.c3, ASC]), prefix_pos(1) + 1 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + equal_conds([xy_t2.c2 = xy_t1.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC]) + 3 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c2]), partitions(p0) + 4 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c2, ASC]) + 5 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 6 | 7 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |SORT | |2 |95 | +|1 | NESTED-LOOP SEMI JOIN| |2 |93 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | MATERIAL | |8 |41 | +|4 | TABLE SCAN |xy_t1|8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC], [xy_t2.c3, ASC]) + 1 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + conds([xy_t1.c3 < xy_t2.c3], [xy_t2.c2 = xy_t1.c2]), nl_params_(nil) + 2 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c3], [xy_t1.c2]), filter(nil) + 4 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 6 | 7 | ++------+------+ +EXPLAIN select /*+ no_rewrite*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SORT | |3 |232 | +|1 | SUBPLAN FILTER| |3 |230 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | TABLE SCAN |xy_t1|3 |39 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC], [xy_t2.c3, ASC]) + 1 - output([xy_t2.c2], [xy_t2.c3]), filter([xy_t2.c2 = ANY(subquery(1))]), + exec_params_([xy_t2.c3]), onetime_exprs_(nil), init_plan_idxs_(nil) + 2 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c2]), filter([xy_t1.c3 < ?]), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ no_rewrite*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 6 | 7 | ++------+------+ + + +//两边唯一有序, 改写为inner join +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |SORT | |2 |87 | +|1 | HASH JOIN | |2 |85 | +|2 | TABLE SCAN|xy_t2|5 |37 | +|3 | TABLE SCAN|xy_t1|8 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds([xy_t1.c2 < xy_t2.c2]) + 2 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 3 - output([xy_t1.c2], [xy_t1.c1]), filter(nil), + access([xy_t1.c2], [xy_t1.c1]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; +Query Plan +===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |2 |78 | +|1 | TABLE SCAN|xy_t2|5 |37 | +|2 | TABLE SCAN|xy_t1|8 |38 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c1]), other_conds([xy_t1.c2 < xy_t2.c2]) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c2], [xy_t1.c1]), filter(nil), + access([xy_t1.c2], [xy_t1.c1]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN select /*+ no_rewrite*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER| |3 |229 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|3 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter([xy_t2.c1 = ANY(subquery(1))]), + exec_params_([xy_t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([xy_t1.c1]), filter([xy_t1.c2 < ?]), + access([xy_t1.c2], [xy_t1.c1]), partitions(p0) + +select /*+ no_rewrite*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ + + +// 一边唯一有序 +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SORT | |2 |88 | +|1 | HASH SEMI JOIN| |2 |86 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | TABLE SCAN |xy_t1|8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t2.c3], [xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c1], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN| |2 |86 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | SORT | |8 |46 | +|3 | TABLE SCAN |xy_t1|8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t2.c1 = xy_t1.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 1 - output([xy_t2.c3], [xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c2, ASC]) + 3 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN| |2 |93 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | MATERIAL | |8 |41 | +|3 | TABLE SCAN |xy_t1|8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + conds([xy_t1.c3 < xy_t2.c3], [xy_t2.c1 = xy_t1.c2]), nl_params_(nil) + 1 - output([xy_t2.c3], [xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c3], [xy_t1.c2]), filter(nil) + 3 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ no_rewrite*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER| |3 |230 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|3 |39 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter([xy_t2.c1 = ANY(subquery(1))]), + exec_params_([xy_t2.c3]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([xy_t2.c3], [xy_t2.c1], [xy_t2.c2]), filter(nil), + access([xy_t2.c3], [xy_t2.c1], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c2]), filter([xy_t1.c3 < ?]), + access([xy_t1.c3], [xy_t1.c2]), partitions(p0) + +select /*+ no_rewrite*/ c1, c2 from xy_t2 where c1 in (select c2 from xy_t1 where xy_t1.c3 < xy_t2.c3) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 6 | 6 | ++----+------+ + + +//两边都无序hash right +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |SORT | |7 |91 | +|1 | HASH RIGHT ANTI JOIN| |7 |85 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | TABLE SCAN |xy_t1|8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC], [xy_t1.c3, ASC]) + 1 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + equal_conds([xy_t1.c2 = xy_t2.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + access([xy_t2.c2], [xy_t2.c3]), partitions(p0) + 3 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + access([xy_t1.c2], [xy_t1.c3]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 0 | 0 | +| 1 | 1 | +| 2 | 2 | +| 5 | 5 | +| 5 | 5 | +| 7 | 7 | +| 7 | 8 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |SORT | |7 |95 | +|1 | MERGE ANTI JOIN| |7 |90 | +|2 | SORT | |8 |46 | +|3 | TABLE SCAN |xy_t1|8 |38 | +|4 | SORT | |5 |42 | +|5 | TABLE SCAN |xy_t2|5 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC], [xy_t1.c3, ASC]), prefix_pos(1) + 1 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + equal_conds([xy_t1.c2 = xy_t2.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC]) + 3 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + access([xy_t1.c2], [xy_t1.c3]), partitions(p0) + 4 - output([xy_t2.c3], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c2, ASC]) + 5 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + access([xy_t2.c2], [xy_t2.c3]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 0 | 0 | +| 1 | 1 | +| 2 | 2 | +| 5 | 5 | +| 5 | 5 | +| 7 | 7 | +| 7 | 8 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |SORT | |7 |98 | +|1 | NESTED-LOOP ANTI JOIN| |7 |92 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | MATERIAL | |5 |39 | +|4 | TABLE SCAN |xy_t2|5 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC], [xy_t1.c3, ASC]) + 1 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + conds([xy_t1.c2 = xy_t2.c2], [xy_t1.c3 < xy_t2.c3]), nl_params_(nil) + 2 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + access([xy_t1.c2], [xy_t1.c3]), partitions(p0) + 3 - output([xy_t2.c2], [xy_t2.c3]), filter(nil) + 4 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + access([xy_t2.c2], [xy_t2.c3]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 0 | 0 | +| 1 | 1 | +| 2 | 2 | +| 5 | 5 | +| 5 | 5 | +| 7 | 7 | +| 7 | 8 | ++------+------+ +EXPLAIN select /*+ no_rewrite*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SORT | |4 |344 | +|1 | SUBPLAN FILTER| |4 |340 | +|2 | TABLE SCAN |xy_t1|8 |38 | +|3 | TABLE SCAN |xy_t2|1 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), sort_keys([xy_t1.c2, ASC], [xy_t1.c3, ASC]) + 1 - output([xy_t1.c2], [xy_t1.c3]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([xy_t1.c2], [xy_t1.c3]), onetime_exprs_(nil), init_plan_idxs_(nil) + 2 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + access([xy_t1.c2], [xy_t1.c3]), partitions(p0) + 3 - output([1]), filter([? = xy_t2.c2], [? < xy_t2.c3]), + access([xy_t2.c2], [xy_t2.c3]), partitions(p0) + +select /*+ no_rewrite*/ c2, c3 from xy_t1 where not exists (select 1 from xy_t2 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 0 | 0 | +| 1 | 1 | +| 2 | 2 | +| 5 | 5 | +| 5 | 5 | +| 7 | 7 | +| 7 | 8 | ++------+------+ + + +//两边都无序hash left +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SORT | |4 |88 | +|1 | HASH ANTI JOIN| |4 |85 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | TABLE SCAN |xy_t1|8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC], [xy_t2.c3, ASC]) + 1 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + equal_conds([xy_t1.c2 = xy_t2.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + access([xy_t2.c2], [xy_t2.c3]), partitions(p0) + 3 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + access([xy_t1.c2], [xy_t1.c3]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 5 | ++------+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |SORT | |4 |93 | +|1 | MERGE ANTI JOIN| |4 |90 | +|2 | SORT | |5 |42 | +|3 | TABLE SCAN |xy_t2|5 |37 | +|4 | SORT | |8 |46 | +|5 | TABLE SCAN |xy_t1|8 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC], [xy_t2.c3, ASC]), prefix_pos(1) + 1 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + equal_conds([xy_t1.c2 = xy_t2.c2]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC]) + 3 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + access([xy_t2.c2], [xy_t2.c3]), partitions(p0) + 4 - output([xy_t1.c3], [xy_t1.c2]), filter(nil), sort_keys([xy_t1.c2, ASC]) + 5 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + access([xy_t1.c2], [xy_t1.c3]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 5 | ++------+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |SORT | |4 |96 | +|1 | NESTED-LOOP ANTI JOIN| |4 |93 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | MATERIAL | |8 |41 | +|4 | TABLE SCAN |xy_t1|8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC], [xy_t2.c3, ASC]) + 1 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + conds([xy_t1.c2 = xy_t2.c2], [xy_t1.c3 < xy_t2.c3]), nl_params_(nil) + 2 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + access([xy_t2.c2], [xy_t2.c3]), partitions(p0) + 3 - output([xy_t1.c2], [xy_t1.c3]), filter(nil) + 4 - output([xy_t1.c2], [xy_t1.c3]), filter(nil), + access([xy_t1.c2], [xy_t1.c3]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 5 | ++------+------+ +EXPLAIN select /*+ no_rewrite*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SORT | |3 |234 | +|1 | SUBPLAN FILTER| |3 |232 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | TABLE SCAN |xy_t1|1 |39 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), sort_keys([xy_t2.c2, ASC], [xy_t2.c3, ASC]) + 1 - output([xy_t2.c2], [xy_t2.c3]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([xy_t2.c2], [xy_t2.c3]), onetime_exprs_(nil), init_plan_idxs_(nil) + 2 - output([xy_t2.c2], [xy_t2.c3]), filter(nil), + access([xy_t2.c2], [xy_t2.c3]), partitions(p0) + 3 - output([1]), filter([xy_t1.c2 = ?], [xy_t1.c3 < ?]), + access([xy_t1.c2], [xy_t1.c3]), partitions(p0) + +select /*+ no_rewrite*/ c2, c3 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c2 = xy_t2.c2 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 1 | 1 | +| 3 | 3 | +| 5 | 5 | +| 5 | 5 | ++------+------+ + + +// 两边唯一有序 +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SORT | |4 |90 | +|1 | HASH ANTI JOIN| |4 |86 | +|2 | TABLE SCAN |xy_t2|5 |37 | +|3 | TABLE SCAN |xy_t1|8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c3 < xy_t2.c3]) + 2 - output([xy_t2.c1], [xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c3], [xy_t2.c2]), partitions(p0) + 3 - output([xy_t1.c1], [xy_t1.c3]), filter(nil), + access([xy_t1.c1], [xy_t1.c3]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 5 | +| 5 | 5 | +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE ANTI JOIN| |4 |78 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE SCAN |xy_t1|8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([xy_t1.c1 = xy_t2.c1]), other_conds([xy_t1.c3 < xy_t2.c3]) + 1 - output([xy_t2.c1], [xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c3], [xy_t2.c2]), partitions(p0) + 2 - output([xy_t1.c1], [xy_t1.c3]), filter(nil), + access([xy_t1.c1], [xy_t1.c3]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 5 | +| 5 | 5 | +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |4 |219 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE GET |xy_t1|1 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + conds(nil), nl_params_([xy_t2.c1], [xy_t2.c3]) + 1 - output([xy_t2.c1], [xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c3], [xy_t2.c2]), partitions(p0) + 2 - output([1]), filter([xy_t1.c3 < ?]), + access([xy_t1.c3]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 5 | +| 5 | 5 | +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ no_rewrite*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER| |3 |218 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE GET |xy_t1|1 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([xy_t2.c1], [xy_t2.c3]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([xy_t2.c1], [xy_t2.c3], [xy_t2.c2]), filter(nil), + access([xy_t2.c1], [xy_t2.c3], [xy_t2.c2]), partitions(p0) + 2 - output([1]), filter([xy_t1.c3 < ?]), + access([xy_t1.c3]), partitions(p0) + +select /*+ no_rewrite*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c1 and xy_t1.c3 < xy_t2.c3) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 5 | +| 5 | 5 | +| 6 | 6 | ++----+------+ + + +//一边唯一有序 +EXPLAIN select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |SORT | |3 |83 | +|1 | HASH RIGHT ANTI JOIN| |3 |82 | +|2 | SUBPLAN SCAN |VIEW1|3 |39 | +|3 | TABLE SCAN |xy_t1|3 |38 | +|4 | TABLE SCAN |xy_t2|5 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([VIEW1.xy_t1.c1 = xy_t2.c2]), other_conds(nil) + 2 - output([VIEW1.xy_t1.c1]), filter(nil), + access([VIEW1.xy_t1.c1]) + 3 - output([xy_t1.c1]), filter([xy_t1.c1 > xy_t1.c2]), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + 4 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + +select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 5 | +| 5 | 5 | +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |SORT | |3 |84 | +|1 | MERGE ANTI JOIN| |3 |83 | +|2 | SORT | |5 |42 | +|3 | TABLE SCAN |xy_t2|5 |37 | +|4 | SUBPLAN SCAN |VIEW1|3 |39 | +|5 | TABLE SCAN |xy_t1|3 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([VIEW1.xy_t1.c1 = xy_t2.c2]), other_conds(nil) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c2, ASC]) + 3 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 4 - output([VIEW1.xy_t1.c1]), filter(nil), + access([VIEW1.xy_t1.c1]) + 5 - output([xy_t1.c1]), filter([xy_t1.c1 > xy_t1.c2]), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 5 | +| 5 | 5 | +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |SORT | |3 |84 | +|1 | MERGE ANTI JOIN| |3 |83 | +|2 | SORT | |5 |42 | +|3 | TABLE SCAN |xy_t2|5 |37 | +|4 | SUBPLAN SCAN |VIEW1|3 |39 | +|5 | TABLE SCAN |xy_t1|3 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c1, ASC]) + 1 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), + equal_conds([VIEW1.xy_t1.c1 = xy_t2.c2]), other_conds(nil) + 2 - output([xy_t2.c1], [xy_t2.c2]), filter(nil), sort_keys([xy_t2.c2, ASC]) + 3 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 4 - output([VIEW1.xy_t1.c1]), filter(nil), + access([VIEW1.xy_t1.c1]) + 5 - output([xy_t1.c1]), filter([xy_t1.c1 > xy_t1.c2]), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 5 | +| 5 | 5 | +| 6 | 6 | ++----+------+ +EXPLAIN select /*+ no_rewrite*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER| |3 |218 | +|1 | TABLE SCAN |xy_t2|5 |37 | +|2 | TABLE GET |xy_t1|1 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([xy_t2.c1], [xy_t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([xy_t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([xy_t2.c2], [xy_t2.c1]), filter(nil), + access([xy_t2.c2], [xy_t2.c1]), partitions(p0) + 2 - output([1]), filter([xy_t1.c1 > xy_t1.c2]), + access([xy_t1.c1], [xy_t1.c2]), partitions(p0) + +select /*+ no_rewrite*/ c1, c2 from xy_t2 where not exists (select 1 from xy_t1 where xy_t1.c1 = xy_t2.c2 and xy_t1.c2 < xy_t2.c2) order by 1,2; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 3 | 3 | +| 4 | 5 | +| 5 | 5 | +| 6 | 6 | ++----+------+ + +drop table xy_t1, xy_t2; + + diff --git a/test/mysql_test/test_suite/join/r/mysql/join_merge.result b/tools/deploy/mysql_test/test_suite/join/r/mysql/join_merge.result similarity index 100% rename from test/mysql_test/test_suite/join/r/mysql/join_merge.result rename to tools/deploy/mysql_test/test_suite/join/r/mysql/join_merge.result diff --git a/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null.result b/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null.result new file mode 100644 index 000000000..89f4f32cc --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null.result @@ -0,0 +1,120 @@ +result_format: 4 +explain_protocol: 2 +drop table if exists t1,t2; +create table t1 (id int primary key, i2 int); +create table t2 (id int primary key, i2 int); +insert/*trace*/ into t1(id) values (75); +insert/*trace*/ into t1(id) values (79); +insert/*trace*/ into t1(id) values (78); +insert/*trace*/ into t1(id) values (77); +insert/*trace*/ into t1(id) values (104); +insert/*trace*/ into t1(id) values (103); +insert/*trace*/ into t1(id) values (102); +insert/*trace*/ into t1(id) values (101); +insert/*trace*/ into t1(id) values (105); +insert/*trace*/ into t1(id) values (106); +insert/*trace*/ into t1(id) values (107); +insert/*trace*/ into t2(id) values (107),(75),(1000); +EXPLAIN select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |t1 |1 |36 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t2.id]), filter(nil), + conds(nil), nl_params_([t1.id]) + 1 - output([t1.id]), filter(nil), + access([t1.id]), partitions(p0) + 2 - output([t2.id]), filter(nil), + access([t2.id]), partitions(p0) + +select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200 and t1.id<200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |t1 |1 |36 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t2.id]), filter(nil), + conds(nil), nl_params_([t1.id]) + 1 - output([t1.id]), filter(nil), + access([t1.id]), partitions(p0) + 2 - output([t2.id]), filter(nil), + access([t2.id]), partitions(p0) + +select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id>200 and t1.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select a.id , b.id from t1 a, t2 b where a.id = b.id and a.id>200 and a.id<200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |a |1 |36 | +|2 | TABLE GET |b |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.id], [b.id]), filter(nil), + conds(nil), nl_params_([a.id]) + 1 - output([a.id]), filter(nil), + access([a.id]), partitions(p0) + 2 - output([b.id]), filter(nil), + access([b.id]), partitions(p0) + +select a.id , b.id from t1 a, t2 b where a.id = b.id and a.id>200 and a.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select a.id, b.id from t1 a, t2 b where a.id = a.id and a.id>200 and a.id<200; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |3 |75 | +|1 | TABLE SCAN |b |3 |37 | +|2 | MATERIAL | |1 |37 | +|3 | TABLE SCAN |a |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.id], [b.id]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([b.id]), filter(nil), + access([b.id]), partitions(p0) + 2 - output([a.id]), filter(nil) + 3 - output([a.id]), filter([a.id = a.id]), + access([a.id]), partitions(p0) + +select a.id, b.id from t1 a, t2 b where a.id = a.id and a.id>200 and a.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +drop table t1, t2; diff --git a/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon.result b/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon.result new file mode 100644 index 000000000..aefda0f02 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon.result @@ -0,0 +1,121 @@ +result_format: 4 +explain_protocol: 2 +drop table if exists t1,t2; +create table t1 (id int primary key, i2 int); +create table t2 (id int primary key, i2 int); +insert/*trace*/ into t1(id) values (75); +insert/*trace*/ into t1(id) values (79); +insert/*trace*/ into t1(id) values (78); +insert/*trace*/ into t1(id) values (77); +insert/*trace*/ into t1(id) values (104); +insert/*trace*/ into t1(id) values (103); +insert/*trace*/ into t1(id) values (102); +insert/*trace*/ into t1(id) values (101); +insert/*trace*/ into t1(id) values (105); +insert/*trace*/ into t1(id) values (106); +insert/*trace*/ into t1(id) values (107); +insert/*trace*/ into t2(id) values (107),(75),(1000); + + +EXPLAIN select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |t1 |1 |36 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t2.id]), filter(nil), + conds(nil), nl_params_([t1.id]) + 1 - output([t1.id]), filter(nil), + access([t1.id]), partitions(p0) + 2 - output([t2.id]), filter(nil), + access([t2.id]), partitions(p0) + +select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200 and t1.id<200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |t1 |1 |36 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t2.id]), filter(nil), + conds(nil), nl_params_([t1.id]) + 1 - output([t1.id]), filter(nil), + access([t1.id]), partitions(p0) + 2 - output([t2.id]), filter(nil), + access([t2.id]), partitions(p0) + +select t1.id, t2.id from t1 join t2 on t2.id = t1.id and t1.id>200 and t1.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select a.id , b.id from t1 a join t2 b on a.id = b.id and a.id>200 and a.id<200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |a |1 |36 | +|2 | TABLE GET |b |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.id], [b.id]), filter(nil), + conds(nil), nl_params_([a.id]) + 1 - output([a.id]), filter(nil), + access([a.id]), partitions(p0) + 2 - output([b.id]), filter(nil), + access([b.id]), partitions(p0) + +select a.id , b.id from t1 a join t2 b on a.id = b.id and a.id>200 and a.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select a.id, b.id from t1 a join t2 b on a.id = a.id and a.id>200 and a.id<200; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |3 |75 | +|1 | TABLE SCAN |b |3 |37 | +|2 | MATERIAL | |1 |37 | +|3 | TABLE SCAN |a |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.id], [b.id]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([b.id]), filter(nil), + access([b.id]), partitions(p0) + 2 - output([a.id]), filter(nil) + 3 - output([a.id]), filter([a.id = a.id]), + access([a.id]), partitions(p0) + +select a.id, b.id from t1 a join t2 b on a.id = a.id and a.id>200 and a.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ +drop table t1, t2; diff --git a/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon_where.result b/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon_where.result new file mode 100644 index 000000000..e6b0c4105 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/join/r/mysql/nested_loop_join_right_null_joinon_where.result @@ -0,0 +1,121 @@ +result_format: 4 +explain_protocol: 2 +drop table if exists t1,t2; +create table t1 (id int primary key, i2 int); +create table t2 (id int primary key, i2 int); +insert/*trace*/ into t1(id) values (75); +insert/*trace*/ into t1(id) values (79); +insert/*trace*/ into t1(id) values (78); +insert/*trace*/ into t1(id) values (77); +insert/*trace*/ into t1(id) values (104); +insert/*trace*/ into t1(id) values (103); +insert/*trace*/ into t1(id) values (102); +insert/*trace*/ into t1(id) values (101); +insert/*trace*/ into t1(id) values (105); +insert/*trace*/ into t1(id) values (106); +insert/*trace*/ into t1(id) values (107); +insert/*trace*/ into t2(id) values (107),(75),(1000); + + +EXPLAIN select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |t1 |1 |36 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t2.id]), filter(nil), + conds(nil), nl_params_([t1.id]) + 1 - output([t1.id]), filter(nil), + access([t1.id]), partitions(p0) + 2 - output([t2.id]), filter(nil), + access([t2.id]), partitions(p0) + +select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200 and t1.id<200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |t1 |1 |36 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t2.id]), filter(nil), + conds(nil), nl_params_([t1.id]) + 1 - output([t1.id]), filter(nil), + access([t1.id]), partitions(p0) + 2 - output([t2.id]), filter(nil), + access([t2.id]), partitions(p0) + +select t1.id, t2.id from t1 join t2 on t2.id = t1.id where t1.id>200 and t1.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select a.id , b.id from t1 a join t2 b on a.id = b.id where a.id>200 and a.id<200; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |73 | +|1 | TABLE SCAN |a |1 |36 | +|2 | TABLE GET |b |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.id], [b.id]), filter(nil), + conds(nil), nl_params_([a.id]) + 1 - output([a.id]), filter(nil), + access([a.id]), partitions(p0) + 2 - output([b.id]), filter(nil), + access([b.id]), partitions(p0) + +select a.id , b.id from t1 a join t2 b on a.id = b.id where a.id>200 and a.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ + +EXPLAIN select a.id , b.id from t1 a join t2 b on a.id = a.id where a.id>200 and a.id<200; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |3 |75 | +|1 | TABLE SCAN |b |3 |37 | +|2 | MATERIAL | |1 |37 | +|3 | TABLE SCAN |a |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.id], [b.id]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([b.id]), filter(nil), + access([b.id]), partitions(p0) + 2 - output([a.id]), filter(nil) + 3 - output([a.id]), filter([a.id = a.id]), + access([a.id]), partitions(p0) + +select a.id , b.id from t1 a join t2 b on a.id = a.id where a.id>200 and a.id<200; ++----+----+ +| id | id | ++----+----+ ++----+----+ +drop table t1, t2; diff --git a/test/mysql_test/test_suite/join/t/anti_semi_join.test b/tools/deploy/mysql_test/test_suite/join/t/anti_semi_join.test similarity index 99% rename from test/mysql_test/test_suite/join/t/anti_semi_join.test rename to tools/deploy/mysql_test/test_suite/join/t/anti_semi_join.test index 74bcbfe66..69c5ea8e0 100644 --- a/test/mysql_test/test_suite/join/t/anti_semi_join.test +++ b/tools/deploy/mysql_test/test_suite/join/t/anti_semi_join.test @@ -1,11 +1,16 @@ +#owner: xiaoyi.xy +#owner group: sql1 +# tags: optimizer ## +## Test Name: anti_join.test +## Date: 2017-12-28 --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log - - +--result_format 4 +--explain_protocol 2 --disable_warnings drop table if exists xy_t1, xy_t2; @@ -239,6 +244,7 @@ select /*+ no_rewrite*/ c2, c3 from xy_t2 where c2 in (select c2 from xy_t1 wher --echo //两边唯一有序, 改写为inner join select /*+ use_hash(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; select /*+ use_merge(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; +# bug: https://work.aone.alibaba-inc.com/issue/27311279 # select /*+ use_nl(xy_t1 xy_t2)*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; select /*+ no_rewrite*/ c1, c2 from xy_t2 where c1 in (select c1 from xy_t1 where xy_t1.c2 < xy_t2.c2) order by 1,2; diff --git a/test/mysql_test/test_suite/join/t/join_merge.test b/tools/deploy/mysql_test/test_suite/join/t/join_merge.test similarity index 99% rename from test/mysql_test/test_suite/join/t/join_merge.test rename to tools/deploy/mysql_test/test_suite/join/t/join_merge.test index bc0e94212..762ac2822 100644 --- a/test/mysql_test/test_suite/join/t/join_merge.test +++ b/tools/deploy/mysql_test/test_suite/join/t/join_merge.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: yibo.tyf +# owner group: SQL3 +# tags: optimizer # description: # 1. test desc for merge join. diff --git a/test/mysql_test/test_suite/join/t/nested_loop_join_right_null.test b/tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null.test similarity index 87% rename from test/mysql_test/test_suite/join/t/nested_loop_join_right_null.test rename to tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null.test index 35f86729c..83d7d7c22 100644 --- a/test/mysql_test/test_suite/join/t/nested_loop_join_right_null.test +++ b/tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null.test @@ -1,8 +1,12 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log - - +# owner: xiaoyi.xy +# owner group: SQL3 +# tags: optimizer +# description: OUR GOAL: Make all this simple and effective! +--result_format 4 +--explain_protocol 2 --disable_warnings drop table if exists t1,t2; diff --git a/test/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon.test b/tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon.test similarity index 87% rename from test/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon.test rename to tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon.test index ff1b6d42e..f37dacf3c 100644 --- a/test/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon.test +++ b/tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon.test @@ -1,8 +1,12 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log - - +# owner: xiaoyi.xy +# owner group: SQL3 +# tags: optimizer +# description: OUR GOAL: Make all this simple and effective! +--result_format 4 +--explain_protocol 2 --disable_warnings drop table if exists t1,t2; diff --git a/test/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon_where.test b/tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon_where.test similarity index 87% rename from test/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon_where.test rename to tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon_where.test index 1f124a88b..e9fc996eb 100644 --- a/test/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon_where.test +++ b/tools/deploy/mysql_test/test_suite/join/t/nested_loop_join_right_null_joinon_where.test @@ -1,8 +1,12 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log - - +# owner: xiaoyi.xy +# owner group: SQL3 +# tags: optimizer +# description: OUR GOAL: Make all this simple and effective! +--result_format 4 +--explain_protocol 2 --disable_warnings drop table if exists t1,t2; diff --git a/test/mysql_test/test_suite/meta_info/r/mysql/meta_build_in_func_test.result b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_build_in_func_test.result similarity index 58% rename from test/mysql_test/test_suite/meta_info/r/mysql/meta_build_in_func_test.result rename to tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_build_in_func_test.result index 2b9523d5e..2a69f2b1c 100644 --- a/test/mysql_test/test_suite/meta_info/r/mysql/meta_build_in_func_test.result +++ b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_build_in_func_test.result @@ -1,608 +1,973 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; alter system flush plan cache global; -connection default; drop table if exists build_in_func_test_table; +result_format: 4 create table build_in_func_test_table (varchar_c varchar(128) primary key, date_c datetime(6),v varchar(128)); insert into build_in_func_test_table values ('hello', '2012-11-01 19:14:32',null); +##full param select substr(varchar_c, 1, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 1, 1) substr(varchar_c, 1, 1) 253 4 1 Y 0 31 45 -substr(varchar_c, 1, 1) -h ++-------------------------+ +| substr(varchar_c, 1, 1) | ++-------------------------+ +| h | ++-------------------------+ select substr(varchar_c, 0, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 0, 1) substr(varchar_c, 0, 1) 253 512 0 Y 0 31 45 -substr(varchar_c, 0, 1) - ++-------------------------+ +| substr(varchar_c, 0, 1) | ++-------------------------+ +| | ++-------------------------+ select substr(varchar_c, -1, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -1, 1) substr(varchar_c, -1, 1) 253 512 1 Y 0 31 45 -substr(varchar_c, -1, 1) -o ++--------------------------+ +| substr(varchar_c, -1, 1) | ++--------------------------+ +| o | ++--------------------------+ select substr(varchar_c, -5, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -5, 1) substr(varchar_c, -5, 1) 253 512 1 Y 0 31 45 -substr(varchar_c, -5, 1) -h ++--------------------------+ +| substr(varchar_c, -5, 1) | ++--------------------------+ +| h | ++--------------------------+ select substr(varchar_c, -6, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -6, 1) substr(varchar_c, -6, 1) 253 512 0 Y 0 31 45 -substr(varchar_c, -6, 1) - ++--------------------------+ +| substr(varchar_c, -6, 1) | ++--------------------------+ +| | ++--------------------------+ select substr(varchar_c, -100, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -100, 1) substr(varchar_c, -100, 1) 253 512 0 Y 0 31 45 -substr(varchar_c, -100, 1) - ++----------------------------+ +| substr(varchar_c, -100, 1) | ++----------------------------+ +| | ++----------------------------+ select substr(varchar_c, 3, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 3, 1) substr(varchar_c, 3, 1) 253 4 1 Y 0 31 45 -substr(varchar_c, 3, 1) -l ++-------------------------+ +| substr(varchar_c, 3, 1) | ++-------------------------+ +| l | ++-------------------------+ select substr(varchar_c, 5, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 5, 1) substr(varchar_c, 5, 1) 253 4 1 Y 0 31 45 -substr(varchar_c, 5, 1) -o ++-------------------------+ +| substr(varchar_c, 5, 1) | ++-------------------------+ +| o | ++-------------------------+ select substr(varchar_c, 6, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 6, 1) substr(varchar_c, 6, 1) 253 4 0 Y 0 31 45 -substr(varchar_c, 6, 1) - ++-------------------------+ +| substr(varchar_c, 6, 1) | ++-------------------------+ +| | ++-------------------------+ select substr(varchar_c, 6, -1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 6, -1) substr(varchar_c, 6, -1) 253 0 0 Y 0 31 45 -substr(varchar_c, 6, -1) - ++--------------------------+ +| substr(varchar_c, 6, -1) | ++--------------------------+ +| | ++--------------------------+ select substr(varchar_c, 5, -1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 5, -1) substr(varchar_c, 5, -1) 253 0 0 Y 0 31 45 -substr(varchar_c, 5, -1) - ++--------------------------+ +| substr(varchar_c, 5, -1) | ++--------------------------+ +| | ++--------------------------+ select substr(varchar_c, 4, -1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 4, -1) substr(varchar_c, 4, -1) 253 0 0 Y 0 31 45 -substr(varchar_c, 4, -1) - ++--------------------------+ +| substr(varchar_c, 4, -1) | ++--------------------------+ +| | ++--------------------------+ select substr(varchar_c, -1, -1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -1, -1) substr(varchar_c, -1, -1) 253 0 0 Y 0 31 45 -substr(varchar_c, -1, -1) - ++---------------------------+ +| substr(varchar_c, -1, -1) | ++---------------------------+ +| | ++---------------------------+ select substr(varchar_c, 0, 5) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 0, 5) substr(varchar_c, 0, 5) 253 512 0 Y 0 31 45 -substr(varchar_c, 0, 5) - ++-------------------------+ +| substr(varchar_c, 0, 5) | ++-------------------------+ +| | ++-------------------------+ select substr(varchar_c, 0, 6) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 0, 6) substr(varchar_c, 0, 6) 253 512 0 Y 0 31 45 -substr(varchar_c, 0, 6) - ++-------------------------+ +| substr(varchar_c, 0, 6) | ++-------------------------+ +| | ++-------------------------+ select substr(varchar_c, 0, 100) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 0, 100) substr(varchar_c, 0, 100) 253 512 0 Y 0 31 45 -substr(varchar_c, 0, 100) - ++---------------------------+ +| substr(varchar_c, 0, 100) | ++---------------------------+ +| | ++---------------------------+ select substr(varchar_c, -6, 10) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -6, 10) substr(varchar_c, -6, 10) 253 512 0 Y 0 31 45 -substr(varchar_c, -6, 10) - ++---------------------------+ +| substr(varchar_c, -6, 10) | ++---------------------------+ +| | ++---------------------------+ select substr(varchar_c, -5, 10) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -5, 10) substr(varchar_c, -5, 10) 253 512 5 Y 0 31 45 -substr(varchar_c, -5, 10) -hello ++---------------------------+ +| substr(varchar_c, -5, 10) | ++---------------------------+ +| hello | ++---------------------------+ select substr(varchar_c, -5, 3) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -5, 3) substr(varchar_c, -5, 3) 253 512 3 Y 0 31 45 -substr(varchar_c, -5, 3) -hel ++--------------------------+ +| substr(varchar_c, -5, 3) | ++--------------------------+ +| hel | ++--------------------------+ select substr(v,5,10) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(v,5,10) substr(v,5,10) 253 40 0 Y 0 31 45 -substr(v,5,10) -NULL ++----------------+ +| substr(v,5,10) | ++----------------+ +| NULL | ++----------------+ select substr(varchar_c,null,10) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c,null,10) substr(varchar_c,null,10) 253 40 0 Y 0 31 45 -substr(varchar_c,null,10) -NULL ++---------------------------+ +| substr(varchar_c,null,10) | ++---------------------------+ +| NULL | ++---------------------------+ select substr(varchar_c,2,null) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c,2,null) substr(varchar_c,2,null) 253 508 0 Y 0 31 45 -substr(varchar_c,2,null) -NULL ++--------------------------+ +| substr(varchar_c,2,null) | ++--------------------------+ +| NULL | ++--------------------------+ +##default length select substr(varchar_c, -6) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -6) substr(varchar_c, -6) 253 512 0 Y 0 31 45 -substr(varchar_c, -6) - ++-----------------------+ +| substr(varchar_c, -6) | ++-----------------------+ +| | ++-----------------------+ select substr(varchar_c, -5) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -5) substr(varchar_c, -5) 253 512 5 Y 0 31 45 -substr(varchar_c, -5) -hello ++-----------------------+ +| substr(varchar_c, -5) | ++-----------------------+ +| hello | ++-----------------------+ select substr(varchar_c, -4) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -4) substr(varchar_c, -4) 253 512 4 Y 0 31 45 -substr(varchar_c, -4) -ello ++-----------------------+ +| substr(varchar_c, -4) | ++-----------------------+ +| ello | ++-----------------------+ select substr(varchar_c, -0) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, -0) substr(varchar_c, -0) 253 512 0 Y 0 31 45 -substr(varchar_c, -0) - ++-----------------------+ +| substr(varchar_c, -0) | ++-----------------------+ +| | ++-----------------------+ select substr(varchar_c, 1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 1) substr(varchar_c, 1) 253 512 5 Y 0 31 45 -substr(varchar_c, 1) -hello ++----------------------+ +| substr(varchar_c, 1) | ++----------------------+ +| hello | ++----------------------+ select substr(varchar_c, 2) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 2) substr(varchar_c, 2) 253 508 4 Y 0 31 45 -substr(varchar_c, 2) -ello ++----------------------+ +| substr(varchar_c, 2) | ++----------------------+ +| ello | ++----------------------+ select substr(varchar_c, 5) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 5) substr(varchar_c, 5) 253 496 1 Y 0 31 45 -substr(varchar_c, 5) -o ++----------------------+ +| substr(varchar_c, 5) | ++----------------------+ +| o | ++----------------------+ select substr(varchar_c, 6) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c, 6) substr(varchar_c, 6) 253 492 0 Y 0 31 45 -substr(varchar_c, 6) - ++----------------------+ +| substr(varchar_c, 6) | ++----------------------+ +| | ++----------------------+ select substr(varchar_c,null) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(varchar_c,null) substr(varchar_c,null) 253 512 0 Y 0 31 45 -substr(varchar_c,null) -NULL ++------------------------+ +| substr(varchar_c,null) | ++------------------------+ +| NULL | ++------------------------+ select substr(v,1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(v,1) substr(v,1) 253 512 0 Y 0 31 45 -substr(v,1) -NULL ++-------------+ +| substr(v,1) | ++-------------+ +| NULL | ++-------------+ +##cast test select substr(cast(date_c as char(1024)), 0) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(cast(date_c as char(1024)), 0) substr(cast(date_c as char(1024)), 0) 253 4096 0 Y 0 31 45 -substr(cast(date_c as char(1024)), 0) - ++---------------------------------------+ +| substr(cast(date_c as char(1024)), 0) | ++---------------------------------------+ +| | ++---------------------------------------+ select substr(cast(date_c as char(1024)), 10) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(cast(date_c as char(1024)), 10) substr(cast(date_c as char(1024)), 10) 253 4060 17 Y 0 31 45 -substr(cast(date_c as char(1024)), 10) -1 19:14:32.000000 ++----------------------------------------+ +| substr(cast(date_c as char(1024)), 10) | ++----------------------------------------+ +| 1 19:14:32.000000 | ++----------------------------------------+ select substr(cast(1024 as char(1024)), 1, 2) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(cast(1024 as char(1024)), 1, 2) substr(cast(1024 as char(1024)), 1, 2) 253 8 2 Y 0 31 45 -substr(cast(1024 as char(1024)), 1, 2) -10 ++----------------------------------------+ +| substr(cast(1024 as char(1024)), 1, 2) | ++----------------------------------------+ +| 10 | ++----------------------------------------+ select substr(cast(date_c as char(1024)) from 10) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(cast(date_c as char(1024)) from 10) substr(cast(date_c as char(1024)) from 10) 253 4060 17 Y 0 31 45 -substr(cast(date_c as char(1024)) from 10) -1 19:14:32.000000 ++--------------------------------------------+ +| substr(cast(date_c as char(1024)) from 10) | ++--------------------------------------------+ +| 1 19:14:32.000000 | ++--------------------------------------------+ select substr(cast(date_c as char(1024)) from 10 for 10) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def substr(cast(date_c as char(1024)) from 10 for 10) substr(cast(date_c as char(1024)) from 10 for 10) 253 40 10 Y 0 31 45 -substr(cast(date_c as char(1024)) from 10 for 10) -1 19:14:32 ++---------------------------------------------------+ +| substr(cast(date_c as char(1024)) from 10 for 10) | ++---------------------------------------------------+ +| 1 19:14:32 | ++---------------------------------------------------+ + select coalesce(cast(null as signed int), null) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def coalesce(cast(null as signed int), null) coalesce(cast(null as signed int), null) 8 20 0 Y 32896 0 63 -coalesce(cast(null as signed int), null) -NULL ++------------------------------------------+ +| coalesce(cast(null as signed int), null) | ++------------------------------------------+ +| NULL | ++------------------------------------------+ select coalesce(null, 'monkey59', 123) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def coalesce(null, 'monkey59', 123) coalesce(null, 'monkey59', 123) 253 80 8 Y 0 31 45 -coalesce(null, 'monkey59', 123) -monkey59 ++---------------------------------+ +| coalesce(null, 'monkey59', 123) | ++---------------------------------+ +| monkey59 | ++---------------------------------+ select coalesce('jasimin', null, 'a,a', 123) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def coalesce('jasimin', null, 'a,a', 123) coalesce('jasimin', null, 'a,a', 123) 253 80 7 Y 0 31 45 -coalesce('jasimin', null, 'a,a', 123) -jasimin ++---------------------------------------+ +| coalesce('jasimin', null, 'a,a', 123) | ++---------------------------------------+ +| jasimin | ++---------------------------------------+ select coalesce(cast(null as signed int), null, 32.23) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def coalesce(cast(null as signed int), null, 32.23) coalesce(cast(null as signed int), null, 32.23) 246 24 5 Y 32896 2 63 -coalesce(cast(null as signed int), null, 32.23) -32.23 ++-------------------------------------------------+ +| coalesce(cast(null as signed int), null, 32.23) | ++-------------------------------------------------+ +| 32.23 | ++-------------------------------------------------+ + select lower('ABC&*03_+abc') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def lower('ABC&*03_+abc') lower('ABC&*03_+abc') 253 48 12 Y 0 31 45 -lower('ABC&*03_+abc') -abc&*03_+abc ++-----------------------+ +| lower('ABC&*03_+abc') | ++-----------------------+ +| abc&*03_+abc | ++-----------------------+ select lower(varchar_c) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def lower(varchar_c) lower(varchar_c) 253 512 5 Y 0 31 45 -lower(varchar_c) -hello ++------------------+ +| lower(varchar_c) | ++------------------+ +| hello | ++------------------+ select lower(null) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def lower(null) lower(null) 253 0 0 Y 128 31 63 -lower(null) -NULL ++-------------+ +| lower(null) | ++-------------+ +| NULL | ++-------------+ select upper('ABC&*03_+abc') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def upper('ABC&*03_+abc') upper('ABC&*03_+abc') 253 48 12 Y 0 31 45 -upper('ABC&*03_+abc') -ABC&*03_+ABC ++-----------------------+ +| upper('ABC&*03_+abc') | ++-----------------------+ +| ABC&*03_+ABC | ++-----------------------+ select upper(varchar_c) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def upper(varchar_c) upper(varchar_c) 253 512 5 Y 0 31 45 -upper(varchar_c) -HELLO ++------------------+ +| upper(varchar_c) | ++------------------+ +| HELLO | ++------------------+ select upper(null) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def upper(null) upper(null) 253 0 0 Y 128 31 63 -upper(null) -NULL ++-------------+ +| upper(null) | ++-------------+ +| NULL | ++-------------+ + select cast(12 as datetime) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(12 as datetime) cast(12 as datetime) 12 19 0 N 129 0 63 -cast(12 as datetime) -NULL ++-----------------------+ +| cast(12 as datetime) | ++-----------------------+ +| NULL | ++-----------------------+ select cast('12' as datetime) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast('12' as datetime) cast('12' as datetime) 12 19 0 N 129 0 63 -cast('12' as datetime) -NULL ++-------------------------+ +| cast('12' as datetime) | ++-------------------------+ +| NULL | ++-------------------------+ select cast(cast('1970-01-01 08:00:12' as datetime) as signed int) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(cast('1970-01-01 08:00:12' as datetime) as signed int) cast(cast('1970-01-01 08:00:12' as datetime) as signed int) 8 19 14 N 32897 0 63 -cast(cast('1970-01-01 08:00:12' as datetime) as signed int) -19700101080012 ++--------------------------------------------------------------+ +| cast(cast('1970-01-01 08:00:12' as datetime) as signed int) | ++--------------------------------------------------------------+ +| 19700101080012 | ++--------------------------------------------------------------+ select cast('1970-01-01 08:00:12' as signed int) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast('1970-01-01 08:00:12' as signed int) cast('1970-01-01 08:00:12' as signed int) 8 19 4 N 32897 0 63 -cast('1970-01-01 08:00:12' as signed int) -1970 ++-------------------------------------------+ +| cast('1970-01-01 08:00:12' as signed int) | ++-------------------------------------------+ +| 1970 | ++-------------------------------------------+ select cast(cast('12' as decimal) as datetime) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(cast('12' as decimal) as datetime) cast(cast('12' as decimal) as datetime) 12 19 0 N 129 0 63 -cast(cast('12' as decimal) as datetime) -NULL ++------------------------------------------+ +| cast(cast('12' as decimal) as datetime) | ++------------------------------------------+ +| NULL | ++------------------------------------------+ select cast(cast('12' as decimal) as datetime) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(cast('12' as decimal) as datetime) cast(cast('12' as decimal) as datetime) 12 19 0 N 129 0 63 -cast(cast('12' as decimal) as datetime) -NULL ++-----------------------------------------+ +| cast(cast('12' as decimal) as datetime) | ++-----------------------------------------+ +| NULL | ++-----------------------------------------+ select cast(cast('12' as decimal) as datetime) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(cast('12' as decimal) as datetime) cast(cast('12' as decimal) as datetime) 12 19 0 N 129 0 63 -cast(cast('12' as decimal) as datetime) -NULL ++-----------------------------------------+ +| cast(cast('12' as decimal) as datetime) | ++-----------------------------------------+ +| NULL | ++-----------------------------------------+ select cast(v as signed int) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(v as signed int) cast(v as signed int) 8 21 0 Y 32896 0 63 -cast(v as signed int) -NULL ++-----------------------+ +| cast(v as signed int) | ++-----------------------+ +| NULL | ++-----------------------+ + select trim('aba' from 'ababa') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim('aba' from 'ababa') trim('aba' from 'ababa') 253 20 2 Y 0 31 45 -trim('aba' from 'ababa') -ba ++--------------------------+ +| trim('aba' from 'ababa') | ++--------------------------+ +| ba | ++--------------------------+ select length(trim('aba' from 'aba')) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def length(trim('aba' from 'aba')) length(trim('aba' from 'aba')) 8 20 1 Y 32896 0 63 -length(trim('aba' from 'aba')) -0 ++--------------------------------+ +| length(trim('aba' from 'aba')) | ++--------------------------------+ +| 0 | ++--------------------------------+ select trim('aba' from 'aba') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim('aba' from 'aba') trim('aba' from 'aba') 253 20 0 Y 0 31 45 -trim('aba' from 'aba') - ++------------------------+ +| trim('aba' from 'aba') | ++------------------------+ +| | ++------------------------+ select trim(' hello ') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(' hello ') trim(' hello ') 253 36 5 Y 0 31 45 -trim(' hello ') -hello ++-------------------+ +| trim(' hello ') | ++-------------------+ +| hello | ++-------------------+ select trim('h' from 'hhhhello!') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim('h' from 'hhhhello!') trim('h' from 'hhhhello!') 253 36 5 Y 0 31 45 -trim('h' from 'hhhhello!') -ello! ++----------------------------+ +| trim('h' from 'hhhhello!') | ++----------------------------+ +| ello! | ++----------------------------+ select trim('o!' from 'hhhhello!') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim('o!' from 'hhhhello!') trim('o!' from 'hhhhello!') 253 36 7 Y 0 31 45 -trim('o!' from 'hhhhello!') -hhhhell ++-----------------------------+ +| trim('o!' from 'hhhhello!') | ++-----------------------------+ +| hhhhell | ++-----------------------------+ select trim('h' from 'hhhhaaaahhhh') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim('h' from 'hhhhaaaahhhh') trim('h' from 'hhhhaaaahhhh') 253 36 4 Y 0 31 45 -trim('h' from 'hhhhaaaahhhh') -aaaa ++-------------------------------+ +| trim('h' from 'hhhhaaaahhhh') | ++-------------------------------+ +| aaaa | ++-------------------------------+ select trim(LEADING 'h' from 'hhhhaaaahhhh') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(LEADING 'h' from 'hhhhaaaahhhh') trim(LEADING 'h' from 'hhhhaaaahhhh') 253 48 8 Y 0 31 45 -trim(LEADING 'h' from 'hhhhaaaahhhh') -aaaahhhh ++---------------------------------------+ +| trim(LEADING 'h' from 'hhhhaaaahhhh') | ++---------------------------------------+ +| aaaahhhh | ++---------------------------------------+ select trim(TRAILING 'h' from 'hhhhaaaahhhh') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(TRAILING 'h' from 'hhhhaaaahhhh') trim(TRAILING 'h' from 'hhhhaaaahhhh') 253 48 8 Y 0 31 45 -trim(TRAILING 'h' from 'hhhhaaaahhhh') -hhhhaaaa ++----------------------------------------+ +| trim(TRAILING 'h' from 'hhhhaaaahhhh') | ++----------------------------------------+ +| hhhhaaaa | ++----------------------------------------+ select trim(BOTH 'h' from 'hhhhaaaahhhh') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(BOTH 'h' from 'hhhhaaaahhhh') trim(BOTH 'h' from 'hhhhaaaahhhh') 253 48 4 Y 0 31 45 -trim(BOTH 'h' from 'hhhhaaaahhhh') -aaaa ++------------------------------------+ +| trim(BOTH 'h' from 'hhhhaaaahhhh') | ++------------------------------------+ +| aaaa | ++------------------------------------+ select trim(BOTH from ' hhhhaaaa ') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(BOTH from ' hhhhaaaa ') trim(BOTH from ' hhhhaaaa ') 253 48 8 Y 0 31 45 -trim(BOTH from ' hhhhaaaa ') -hhhhaaaa ++---------------------------------+ +| trim(BOTH from ' hhhhaaaa ') | ++---------------------------------+ +| hhhhaaaa | ++---------------------------------+ select trim(123 from 123542) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(123 from 123542) trim(123 from 123542) 253 24 3 Y 0 31 45 -trim(123 from 123542) -542 ++-----------------------+ +| trim(123 from 123542) | ++-----------------------+ +| 542 | ++-----------------------+ select trim(2 from cast(12312312 as datetime)) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(2 from cast(12312312 as datetime)) trim(2 from cast(12312312 as datetime)) 253 76 0 Y 0 31 45 -trim(2 from cast(12312312 as datetime)) -NULL ++-----------------------------------------+ +| trim(2 from cast(12312312 as datetime)) | ++-----------------------------------------+ +| NULL | ++-----------------------------------------+ select length(trim(' hi' || 'dir ')) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def length(trim(' hi' || 'dir ')) length(trim(' hi' || 'dir ')) 8 20 1 Y 32896 0 63 -length(trim(' hi' || 'dir ')) -1 ++-----------------------------------+ +| length(trim(' hi' || 'dir ')) | ++-----------------------------------+ +| 1 | ++-----------------------------------+ select trim(1) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(1) trim(1) 253 4 1 Y 0 31 45 -trim(1) -1 ++---------+ +| trim(1) | ++---------+ +| 1 | ++---------+ select trim(cast(111 as char(1024))) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(cast(111 as char(1024))) trim(cast(111 as char(1024))) 253 4096 3 Y 0 31 45 -trim(cast(111 as char(1024))) -111 ++-------------------------------+ +| trim(cast(111 as char(1024))) | ++-------------------------------+ +| 111 | ++-------------------------------+ select trim(LEADING '1' from cast(111 as char(1024))) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(LEADING '1' from cast(111 as char(1024))) trim(LEADING '1' from cast(111 as char(1024))) 253 4096 0 Y 0 31 45 -trim(LEADING '1' from cast(111 as char(1024))) - ++------------------------------------------------+ +| trim(LEADING '1' from cast(111 as char(1024))) | ++------------------------------------------------+ +| | ++------------------------------------------------+ select trim(TRAILING '1' from cast(111 as char(1024))) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(TRAILING '1' from cast(111 as char(1024))) trim(TRAILING '1' from cast(111 as char(1024))) 253 4096 0 Y 0 31 45 -trim(TRAILING '1' from cast(111 as char(1024))) - ++-------------------------------------------------+ +| trim(TRAILING '1' from cast(111 as char(1024))) | ++-------------------------------------------------+ +| | ++-------------------------------------------------+ select trim(v) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(v) trim(v) 253 512 0 Y 0 31 45 -trim(v) -NULL ++---------+ +| trim(v) | ++---------+ +| NULL | ++---------+ select trim(leading v from 'v'),trim(leading varchar_c from 'he') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def trim(leading v from 'v') trim(leading v from 'v') 253 4 0 Y 0 31 45 def trim(leading varchar_c from 'he') trim(leading varchar_c from 'he') 253 8 2 Y 0 31 45 -trim(leading v from 'v') trim(leading varchar_c from 'he') -NULL he ++--------------------------+-----------------------------------+ +| trim(leading v from 'v') | trim(leading varchar_c from 'he') | ++--------------------------+-----------------------------------+ +| NULL | he | ++--------------------------+-----------------------------------+ + set timestamp = 1456986986; select cast(current_timestamp() as signed int) - cast(utc_timestamp() as signed int) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(current_timestamp() as signed int) - cast(utc_timestamp() as signed int) cast(current_timestamp() as signed int) - cast(utc_timestamp() as signed int) 8 20 5 Y 32896 0 63 -cast(current_timestamp() as signed int) - cast(utc_timestamp() as signed int) -80000 ++-------------------------------------------------------------------------------+ +| cast(current_timestamp() as signed int) - cast(utc_timestamp() as signed int) | ++-------------------------------------------------------------------------------+ +| 80000 | ++-------------------------------------------------------------------------------+ select cast(now() as signed int) - cast(utc_timestamp() as signed int) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(now() as signed int) - cast(utc_timestamp() as signed int) cast(now() as signed int) - cast(utc_timestamp() as signed int) 8 20 5 Y 32896 0 63 -cast(now() as signed int) - cast(utc_timestamp() as signed int) -80000 ++-----------------------------------------------------------------+ +| cast(now() as signed int) - cast(utc_timestamp() as signed int) | ++-----------------------------------------------------------------+ +| 80000 | ++-----------------------------------------------------------------+ select cast(utc_timestamp() as signed int)-cast(utc_timestamp() as signed int) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def cast(utc_timestamp() as signed int)-cast(utc_timestamp() as signed int) cast(utc_timestamp() as signed int)-cast(utc_timestamp() as signed int) 8 20 1 N 32897 0 63 -cast(utc_timestamp() as signed int)-cast(utc_timestamp() as signed int) -0 ++-------------------------------------------------------------------------+ +| cast(utc_timestamp() as signed int)-cast(utc_timestamp() as signed int) | ++-------------------------------------------------------------------------+ +| 0 | ++-------------------------------------------------------------------------+ + select time_to_usec(current_timestamp()) - time_to_usec(utc_timestamp()) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def time_to_usec(current_timestamp()) - time_to_usec(utc_timestamp()) time_to_usec(current_timestamp()) - time_to_usec(utc_timestamp()) 8 21 11 Y 32896 0 63 -time_to_usec(current_timestamp()) - time_to_usec(utc_timestamp()) -28800000000 ++-------------------------------------------------------------------+ +| time_to_usec(current_timestamp()) - time_to_usec(utc_timestamp()) | ++-------------------------------------------------------------------+ +| 28800000000 | ++-------------------------------------------------------------------+ select time_to_usec(now()) - time_to_usec(utc_timestamp()) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def time_to_usec(now()) - time_to_usec(utc_timestamp()) time_to_usec(now()) - time_to_usec(utc_timestamp()) 8 21 11 Y 32896 0 63 -time_to_usec(now()) - time_to_usec(utc_timestamp()) -28800000000 ++-----------------------------------------------------+ +| time_to_usec(now()) - time_to_usec(utc_timestamp()) | ++-----------------------------------------------------+ +| 28800000000 | ++-----------------------------------------------------+ select time_to_usec(utc_timestamp())-time_to_usec(utc_timestamp()) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def time_to_usec(utc_timestamp())-time_to_usec(utc_timestamp()) time_to_usec(utc_timestamp())-time_to_usec(utc_timestamp()) 8 21 1 Y 32896 0 63 -time_to_usec(utc_timestamp())-time_to_usec(utc_timestamp()) -0 ++-------------------------------------------------------------+ +| time_to_usec(utc_timestamp())-time_to_usec(utc_timestamp()) | ++-------------------------------------------------------------+ +| 0 | ++-------------------------------------------------------------+ set timestamp = 0; select usec_to_time(12) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def usec_to_time(12) usec_to_time(12) 7 26 26 Y 1152 6 63 -usec_to_time(12) -1970-01-01 08:00:00.000012 ++----------------------------+ +| usec_to_time(12) | ++----------------------------+ +| 1970-01-01 08:00:00.000012 | ++----------------------------+ select usec_to_time(65535) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def usec_to_time(65535) usec_to_time(65535) 7 26 26 Y 1152 6 63 -usec_to_time(65535) -1970-01-01 08:00:00.065535 ++----------------------------+ +| usec_to_time(65535) | ++----------------------------+ +| 1970-01-01 08:00:00.065535 | ++----------------------------+ + select date_add('invalid date string', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('invalid date string', INTERVAL 1 DAY) date_add('invalid date string', INTERVAL 1 DAY) 253 104 0 Y 0 31 45 -date_add('invalid date string', INTERVAL 1 DAY) -NULL ++-------------------------------------------------+ +| date_add('invalid date string', INTERVAL 1 DAY) | ++-------------------------------------------------+ +| NULL | ++-------------------------------------------------+ select date_add('2003-08', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2003-08', INTERVAL 1 DAY) date_add('2003-08', INTERVAL 1 DAY) 253 104 0 Y 0 31 45 -date_add('2003-08', INTERVAL 1 DAY) -NULL ++-------------------------------------+ +| date_add('2003-08', INTERVAL 1 DAY) | ++-------------------------------------+ +| NULL | ++-------------------------------------+ select date_add('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) date_add('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) 253 104 0 Y 0 31 45 -date_add('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) -NULL ++----------------------------------------------------------+ +| date_add('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) | ++----------------------------------------------------------+ +| NULL | ++----------------------------------------------------------+ select date_add('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) date_add('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) 253 104 0 Y 0 31 45 -date_add('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) -NULL ++-------------------------------------------------------------+ +| date_add('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) | ++-------------------------------------------------------------+ +| NULL | ++-------------------------------------------------------------+ select date_add('2013-09-23 12:00:00', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23 12:00:00', INTERVAL 1 DAY) date_add('2013-09-23 12:00:00', INTERVAL 1 DAY) 253 104 19 Y 0 31 45 -date_add('2013-09-23 12:00:00', INTERVAL 1 DAY) -2013-09-24 12:00:00 ++-------------------------------------------------+ +| date_add('2013-09-23 12:00:00', INTERVAL 1 DAY) | ++-------------------------------------------------+ +| 2013-09-24 12:00:00 | ++-------------------------------------------------+ select date_add('2013-09-23', INTERVAL 1 MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL 1 MICROSECOND) date_add('2013-09-23', INTERVAL 1 MICROSECOND) 253 104 26 Y 0 31 45 -date_add('2013-09-23', INTERVAL 1 MICROSECOND) -2013-09-23 00:00:00.000001 ++------------------------------------------------+ +| date_add('2013-09-23', INTERVAL 1 MICROSECOND) | ++------------------------------------------------+ +| 2013-09-23 00:00:00.000001 | ++------------------------------------------------+ select date_add('2013-09-23', INTERVAL 1 SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL 1 SECOND) date_add('2013-09-23', INTERVAL 1 SECOND) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL 1 SECOND) -2013-09-23 00:00:01 ++-------------------------------------------+ +| date_add('2013-09-23', INTERVAL 1 SECOND) | ++-------------------------------------------+ +| 2013-09-23 00:00:01 | ++-------------------------------------------+ select date_add('2013-09-23', INTERVAL 1 minute) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL 1 minute) date_add('2013-09-23', INTERVAL 1 minute) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL 1 minute) -2013-09-23 00:01:00 ++-------------------------------------------+ +| date_add('2013-09-23', INTERVAL 1 minute) | ++-------------------------------------------+ +| 2013-09-23 00:01:00 | ++-------------------------------------------+ select date_add('2013-09-23', INTERVAL 1 HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL 1 HOUR) date_add('2013-09-23', INTERVAL 1 HOUR) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL 1 HOUR) -2013-09-23 01:00:00 ++-----------------------------------------+ +| date_add('2013-09-23', INTERVAL 1 HOUR) | ++-----------------------------------------+ +| 2013-09-23 01:00:00 | ++-----------------------------------------+ select date_add('2013-09-23', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL 1 DAY) date_add('2013-09-23', INTERVAL 1 DAY) 253 104 10 Y 0 31 45 -date_add('2013-09-23', INTERVAL 1 DAY) -2013-09-24 ++----------------------------------------+ +| date_add('2013-09-23', INTERVAL 1 DAY) | ++----------------------------------------+ +| 2013-09-24 | ++----------------------------------------+ select date_add('2013-09-23', INTERVAL 1 MONTH) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL 1 MONTH) date_add('2013-09-23', INTERVAL 1 MONTH) 253 104 10 Y 0 31 45 -date_add('2013-09-23', INTERVAL 1 MONTH) -2013-10-23 ++------------------------------------------+ +| date_add('2013-09-23', INTERVAL 1 MONTH) | ++------------------------------------------+ +| 2013-10-23 | ++------------------------------------------+ select date_add('2013-09-23', INTERVAL 1 QUARTER) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL 1 QUARTER) date_add('2013-09-23', INTERVAL 1 QUARTER) 253 104 10 Y 0 31 45 -date_add('2013-09-23', INTERVAL 1 QUARTER) -2013-12-23 ++--------------------------------------------+ +| date_add('2013-09-23', INTERVAL 1 QUARTER) | ++--------------------------------------------+ +| 2013-12-23 | ++--------------------------------------------+ select date_add('2013-09-23', INTERVAL 1 YEAR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL 1 YEAR) date_add('2013-09-23', INTERVAL 1 YEAR) 253 104 10 Y 0 31 45 -date_add('2013-09-23', INTERVAL 1 YEAR) -2014-09-23 ++-----------------------------------------+ +| date_add('2013-09-23', INTERVAL 1 YEAR) | ++-----------------------------------------+ +| 2014-09-23 | ++-----------------------------------------+ select date_add('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) date_add('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) 253 104 26 Y 0 31 45 -date_add('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) -2013-09-23 00:00:03.200000 ++-----------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) | ++-----------------------------------------------------------+ +| 2013-09-23 00:00:03.200000 | ++-----------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) date_add('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) 253 104 26 Y 0 31 45 -date_add('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) -2013-09-23 00:03:05.200000 ++-------------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) | ++-------------------------------------------------------------+ +| 2013-09-23 00:03:05.200000 | ++-------------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) date_add('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) -2013-09-23 00:03:05 ++------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) | ++------------------------------------------------------+ +| 2013-09-23 00:03:05 | ++------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) date_add('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) 253 104 26 Y 0 31 45 -date_add('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) -2013-09-23 08:07:03.500000 ++-------------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) | ++-------------------------------------------------------------+ +| 2013-09-23 08:07:03.500000 | ++-------------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) date_add('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) -2013-09-23 08:07:03 ++------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) | ++------------------------------------------------------+ +| 2013-09-23 08:07:03 | ++------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) date_add('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) -2013-09-23 08:07:00 ++----------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) | ++----------------------------------------------------+ +| 2013-09-23 08:07:00 | ++----------------------------------------------------+ select date_add('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) date_add('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) 253 104 26 Y 0 31 45 -date_add('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) -2013-09-25 08:07:06.500000 ++--------------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) | ++--------------------------------------------------------------+ +| 2013-09-25 08:07:06.500000 | ++--------------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) date_add('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) -2013-09-25 08:07:06 ++-------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) | ++-------------------------------------------------------+ +| 2013-09-25 08:07:06 | ++-------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) date_add('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) -2013-09-25 08:07:00 ++-----------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) | ++-----------------------------------------------------+ +| 2013-09-25 08:07:00 | ++-----------------------------------------------------+ select date_add('2013-09-23', INTERVAL '2 8' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '2 8' DAY_HOUR) date_add('2013-09-23', INTERVAL '2 8' DAY_HOUR) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL '2 8' DAY_HOUR) -2013-09-25 08:00:00 ++-------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '2 8' DAY_HOUR) | ++-------------------------------------------------+ +| 2013-09-25 08:00:00 | ++-------------------------------------------------+ select date_add('2013-09-23', INTERVAL '12-25' YEAR_MONTH) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '12-25' YEAR_MONTH) date_add('2013-09-23', INTERVAL '12-25' YEAR_MONTH) 253 104 10 Y 0 31 45 -date_add('2013-09-23', INTERVAL '12-25' YEAR_MONTH) -2027-10-23 ++-----------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '12-25' YEAR_MONTH) | ++-----------------------------------------------------+ +| 2027-10-23 | ++-----------------------------------------------------+ select date_add('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) date_add('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) 253 104 26 Y 0 31 45 -date_add('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) -2013-09-23 00:00:02.300000 ++--------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) | ++--------------------------------------------------------+ +| 2013-09-23 00:00:02.300000 | ++--------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '2 3' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '2 3' DAY_HOUR) date_add('2013-09-23', INTERVAL '2 3' DAY_HOUR) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL '2 3' DAY_HOUR) -2013-09-25 03:00:00 ++-------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '2 3' DAY_HOUR) | ++-------------------------------------------------+ +| 2013-09-25 03:00:00 | ++-------------------------------------------------+ select date_add('2013-09-23', interval length('date_add function') hour) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', interval length('date_add function') hour) date_add('2013-09-23', interval length('date_add function') hour) 253 104 19 Y 0 31 45 -date_add('2013-09-23', interval length('date_add function') hour) -2013-09-23 17:00:00 ++-------------------------------------------------------------------+ +| date_add('2013-09-23', interval length('date_add function') hour) | ++-------------------------------------------------------------------+ +| 2013-09-23 17:00:00 | ++-------------------------------------------------------------------+ select date_add(date_add('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add(date_add('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) date_add(date_add('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) 253 104 19 Y 0 31 45 -date_add(date_add('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) -2013-09-25 05:00:00 ++--------------------------------------------------------------------+ +| date_add(date_add('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) | ++--------------------------------------------------------------------+ +| 2013-09-25 05:00:00 | ++--------------------------------------------------------------------+ select date_add('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) date_add('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) 253 104 19 Y 0 31 45 -date_add('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) -2013-09-25 02:08:09 ++-------------------------------------------------------------+ +| date_add('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) | ++-------------------------------------------------------------+ +| 2013-09-25 02:08:09 | ++-------------------------------------------------------------+ select date_add('2013-09-23', INTERVAL '-2 3' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '-2 3' DAY_HOUR) date_add('2013-09-23', INTERVAL '-2 3' DAY_HOUR) 253 104 19 Y 0 31 45 -date_add('2013-09-23', INTERVAL '-2 3' DAY_HOUR) -2013-09-20 21:00:00 ++--------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '-2 3' DAY_HOUR) | ++--------------------------------------------------+ +| 2013-09-20 21:00:00 | ++--------------------------------------------------+ select date_add('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) date_add('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) 253 104 26 Y 0 31 45 -date_add('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) -2013-09-22 23:59:57.700000 ++---------------------------------------------------------+ +| date_add('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) | ++---------------------------------------------------------+ +| 2013-09-22 23:59:57.700000 | ++---------------------------------------------------------+ select date_add('10-09-23', INTERVAL '2 3' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('10-09-23', INTERVAL '2 3' DAY_HOUR) date_add('10-09-23', INTERVAL '2 3' DAY_HOUR) 253 104 19 Y 0 31 45 -date_add('10-09-23', INTERVAL '2 3' DAY_HOUR) -2010-09-25 03:00:00 ++-----------------------------------------------+ +| date_add('10-09-23', INTERVAL '2 3' DAY_HOUR) | ++-----------------------------------------------+ +| 2010-09-25 03:00:00 | ++-----------------------------------------------+ select date_add('80-09-24', INTERVAL '2 3' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('80-09-24', INTERVAL '2 3' DAY_HOUR) date_add('80-09-24', INTERVAL '2 3' DAY_HOUR) 253 104 19 Y 0 31 45 -date_add('80-09-24', INTERVAL '2 3' DAY_HOUR) -1980-09-26 03:00:00 ++-----------------------------------------------+ +| date_add('80-09-24', INTERVAL '2 3' DAY_HOUR) | ++-----------------------------------------------+ +| 1980-09-26 03:00:00 | ++-----------------------------------------------+ select date_add('1970-01-01 08:00:00', INTERVAL -1 MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('1970-01-01 08:00:00', INTERVAL -1 MICROSECOND) date_add('1970-01-01 08:00:00', INTERVAL -1 MICROSECOND) 253 104 26 Y 0 31 45 -date_add('1970-01-01 08:00:00', INTERVAL -1 MICROSECOND) -1970-01-01 07:59:59.999999 ++----------------------------------------------------------+ +| date_add('1970-01-01 08:00:00', INTERVAL -1 MICROSECOND) | ++----------------------------------------------------------+ +| 1970-01-01 07:59:59.999999 | ++----------------------------------------------------------+ select date_add('1970-01-01 07:59:59.2', INTERVAL 800000 MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('1970-01-01 07:59:59.2', INTERVAL 800000 MICROSECOND) date_add('1970-01-01 07:59:59.2', INTERVAL 800000 MICROSECOND) 253 104 19 Y 0 31 45 -date_add('1970-01-01 07:59:59.2', INTERVAL 800000 MICROSECOND) -1970-01-01 08:00:00 ++----------------------------------------------------------------+ +| date_add('1970-01-01 07:59:59.2', INTERVAL 800000 MICROSECOND) | ++----------------------------------------------------------------+ +| 1970-01-01 08:00:00 | ++----------------------------------------------------------------+ select date_add('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) date_add('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) 253 104 26 Y 0 31 45 -date_add('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) -1970-01-01 00:00:00.000100 ++-----------------------------------------------------------+ +| date_add('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) | ++-----------------------------------------------------------+ +| 1970-01-01 00:00:00.000100 | ++-----------------------------------------------------------+ select date_add(CAST(-1 AS TIMESTAMP), INTERVAL 100 MICROSECOND) from build_in_func_test_table; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'TIMESTAMP), INTERVAL 100 MICROSECOND) from build_in_func_test_table' at line 1 select date_add('1970-01-01 08:00:00', INTERVAL CAST(1000 AS CREATETIME) MICROSECOND) from build_in_func_test_table; @@ -612,485 +977,775 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp select date_add(NULL, INTERVAL 1 DAY); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add(NULL, INTERVAL 1 DAY) date_add(NULL, INTERVAL 1 DAY) 6 0 0 Y 32896 0 63 -date_add(NULL, INTERVAL 1 DAY) -NULL ++--------------------------------+ +| date_add(NULL, INTERVAL 1 DAY) | ++--------------------------------+ +| NULL | ++--------------------------------+ select date_add('1970-01-01 08:00:00', INTERVAL NULL MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_add('1970-01-01 08:00:00', INTERVAL NULL MICROSECOND) date_add('1970-01-01 08:00:00', INTERVAL NULL MICROSECOND) 253 104 0 Y 0 31 45 -date_add('1970-01-01 08:00:00', INTERVAL NULL MICROSECOND) -NULL ++------------------------------------------------------------+ +| date_add('1970-01-01 08:00:00', INTERVAL NULL MICROSECOND) | ++------------------------------------------------------------+ +| NULL | ++------------------------------------------------------------+ + select date_sub('invalid date string', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('invalid date string', INTERVAL 1 DAY) date_sub('invalid date string', INTERVAL 1 DAY) 253 104 0 Y 0 31 45 -date_sub('invalid date string', INTERVAL 1 DAY) -NULL ++-------------------------------------------------+ +| date_sub('invalid date string', INTERVAL 1 DAY) | ++-------------------------------------------------+ +| NULL | ++-------------------------------------------------+ select date_sub('2003-08', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2003-08', INTERVAL 1 DAY) date_sub('2003-08', INTERVAL 1 DAY) 253 104 0 Y 0 31 45 -date_sub('2003-08', INTERVAL 1 DAY) -NULL ++-------------------------------------+ +| date_sub('2003-08', INTERVAL 1 DAY) | ++-------------------------------------+ +| NULL | ++-------------------------------------+ select date_sub('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) date_sub('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) 253 104 0 Y 0 31 45 -date_sub('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) -NULL ++----------------------------------------------------------+ +| date_sub('www 2013\09>23?12&&00^^^00', INTERVAL 1 DAY) | ++----------------------------------------------------------+ +| NULL | ++----------------------------------------------------------+ select date_sub('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) date_sub('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) 253 104 0 Y 0 31 45 -date_sub('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) -NULL ++-------------------------------------------------------------+ +| date_sub('www 2013/**/09>23?12&&00^^^00', INTERVAL 1 DAY) | ++-------------------------------------------------------------+ +| NULL | ++-------------------------------------------------------------+ select date_sub('2013-09-23 12:00:00', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23 12:00:00', INTERVAL 1 DAY) date_sub('2013-09-23 12:00:00', INTERVAL 1 DAY) 253 104 19 Y 0 31 45 -date_sub('2013-09-23 12:00:00', INTERVAL 1 DAY) -2013-09-22 12:00:00 ++-------------------------------------------------+ +| date_sub('2013-09-23 12:00:00', INTERVAL 1 DAY) | ++-------------------------------------------------+ +| 2013-09-22 12:00:00 | ++-------------------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 MICROSECOND) date_sub('2013-09-23', INTERVAL 1 MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 MICROSECOND) -2013-09-22 23:59:59.999999 ++------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 MICROSECOND) | ++------------------------------------------------+ +| 2013-09-22 23:59:59.999999 | ++------------------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 SECOND) date_sub('2013-09-23', INTERVAL 1 SECOND) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 SECOND) -2013-09-22 23:59:59 ++-------------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 SECOND) | ++-------------------------------------------+ +| 2013-09-22 23:59:59 | ++-------------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 minute) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 minute) date_sub('2013-09-23', INTERVAL 1 minute) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 minute) -2013-09-22 23:59:00 ++-------------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 minute) | ++-------------------------------------------+ +| 2013-09-22 23:59:00 | ++-------------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 HOUR) date_sub('2013-09-23', INTERVAL 1 HOUR) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 HOUR) -2013-09-22 23:00:00 ++-----------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 HOUR) | ++-----------------------------------------+ +| 2013-09-22 23:00:00 | ++-----------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 WEEK) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 WEEK) date_sub('2013-09-23', INTERVAL 1 WEEK) 253 104 10 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 WEEK) -2013-09-16 ++-----------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 WEEK) | ++-----------------------------------------+ +| 2013-09-16 | ++-----------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 DAY) date_sub('2013-09-23', INTERVAL 1 DAY) 253 104 10 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 DAY) -2013-09-22 ++----------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 DAY) | ++----------------------------------------+ +| 2013-09-22 | ++----------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 MONTH) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 MONTH) date_sub('2013-09-23', INTERVAL 1 MONTH) 253 104 10 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 MONTH) -2013-08-23 ++------------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 MONTH) | ++------------------------------------------+ +| 2013-08-23 | ++------------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 QUARTER) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 QUARTER) date_sub('2013-09-23', INTERVAL 1 QUARTER) 253 104 10 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 QUARTER) -2013-06-23 ++--------------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 QUARTER) | ++--------------------------------------------+ +| 2013-06-23 | ++--------------------------------------------+ select date_sub('2013-09-23', INTERVAL 1 YEAR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL 1 YEAR) date_sub('2013-09-23', INTERVAL 1 YEAR) 253 104 10 Y 0 31 45 -date_sub('2013-09-23', INTERVAL 1 YEAR) -2012-09-23 ++-----------------------------------------+ +| date_sub('2013-09-23', INTERVAL 1 YEAR) | ++-----------------------------------------+ +| 2012-09-23 | ++-----------------------------------------+ select date_sub('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) date_sub('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) -2013-09-22 23:59:56.800000 ++-----------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '3.2' SECOND_MICROSECOND) | ++-----------------------------------------------------------+ +| 2013-09-22 23:59:56.800000 | ++-----------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) date_sub('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) -2013-09-22 23:56:54.800000 ++-------------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '3:5.2' MINUTE_MICROSECOND) | ++-------------------------------------------------------------+ +| 2013-09-22 23:56:54.800000 | ++-------------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) date_sub('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) -2013-09-22 23:56:55 ++------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '3:5' MINUTE_SECOND) | ++------------------------------------------------------+ +| 2013-09-22 23:56:55 | ++------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) date_sub('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) -2013-09-22 15:52:56.500000 ++-------------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '8:7:3.5' HOUR_MICROSECOND) | ++-------------------------------------------------------------+ +| 2013-09-22 15:52:56.500000 | ++-------------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) date_sub('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) -2013-09-22 15:52:57 ++------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '8:7:3' HOUR_SECOND) | ++------------------------------------------------------+ +| 2013-09-22 15:52:57 | ++------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) date_sub('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) -2013-09-22 15:53:00 ++----------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '8:7' HOUR_MINUTE) | ++----------------------------------------------------+ +| 2013-09-22 15:53:00 | ++----------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) date_sub('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) -2013-09-20 15:52:53.500000 ++--------------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '2 8:7:6.5' DAY_MICROSECOND) | ++--------------------------------------------------------------+ +| 2013-09-20 15:52:53.500000 | ++--------------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) date_sub('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) -2013-09-20 15:52:54 ++-------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '2 8:7:6' DAY_SECOND) | ++-------------------------------------------------------+ +| 2013-09-20 15:52:54 | ++-------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) date_sub('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) -2013-09-20 15:53:00 ++-----------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '2 8:7' DAY_MINUTE) | ++-----------------------------------------------------+ +| 2013-09-20 15:53:00 | ++-----------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '2 8' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '2 8' DAY_HOUR) date_sub('2013-09-23', INTERVAL '2 8' DAY_HOUR) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '2 8' DAY_HOUR) -2013-09-20 16:00:00 ++-------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '2 8' DAY_HOUR) | ++-------------------------------------------------+ +| 2013-09-20 16:00:00 | ++-------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '12-25' YEAR_MONTH) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '12-25' YEAR_MONTH) date_sub('2013-09-23', INTERVAL '12-25' YEAR_MONTH) 253 104 10 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '12-25' YEAR_MONTH) -1999-08-23 ++-----------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '12-25' YEAR_MONTH) | ++-----------------------------------------------------+ +| 1999-08-23 | ++-----------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '21-25' YEAR_MONTH) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '21-25' YEAR_MONTH) date_sub('2013-09-23', INTERVAL '21-25' YEAR_MONTH) 253 104 10 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '21-25' YEAR_MONTH) -1990-08-23 ++-----------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '21-25' YEAR_MONTH) | ++-----------------------------------------------------+ +| 1990-08-23 | ++-----------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) date_sub('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) -2013-09-22 23:59:57.700000 ++--------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '2 3' DAY_MICROSECOND) | ++--------------------------------------------------------+ +| 2013-09-22 23:59:57.700000 | ++--------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '2 3' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '2 3' DAY_HOUR) date_sub('2013-09-23', INTERVAL '2 3' DAY_HOUR) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '2 3' DAY_HOUR) -2013-09-20 21:00:00 ++-------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '2 3' DAY_HOUR) | ++-------------------------------------------------+ +| 2013-09-20 21:00:00 | ++-------------------------------------------------+ select date_sub('2013-09-23', interval length('date_add function') hour) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', interval length('date_add function') hour) date_sub('2013-09-23', interval length('date_add function') hour) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', interval length('date_add function') hour) -2013-09-22 07:00:00 ++-------------------------------------------------------------------+ +| date_sub('2013-09-23', interval length('date_add function') hour) | ++-------------------------------------------------------------------+ +| 2013-09-22 07:00:00 | ++-------------------------------------------------------------------+ select date_sub(date_sub('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub(date_sub('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) date_sub(date_sub('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) 253 104 19 Y 0 31 45 -date_sub(date_sub('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) -2013-09-20 19:00:00 ++--------------------------------------------------------------------+ +| date_sub(date_sub('2013-09-23', INTERVAL '2' DAY),INTERVAL 5 HOUR) | ++--------------------------------------------------------------------+ +| 2013-09-20 19:00:00 | ++--------------------------------------------------------------------+ select date_sub('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) date_sub('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) 253 104 19 Y 0 31 45 -date_sub('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) -2013-09-24 21:51:51 ++-------------------------------------------------------------+ +| date_sub('2013-09-25', INTERVAL '2 &&& 8 *** 9' DAY_SECOND) | ++-------------------------------------------------------------+ +| 2013-09-24 21:51:51 | ++-------------------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '-2 3' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '-2 3' DAY_HOUR) date_sub('2013-09-23', INTERVAL '-2 3' DAY_HOUR) 253 104 19 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '-2 3' DAY_HOUR) -2013-09-25 03:00:00 ++--------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '-2 3' DAY_HOUR) | ++--------------------------------------------------+ +| 2013-09-25 03:00:00 | ++--------------------------------------------------+ select date_sub('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) date_sub('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) -2013-09-23 00:00:02.300000 ++---------------------------------------------------------+ +| date_sub('2013-09-23', INTERVAL '-2-3' DAY_MICROSECOND) | ++---------------------------------------------------------+ +| 2013-09-23 00:00:02.300000 | ++---------------------------------------------------------+ select date_sub('10-09-23', INTERVAL '2 3' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('10-09-23', INTERVAL '2 3' DAY_HOUR) date_sub('10-09-23', INTERVAL '2 3' DAY_HOUR) 253 104 19 Y 0 31 45 -date_sub('10-09-23', INTERVAL '2 3' DAY_HOUR) -2010-09-20 21:00:00 ++-----------------------------------------------+ +| date_sub('10-09-23', INTERVAL '2 3' DAY_HOUR) | ++-----------------------------------------------+ +| 2010-09-20 21:00:00 | ++-----------------------------------------------+ select date_sub('80-09-24', INTERVAL '2 3' DAY_HOUR) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('80-09-24', INTERVAL '2 3' DAY_HOUR) date_sub('80-09-24', INTERVAL '2 3' DAY_HOUR) 253 104 19 Y 0 31 45 -date_sub('80-09-24', INTERVAL '2 3' DAY_HOUR) -1980-09-21 21:00:00 ++-----------------------------------------------+ +| date_sub('80-09-24', INTERVAL '2 3' DAY_HOUR) | ++-----------------------------------------------+ +| 1980-09-21 21:00:00 | ++-----------------------------------------------+ select date_sub('1970-01-01 08:00:00', INTERVAL 1 MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('1970-01-01 08:00:00', INTERVAL 1 MICROSECOND) date_sub('1970-01-01 08:00:00', INTERVAL 1 MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('1970-01-01 08:00:00', INTERVAL 1 MICROSECOND) -1970-01-01 07:59:59.999999 ++---------------------------------------------------------+ +| date_sub('1970-01-01 08:00:00', INTERVAL 1 MICROSECOND) | ++---------------------------------------------------------+ +| 1970-01-01 07:59:59.999999 | ++---------------------------------------------------------+ select date_sub('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) date_sub('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) 253 104 26 Y 0 31 45 -date_sub('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) -1969-12-31 23:59:59.999900 ++-----------------------------------------------------------+ +| date_sub('1970-01-01 00:00:00', INTERVAL 100 MICROSECOND) | ++-----------------------------------------------------------+ +| 1969-12-31 23:59:59.999900 | ++-----------------------------------------------------------+ select date_sub(USEC_TO_TIME(0), INTERVAL 100 MICROSECOND) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub(USEC_TO_TIME(0), INTERVAL 100 MICROSECOND) date_sub(USEC_TO_TIME(0), INTERVAL 100 MICROSECOND) 12 26 26 Y 128 6 63 -date_sub(USEC_TO_TIME(0), INTERVAL 100 MICROSECOND) -1970-01-01 07:59:59.999900 ++-----------------------------------------------------+ +| date_sub(USEC_TO_TIME(0), INTERVAL 100 MICROSECOND) | ++-----------------------------------------------------+ +| 1970-01-01 07:59:59.999900 | ++-----------------------------------------------------+ select date_sub(NULL, INTERVAL 1 DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub(NULL, INTERVAL 1 DAY) date_sub(NULL, INTERVAL 1 DAY) 6 0 0 Y 32896 0 63 -date_sub(NULL, INTERVAL 1 DAY) -NULL ++--------------------------------+ +| date_sub(NULL, INTERVAL 1 DAY) | ++--------------------------------+ +| NULL | ++--------------------------------+ select date_sub('1970-01-01 08:00:00', INTERVAL NULL DAY) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_sub('1970-01-01 08:00:00', INTERVAL NULL DAY) date_sub('1970-01-01 08:00:00', INTERVAL NULL DAY) 253 104 0 Y 0 31 45 -date_sub('1970-01-01 08:00:00', INTERVAL NULL DAY) -NULL ++----------------------------------------------------+ +| date_sub('1970-01-01 08:00:00', INTERVAL NULL DAY) | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ + select extract(MICROSECOND FROM '2012-09-01 10:35:07:99999') FROM build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(MICROSECOND FROM '2012-09-01 10:35:07:99999') extract(MICROSECOND FROM '2012-09-01 10:35:07:99999') 8 20 1 Y 32896 0 63 -extract(MICROSECOND FROM '2012-09-01 10:35:07:99999') -0 ++-------------------------------------------------------+ +| extract(MICROSECOND FROM '2012-09-01 10:35:07:99999') | ++-------------------------------------------------------+ +| 0 | ++-------------------------------------------------------+ select extract(SECOND FROM '2012-09-01 10:35:07:99999') FROM build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(SECOND FROM '2012-09-01 10:35:07:99999') extract(SECOND FROM '2012-09-01 10:35:07:99999') 8 20 1 Y 32896 0 63 -extract(SECOND FROM '2012-09-01 10:35:07:99999') -7 ++--------------------------------------------------+ +| extract(SECOND FROM '2012-09-01 10:35:07:99999') | ++--------------------------------------------------+ +| 7 | ++--------------------------------------------------+ select extract(MINUTE FROM '2012-09-01 10:35:07:99999') FROM build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(MINUTE FROM '2012-09-01 10:35:07:99999') extract(MINUTE FROM '2012-09-01 10:35:07:99999') 8 20 2 Y 32896 0 63 -extract(MINUTE FROM '2012-09-01 10:35:07:99999') -35 ++--------------------------------------------------+ +| extract(MINUTE FROM '2012-09-01 10:35:07:99999') | ++--------------------------------------------------+ +| 35 | ++--------------------------------------------------+ select extract(HOUR FROM '2012-09-01 10:35:07:99999') FROM build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(HOUR FROM '2012-09-01 10:35:07:99999') extract(HOUR FROM '2012-09-01 10:35:07:99999') 8 20 2 Y 32896 0 63 -extract(HOUR FROM '2012-09-01 10:35:07:99999') -10 ++------------------------------------------------+ +| extract(HOUR FROM '2012-09-01 10:35:07:99999') | ++------------------------------------------------+ +| 10 | ++------------------------------------------------+ select extract(DAY FROM '2012-09-01 10:35:07:99999') FROM build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(DAY FROM '2012-09-01 10:35:07:99999') extract(DAY FROM '2012-09-01 10:35:07:99999') 8 20 1 Y 32896 0 63 -extract(DAY FROM '2012-09-01 10:35:07:99999') -1 ++-----------------------------------------------+ +| extract(DAY FROM '2012-09-01 10:35:07:99999') | ++-----------------------------------------------+ +| 1 | ++-----------------------------------------------+ select extract(WEEK FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(WEEK FROM '2012-09-01 10:35:07:99999') extract(WEEK FROM '2012-09-01 10:35:07:99999') 8 20 2 Y 32896 0 63 -extract(WEEK FROM '2012-09-01 10:35:07:99999') -35 ++------------------------------------------------+ +| extract(WEEK FROM '2012-09-01 10:35:07:99999') | ++------------------------------------------------+ +| 35 | ++------------------------------------------------+ select extract(MONTH FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(MONTH FROM '2012-09-01 10:35:07:99999') extract(MONTH FROM '2012-09-01 10:35:07:99999') 8 20 1 Y 32896 0 63 -extract(MONTH FROM '2012-09-01 10:35:07:99999') -9 ++-------------------------------------------------+ +| extract(MONTH FROM '2012-09-01 10:35:07:99999') | ++-------------------------------------------------+ +| 9 | ++-------------------------------------------------+ select extract(QUARTER FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(QUARTER FROM '2012-09-01 10:35:07:99999') extract(QUARTER FROM '2012-09-01 10:35:07:99999') 8 20 1 Y 32896 0 63 -extract(QUARTER FROM '2012-09-01 10:35:07:99999') -3 ++---------------------------------------------------+ +| extract(QUARTER FROM '2012-09-01 10:35:07:99999') | ++---------------------------------------------------+ +| 3 | ++---------------------------------------------------+ select extract(YEAR FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(YEAR FROM '2012-09-01 10:35:07:99999') extract(YEAR FROM '2012-09-01 10:35:07:99999') 8 20 4 Y 32896 0 63 -extract(YEAR FROM '2012-09-01 10:35:07:99999') -2012 ++------------------------------------------------+ +| extract(YEAR FROM '2012-09-01 10:35:07:99999') | ++------------------------------------------------+ +| 2012 | ++------------------------------------------------+ select extract(SECOND_MICROSECOND FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(SECOND_MICROSECOND FROM '2012-09-01 10:35:07:99999') extract(SECOND_MICROSECOND FROM '2012-09-01 10:35:07:99999') 8 20 7 Y 32896 0 63 -extract(SECOND_MICROSECOND FROM '2012-09-01 10:35:07:99999') -7000000 ++--------------------------------------------------------------+ +| extract(SECOND_MICROSECOND FROM '2012-09-01 10:35:07:99999') | ++--------------------------------------------------------------+ +| 7000000 | ++--------------------------------------------------------------+ select extract(MINUTE_MICROSECOND FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(MINUTE_MICROSECOND FROM '2012-09-01 10:35:07:99999') extract(MINUTE_MICROSECOND FROM '2012-09-01 10:35:07:99999') 8 20 10 Y 32896 0 63 -extract(MINUTE_MICROSECOND FROM '2012-09-01 10:35:07:99999') -3507000000 ++--------------------------------------------------------------+ +| extract(MINUTE_MICROSECOND FROM '2012-09-01 10:35:07:99999') | ++--------------------------------------------------------------+ +| 3507000000 | ++--------------------------------------------------------------+ select extract(MINUTE_SECOND FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(MINUTE_SECOND FROM '2012-09-01 10:35:07:99999') extract(MINUTE_SECOND FROM '2012-09-01 10:35:07:99999') 8 20 4 Y 32896 0 63 -extract(MINUTE_SECOND FROM '2012-09-01 10:35:07:99999') -3507 ++---------------------------------------------------------+ +| extract(MINUTE_SECOND FROM '2012-09-01 10:35:07:99999') | ++---------------------------------------------------------+ +| 3507 | ++---------------------------------------------------------+ select extract(HOUR_MICROSECOND FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(HOUR_MICROSECOND FROM '2012-09-01 10:35:07:99999') extract(HOUR_MICROSECOND FROM '2012-09-01 10:35:07:99999') 8 20 12 Y 32896 0 63 -extract(HOUR_MICROSECOND FROM '2012-09-01 10:35:07:99999') -103507000000 ++------------------------------------------------------------+ +| extract(HOUR_MICROSECOND FROM '2012-09-01 10:35:07:99999') | ++------------------------------------------------------------+ +| 103507000000 | ++------------------------------------------------------------+ select extract(DAY_MICROSECOND FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(DAY_MICROSECOND FROM '2012-09-01 10:35:07:99999') extract(DAY_MICROSECOND FROM '2012-09-01 10:35:07:99999') 8 20 13 Y 32896 0 63 -extract(DAY_MICROSECOND FROM '2012-09-01 10:35:07:99999') -1103507000000 ++-----------------------------------------------------------+ +| extract(DAY_MICROSECOND FROM '2012-09-01 10:35:07:99999') | ++-----------------------------------------------------------+ +| 1103507000000 | ++-----------------------------------------------------------+ select extract(DAY_SECOND FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(DAY_SECOND FROM '2012-09-01 10:35:07:99999') extract(DAY_SECOND FROM '2012-09-01 10:35:07:99999') 8 20 7 Y 32896 0 63 -extract(DAY_SECOND FROM '2012-09-01 10:35:07:99999') -1103507 ++------------------------------------------------------+ +| extract(DAY_SECOND FROM '2012-09-01 10:35:07:99999') | ++------------------------------------------------------+ +| 1103507 | ++------------------------------------------------------+ select extract(HOUR_SECOND FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(HOUR_SECOND FROM '2012-09-01 10:35:07:99999') extract(HOUR_SECOND FROM '2012-09-01 10:35:07:99999') 8 20 6 Y 32896 0 63 -extract(HOUR_SECOND FROM '2012-09-01 10:35:07:99999') -103507 ++-------------------------------------------------------+ +| extract(HOUR_SECOND FROM '2012-09-01 10:35:07:99999') | ++-------------------------------------------------------+ +| 103507 | ++-------------------------------------------------------+ select extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') 8 20 5 Y 32896 0 63 -extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') -11035 ++------------------------------------------------------+ +| extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') | ++------------------------------------------------------+ +| 11035 | ++------------------------------------------------------+ select extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') 8 20 5 Y 32896 0 63 -extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') -11035 ++------------------------------------------------------+ +| extract(DAY_MINUTE FROM '2012-09-01 10:35:07:99999') | ++------------------------------------------------------+ +| 11035 | ++------------------------------------------------------+ select extract(DAY_HOUR FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(DAY_HOUR FROM '2012-09-01 10:35:07:99999') extract(DAY_HOUR FROM '2012-09-01 10:35:07:99999') 8 20 3 Y 32896 0 63 -extract(DAY_HOUR FROM '2012-09-01 10:35:07:99999') -110 ++----------------------------------------------------+ +| extract(DAY_HOUR FROM '2012-09-01 10:35:07:99999') | ++----------------------------------------------------+ +| 110 | ++----------------------------------------------------+ select extract(YEAR_MONTH FROM '2012-09-01 10:35:07:99999') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(YEAR_MONTH FROM '2012-09-01 10:35:07:99999') extract(YEAR_MONTH FROM '2012-09-01 10:35:07:99999') 8 20 6 Y 32896 0 63 -extract(YEAR_MONTH FROM '2012-09-01 10:35:07:99999') -201209 ++------------------------------------------------------+ +| extract(YEAR_MONTH FROM '2012-09-01 10:35:07:99999') | ++------------------------------------------------------+ +| 201209 | ++------------------------------------------------------+ select extract(MICROSECOND FROM '2012-09-01') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(MICROSECOND FROM '2012-09-01') extract(MICROSECOND FROM '2012-09-01') 8 20 1 Y 32896 0 63 -extract(MICROSECOND FROM '2012-09-01') -0 ++----------------------------------------+ +| extract(MICROSECOND FROM '2012-09-01') | ++----------------------------------------+ +| 0 | ++----------------------------------------+ select extract(QUARTER FROM '2012-02-01') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(QUARTER FROM '2012-02-01') extract(QUARTER FROM '2012-02-01') 8 20 1 Y 32896 0 63 -extract(QUARTER FROM '2012-02-01') -1 ++------------------------------------+ +| extract(QUARTER FROM '2012-02-01') | ++------------------------------------+ +| 1 | ++------------------------------------+ select extract(QUARTER FROM '2012-05-01') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(QUARTER FROM '2012-05-01') extract(QUARTER FROM '2012-05-01') 8 20 1 Y 32896 0 63 -extract(QUARTER FROM '2012-05-01') -2 ++------------------------------------+ +| extract(QUARTER FROM '2012-05-01') | ++------------------------------------+ +| 2 | ++------------------------------------+ select extract(QUARTER FROM '2012-07-01') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(QUARTER FROM '2012-07-01') extract(QUARTER FROM '2012-07-01') 8 20 1 Y 32896 0 63 -extract(QUARTER FROM '2012-07-01') -3 ++------------------------------------+ +| extract(QUARTER FROM '2012-07-01') | ++------------------------------------+ +| 3 | ++------------------------------------+ select extract(QUARTER FROM '2012-10-01') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(QUARTER FROM '2012-10-01') extract(QUARTER FROM '2012-10-01') 8 20 1 Y 32896 0 63 -extract(QUARTER FROM '2012-10-01') -4 ++------------------------------------+ +| extract(QUARTER FROM '2012-10-01') | ++------------------------------------+ +| 4 | ++------------------------------------+ select extract(QUARTER FROM '2012-11-01') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(QUARTER FROM '2012-11-01') extract(QUARTER FROM '2012-11-01') 8 20 1 Y 32896 0 63 -extract(QUARTER FROM '2012-11-01') -4 ++------------------------------------+ +| extract(QUARTER FROM '2012-11-01') | ++------------------------------------+ +| 4 | ++------------------------------------+ select extract(WEEK FROM '2012-01-01') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(WEEK FROM '2012-01-01') extract(WEEK FROM '2012-01-01') 8 20 1 Y 32896 0 63 -extract(WEEK FROM '2012-01-01') -1 ++---------------------------------+ +| extract(WEEK FROM '2012-01-01') | ++---------------------------------+ +| 1 | ++---------------------------------+ select extract(WEEK FROM '2012-05-30') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(WEEK FROM '2012-05-30') extract(WEEK FROM '2012-05-30') 8 20 2 Y 32896 0 63 -extract(WEEK FROM '2012-05-30') -22 ++---------------------------------+ +| extract(WEEK FROM '2012-05-30') | ++---------------------------------+ +| 22 | ++---------------------------------+ select extract(WEEK FROM '2012-06-15') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(WEEK FROM '2012-06-15') extract(WEEK FROM '2012-06-15') 8 20 2 Y 32896 0 63 -extract(WEEK FROM '2012-06-15') -24 ++---------------------------------+ +| extract(WEEK FROM '2012-06-15') | ++---------------------------------+ +| 24 | ++---------------------------------+ select extract(WEEK FROM '2012-10-25') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(WEEK FROM '2012-10-25') extract(WEEK FROM '2012-10-25') 8 20 2 Y 32896 0 63 -extract(WEEK FROM '2012-10-25') -43 ++---------------------------------+ +| extract(WEEK FROM '2012-10-25') | ++---------------------------------+ +| 43 | ++---------------------------------+ select extract(WEEK FROM '2013-01-01') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(WEEK FROM '2013-01-01') extract(WEEK FROM '2013-01-01') 8 20 1 Y 32896 0 63 -extract(WEEK FROM '2013-01-01') -0 ++---------------------------------+ +| extract(WEEK FROM '2013-01-01') | ++---------------------------------+ +| 0 | ++---------------------------------+ select extract(WEEK FROM '2019-03-09') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(WEEK FROM '2019-03-09') extract(WEEK FROM '2019-03-09') 8 20 1 Y 32896 0 63 -extract(WEEK FROM '2019-03-09') -9 ++---------------------------------+ +| extract(WEEK FROM '2019-03-09') | ++---------------------------------+ +| 9 | ++---------------------------------+ select extract(YEAR FROM '12-09-02') from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(YEAR FROM '12-09-02') extract(YEAR FROM '12-09-02') 8 20 4 Y 32896 0 63 -extract(YEAR FROM '12-09-02') -2012 ++-------------------------------+ +| extract(YEAR FROM '12-09-02') | ++-------------------------------+ +| 2012 | ++-------------------------------+ select extract(HOUR FROM CAST('0' AS TIMESTAMP)) from build_in_func_test_table; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'TIMESTAMP)) from build_in_func_test_table' at line 1 select extract(HOUR FROM NULL) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def extract(HOUR FROM NULL) extract(HOUR FROM NULL) 8 20 0 Y 32896 0 63 -extract(HOUR FROM NULL) -NULL ++-------------------------+ +| extract(HOUR FROM NULL) | ++-------------------------+ +| NULL | ++-------------------------+ + select date_format('2007-10-04 22:23:10.567', '%H:%i:%s'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2007-10-04 22:23:10.567', '%H:%i:%s') date_format('2007-10-04 22:23:10.567', '%H:%i:%s') 253 104 8 Y 0 31 45 -date_format('2007-10-04 22:23:10.567', '%H:%i:%s') -22:23:10 ++----------------------------------------------------+ +| date_format('2007-10-04 22:23:10.567', '%H:%i:%s') | ++----------------------------------------------------+ +| 22:23:10 | ++----------------------------------------------------+ select date_format(timestamp'2007-10-04 22:23:10.567', '%H:%i:%s'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format(timestamp'2007-10-04 22:23:10.567', '%H:%i:%s') date_format(timestamp'2007-10-04 22:23:10.567', '%H:%i:%s') 253 104 8 Y 0 31 45 -date_format(timestamp'2007-10-04 22:23:10.567', '%H:%i:%s') -22:23:10 ++-------------------------------------------------------------+ +| date_format(timestamp'2007-10-04 22:23:10.567', '%H:%i:%s') | ++-------------------------------------------------------------+ +| 22:23:10 | ++-------------------------------------------------------------+ select date_format('2007-10-04 22:23:10.567', '%H %k %I %r %T %S %w'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2007-10-04 22:23:10.567', '%H %k %I %r %T %S %w') date_format('2007-10-04 22:23:10.567', '%H %k %I %r %T %S %w') 253 104 34 Y 0 31 45 -date_format('2007-10-04 22:23:10.567', '%H %k %I %r %T %S %w') -22 22 10 10:23:10 PM 22:23:10 10 4 ++----------------------------------------------------------------+ +| date_format('2007-10-04 22:23:10.567', '%H %k %I %r %T %S %w') | ++----------------------------------------------------------------+ +| 22 22 10 10:23:10 PM 22:23:10 10 4 | ++----------------------------------------------------------------+ select date_format('2007-10-04 22:23:10.567', '%c %d %e %f %H %h %I %i %j %k %l %m %p %r %S %s %T %U %u %V %v %w %X %x %Y %y %%'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2007-10-04 22:23:10.567', '%c %d %e %f %H %h %I %i %j %k %l %m %p %r %S %s %T %U %u %V %v %w %X %x %Y %y %%') date_format('2007-10-04 22:23:10.567', '%c %d %e %f %H %h %I %i %j %k %l %m %p %r %S %s %T %U %u %V %v %w %X %x %Y %y %%') 253 104 103 Y 0 31 45 -date_format('2007-10-04 22:23:10.567', '%c %d %e %f %H %h %I %i %j %k %l %m %p %r %S %s %T %U %u %V %v %w %X %x %Y %y %%') -10 04 4 567000 22 10 10 23 277 22 10 10 PM 10:23:10 PM 10 10 22:23:10 39 40 39 40 4 2007 2007 2007 07 % ++----------------------------------------------------------------------------------------------------------------------------+ +| date_format('2007-10-04 22:23:10.567', '%c %d %e %f %H %h %I %i %j %k %l %m %p %r %S %s %T %U %u %V %v %w %X %x %Y %y %%') | ++----------------------------------------------------------------------------------------------------------------------------+ +| 10 04 4 567000 22 10 10 23 277 22 10 10 PM 10:23:10 PM 10 10 22:23:10 39 40 39 40 4 2007 2007 2007 07 % | ++----------------------------------------------------------------------------------------------------------------------------+ 2007-01-01 year_day=week_day=1 select date_format('2007-01-01', '%U %u %V-%X %v-%x'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2007-01-01', '%U %u %V-%X %v-%x') date_format('2007-01-01', '%U %u %V-%X %v-%x') 253 104 21 Y 0 31 45 -date_format('2007-01-01', '%U %u %V-%X %v-%x') -00 01 53-2006 01-2007 ++------------------------------------------------+ +| date_format('2007-01-01', '%U %u %V-%X %v-%x') | ++------------------------------------------------+ +| 00 01 53-2006 01-2007 | ++------------------------------------------------+ 2013-01-01 year_day=1, week_day=2 the critical week in this year select date_format('2013-01-01', '%U %u %V-%X %v-%x'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2013-01-01', '%U %u %V-%X %v-%x') date_format('2013-01-01', '%U %u %V-%X %v-%x') 253 104 21 Y 0 31 45 -date_format('2013-01-01', '%U %u %V-%X %v-%x') -00 01 53-2012 01-2013 ++------------------------------------------------+ +| date_format('2013-01-01', '%U %u %V-%X %v-%x') | ++------------------------------------------------+ +| 00 01 53-2012 01-2013 | ++------------------------------------------------+ 2015-01-01 year_day=1, week_day=4 the critical week in last year when start with sunday, in this year when start with monday select date_format('2015-01-01', '%U %u %V-%X %v-%x'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2015-01-01', '%U %u %V-%X %v-%x') date_format('2015-01-01', '%U %u %V-%X %v-%x') 253 104 21 Y 0 31 45 -date_format('2015-01-01', '%U %u %V-%X %v-%x') -00 01 52-2014 01-2015 ++------------------------------------------------+ +| date_format('2015-01-01', '%U %u %V-%X %v-%x') | ++------------------------------------------------+ +| 00 01 52-2014 01-2015 | ++------------------------------------------------+ 2014-12-31 year_day=365, week_day=3 thi critical week in this year when start with sunday, in next year when start with monday select date_format('2014-12-31', '%U %u %V-%X %v-%x'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2014-12-31', '%U %u %V-%X %v-%x') date_format('2014-12-31', '%U %u %V-%X %v-%x') 253 104 21 Y 0 31 45 -date_format('2014-12-31', '%U %u %V-%X %v-%x') -52 53 52-2014 01-2015 ++------------------------------------------------+ +| date_format('2014-12-31', '%U %u %V-%X %v-%x') | ++------------------------------------------------+ +| 52 53 52-2014 01-2015 | ++------------------------------------------------+ select date_format('2014-04-24', '%U %u %V-%X %v-%x'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2014-04-24', '%U %u %V-%X %v-%x') date_format('2014-04-24', '%U %u %V-%X %v-%x') 253 104 21 Y 0 31 45 -date_format('2014-04-24', '%U %u %V-%X %v-%x') -16 17 16-2014 17-2014 ++------------------------------------------------+ +| date_format('2014-04-24', '%U %u %V-%X %v-%x') | ++------------------------------------------------+ +| 16 17 16-2014 17-2014 | ++------------------------------------------------+ select date_format('2014-09-24', NULL); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2014-09-24', NULL) date_format('2014-09-24', NULL) 253 104 0 Y 0 31 45 -date_format('2014-09-24', NULL) -NULL ++---------------------------------+ +| date_format('2014-09-24', NULL) | ++---------------------------------+ +| NULL | ++---------------------------------+ select date_format(NULL, '%U %u %V-%X %v-%x'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format(NULL, '%U %u %V-%X %v-%x') date_format(NULL, '%U %u %V-%X %v-%x') 253 104 0 Y 0 31 45 -date_format(NULL, '%U %u %V-%X %v-%x') -NULL ++----------------------------------------+ +| date_format(NULL, '%U %u %V-%X %v-%x') | ++----------------------------------------+ +| NULL | ++----------------------------------------+ select str_to_date('1970-02-03', '%Y-%m-%d'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date('1970-02-03', '%Y-%m-%d') str_to_date('1970-02-03', '%Y-%m-%d') 10 10 10 Y 128 0 63 -str_to_date('1970-02-03', '%Y-%m-%d') -1970-02-03 ++---------------------------------------+ +| str_to_date('1970-02-03', '%Y-%m-%d') | ++---------------------------------------+ +| 1970-02-03 | ++---------------------------------------+ select str_to_date('04/30/2004 10:23:24.789', '%m/%d/%Y %T.%f'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date('04/30/2004 10:23:24.789', '%m/%d/%Y %T.%f') str_to_date('04/30/2004 10:23:24.789', '%m/%d/%Y %T.%f') 12 26 26 Y 128 6 63 -str_to_date('04/30/2004 10:23:24.789', '%m/%d/%Y %T.%f') -2004-04-30 10:23:24.789000 ++----------------------------------------------------------+ +| str_to_date('04/30/2004 10:23:24.789', '%m/%d/%Y %T.%f') | ++----------------------------------------------------------+ +| 2004-04-30 10:23:24.789000 | ++----------------------------------------------------------+ select str_to_date('4/30/2013 PM 09:25:45', '%m/%e/%Y %p %h:%i:%S'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date('4/30/2013 PM 09:25:45', '%m/%e/%Y %p %h:%i:%S') str_to_date('4/30/2013 PM 09:25:45', '%m/%e/%Y %p %h:%i:%S') 12 19 19 Y 128 0 63 -str_to_date('4/30/2013 PM 09:25:45', '%m/%e/%Y %p %h:%i:%S') -2013-04-30 21:25:45 ++--------------------------------------------------------------+ +| str_to_date('4/30/2013 PM 09:25:45', '%m/%e/%Y %p %h:%i:%S') | ++--------------------------------------------------------------+ +| 2013-04-30 21:25:45 | ++--------------------------------------------------------------+ select str_to_date('1970-02-03 10:56:56', '%Y-%m-%d %T'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date('1970-02-03 10:56:56', '%Y-%m-%d %T') str_to_date('1970-02-03 10:56:56', '%Y-%m-%d %T') 12 19 19 Y 128 0 63 -str_to_date('1970-02-03 10:56:56', '%Y-%m-%d %T') -1970-02-03 10:56:56 ++---------------------------------------------------+ +| str_to_date('1970-02-03 10:56:56', '%Y-%m-%d %T') | ++---------------------------------------------------+ +| 1970-02-03 10:56:56 | ++---------------------------------------------------+ select str_to_date(NULL, '%Y-%m-%d %T'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date(NULL, '%Y-%m-%d %T') str_to_date(NULL, '%Y-%m-%d %T') 12 19 0 Y 128 0 63 -str_to_date(NULL, '%Y-%m-%d %T') -NULL ++----------------------------------+ +| str_to_date(NULL, '%Y-%m-%d %T') | ++----------------------------------+ +| NULL | ++----------------------------------+ select str_to_date('1970-02-03 10:56:56', NULL); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date('1970-02-03 10:56:56', NULL) str_to_date('1970-02-03 10:56:56', NULL) 12 26 0 Y 128 6 63 -str_to_date('1970-02-03 10:56:56', NULL) -NULL ++------------------------------------------+ +| str_to_date('1970-02-03 10:56:56', NULL) | ++------------------------------------------+ +| NULL | ++------------------------------------------+ select coalesce(length(lower(null)), length(lower(upper('yssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxddsd'))), length('dir')) from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def coalesce(length(lower(null)), length(lower(upper('yssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss coalesce(length(lower(null)), length(lower(upper('yssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss 8 20 3 Y 32896 0 63 -coalesce(length(lower(null)), length(lower(upper('yssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss -466 +def coalesce(length(lower(null)), length(lower(upper('yssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss coalesce(length(lower(null)), length(lower(upper('yssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss 8 20 3 Y 32896 0 63 ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| coalesce(length(lower(null)), length(lower(upper('yssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss | ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| 466 | ++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + select 'NAME:'||varchar_c,'ADDR:'||v from build_in_func_test_table; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def 'NAME:'||varchar_c 'NAME:'||varchar_c 3 1 1 Y 32896 0 63 def 'ADDR:'||v 'ADDR:'||v 3 1 0 Y 32896 0 63 -'NAME:'||varchar_c 'ADDR:'||v -0 NULL ++--------------------+------------+ +| 'NAME:'||varchar_c | 'ADDR:'||v | ++--------------------+------------+ +| 0 | NULL | ++--------------------+------------+ + drop table build_in_func_test_table; drop table if exists test_0; create table test_0 (test_id varchar(10) primary key,name varchar(20),create_date timestamp(6) default "2012-01-01 12:00:00"); @@ -1100,40 +1755,59 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is def test test_0 test_0 test_id test_id 253 40 2 N 16387 31 45 def test test_0 test_0 name name 253 80 2 Y 0 31 45 def value value 253 104 10 Y 0 31 45 -test_id name value -13 12 2014-03-21 ++---------+------+------------+ +| test_id | name | value | ++---------+------+------------+ +| 13 | 12 | 2014-03-21 | ++---------+------+------------+ select test_id,name,DATE_FORMAT(create_date,'%Y-%m-%d') as value from test_0 where test_id='13'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test test_0 test_0 test_id test_id 253 40 2 N 16387 31 45 def test test_0 test_0 name name 253 80 2 Y 0 31 45 def value value 253 104 10 Y 0 31 45 -test_id name value -13 12 2014-03-21 ++---------+------+------------+ +| test_id | name | value | ++---------+------+------------+ +| 13 | 12 | 2014-03-21 | ++---------+------+------------+ select test_id,name,DATE_FORMAT(create_date,'%Y-%m-%d') as value from test_0 where test_id='12'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test test_0 test_0 test_id test_id 253 40 0 N 16387 31 45 def test test_0 test_0 name name 253 80 0 Y 0 31 45 def value value 253 104 0 Y 0 31 45 -test_id name value ++---------+------+-------+ +| test_id | name | value | ++---------+------+-------+ ++---------+------+-------+ select test_id,name,DATE_FORMAT(create_date,'%Y-%m-%d') as value from test_0 where test_id='13' and name='12'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test test_0 test_0 test_id test_id 253 40 2 N 16387 31 45 def test test_0 test_0 name name 253 80 2 Y 0 31 45 def value value 253 104 10 Y 0 31 45 -test_id name value -13 12 2014-03-21 ++---------+------+------------+ +| test_id | name | value | ++---------+------+------------+ +| 13 | 12 | 2014-03-21 | ++---------+------+------------+ select test_id,name,DATE_FORMAT(create_date,'%Y-%m-%d') as value from test_0 where test_id='13' and name='11'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test test_0 test_0 test_id test_id 253 40 0 N 16387 31 45 def test test_0 test_0 name name 253 80 0 Y 0 31 45 def value value 253 104 0 Y 0 31 45 -test_id name value ++---------+------+-------+ +| test_id | name | value | ++---------+------+-------+ ++---------+------+-------+ select test_id,name,DATE_FORMAT(create_date,'%Y-%m-%d') as value from test_0 where test_id='11'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test test_0 test_0 test_id test_id 253 40 0 N 16387 31 45 def test test_0 test_0 name name 253 80 0 Y 0 31 45 def value value 253 104 0 Y 0 31 45 -test_id name value ++---------+------+-------+ +| test_id | name | value | ++---------+------+-------+ ++---------+------+-------+ + drop table if exists test_format; create table test_format (datetest varchar(50), pk int primary key); insert into test_format values(date_FORMAT('2003-01-02 10:11:12', '%Y-%m-%d %H:%i:%S'),1); @@ -1155,22 +1829,25 @@ select * from test_format; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test test_format test_format datetest datetest 253 200 29 Y 0 31 45 def test test_format test_format pk pk 3 11 2 N 49283 0 63 -datetest pk -2003-01-02 10:11:12 1 -2003-01-02 10:11:12 2 -03-01-02 08:11:02 3 -0003-01-02 08:11:02 4 -2003-01-02 08:11:02 5 -2003-01-02 01:11:12.123450AM 7 -2003-01-02 02:11:12.123450 AM 8 -2003-01-02 12:11:12.123450PM 9 -2003-01-02 11:11:12AM 10 -2003-01-02 10:20:10 11 -2003-01-02 10:20:10.000000 12 -2003-01-02 10:20:10 13 -2003-01-02 10:20:10AM 14 -2003-01-02 10:20:10 AM 15 -2003-01-02 10:20:10.440000AM 16 ++-------------------------------+----+ +| datetest | pk | ++-------------------------------+----+ +| 2003-01-02 10:11:12 | 1 | +| 2003-01-02 10:11:12 | 2 | +| 03-01-02 08:11:02 | 3 | +| 0003-01-02 08:11:02 | 4 | +| 2003-01-02 08:11:02 | 5 | +| 2003-01-02 01:11:12.123450AM | 7 | +| 2003-01-02 02:11:12.123450 AM | 8 | +| 2003-01-02 12:11:12.123450PM | 9 | +| 2003-01-02 11:11:12AM | 10 | +| 2003-01-02 10:20:10 | 11 | +| 2003-01-02 10:20:10.000000 | 12 | +| 2003-01-02 10:20:10 | 13 | +| 2003-01-02 10:20:10AM | 14 | +| 2003-01-02 10:20:10 AM | 15 | +| 2003-01-02 10:20:10.440000AM | 16 | ++-------------------------------+----+ drop table if exists t1; create table t1 (date1 char(30) primary key, format char(30) not null); insert into t1 values @@ -1189,27 +1866,39 @@ insert into t1 values ('2004-07-14'),('2005-07-14'); select date_format(d,'%d') from t1 order by 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format(d,'%d') date_format(d,'%d') 253 104 2 Y 0 31 45 -date_format(d,'%d') -14 -14 ++---------------------+ +| date_format(d,'%d') | ++---------------------+ +| 14 | +| 14 | ++---------------------+ select date_format(d,'%e') from t1 order by 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format(d,'%e') date_format(d,'%e') 253 104 2 Y 0 31 45 -date_format(d,'%e') -14 -14 ++---------------------+ +| date_format(d,'%e') | ++---------------------+ +| 14 | +| 14 | ++---------------------+ select date_format(d,'%D') from t1 order by 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format(d,'%D') date_format(d,'%D') 253 104 4 Y 0 31 45 -date_format(d,'%D') -14th -14th ++---------------------+ +| date_format(d,'%D') | ++---------------------+ +| 14th | +| 14th | ++---------------------+ drop table t1; select date_format('2004-01-01','%W (%a), %e %M (%b) %Y'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def date_format('2004-01-01','%W (%a), %e %M (%b) %Y') date_format('2004-01-01','%W (%a), %e %M (%b) %Y') 253 104 36 Y 0 31 45 -date_format('2004-01-01','%W (%a), %e %M (%b) %Y') -Thursday (Thu), 1 January (Jan) 2004 ++----------------------------------------------------+ +| date_format('2004-01-01','%W (%a), %e %M (%b) %Y') | ++----------------------------------------------------+ +| Thursday (Thu), 1 January (Jan) 2004 | ++----------------------------------------------------+ create table t1 (f1 datetime primary key); insert into t1 (f1) values ('2005-01-01'); insert into t1 (f1) values ('2005-02-01'); @@ -1217,160 +1906,257 @@ select date_format(f1, '%m') as d1, date_format(f1, '%M') as d2 from t1 order by Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def d1 d1 253 104 2 Y 0 31 45 def d2 d2 253 104 8 Y 0 31 45 -d1 d2 -02 February -01 January ++------+----------+ +| d1 | d2 | ++------+----------+ +| 02 | February | +| 01 | January | ++------+----------+ +###temp add error num 5086 select date_format(f1, '%m') as d1, date_format(f1, '%M') as d2 from t1 where f1='2013' order by date_format(f1, '%M') ; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def d1 d1 253 104 0 Y 0 31 45 def d2 d2 253 104 0 Y 0 31 45 -d1 d2 ++------+------+ +| d1 | d2 | ++------+------+ ++------+------+ + SELECT DATE_FORMAT('2014-01-01 24:00:00', '%r'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 24:00:00', '%r') DATE_FORMAT('2014-01-01 24:00:00', '%r') 253 104 0 Y 0 31 45 -DATE_FORMAT('2014-01-01 24:00:00', '%r') -NULL ++------------------------------------------+ +| DATE_FORMAT('2014-01-01 24:00:00', '%r') | ++------------------------------------------+ +| NULL | ++------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 00:00:00', '%r'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 00:00:00', '%r') DATE_FORMAT('2014-01-01 00:00:00', '%r') 253 104 11 Y 0 31 45 -DATE_FORMAT('2014-01-01 00:00:00', '%r') -12:00:00 AM ++------------------------------------------+ +| DATE_FORMAT('2014-01-01 00:00:00', '%r') | ++------------------------------------------+ +| 12:00:00 AM | ++------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 12:00:00', '%r'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 12:00:00', '%r') DATE_FORMAT('2014-01-01 12:00:00', '%r') 253 104 11 Y 0 31 45 -DATE_FORMAT('2014-01-01 12:00:00', '%r') -12:00:00 PM ++------------------------------------------+ +| DATE_FORMAT('2014-01-01 12:00:00', '%r') | ++------------------------------------------+ +| 12:00:00 PM | ++------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 15:00:00', '%r'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 15:00:00', '%r') DATE_FORMAT('2014-01-01 15:00:00', '%r') 253 104 11 Y 0 31 45 -DATE_FORMAT('2014-01-01 15:00:00', '%r') -03:00:00 PM ++------------------------------------------+ +| DATE_FORMAT('2014-01-01 15:00:00', '%r') | ++------------------------------------------+ +| 03:00:00 PM | ++------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 01:00:00', '%r'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 01:00:00', '%r') DATE_FORMAT('2014-01-01 01:00:00', '%r') 253 104 11 Y 0 31 45 -DATE_FORMAT('2014-01-01 01:00:00', '%r') -01:00:00 AM ++------------------------------------------+ +| DATE_FORMAT('2014-01-01 01:00:00', '%r') | ++------------------------------------------+ +| 01:00:00 AM | ++------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 25:00:00', '%r'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 25:00:00', '%r') DATE_FORMAT('2014-01-01 25:00:00', '%r') 253 104 0 Y 0 31 45 -DATE_FORMAT('2014-01-01 25:00:00', '%r') -NULL ++------------------------------------------+ +| DATE_FORMAT('2014-01-01 25:00:00', '%r') | ++------------------------------------------+ +| NULL | ++------------------------------------------+ + SELECT DATE_FORMAT('2014-01-01 00:00:00', '%l %p'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 00:00:00', '%l %p') DATE_FORMAT('2014-01-01 00:00:00', '%l %p') 253 104 5 Y 0 31 45 -DATE_FORMAT('2014-01-01 00:00:00', '%l %p') -12 AM ++---------------------------------------------+ +| DATE_FORMAT('2014-01-01 00:00:00', '%l %p') | ++---------------------------------------------+ +| 12 AM | ++---------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 01:00:00', '%l %p'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 01:00:00', '%l %p') DATE_FORMAT('2014-01-01 01:00:00', '%l %p') 253 104 4 Y 0 31 45 -DATE_FORMAT('2014-01-01 01:00:00', '%l %p') -1 AM ++---------------------------------------------+ +| DATE_FORMAT('2014-01-01 01:00:00', '%l %p') | ++---------------------------------------------+ +| 1 AM | ++---------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 12:00:00', '%l %p'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 12:00:00', '%l %p') DATE_FORMAT('2014-01-01 12:00:00', '%l %p') 253 104 5 Y 0 31 45 -DATE_FORMAT('2014-01-01 12:00:00', '%l %p') -12 PM ++---------------------------------------------+ +| DATE_FORMAT('2014-01-01 12:00:00', '%l %p') | ++---------------------------------------------+ +| 12 PM | ++---------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 23:00:00', '%l %p'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 23:00:00', '%l %p') DATE_FORMAT('2014-01-01 23:00:00', '%l %p') 253 104 5 Y 0 31 45 -DATE_FORMAT('2014-01-01 23:00:00', '%l %p') -11 PM ++---------------------------------------------+ +| DATE_FORMAT('2014-01-01 23:00:00', '%l %p') | ++---------------------------------------------+ +| 11 PM | ++---------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 24:00:00', '%l %p'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 24:00:00', '%l %p') DATE_FORMAT('2014-01-01 24:00:00', '%l %p') 253 104 0 Y 0 31 45 -DATE_FORMAT('2014-01-01 24:00:00', '%l %p') -NULL ++---------------------------------------------+ +| DATE_FORMAT('2014-01-01 24:00:00', '%l %p') | ++---------------------------------------------+ +| NULL | ++---------------------------------------------+ SELECT DATE_FORMAT('2014-01-01 25:00:00', '%l %p'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('2014-01-01 25:00:00', '%l %p') DATE_FORMAT('2014-01-01 25:00:00', '%l %p') 253 104 0 Y 0 31 45 -DATE_FORMAT('2014-01-01 25:00:00', '%l %p') -NULL ++---------------------------------------------+ +| DATE_FORMAT('2014-01-01 25:00:00', '%l %p') | ++---------------------------------------------+ +| NULL | ++---------------------------------------------+ SELECT DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896) DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896) 253 104 0 Y 0 31 45 -DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896) -NULL ++----------------------------------------------+ +| DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896) | ++----------------------------------------------+ +| NULL | ++----------------------------------------------+ SELECT DATE_FORMAT('0000-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 22 Y 0 31 45 -valid_date -Sunday 01 January 0000 ++------------------------+ +| valid_date | ++------------------------+ +| Sunday 01 January 0000 | ++------------------------+ SELECT DATE_FORMAT('0001-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 22 Y 0 31 45 -valid_date -Monday 01 January 0001 ++------------------------+ +| valid_date | ++------------------------+ +| Monday 01 January 0001 | ++------------------------+ SELECT DATE_FORMAT('-0001-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 0 Y 0 31 45 -valid_date -NULL ++------------+ +| valid_date | ++------------+ +| NULL | ++------------+ SELECT DATE_FORMAT('-4713-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 0 Y 0 31 45 -valid_date -NULL ++------------+ +| valid_date | ++------------+ +| NULL | ++------------+ SELECT DATE_FORMAT('-4712-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 0 Y 0 31 45 -valid_date -NULL ++------------+ +| valid_date | ++------------+ +| NULL | ++------------+ SELECT DATE_FORMAT('-4714-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 0 Y 0 31 45 -valid_date -NULL ++------------+ +| valid_date | ++------------+ +| NULL | ++------------+ SELECT DATE_FORMAT('9999-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 22 Y 0 31 45 -valid_date -Friday 01 January 9999 ++------------------------+ +| valid_date | ++------------------------+ +| Friday 01 January 9999 | ++------------------------+ SELECT DATE_FORMAT('10000-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 0 Y 0 31 45 -valid_date -NULL ++------------+ +| valid_date | ++------------+ +| NULL | ++------------+ SELECT DATE_FORMAT('0000-02-28','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 24 Y 0 31 45 -valid_date -Tuesday 28 February 0000 ++--------------------------+ +| valid_date | ++--------------------------+ +| Tuesday 28 February 0000 | ++--------------------------+ SELECT DATE_FORMAT('0001-02-28','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 26 Y 0 31 45 -valid_date -Wednesday 28 February 0001 ++----------------------------+ +| valid_date | ++----------------------------+ +| Wednesday 28 February 0001 | ++----------------------------+ SELECT DATE_FORMAT('2009-01-01','%W %d %M %Y') as valid_date; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def valid_date valid_date 253 104 24 Y 0 31 45 -valid_date -Thursday 01 January 2009 ++--------------------------+ +| valid_date | ++--------------------------+ +| Thursday 01 January 2009 | ++--------------------------+ SELECT CAST(DATE_FORMAT(NULL, '%s') AS CHAR); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def CAST(DATE_FORMAT(NULL, '%s') AS CHAR) CAST(DATE_FORMAT(NULL, '%s') AS CHAR) 253 104 0 Y 0 31 45 -CAST(DATE_FORMAT(NULL, '%s') AS CHAR) -NULL ++---------------------------------------+ +| CAST(DATE_FORMAT(NULL, '%s') AS CHAR) | ++---------------------------------------+ +| NULL | ++---------------------------------------+ SELECT CAST(DATE_FORMAT(NULL, '%s') AS DECIMAL(23,6)); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def CAST(DATE_FORMAT(NULL, '%s') AS DECIMAL(23,6)) CAST(DATE_FORMAT(NULL, '%s') AS DECIMAL(23,6)) 246 25 0 Y 32896 6 63 -CAST(DATE_FORMAT(NULL, '%s') AS DECIMAL(23,6)) -NULL ++------------------------------------------------+ +| CAST(DATE_FORMAT(NULL, '%s') AS DECIMAL(23,6)) | ++------------------------------------------------+ +| NULL | ++------------------------------------------------+ SELECT CAST(DATE_FORMAT(NULL, '%s') AS DATETIME); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def CAST(DATE_FORMAT(NULL, '%s') AS DATETIME) CAST(DATE_FORMAT(NULL, '%s') AS DATETIME) 12 19 0 Y 128 0 63 -CAST(DATE_FORMAT(NULL, '%s') AS DATETIME) -NULL ++-------------------------------------------+ +| CAST(DATE_FORMAT(NULL, '%s') AS DATETIME) | ++-------------------------------------------+ +| NULL | ++-------------------------------------------+ SELECT DATE_FORMAT(NULL, '%s')+0e0; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT(NULL, '%s')+0e0 DATE_FORMAT(NULL, '%s')+0e0 5 23 0 Y 32896 31 63 -DATE_FORMAT(NULL, '%s')+0e0 -NULL ++-----------------------------+ +| DATE_FORMAT(NULL, '%s')+0e0 | ++-----------------------------+ +| NULL | ++-----------------------------+ + drop table t1; select str_to_date('2003-01-02', '%Y-%m-%d') as f3; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def f3 f3 10 10 10 Y 128 0 63 -f3 -2003-01-02 ++------------+ +| f3 | ++------------+ +| 2003-01-02 | ++------------+ drop table if exists t1; create table t1 (f1 varchar(20) primary key); insert into t1 (f1) values ('2005-01-01'); @@ -1378,419 +2164,673 @@ insert into t1 (f1) values ('2005-02-01'); select str_to_date(f1,'%Y-%m-%d') from t1 where f1='2005-01-01'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date(f1,'%Y-%m-%d') str_to_date(f1,'%Y-%m-%d') 10 10 10 Y 128 0 63 -str_to_date(f1,'%Y-%m-%d') -2005-01-01 ++----------------------------+ +| str_to_date(f1,'%Y-%m-%d') | ++----------------------------+ +| 2005-01-01 | ++----------------------------+ select str_to_date(f1,'%Y-%m-%d') from t1 where f1='2005-01-03'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date(f1,'%Y-%m-%d') str_to_date(f1,'%Y-%m-%d') 10 10 0 Y 128 0 63 -str_to_date(f1,'%Y-%m-%d') ++----------------------------+ +| str_to_date(f1,'%Y-%m-%d') | ++----------------------------+ ++----------------------------+ + select str_to_date('04 /30/2004', '%m /%d/%Y'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date('04 /30/2004', '%m /%d/%Y') str_to_date('04 /30/2004', '%m /%d/%Y') 10 10 10 Y 128 0 63 -str_to_date('04 /30/2004', '%m /%d/%Y') -2004-04-30 ++-----------------------------------------+ +| str_to_date('04 /30/2004', '%m /%d/%Y') | ++-----------------------------------------+ +| 2004-04-30 | ++-----------------------------------------+ select str_to_date('04/30 /2004', '%m /%d /%Y'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date('04/30 /2004', '%m /%d /%Y') str_to_date('04/30 /2004', '%m /%d /%Y') 10 10 10 Y 128 0 63 -str_to_date('04/30 /2004', '%m /%d /%Y') -2004-04-30 ++------------------------------------------+ +| str_to_date('04/30 /2004', '%m /%d /%Y') | ++------------------------------------------+ +| 2004-04-30 | ++------------------------------------------+ select str_to_date('04/30/2004 ', '%m/%d/%Y '); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def str_to_date('04/30/2004 ', '%m/%d/%Y ') str_to_date('04/30/2004 ', '%m/%d/%Y ') 10 10 10 Y 128 0 63 -str_to_date('04/30/2004 ', '%m/%d/%Y ') -2004-04-30 ++-----------------------------------------+ +| str_to_date('04/30/2004 ', '%m/%d/%Y ') | ++-----------------------------------------+ +| 2004-04-30 | ++-----------------------------------------+ + select '+' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '+' + 1 '+' + 1 5 23 1 N 32897 31 63 -'+' + 1 -1 ++---------+ +| '+' + 1 | ++---------+ +| 1 | ++---------+ select '-' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '-' + 1 '-' + 1 5 23 1 N 32897 31 63 -'-' + 1 -1 ++---------+ +| '-' + 1 | ++---------+ +| 1 | ++---------+ select '.' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '.' + 1 '.' + 1 5 23 1 N 32897 31 63 -'.' + 1 -1 ++---------+ +| '.' + 1 | ++---------+ +| 1 | ++---------+ select '_' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '_' + 1 '_' + 1 5 23 1 N 32897 31 63 -'_' + 1 -1 ++---------+ +| '_' + 1 | ++---------+ +| 1 | ++---------+ select '~' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '~' + 1 '~' + 1 5 23 1 N 32897 31 63 -'~' + 1 -1 ++---------+ +| '~' + 1 | ++---------+ +| 1 | ++---------+ select '@' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '@' + 1 '@' + 1 5 23 1 N 32897 31 63 -'@' + 1 -1 ++---------+ +| '@' + 1 | ++---------+ +| 1 | ++---------+ select '#' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '#' + 1 '#' + 1 5 23 1 N 32897 31 63 -'#' + 1 -1 ++---------+ +| '#' + 1 | ++---------+ +| 1 | ++---------+ select '%' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '%' + 1 '%' + 1 5 23 1 N 32897 31 63 -'%' + 1 -1 ++---------+ +| '%' + 1 | ++---------+ +| 1 | ++---------+ select '^' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '^' + 1 '^' + 1 5 23 1 N 32897 31 63 -'^' + 1 -1 ++---------+ +| '^' + 1 | ++---------+ +| 1 | ++---------+ select '$%%%' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '$%%%' + 1 '$%%%' + 1 5 23 1 N 32897 31 63 -'$%%%' + 1 -1 ++------------+ +| '$%%%' + 1 | ++------------+ +| 1 | ++------------+ select '(' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '(' + 1 '(' + 1 5 23 1 N 32897 31 63 -'(' + 1 -1 ++---------+ +| '(' + 1 | ++---------+ +| 1 | ++---------+ select ')' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def ')' + 1 ')' + 1 5 23 1 N 32897 31 63 -')' + 1 -1 ++---------+ +| ')' + 1 | ++---------+ +| 1 | ++---------+ select '=' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '=' + 1 '=' + 1 5 23 1 N 32897 31 63 -'=' + 1 -1 ++---------+ +| '=' + 1 | ++---------+ +| 1 | ++---------+ select '{' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '{' + 1 '{' + 1 5 23 1 N 32897 31 63 -'{' + 1 -1 ++---------+ +| '{' + 1 | ++---------+ +| 1 | ++---------+ select '}' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '}' + 1 '}' + 1 5 23 1 N 32897 31 63 -'}' + 1 -1 ++---------+ +| '}' + 1 | ++---------+ +| 1 | ++---------+ select '|' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '|' + 1 '|' + 1 5 23 1 N 32897 31 63 -'|' + 1 -1 ++---------+ +| '|' + 1 | ++---------+ +| 1 | ++---------+ select '\'' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '\'' + 1 '\'' + 1 5 23 1 N 32897 31 63 -'\'' + 1 -1 ++----------+ +| '\'' + 1 | ++----------+ +| 1 | ++----------+ select '"' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '"' + 1 '"' + 1 5 23 1 N 32897 31 63 -'"' + 1 -1 ++---------+ +| '"' + 1 | ++---------+ +| 1 | ++---------+ select ':' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def ':' + 1 ':' + 1 5 23 1 N 32897 31 63 -':' + 1 -1 ++---------+ +| ':' + 1 | ++---------+ +| 1 | ++---------+ select '<' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '<' + 1 '<' + 1 5 23 1 N 32897 31 63 -'<' + 1 -1 ++---------+ +| '<' + 1 | ++---------+ +| 1 | ++---------+ select '>' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '>' + 1 '>' + 1 5 23 1 N 32897 31 63 -'>' + 1 -1 ++---------+ +| '>' + 1 | ++---------+ +| 1 | ++---------+ select '?' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '?' + 1 '?' + 1 5 23 1 N 32897 31 63 -'?' + 1 -1 ++---------+ +| '?' + 1 | ++---------+ +| 1 | ++---------+ select '/' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '/' + 1 '/' + 1 5 23 1 N 32897 31 63 -'/' + 1 -1 ++---------+ +| '/' + 1 | ++---------+ +| 1 | ++---------+ select '!@##' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '!@##' + 1 '!@##' + 1 5 23 1 N 32897 31 63 -'!@##' + 1 -1 ++------------+ +| '!@##' + 1 | ++------------+ +| 1 | ++------------+ select '$^^%%^$%(*&^(*^&*^&)' + 1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def '$^^%%^$%(*&^(*^&*^&)' + 1 '$^^%%^$%(*&^(*^&*^&)' + 1 5 23 1 N 32897 31 63 -'$^^%%^$%(*&^(*^&*^&)' + 1 -1 ++----------------------------+ +| '$^^%%^$%(*&^(*^&*^&)' + 1 | ++----------------------------+ +| 1 | ++----------------------------+ select concat(NULL, 'aaa'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def concat(NULL, 'aaa') concat(NULL, 'aaa') 253 12 0 Y 0 31 45 -concat(NULL, 'aaa') -NULL ++---------------------+ +| concat(NULL, 'aaa') | ++---------------------+ +| NULL | ++---------------------+ select concat('aaa', NULL); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def concat('aaa', NULL) concat('aaa', NULL) 253 12 0 Y 0 31 45 -concat('aaa', NULL) -NULL ++---------------------+ +| concat('aaa', NULL) | ++---------------------+ +| NULL | ++---------------------+ select concat('aaa',''); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def concat('aaa','') concat('aaa','') 253 12 3 Y 0 31 45 -concat('aaa','') -aaa ++------------------+ +| concat('aaa','') | ++------------------+ +| aaa | ++------------------+ select concat('','aaa'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def concat('','aaa') concat('','aaa') 253 12 3 Y 0 31 45 -concat('','aaa') -aaa ++------------------+ +| concat('','aaa') | ++------------------+ +| aaa | ++------------------+ select 1.1/0.0; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def 1.1/0.0 1.1/0.0 246 8 0 Y 32896 5 63 -1.1/0.0 -NULL ++---------+ +| 1.1/0.0 | ++---------+ +| NULL | ++---------+ select dump(1.1); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def dump(1.1) dump(1.1) 253 16 51 Y 0 31 45 -dump(1.1) -"sign=1 exp=64 se=0xc0 len=2 digits=[1,100000000,]" ++-----------------------------------------------------+ +| dump(1.1) | ++-----------------------------------------------------+ +| "sign=1 exp=64 se=0xc0 len=2 digits=[1,100000000,]" | ++-----------------------------------------------------+ select dump(1); ERROR 0A000: Not supported feature or function select round(1.1234, 3); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def round(1.1234, 3) round(1.1234, 3) 246 7 5 N 32897 3 63 -round(1.1234, 3) -1.123 ++------------------+ +| round(1.1234, 3) | ++------------------+ +| 1.123 | ++------------------+ select round(1.1234); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def round(1.1234) round(1.1234) 246 3 1 N 32897 0 63 -round(1.1234) -1 ++---------------+ +| round(1.1234) | ++---------------+ +| 1 | ++---------------+ select false is true; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def false is true false is true 3 1 1 N 32897 0 63 -false is true -0 ++---------------+ +| false is true | ++---------------+ +| 0 | ++---------------+ select NULL is true; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def NULL is true NULL is true 3 1 1 N 32897 0 63 -NULL is true -0 ++--------------+ +| NULL is true | ++--------------+ +| 0 | ++--------------+ select true is true; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def true is true true is true 3 1 1 N 32897 0 63 -true is true -1 ++--------------+ +| true is true | ++--------------+ +| 1 | ++--------------+ select true is not true; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def true is not true true is not true 3 1 1 N 32897 0 63 -true is not true -0 ++-------------------+ +| true is not true | ++-------------------+ +| 0 | ++-------------------+ select NULL is NULL; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def NULL is NULL NULL is NULL 3 1 1 N 32897 0 63 -NULL is NULL -1 ++--------------+ +| NULL is NULL | ++--------------+ +| 1 | ++--------------+ select NULL is not NULL; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def NULL is not NULL NULL is not NULL 3 1 1 N 32897 0 63 -NULL is not NULL -0 ++------------------+ +| NULL is not NULL | ++------------------+ +| 0 | ++------------------+ select true is false; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def true is false true is false 3 1 1 N 32897 0 63 -true is false -0 ++---------------+ +| true is false | ++---------------+ +| 0 | ++---------------+ select -'aaa'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def -'aaa' -'aaa' 5 23 2 N 32897 31 63 --'aaa' --0 ++--------+ +| -'aaa' | ++--------+ +| -0 | ++--------+ select DATE_ADD(null, INTERVAL 5 DAY); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_ADD(null, INTERVAL 5 DAY) DATE_ADD(null, INTERVAL 5 DAY) 6 0 0 Y 32896 0 63 -DATE_ADD(null, INTERVAL 5 DAY) -NULL ++--------------------------------+ +| DATE_ADD(null, INTERVAL 5 DAY) | ++--------------------------------+ +| NULL | ++--------------------------------+ select DATE_sub(null, INTERVAL 5 DAY); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_sub(null, INTERVAL 5 DAY) DATE_sub(null, INTERVAL 5 DAY) 6 0 0 Y 32896 0 63 -DATE_sub(null, INTERVAL 5 DAY) -NULL ++--------------------------------+ +| DATE_sub(null, INTERVAL 5 DAY) | ++--------------------------------+ +| NULL | ++--------------------------------+ select STR_TO_DATE(null, '%Y-%m-%d'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def STR_TO_DATE(null, '%Y-%m-%d') STR_TO_DATE(null, '%Y-%m-%d') 10 10 0 Y 128 0 63 -STR_TO_DATE(null, '%Y-%m-%d') -NULL ++-------------------------------+ +| STR_TO_DATE(null, '%Y-%m-%d') | ++-------------------------------+ +| NULL | ++-------------------------------+ select DATE_FORMAT(null, '%Y/%m/%D'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT(null, '%Y/%m/%D') DATE_FORMAT(null, '%Y/%m/%D') 253 104 0 Y 0 31 45 -DATE_FORMAT(null, '%Y/%m/%D') -NULL ++-------------------------------+ +| DATE_FORMAT(null, '%Y/%m/%D') | ++-------------------------------+ +| NULL | ++-------------------------------+ select time_to_usec(null); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def time_to_usec(null) time_to_usec(null) 8 20 0 Y 32896 0 63 -time_to_usec(null) -NULL ++--------------------+ +| time_to_usec(null) | ++--------------------+ +| NULL | ++--------------------+ select usec_to_time(null); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def usec_to_time(null) usec_to_time(null) 7 26 0 Y 1152 6 63 -usec_to_time(null) -NULL ++--------------------+ +| usec_to_time(null) | ++--------------------+ +| NULL | ++--------------------+ select EXTRACT(DAY FROM null); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def EXTRACT(DAY FROM null) EXTRACT(DAY FROM null) 8 20 0 Y 32896 0 63 -EXTRACT(DAY FROM null) -NULL ++------------------------+ +| EXTRACT(DAY FROM null) | ++------------------------+ +| NULL | ++------------------------+ + +####test abs func select abs(10); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(10) abs(10) 8 2 2 N 32897 0 63 -abs(10) -10 ++---------+ +| abs(10) | ++---------+ +| 10 | ++---------+ select abs(-10); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(-10) abs(-10) 8 2 2 N 32897 0 63 -abs(-10) -10 ++----------+ +| abs(-10) | ++----------+ +| 10 | ++----------+ select abs(-0); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(-0) abs(-0) 8 2 1 N 32897 0 63 -abs(-0) -0 ++---------+ +| abs(-0) | ++---------+ +| 0 | ++---------+ select abs(0); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(0) abs(0) 8 2 1 N 32897 0 63 -abs(0) -0 ++--------+ +| abs(0) | ++--------+ +| 0 | ++--------+ select abs(1); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(1) abs(1) 8 2 1 N 32897 0 63 -abs(1) -1 ++--------+ +| abs(1) | ++--------+ +| 1 | ++--------+ select abs(-1); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(-1) abs(-1) 8 2 1 N 32897 0 63 -abs(-1) -1 ++---------+ +| abs(-1) | ++---------+ +| 1 | ++---------+ select abs(-1000000000000); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(-1000000000000) abs(-1000000000000) 8 2 13 N 32897 0 63 -abs(-1000000000000) -1000000000000 ++---------------------+ +| abs(-1000000000000) | ++---------------------+ +| 1000000000000 | ++---------------------+ select abs(1000000000000); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(1000000000000) abs(1000000000000) 8 2 13 N 32897 0 63 -abs(1000000000000) -1000000000000 ++--------------------+ +| abs(1000000000000) | ++--------------------+ +| 1000000000000 | ++--------------------+ select abs(0.1); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(0.1) abs(0.1) 246 4 3 N 32897 1 63 -abs(0.1) -0.1 ++----------+ +| abs(0.1) | ++----------+ +| 0.1 | ++----------+ select abs(-0.1); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(-0.1) abs(-0.1) 246 4 3 N 32897 1 63 -abs(-0.1) -0.1 ++-----------+ +| abs(-0.1) | ++-----------+ +| 0.1 | ++-----------+ select abs(-11.10); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(-11.10) abs(-11.10) 246 6 5 N 32897 2 63 -abs(-11.10) -11.10 ++-------------+ +| abs(-11.10) | ++-------------+ +| 11.10 | ++-------------+ select abs(null); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(null) abs(null) 5 23 0 Y 32896 31 63 -abs(null) -NULL ++-----------+ +| abs(null) | ++-----------+ +| NULL | ++-----------+ select abs(NULL); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(NULL) abs(NULL) 5 23 0 Y 32896 31 63 -abs(NULL) -NULL ++-----------+ +| abs(NULL) | ++-----------+ +| NULL | ++-----------+ select abs(Null); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(Null) abs(Null) 5 23 0 Y 32896 31 63 -abs(Null) -NULL ++-----------+ +| abs(Null) | ++-----------+ +| NULL | ++-----------+ select abs(5-5); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(5-5) abs(5-5) 8 3 1 N 32897 0 63 -abs(5-5) -0 ++----------+ +| abs(5-5) | ++----------+ +| 0 | ++----------+ select abs(-0.1*3); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def abs(-0.1*3) abs(-0.1*3) 246 5 3 N 32897 1 63 -abs(-0.1*3) -0.3 ++-------------+ +| abs(-0.1*3) | ++-------------+ +| 0.3 | ++-------------+ +####test:unhex select unhex('434445'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex('434445') unhex('434445') 253 3 3 Y 128 31 63 -unhex('434445') -CDE ++-----------------+ +| unhex('434445') | ++-----------------+ +| CDE | ++-----------------+ select unhex('C434445'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex('C434445') unhex('C434445') 253 3 4 Y 128 31 63 -unhex('C434445') - CDE ++------------------+ +| unhex('C434445') | ++------------------+ +| CDE | ++------------------+ select unhex(repeat('4',100)); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex(repeat('4',100)) unhex(repeat('4',100)) 253 256 50 Y 128 31 63 -unhex(repeat('4',100)) -DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ++----------------------------------------------------+ +| unhex(repeat('4',100)) | ++----------------------------------------------------+ +| DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD | ++----------------------------------------------------+ select unhex(repeat('1',400)); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex(repeat('1',400)) unhex(repeat('1',400)) 253 256 200 Y 128 31 63 -unhex(repeat('1',400)) - ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| unhex(repeat('1',400)) | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +|  | ++----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ select unhex(null); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex(null) unhex(null) 253 0 0 Y 128 31 63 -unhex(null) -NULL ++-------------+ +| unhex(null) | ++-------------+ +| NULL | ++-------------+ select unhex('123'); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex('123') unhex('123') 253 3 2 Y 128 31 63 -unhex('123') -# ++--------------+ +| unhex('123') | ++--------------+ +| # | ++--------------+ select unhex(cast(repeat('123',5) as char(1024))); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex(cast(repeat('123',5) as char(1024))) unhex(cast(repeat('123',5) as char(1024))) 253 512 8 Y 128 31 63 -unhex(cast(repeat('123',5) as char(1024))) -#1#1# ++--------------------------------------------+ +| unhex(cast(repeat('123',5) as char(1024))) | ++--------------------------------------------+ +| #1#1# | ++--------------------------------------------+ select unhex(''); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex('') unhex('') 253 3 0 Y 128 31 63 -unhex('') - ++-----------+ +| unhex('') | ++-----------+ +| | ++-----------+ select unhex(repeat('',10)); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def unhex(repeat('',10)) unhex(repeat('',10)) 253 256 0 Y 128 31 63 -unhex(repeat('',10)) - ++----------------------+ +| unhex(repeat('',10)) | ++----------------------+ +| | ++----------------------+ +###substr+like select SUBSTR( 'Sat' FROM 3 ) , SUBSTR( 'Sat' FROM 3 ) LIKE '%a_'; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def SUBSTR( 'Sat' FROM 3 ) SUBSTR( 'Sat' FROM 3 ) 253 4 1 Y 0 31 45 def SUBSTR( 'Sat' FROM 3 ) LIKE '%a_' SUBSTR( 'Sat' FROM 3 ) LIKE '%a_' 8 1 1 Y 32896 0 63 -SUBSTR( 'Sat' FROM 3 ) SUBSTR( 'Sat' FROM 3 ) LIKE '%a_' -t 0 ++------------------------+-----------------------------------+ +| SUBSTR( 'Sat' FROM 3 ) | SUBSTR( 'Sat' FROM 3 ) LIKE '%a_' | ++------------------------+-----------------------------------+ +| t | 0 | ++------------------------+-----------------------------------+ +###date select DATE_FORMAT( '2014-12-31 19:54:55.000002', '%x%v' ) , DATE_FORMAT( '2023-12-31 19:54:55.000002', '%x%v' ); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def DATE_FORMAT( '2014-12-31 19:54:55.000002', '%x%v' ) DATE_FORMAT( '2014-12-31 19:54:55.000002', '%x%v' ) 253 104 6 Y 0 31 45 def DATE_FORMAT( '2023-12-31 19:54:55.000002', '%x%v' ) DATE_FORMAT( '2023-12-31 19:54:55.000002', '%x%v' ) 253 104 6 Y 0 31 45 -DATE_FORMAT( '2014-12-31 19:54:55.000002', '%x%v' ) DATE_FORMAT( '2023-12-31 19:54:55.000002', '%x%v' ) -201501 202352 ++-----------------------------------------------------+-----------------------------------------------------+ +| DATE_FORMAT( '2014-12-31 19:54:55.000002', '%x%v' ) | DATE_FORMAT( '2023-12-31 19:54:55.000002', '%x%v' ) | ++-----------------------------------------------------+-----------------------------------------------------+ +| 201501 | 202352 | ++-----------------------------------------------------+-----------------------------------------------------+ +###nvl drop table if exists t1; create table t1 (a bigint, b datetime(6)); insert into t1 values(1,now()); select a from t1 where nvl(null,b) <= now(); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 t1 a a 8 20 1 Y 32896 0 63 -a -1 ++------+ +| a | ++------+ +| 1 | ++------+ select a from t1; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def test t1 t1 a a 8 20 1 Y 32896 0 63 -a -1 ++------+ +| a | ++------+ +| 1 | ++------+ select !w, !!w, !(!w), ! !w, not w, not not w, w is true, w is not false, (not w) is false, not(w is false), if(w,'true','false'), !1+1, !'a', !false, !isnull('a'), !!isnull('a') from (select 0 w union select 1) w; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def !w !w 8 1 1 Y 32896 0 63 @@ -1809,6 +2849,9 @@ def !'a' !'a' 8 1 1 N 32897 0 63 def !false !false 8 1 1 N 32897 0 63 def !isnull('a') !isnull('a') 8 1 1 N 32897 0 63 def !!isnull('a') !!isnull('a') 8 1 1 N 32897 0 63 -!w !!w !(!w) ! !w not w not not w w is true w is not false (not w) is false not(w is false) if(w,'true','false') !1+1 !'a' !false !isnull('a') !!isnull('a') -1 0 0 0 1 0 0 0 0 0 false 1 1 1 1 0 -0 1 1 1 0 1 1 1 1 1 true 1 1 1 1 0 ++------+------+-------+------+-------+-----------+-----------+----------------+------------------+-----------------+----------------------+------+------+--------+--------------+---------------+ +| !w | !!w | !(!w) | ! !w | not w | not not w | w is true | w is not false | (not w) is false | not(w is false) | if(w,'true','false') | !1+1 | !'a' | !false | !isnull('a') | !!isnull('a') | ++------+------+-------+------+-------+-----------+-----------+----------------+------------------+-----------------+----------------------+------+------+--------+--------------+---------------+ +| 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | false | 1 | 1 | 1 | 1 | 0 | +| 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | true | 1 | 1 | 1 | 1 | 0 | ++------+------+-------+------+-------+-----------+-----------+----------------+------------------+-----------------+----------------------+------+------+--------+--------------+---------------+ diff --git a/test/mysql_test/test_suite/meta_info/r/mysql/meta_const.result b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_const.result similarity index 98% rename from test/mysql_test/test_suite/meta_info/r/mysql/meta_const.result rename to tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_const.result index 46be2d481..270bdddc8 100644 --- a/test/mysql_test/test_suite/meta_info/r/mysql/meta_const.result +++ b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_const.result @@ -1,7 +1,4 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; alter system flush plan cache global; -connection default; select 3; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def 3 3 8 1 1 N 32897 0 63 diff --git a/test/mysql_test/test_suite/meta_info/r/mysql/meta_func.result b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func.result similarity index 98% rename from test/mysql_test/test_suite/meta_info/r/mysql/meta_func.result rename to tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func.result index 5d0f8410f..3c26b874f 100644 --- a/test/mysql_test/test_suite/meta_info/r/mysql/meta_func.result +++ b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func.result @@ -1,7 +1,4 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; alter system flush plan cache global; -connection default; drop table if exists tt; create table tt(c tinyint); select avg(c) from tt; diff --git a/test/mysql_test/test_suite/meta_info/r/mysql/meta_func_ceil.result b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func_ceil.result similarity index 98% rename from test/mysql_test/test_suite/meta_info/r/mysql/meta_func_ceil.result rename to tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func_ceil.result index 0434e3a8e..180607c52 100644 --- a/test/mysql_test/test_suite/meta_info/r/mysql/meta_func_ceil.result +++ b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func_ceil.result @@ -1,7 +1,4 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; alter system flush plan cache global; -connection default; select ceil(3.1415926); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def ceil(3.1415926) ceil(3.1415926) 246 9 1 N 32897 0 63 diff --git a/test/mysql_test/test_suite/meta_info/r/mysql/meta_func_floor.result b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func_floor.result similarity index 99% rename from test/mysql_test/test_suite/meta_info/r/mysql/meta_func_floor.result rename to tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func_floor.result index 8c2e761eb..76ca4a3bf 100644 --- a/test/mysql_test/test_suite/meta_info/r/mysql/meta_func_floor.result +++ b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_func_floor.result @@ -1,7 +1,4 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; alter system flush plan cache global; -connection default; select 1.345; Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def 1.345 1.345 246 6 5 N 32897 3 63 diff --git a/test/mysql_test/test_suite/meta_info/r/mysql/meta_test_func_return_type.result b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_test_func_return_type.result similarity index 99% rename from test/mysql_test/test_suite/meta_info/r/mysql/meta_test_func_return_type.result rename to tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_test_func_return_type.result index 03e8ebcb6..7d5a7753d 100644 --- a/test/mysql_test/test_suite/meta_info/r/mysql/meta_test_func_return_type.result +++ b/tools/deploy/mysql_test/test_suite/meta_info/r/mysql/meta_test_func_return_type.result @@ -1,7 +1,4 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; alter system flush plan cache global; -connection default; select repeat(' ',10); Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr def repeat(' ',10) repeat(' ',10) 253 2048 30 Y 0 31 45 diff --git a/test/mysql_test/test_suite/meta_info/t/meta_build_in_func_test.test b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_build_in_func_test.test similarity index 99% rename from test/mysql_test/test_suite/meta_info/t/meta_build_in_func_test.test rename to tools/deploy/mysql_test/test_suite/meta_info/t/meta_build_in_func_test.test index 522b9953d..f097f975a 100644 --- a/test/mysql_test/test_suite/meta_info/t/meta_build_in_func_test.test +++ b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_build_in_func_test.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: xiaochu.yh +# owner group: SQL1 +# description: OUR GOAL: Make all this simple and effective! #--real_sleep 30 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); @@ -15,7 +18,7 @@ connection default; --disable_warnings drop table if exists build_in_func_test_table; #--enable_warnings - +--result_format 4 # test substr() create table build_in_func_test_table (varchar_c varchar(128) primary key, date_c datetime(6),v varchar(128)); @@ -513,6 +516,7 @@ select abs(NULL); select abs(Null); select abs(5-5); select abs(-0.1*3); +####test:unhex select unhex('434445'); select unhex('C434445'); select unhex(repeat('4',100)); diff --git a/test/mysql_test/test_suite/meta_info/t/meta_const.test b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_const.test similarity index 98% rename from test/mysql_test/test_suite/meta_info/t/meta_const.test rename to tools/deploy/mysql_test/test_suite/meta_info/t/meta_const.test index a6504b021..caa373a00 100644 --- a/test/mysql_test/test_suite/meta_info/t/meta_const.test +++ b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_const.test @@ -1,6 +1,8 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: xiaochu.yh +# owner group: SQL1 # Test of functions connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/meta_info/t/meta_func.test b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_func.test similarity index 98% rename from test/mysql_test/test_suite/meta_info/t/meta_func.test rename to tools/deploy/mysql_test/test_suite/meta_info/t/meta_func.test index 7748755ad..b20c6cd1a 100644 --- a/test/mysql_test/test_suite/meta_info/t/meta_func.test +++ b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_func.test @@ -1,3 +1,5 @@ +# owner: xiaochu.yh +# owner group: SQL1 # Test of functions connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/meta_info/t/meta_func_ceil.test b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_func_ceil.test similarity index 94% rename from test/mysql_test/test_suite/meta_info/t/meta_func_ceil.test rename to tools/deploy/mysql_test/test_suite/meta_info/t/meta_func_ceil.test index 642c44339..d2168d8f7 100644 --- a/test/mysql_test/test_suite/meta_info/t/meta_func_ceil.test +++ b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_func_ceil.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: zuojiao.hzj +# owner group: SQL1 +# description: OUR GOAL: Make all this simple and effective! #/--disableabortonerror/ #/test for ceil function in ob_expr_func_ceil.cpp/ diff --git a/test/mysql_test/test_suite/meta_info/t/meta_func_floor.test b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_func_floor.test similarity index 97% rename from test/mysql_test/test_suite/meta_info/t/meta_func_floor.test rename to tools/deploy/mysql_test/test_suite/meta_info/t/meta_func_floor.test index d9a2ebfdf..10442c2eb 100644 --- a/test/mysql_test/test_suite/meta_info/t/meta_func_floor.test +++ b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_func_floor.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: zuojiao.hzj +# owner group: SQL1 +# description: OUR GOAL: Make all this simple and effective! #/--disableabortonerror/ #/test for floor function in ob_expr_func_floor.cpp/ diff --git a/test/mysql_test/test_suite/meta_info/t/meta_test_func_return_type.test b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_test_func_return_type.test similarity index 97% rename from test/mysql_test/test_suite/meta_info/t/meta_test_func_return_type.test rename to tools/deploy/mysql_test/test_suite/meta_info/t/meta_test_func_return_type.test index 7dce72373..3eedd2468 100644 --- a/test/mysql_test/test_suite/meta_info/t/meta_test_func_return_type.test +++ b/tools/deploy/mysql_test/test_suite/meta_info/t/meta_test_func_return_type.test @@ -1,6 +1,11 @@ +#owner: guoping.wgp +#owner group: SQL1 --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: xiaochu.yh +# owner group: SQL1 +# description: OUR GOAL: Make all this simple and effective! ##test retrun data type of func connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); @@ -16,6 +21,7 @@ connection default; select repeat(' ',10); +####test:date func return type test #extract(unit FROM date) select extract(MICROSECOND FROM '2012-09-01 10:35:07:99999') ; select extract(SECOND FROM '2012-09-01 10:35:07:99999') ; diff --git a/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result new file mode 100644 index 000000000..abb89dd2d --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/bushy_leading_hint.result @@ -0,0 +1,2584 @@ +drop database if exists bushy_leading_hint_db; +create database bushy_leading_hint_db; +use bushy_leading_hint_db; +drop table if exists nn1; +drop table if exists nn2; +drop table if exists t1; +drop table if exists t2; +drop table if exists t3; +create table nn1(c1 int, c2 int, c3 varchar(10)); +create table nn2(d1 int, d2 int, d3 varchar(10)); +create table t1(a int, b int, c int); +create table t2(a int, b int, c int); +create table t3(a int, b int, c int); +result_format: 4 +explain_protocol: 2 +### 1, 基本测试 ### +EXPLAIN select /*+ leading(c, (b , a) ) */ count(*),sum(a.c1+b.d2*a.c2) from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5 ; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------- +|0 |SCALAR GROUP BY| |1 |8050479355| +|1 | HASH JOIN | |9605960100|5706597501| +|2 | TABLE SCAN |c |100000 |61860 | +|3 | HASH JOIN | |9801000 |6088891 | +|4 | TABLE SCAN |b |100000 |64066 | +|5 | TABLE SCAN |a |10000 |80811 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1 + b.d2 * a.c2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1 + b.d2 * a.c2)]) + 1 - output([a.c1 + b.d2 * a.c2]), filter(nil), + equal_conds([b.d1 = c.c1]), other_conds(nil) + 2 - output([c.c1]), filter(nil), + access([c.c1]), partitions(p0) + 3 - output([a.c1], [b.d2], [a.c2], [b.d1]), filter(nil), + equal_conds([a.c1 = b.d2]), other_conds(nil) + 4 - output([b.d2], [b.d1]), filter(nil), + access([b.d2], [b.d1]), partitions(p0) + 5 - output([a.c1], [a.c2]), filter([a.c2 < 5]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+ leading(c, (b , a) ) */ count(*),sum(a.c1+b.d2*a.c2) from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5 ; ++----------+---------------------+ +| count(*) | sum(a.c1+b.d2*a.c2) | ++----------+---------------------+ +| 0 | NULL | ++----------+---------------------+ + +EXPLAIN select /*+ leading(c, (b , a) ) */ count(a.c1), sum(a.c2+b.d2) from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on c.c1 = b.d2 + 1 where a.c2 < 15 ; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------- +|0 |SCALAR GROUP BY| |1 |8944325397| +|1 | HASH JOIN | |9702990000|6576767969| +|2 | TABLE SCAN |c |100000 |61860 | +|3 | HASH JOIN | |9801000 |6068310 | +|4 | TABLE SCAN |b |100000 |61860 | +|5 | TABLE SCAN |a |10000 |80811 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(a.c1)], [T_FUN_SUM(a.c2 + b.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(a.c1)], [T_FUN_SUM(a.c2 + b.d2)]) + 1 - output([a.c1], [a.c2 + b.d2]), filter(nil), + equal_conds([c.c1 = b.d2 + 1]), other_conds(nil) + 2 - output([c.c1]), filter(nil), + access([c.c1]), partitions(p0) + 3 - output([a.c1], [a.c2], [b.d2], [b.d2 + 1]), filter(nil), + equal_conds([a.c1 = b.d2]), other_conds(nil) + 4 - output([b.d2]), filter(nil), + access([b.d2]), partitions(p0) + 5 - output([a.c1], [a.c2]), filter([a.c2 < 15]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+ leading(c, (b , a) ) */ count(a.c1), sum(a.c2+b.d2) from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on c.c1 = b.d2 + 1 where a.c2 < 15 ; ++-------------+----------------+ +| count(a.c1) | sum(a.c2+b.d2) | ++-------------+----------------+ +| 0 | NULL | ++-------------+----------------+ + +EXPLAIN select /*+ leading((c, d), (a , b) ) */ count(*),sum(a.c1),sum(b.d2) from nn1 a join nn2 b on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 ; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------- +|0 |SCALAR GROUP BY| |1 |8.380092e+12 | +|1 | HASH JOIN | |9.414801e+12 |5.583958e+12 | +|2 | HASH JOIN | |98010000 |58414634 | +|3 | TABLE SCAN |c |100000 |64066 | +|4 | TABLE SCAN |d |100000 |61860 | +|5 | HASH JOIN | |9801000 |6003290 | +|6 | TABLE SCAN |a |10000 |80811 | +|7 | TABLE SCAN |b |100000 |64066 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1)], [T_FUN_SUM(b.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1)], [T_FUN_SUM(b.d2)]) + 1 - output([a.c1], [b.d2]), filter(nil), + equal_conds([b.d1 = c.c1]), other_conds(nil) + 2 - output([c.c1]), filter(nil), + equal_conds([d.c2 = c.c2]), other_conds(nil) + 3 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 4 - output([d.c2]), filter(nil), + access([d.c2]), partitions(p0) + 5 - output([a.c1], [b.d2], [b.d1]), filter(nil), + equal_conds([a.c1 = b.d2]), other_conds(nil) + 6 - output([a.c1]), filter([a.c2 < 5]), + access([a.c1], [a.c2]), partitions(p0) + 7 - output([b.d2], [b.d1]), filter(nil), + access([b.d2], [b.d1]), partitions(p0) + +select /*+ leading((c, d), (a , b) ) */ count(*),sum(a.c1),sum(b.d2) from nn1 a join nn2 b on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 ; ++----------+-----------+-----------+ +| count(*) | sum(a.c1) | sum(b.d2) | ++----------+-----------+-----------+ +| 0 | NULL | NULL | ++----------+-----------+-----------+ + +EXPLAIN select /*+ leading(c, d, (a , b)) */ count(*),sum(a.c1+b.d1+c.c1-d.c2) from +nn1 a, nn2 b , nn1 c, nn1 d +where a.c1 = b.d2 and b.d1 = c.c1 and d.c2 = c.c2; +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------- +|0 |SCALAR GROUP BY| |1 |7.881015e+13 | +|1 | HASH JOIN | |9.414801e+13 |5.583777e+13 | +|2 | HASH JOIN | |98010000 |58414634 | +|3 | TABLE SCAN |c |100000 |64066 | +|4 | TABLE SCAN |d |100000 |61860 | +|5 | HASH JOIN | |98010000 |58396259 | +|6 | TABLE SCAN |a |100000 |61860 | +|7 | TABLE SCAN |b |100000 |64066 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1 + b.d1 + c.c1 - d.c2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1 + b.d1 + c.c1 - d.c2)]) + 1 - output([a.c1 + b.d1 + c.c1 - d.c2]), filter(nil), + equal_conds([b.d1 = c.c1]), other_conds(nil) + 2 - output([c.c1], [d.c2]), filter(nil), + equal_conds([d.c2 = c.c2]), other_conds(nil) + 3 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 4 - output([d.c2]), filter(nil), + access([d.c2]), partitions(p0) + 5 - output([a.c1], [b.d1]), filter(nil), + equal_conds([a.c1 = b.d2]), other_conds(nil) + 6 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 7 - output([b.d2], [b.d1]), filter(nil), + access([b.d2], [b.d1]), partitions(p0) + +select /*+ leading(c, d, (a , b)) */ count(*),sum(a.c1+b.d1+c.c1-d.c2) from +nn1 a, nn2 b , nn1 c, nn1 d +where a.c1 = b.d2 and b.d1 = c.c1 and d.c2 = c.c2; ++----------+--------------------------+ +| count(*) | sum(a.c1+b.d1+c.c1-d.c2) | ++----------+--------------------------+ +| 0 | NULL | ++----------+--------------------------+ + +EXPLAIN select /*+ leading(c, (a ,d, b) ) use_hash(c,d) */ count(a.c1),sum(b.d1*b.d2-a.c2) from nn1 a join nn2 b on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 and d.c1 = b.d2 +and d.c2 = a.c1 ; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |SCALAR GROUP BY| |1 |472450168| +|1 | HASH JOIN | |461372348|359873990| +|2 | TABLE SCAN |c |100000 |64066 | +|3 | HASH JOIN | |48029801 |28858467 | +|4 | HASH JOIN | |49005 |195270 | +|5 | TABLE SCAN |a |10000 |80811 | +|6 | TABLE SCAN |d |500 |72438 | +|7 | TABLE SCAN |b |100000 |64066 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(a.c1)], [T_FUN_SUM(b.d1 * b.d2 - a.c2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(a.c1)], [T_FUN_SUM(b.d1 * b.d2 - a.c2)]) + 1 - output([a.c1], [b.d1 * b.d2 - a.c2]), filter(nil), + equal_conds([d.c2 = c.c2], [b.d1 = c.c1]), other_conds(nil) + 2 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 3 - output([a.c1], [b.d1], [b.d2], [a.c2], [d.c2]), filter(nil), + equal_conds([d.c1 = b.d2]), other_conds(nil) + 4 - output([a.c1], [a.c2], [d.c2], [d.c1]), filter(nil), + equal_conds([d.c2 = a.c1]), other_conds(nil) + 5 - output([a.c1], [a.c2]), filter([a.c2 < 5]), + access([a.c1], [a.c2]), partitions(p0) + 6 - output([d.c2], [d.c1]), filter([d.c1 = d.c2]), + access([d.c2], [d.c1]), partitions(p0) + 7 - output([b.d2], [b.d1]), filter(nil), + access([b.d2], [b.d1]), partitions(p0) + +select /*+ leading(c, (a ,d, b) ) use_hash(c,d) */ count(a.c1),sum(b.d1*b.d2-a.c2) from nn1 a join nn2 b on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 and d.c1 = b.d2 +and d.c2 = a.c1 ; ++-------------+---------------------+ +| count(a.c1) | sum(b.d1*b.d2-a.c2) | ++-------------+---------------------+ +| 0 | NULL | ++-------------+---------------------+ + +EXPLAIN select /*+ leading(c, (d, b) ) */ count(*) +from nn2 b, nn1 c, nn1 d +where b.d1 = c.c1 and d.c2 = c.c2 and d.c1 = b.d2; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |SCALAR GROUP BY| |1 |913518336| +|1 | HASH JOIN | |941480150|733683949| +|2 | TABLE SCAN |c |100000 |64066 | +|3 | HASH JOIN | |98010000 |58416840 | +|4 | TABLE SCAN |d |100000 |64066 | +|5 | TABLE SCAN |b |100000 |64066 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 1 - output([1]), filter(nil), + equal_conds([b.d1 = c.c1], [d.c2 = c.c2]), other_conds(nil) + 2 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 3 - output([b.d1], [d.c2]), filter(nil), + equal_conds([d.c1 = b.d2]), other_conds(nil) + 4 - output([d.c2], [d.c1]), filter(nil), + access([d.c2], [d.c1]), partitions(p0) + 5 - output([b.d1], [b.d2]), filter(nil), + access([b.d1], [b.d2]), partitions(p0) + +select /*+ leading(c, (d, b) ) */ count(*) +from nn2 b, nn1 c, nn1 d +where b.d1 = c.c1 and d.c2 = c.c2 and d.c1 = b.d2; ++----------+ +| count(*) | ++----------+ +| 0 | ++----------+ + +EXPLAIN select /*+ leading(t2, (t1, t3), t7, (t8, t9), (t4, t5, t6)) */ +count(*) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1 +and t1.c3 = 'hello11' and t2.c2 < 4 ; +Query Plan +================================================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +--------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |3.657784e+23 | +|1 | HASH JOIN | |4.214917e+23 |2.852683e+23 | +|2 | HASH JOIN | |4.567804e+16 |2.709096e+16 | +|3 | NESTED-LOOP JOIN CARTESIAN| |47551773548 |33650150006 | +|4 | HASH JOIN | |475518 |564912 | +|5 | TABLE SCAN |t2 |10000 |80811 | +|6 | HASH JOIN | |4852 |187694 | +|7 | TABLE SCAN |t1 |990 |110903 | +|8 | TABLE SCAN |t3 |500 |72438 | +|9 | MATERIAL | |100000 |80235 | +|10| TABLE SCAN |t7 |100000 |61860 | +|11| HASH JOIN | |98010000 |58394053 | +|12| TABLE SCAN |t8 |100000 |61860 | +|13| TABLE SCAN |t9 |100000 |61860 | +|14| MERGE JOIN | |96059601000 |57043655452 | +|15| MERGE JOIN | |98010000 |58661407 | +|16| SORT | |100000 |252929 | +|17| TABLE SCAN |t4 |100000 |61860 | +|18| SORT | |100000 |252929 | +|19| TABLE SCAN |t5 |100000 |61860 | +|20| SORT | |100000 |252929 | +|21| TABLE SCAN |t6 |100000 |61860 | +================================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 1 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1], [t6.c1 = t7.c1]), other_conds(nil) + 2 - output([t3.c1], [t7.c1]), filter(nil), + equal_conds([t7.c1 = t8.c1]), other_conds(nil) + 3 - output([t3.c1], [t7.c1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t3.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter([t2.c2 < 4]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t3.c1], [t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c2]), other_conds(nil) + 7 - output([t1.c1]), filter([t1.c3 = 'hello11']), + access([t1.c1], [t1.c3]), partitions(p0) + 8 - output([t3.c2], [t3.c1]), filter([t3.c2 = t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 9 - output([t7.c1]), filter(nil) + 10 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + 11 - output([t8.c1]), filter(nil), + equal_conds([t8.c1 = t9.c1]), other_conds(nil) + 12 - output([t8.c1]), filter(nil), + access([t8.c1]), partitions(p0) + 13 - output([t9.c1]), filter(nil), + access([t9.c1]), partitions(p0) + 14 - output([t4.c1], [t6.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 15 - output([t4.c1], [t5.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 16 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 17 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 18 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 19 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 20 - output([t6.c1]), filter(nil), sort_keys([t6.c1, ASC]) + 21 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + +select /*+ leading(t2, (t1, t3), t7, (t8, t9), (t4, t5, t6)) */ +count(*) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1 +and t1.c3 = 'hello11' and t2.c2 < 4 ; ++----------+ +| count(*) | ++----------+ +| 0 | ++----------+ + +EXPLAIN select /*+ leading(t1,t2,t3,(t4,t5,t6),(t7,t8)) */ count(*),sum(t1.c1+t2.d1+t3.c1+t4.d2-t5.c1+t6.d2-t7.c1-t8.d2) +from nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5 , nn2 t6, nn1 t7, nn2 t8 +where t1.c1 = t2.d1 and t1.c2 = t3.c1 and +t4.d1 = t1.c1 and t5.c1 = t2.d2 and t6.d2 = t3.c1 AND +t7.c1 = t2.d1 and t7.c2 = t5.c1 and t8.d1 = t4.d2 and t8.d2 = t6.d2; +Query Plan +================================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +---------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |9.398245e+21 | +|1 | HASH JOIN | |8.345138e+21 |7.362007e+21 | +|2 | HASH JOIN | |9.043821e+19 |6.878214e+19 | +|3 | HASH JOIN | |96059601000 |57191122317 | +|4 | HASH JOIN | |98010000 |58416840 | +|5 | TABLE SCAN |t1 |100000 |64066 | +|6 | TABLE SCAN |t2 |100000 |64066 | +|7 | TABLE SCAN |t3 |100000 |61860 | +|8 | NESTED-LOOP JOIN CARTESIAN | |1.000000e+15 |7.076464e+14 | +|9 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076537535 | +|10| TABLE SCAN |t4 |100000 |64066 | +|11| MATERIAL | |100000 |80235 | +|12| TABLE SCAN |t5 |100000 |61860 | +|13| MATERIAL | |100000 |80235 | +|14| TABLE SCAN |t6 |100000 |61860 | +|15| NESTED-LOOP JOIN CARTESIAN | |10000000000 |7181005020 | +|16| TABLE SCAN |t7 |100000 |64066 | +|17| MATERIAL | |100000 |100817 | +|18| TABLE SCAN |t8 |100000 |64066 | +================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t2.d1 + t3.c1 + t4.d2 - t5.c1 + t6.d2 - t7.c1 - t8.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t2.d1 + t3.c1 + t4.d2 - t5.c1 + t6.d2 - t7.c1 - t8.d2)]) + 1 - output([t1.c1 + t2.d1 + t3.c1 + t4.d2 - t5.c1 + t6.d2 - t7.c1 - t8.d2]), filter(nil), + equal_conds([t7.c1 = t2.d1], [t7.c2 = t5.c1], [t8.d1 = t4.d2], [t8.d2 = t6.d2]), other_conds(nil) + 2 - output([t1.c1], [t2.d1], [t3.c1], [t4.d2], [t5.c1], [t6.d2]), filter(nil), + equal_conds([t4.d1 = t1.c1], [t5.c1 = t2.d2], [t6.d2 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t2.d1], [t3.c1], [t2.d2]), filter(nil), + equal_conds([t1.c2 = t3.c1]), other_conds(nil) + 4 - output([t1.c1], [t2.d1], [t2.d2], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.d1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.d1], [t2.d2]), filter(nil), + access([t2.d1], [t2.d2]), partitions(p0) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.d2], [t5.c1], [t6.d2], [t4.d1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([t4.d2], [t5.c1], [t4.d1]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([t4.d1], [t4.d2]), filter(nil), + access([t4.d1], [t4.d2]), partitions(p0) + 11 - output([t5.c1]), filter(nil) + 12 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 13 - output([t6.d2]), filter(nil) + 14 - output([t6.d2]), filter(nil), + access([t6.d2]), partitions(p0) + 15 - output([t7.c1], [t8.d2], [t7.c2], [t8.d1]), filter(nil), + conds(nil), nl_params_(nil) + 16 - output([t7.c1], [t7.c2]), filter(nil), + access([t7.c1], [t7.c2]), partitions(p0) + 17 - output([t8.d2], [t8.d1]), filter(nil) + 18 - output([t8.d1], [t8.d2]), filter(nil), + access([t8.d1], [t8.d2]), partitions(p0) + +select /*+ leading(t1,t2,t3,(t4,t5,t6),(t7,t8)) */ count(*),sum(t1.c1+t2.d1+t3.c1+t4.d2-t5.c1+t6.d2-t7.c1-t8.d2) +from nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5 , nn2 t6, nn1 t7, nn2 t8 +where t1.c1 = t2.d1 and t1.c2 = t3.c1 and +t4.d1 = t1.c1 and t5.c1 = t2.d2 and t6.d2 = t3.c1 AND +t7.c1 = t2.d1 and t7.c2 = t5.c1 and t8.d1 = t4.d2 and t8.d2 = t6.d2; ++----------+------------------------------------------------------+ +| count(*) | sum(t1.c1+t2.d1+t3.c1+t4.d2-t5.c1+t6.d2-t7.c1-t8.d2) | ++----------+------------------------------------------------------+ +| 0 | NULL | ++----------+------------------------------------------------------+ + +EXPLAIN select /*+ leading(c, (d, (a,b))) */ count(a.c1+b.d2+a.c2) from nn1 a join nn2 b on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 ; +Query Plan +================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |9.273318e+12 | +|1 | HASH JOIN | |9.414801e+12 |7.474974e+12 | +|2 | TABLE SCAN |c |100000 |64066 | +|3 | NESTED-LOOP JOIN CARTESIAN| |980100000000 |724281093079 | +|4 | TABLE SCAN |d |100000 |61860 | +|5 | MATERIAL | |9801000 |13207172 | +|6 | HASH JOIN | |9801000 |6003290 | +|7 | TABLE SCAN |a |10000 |80811 | +|8 | TABLE SCAN |b |100000 |64066 | +================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(a.c1 + b.d2 + a.c2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(a.c1 + b.d2 + a.c2)]) + 1 - output([a.c1 + b.d2 + a.c2]), filter(nil), + equal_conds([d.c2 = c.c2], [b.d1 = c.c1]), other_conds(nil) + 2 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 3 - output([a.c1], [b.d2], [a.c2], [d.c2], [b.d1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([d.c2]), filter(nil), + access([d.c2]), partitions(p0) + 5 - output([a.c1], [b.d2], [a.c2], [b.d1]), filter(nil) + 6 - output([a.c1], [b.d2], [a.c2], [b.d1]), filter(nil), + equal_conds([a.c1 = b.d2]), other_conds(nil) + 7 - output([a.c1], [a.c2]), filter([a.c2 < 5]), + access([a.c1], [a.c2]), partitions(p0) + 8 - output([b.d2], [b.d1]), filter(nil), + access([b.d2], [b.d1]), partitions(p0) + +select /*+ leading(c, (d, (a,b))) */ count(a.c1+b.d2+a.c2) from nn1 a join nn2 b on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 ; ++-----------------------+ +| count(a.c1+b.d2+a.c2) | ++-----------------------+ +| 0 | ++-----------------------+ + +EXPLAIN select /*+ leading(t2, (t1, (t3 , (t7, (t8, (t9 , (t4, (t5, (t6))))))))) */ +count(*),sum(t1.c1+t2.c1+t3.c1+t4.c2-t5.c1+t6.c2-t7.c1-t8.c2)+count(t9.c1) +from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; +Query Plan +===================================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |3.792487e+26 | +|1 | MERGE JOIN | |4.257289e+26 |2.528101e+26 | +|2 | SORT | |100000 |252929 | +|3 | TABLE SCAN |t2 |100000 |61860 | +|4 | MERGE JOIN | |4.343729e+23 |2.580911e+23 | +|5 | SORT | |100000 |252929 | +|6 | TABLE SCAN |t1 |100000 |61860 | +|7 | MERGE JOIN | |4.431924e+20 |4.113088e+20 | +|8 | SORT | |500 |73171 | +|9 | TABLE SCAN |t3 |500 |72438 | +|10| MERGE JOIN | |9.043821e+19 |1.359770e+20 | +|11| SORT | |100000 |254319 | +|12| TABLE SCAN |t7 |100000 |61860 | +|13| SORT | |9.414801e+18 |7.346846e+19 | +|14| HASH JOIN | |9.414801e+18 |5.594100e+18 | +|15| TABLE SCAN |t8 |100000 |64066 | +|16| NESTED-LOOP JOIN CARTESIAN| |9.605960e+15 |7.199026e+15 | +|17| TABLE SCAN |t9 |100000 |61860 | +|18| MATERIAL | |96059601000 |145300260450 | +|19| MERGE JOIN | |96059601000 |57043698704 | +|20| SORT | |100000 |274554 | +|21| TABLE SCAN |t4 |100000 |64066 | +|22| MERGE JOIN | |98010000 |58683033 | +|23| SORT | |100000 |252929 | +|24| TABLE SCAN |t5 |100000 |61860 | +|25| SORT | |100000 |274554 | +|26| TABLE SCAN |t6 |100000 |64066 | +===================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t2.c1 + t3.c1 + t4.c2 - t5.c1 + t6.c2 - t7.c1 - t8.c2) + cast(T_FUN_COUNT(t9.c1), DECIMAL(20, 0))]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t2.c1 + t3.c1 + t4.c2 - t5.c1 + t6.c2 - t7.c1 - t8.c2)], [T_FUN_COUNT(t9.c1)]) + 1 - output([t9.c1], [t1.c1 + t2.c1 + t3.c1 + t4.c2 - t5.c1 + t6.c2 - t7.c1 - t8.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 3 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 4 - output([t1.c1], [t3.c1], [t4.c2], [t5.c1], [t6.c2], [t7.c1], [t8.c2], [t9.c1]), filter(nil), + equal_conds([t1.c1 = t3.c2]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c2], [t5.c1], [t6.c2], [t7.c1], [t8.c2], [t9.c1], [t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 9 - output([t3.c2], [t3.c1]), filter([t3.c2 = t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 10 - output([t4.c2], [t5.c1], [t6.c2], [t7.c1], [t8.c2], [t9.c1], [t4.c1]), filter(nil), + equal_conds([t6.c1 = t7.c1], [t7.c1 = t8.c1]), other_conds(nil) + 11 - output([t7.c1]), filter(nil), sort_keys([t7.c1, ASC], [t7.c1, ASC]) + 12 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + 13 - output([t4.c2], [t5.c1], [t6.c2], [t8.c2], [t9.c1], [t4.c1], [t6.c1], [t8.c1]), filter(nil), sort_keys([t6.c1, ASC], [t8.c1, ASC]) + 14 - output([t4.c2], [t5.c1], [t6.c2], [t8.c2], [t9.c1], [t4.c1], [t6.c1], [t8.c1]), filter(nil), + equal_conds([t8.c1 = t9.c1]), other_conds(nil) + 15 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 16 - output([t4.c2], [t5.c1], [t6.c2], [t9.c1], [t4.c1], [t6.c1]), filter(nil), + conds(nil), nl_params_(nil) + 17 - output([t9.c1]), filter(nil), + access([t9.c1]), partitions(p0) + 18 - output([t4.c2], [t5.c1], [t6.c2], [t4.c1], [t6.c1]), filter(nil) + 19 - output([t4.c2], [t5.c1], [t6.c2], [t4.c1], [t6.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 20 - output([t4.c2], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 21 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 22 - output([t5.c1], [t6.c2], [t6.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 23 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 24 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 25 - output([t6.c2], [t6.c1]), filter(nil), sort_keys([t6.c1, ASC]) + 26 - output([t6.c1], [t6.c2]), filter(nil), + access([t6.c1], [t6.c2]), partitions(p0) + +select /*+ leading(t2, (t1, (t3 , (t7, (t8, (t9 , (t4, (t5, (t6))))))))) */ +count(*),sum(t1.c1+t2.c1+t3.c1+t4.c2-t5.c1+t6.c2-t7.c1-t8.c2)+count(t9.c1) +from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; ++----------+-------------------------------------------------------------------+ +| count(*) | sum(t1.c1+t2.c1+t3.c1+t4.c2-t5.c1+t6.c2-t7.c1-t8.c2)+count(t9.c1) | ++----------+-------------------------------------------------------------------+ +| 0 | NULL | ++----------+-------------------------------------------------------------------+ + +EXPLAIN select /*+ leading(t1, ((t2, t3), t4), (t5, t6)) */ count(t1.c1), count(t2.d1 * t3.c1), sum(t4.d1 + t5.c1) +from nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5, nn2 t6 +where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 + t2.d2 = t4.d1 + t1.c2 and + t4.d1 = t5.c1 + t6.d2 and t2.d2 = t5.c1 and t2.d1 = t6.d2 and + t1.c1 + t4.d2 = t5.c2 + t6.d2 - 1; +Query Plan +========================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +-------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |5.069834e+15 | +|1 | HASH JOIN | |1.153431e+15 |4.727273e+15 | +|2 | HASH JOIN | |4.802980e+13 |3.541698e+15 | +|3 | TABLE SCAN |t1 |100000 |64066 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1.000000e+15 |7.180911e+14 | +|5 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076537535 | +|6 | TABLE SCAN |t2 |100000 |64066 | +|7 | MATERIAL | |100000 |80235 | +|8 | TABLE SCAN |t3 |100000 |61860 | +|9 | MATERIAL | |100000 |100817 | +|10| TABLE SCAN |t4 |100000 |64066 | +|11| NESTED-LOOP JOIN CARTESIAN | |10000000000 |7076537535 | +|12| TABLE SCAN |t5 |100000 |64066 | +|13| MATERIAL | |100000 |80235 | +|14| TABLE SCAN |t6 |100000 |61860 | +========================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(t1.c1)], [T_FUN_COUNT(t2.d1 * t3.c1)], [T_FUN_SUM(t4.d1 + t5.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)], [T_FUN_COUNT(t2.d1 * t3.c1)], [T_FUN_SUM(t4.d1 + t5.c1)]) + 1 - output([t1.c1], [t2.d1 * t3.c1], [t4.d1 + t5.c1]), filter(nil), + equal_conds([t4.d1 = t5.c1 + t6.d2], [t2.d2 = t5.c1], [t2.d1 = t6.d2], [t1.c1 + t4.d2 = t5.c2 + t6.d2 - 1]), other_conds(nil) + 2 - output([t1.c1], [t2.d1], [t3.c1], [t4.d1], [t2.d2], [t1.c1 + t4.d2]), filter(nil), + equal_conds([t1.c1 = t2.d1], [t1.c2 = t3.c1]), other_conds([t1.c1 + t2.d2 = t4.d1 + t1.c2]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.d1], [t3.c1], [t4.d1], [t2.d2], [t4.d2]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.d1], [t3.c1], [t2.d2]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t2.d1], [t2.d2]), filter(nil), + access([t2.d1], [t2.d2]), partitions(p0) + 7 - output([t3.c1]), filter(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.d1], [t4.d2]), filter(nil) + 10 - output([t4.d1], [t4.d2]), filter(nil), + access([t4.d1], [t4.d2]), partitions(p0) + 11 - output([t5.c1], [t6.d2], [t5.c1 + t6.d2], [t5.c2 + t6.d2 - 1]), filter(nil), + conds(nil), nl_params_(nil) + 12 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 13 - output([t6.d2]), filter(nil) + 14 - output([t6.d2]), filter(nil), + access([t6.d2]), partitions(p0) + +select /*+ leading(t1, ((t2, t3), t4), (t5, t6)) */ count(t1.c1), count(t2.d1 * t3.c1), sum(t4.d1 + t5.c1) +from nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5, nn2 t6 +where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 + t2.d2 = t4.d1 + t1.c2 and + t4.d1 = t5.c1 + t6.d2 and t2.d2 = t5.c1 and t2.d1 = t6.d2 and + t1.c1 + t4.d2 = t5.c2 + t6.d2 - 1; ++--------------+----------------------+--------------------+ +| count(t1.c1) | count(t2.d1 * t3.c1) | sum(t4.d1 + t5.c1) | ++--------------+----------------------+--------------------+ +| 0 | 0 | NULL | ++--------------+----------------------+--------------------+ + +EXPLAIN select /*+ leading(t1, ((t2, t3), t4)) */ count(*), sum(t2.d1 * t3.c1 - t4.d2) +from nn1 t1, nn2 t2, nn1 t3, nn2 t4 +where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 + t2.d2 = t4.d1 + t1.c2; +Query Plan +========================================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |3.553417e+15 | +|1 | HASH JOIN | |4.802980e+13 |3.541698e+15 | +|2 | TABLE SCAN |t1 |100000 |64066 | +|3 | NESTED-LOOP JOIN CARTESIAN | |1.000000e+15 |7.180911e+14 | +|4 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076537535 | +|5 | TABLE SCAN |t2 |100000 |64066 | +|6 | MATERIAL | |100000 |80235 | +|7 | TABLE SCAN |t3 |100000 |61860 | +|8 | MATERIAL | |100000 |100817 | +|9 | TABLE SCAN |t4 |100000 |64066 | +========================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t2.d1 * t3.c1 - t4.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t2.d1 * t3.c1 - t4.d2)]) + 1 - output([t2.d1 * t3.c1 - t4.d2]), filter(nil), + equal_conds([t1.c1 = t2.d1], [t1.c2 = t3.c1]), other_conds([t1.c1 + t2.d2 = t4.d1 + t1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.d1], [t3.c1], [t4.d2], [t2.d2], [t4.d1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.d1], [t3.c1], [t2.d2]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.d1], [t2.d2]), filter(nil), + access([t2.d1], [t2.d2]), partitions(p0) + 6 - output([t3.c1]), filter(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.d2], [t4.d1]), filter(nil) + 9 - output([t4.d1], [t4.d2]), filter(nil), + access([t4.d1], [t4.d2]), partitions(p0) + +select /*+ leading(t1, ((t2, t3), t4)) */ count(*), sum(t2.d1 * t3.c1 - t4.d2) +from nn1 t1, nn2 t2, nn1 t3, nn2 t4 +where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 + t2.d2 = t4.d1 + t1.c2; ++----------+----------------------------+ +| count(*) | sum(t2.d1 * t3.c1 - t4.d2) | ++----------+----------------------------+ +| 0 | NULL | ++----------+----------------------------+ + +EXPLAIN select /*+ leading(t1, (t2, t3)) */ count(*), sum(t2.d1+t3.c2) +from nn1 t1, nn2 t2, nn1 t3 +where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 =t3.c1+t2.d2; +Query Plan +============================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +-------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |12409200897| +|1 | HASH JOIN | |480298005 |12292006804| +|2 | TABLE SCAN |t1 |100000 |64066 | +|3 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7181005020 | +|4 | TABLE SCAN |t2 |100000 |64066 | +|5 | MATERIAL | |100000 |100817 | +|6 | TABLE SCAN |t3 |100000 |64066 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t2.d1 + t3.c2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t2.d1 + t3.c2)]) + 1 - output([t2.d1 + t3.c2]), filter(nil), + equal_conds([t1.c1 = t2.d1], [t1.c2 = t3.c1], [t1.c1 = t3.c1 + t2.d2]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.d1], [t3.c2], [t3.c1], [t3.c1 + t2.d2]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.d1], [t2.d2]), filter(nil), + access([t2.d1], [t2.d2]), partitions(p0) + 5 - output([t3.c2], [t3.c1]), filter(nil) + 6 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select /*+ leading(t1, (t2, t3)) */ count(*), sum(t2.d1+t3.c2) +from nn1 t1, nn2 t2, nn1 t3 +where t1.c1 = t2.d1 and t1.c2 = t3.c1 and t1.c1 =t3.c1+t2.d2; ++----------+------------------+ +| count(*) | sum(t2.d1+t3.c2) | ++----------+------------------+ +| 0 | NULL | ++----------+------------------+ + +### 3, 复杂测试(集合、子查询中等) ### +EXPLAIN SELECT count(*), sum(b.d1) from + nn1 a, nn2 b, nn1 c +WHERE + a.c1 = b.d1 and b.d2 = c.c1 and c.c2 in ( + select + /*+ leading(x, ((y, z), x2, (y2,y3))) no_use_hash(y2, y3) */ + x.c1 + from nn1 x, nn2 y, nn1 z, nn1 x2, nn1 y2, nn1 y3 + where x.c2 = y.d2 and y.d1 = z.c2 and y2.c1 = y3.c1 + ); +Query Plan +======================================================================================= +|ID|OPERATOR |NAME |EST. ROWS |COST | +--------------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |9.983687e+23 | +|1 | HASH JOIN | |95099004990 |9.983687e+23 | +|2 | TABLE SCAN |a |100000 |61860 | +|3 | MERGE JOIN | |97029900 |9.983687e+23 | +|4 | SORT | |99000 |9.983687e+23 | +|5 | HASH SEMI JOIN | |99000 |9.983687e+23 | +|6 | TABLE SCAN |c |100000 |64066 | +|7 | SUBPLAN SCAN |VIEW1|9.414801e+23 |6.893247e+23 | +|8 | HASH JOIN | |9.414801e+23 |5.593798e+23 | +|9 | TABLE SCAN |x |100000 |64066 | +|10| NESTED-LOOP JOIN CARTESIAN | |9.605960e+20 |6.897886e+20 | +|11| NESTED-LOOP JOIN CARTESIAN| |9.801000e+12 |6.935632e+12 | +|12| HASH JOIN | |98010000 |58414634 | +|13| TABLE SCAN |y |100000 |64066 | +|14| TABLE SCAN |z |100000 |61860 | +|15| MATERIAL | |100000 |78030 | +|16| TABLE SCAN |x2 |100000 |59654 | +|17| MATERIAL | |98010000 |94680818 | +|18| MERGE JOIN | |98010000 |58661407 | +|19| SORT | |100000 |252929 | +|20| TABLE SCAN |y2 |100000 |61860 | +|21| SORT | |100000 |252929 | +|22| TABLE SCAN |y3 |100000 |61860 | +|23| SORT | |100000 |274554 | +|24| TABLE SCAN |b |100000 |64066 | +======================================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(b.d1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(b.d1)]) + 1 - output([b.d1]), filter(nil), + equal_conds([a.c1 = b.d1]), other_conds(nil) + 2 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 3 - output([b.d1]), filter(nil), + equal_conds([b.d2 = c.c1]), other_conds(nil) + 4 - output([c.c1]), filter(nil), sort_keys([c.c1, ASC]) + 5 - output([c.c1]), filter(nil), + equal_conds([c.c2 = VIEW1.c1]), other_conds(nil) + 6 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 7 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 8 - output([x.c1]), filter(nil), + equal_conds([x.c2 = y.d2]), other_conds(nil) + 9 - output([x.c2], [x.c1]), filter(nil), + access([x.c2], [x.c1]), partitions(p0) + 10 - output([y.d2]), filter(nil), + conds(nil), nl_params_(nil) + 11 - output([y.d2]), filter(nil), + conds(nil), nl_params_(nil) + 12 - output([y.d2]), filter(nil), + equal_conds([y.d1 = z.c2]), other_conds(nil) + 13 - output([y.d2], [y.d1]), filter(nil), + access([y.d2], [y.d1]), partitions(p0) + 14 - output([z.c2]), filter(nil), + access([z.c2]), partitions(p0) + 15 - output([1]), filter(nil) + 16 - output([1]), filter(nil), + access([x2.__pk_increment]), partitions(p0) + 17 - output([1]), filter(nil) + 18 - output([1]), filter(nil), + equal_conds([y2.c1 = y3.c1]), other_conds(nil) + 19 - output([y2.c1]), filter(nil), sort_keys([y2.c1, ASC]) + 20 - output([y2.c1]), filter(nil), + access([y2.c1]), partitions(p0) + 21 - output([y3.c1]), filter(nil), sort_keys([y3.c1, ASC]) + 22 - output([y3.c1]), filter(nil), + access([y3.c1]), partitions(p0) + 23 - output([b.d1], [b.d2]), filter(nil), sort_keys([b.d2, ASC]) + 24 - output([b.d1], [b.d2]), filter(nil), + access([b.d1], [b.d2]), partitions(p0) + +SELECT count(*), sum(b.d1) from + nn1 a, nn2 b, nn1 c +WHERE + a.c1 = b.d1 and b.d2 = c.c1 and c.c2 in ( + select + /*+ leading(x, ((y, z), x2, (y2,y3))) no_use_hash(y2, y3) */ + x.c1 + from nn1 x, nn2 y, nn1 z, nn1 x2, nn1 y2, nn1 y3 + where x.c2 = y.d2 and y.d1 = z.c2 and y2.c1 = y3.c1 + ); ++----------+-----------+ +| count(*) | sum(b.d1) | ++----------+-----------+ +| 0 | NULL | ++----------+-----------+ + +EXPLAIN select /*+ leading(t6, (t5, t4), (t3, t1), (t2)) */ count(*), sum(t2.c1) from nn1 t1, nn1 t2 , nn1 t3, nn1 t4, nn1 t5, nn1 t6 +where t1.c1 = t2.c1 and t2.c2 = t3.c1 and t3.c2 = t4.c1 and t4.c2 = t5.c1 and t5.c2 = t6.c1 and t5.c2 <> 44 +union ALL +select /* leading(t2, t1, (t4, t3, (t6, t5))) */ sum(t1.c1), max(t2.c2)+sum(t5.c1-t6.c2) from nn1 t1, nn1 t2 , nn1 t3, nn1 t4, nn1 t5, nn1 t6 +where t1.c1 = t2.c1 and t2.c2 = t3.c1 and t3.c2 = t4.c1 and t4.c2 = t5.c1 and t5.c2 = t6.c1 and t5.c2 <> 55; +Query Plan +================================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +---------------------------------------------------------------------------------- +|0 |UNION ALL | |2 |1.848325e+20 | +|1 | SCALAR GROUP BY | |1 |1.074258e+20 | +|2 | HASH JOIN | |8.687458e+19 |8.622818e+19 | +|3 | HASH JOIN | |9.043821e+18 |5.363726e+18 | +|4 | HASH JOIN | |92274469443 |54815299356 | +|5 | TABLE SCAN |t6 |98010 |78605 | +|6 | HASH JOIN | |96059601 |57274293 | +|7 | TABLE SCAN |t5 |98010 |80811 | +|8 | TABLE SCAN |t4 |100000 |64066 | +|9 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076537535 | +|10| TABLE SCAN |t3 |100000 |64066 | +|11| MATERIAL | |100000 |80235 | +|12| TABLE SCAN |t1 |100000 |61860 | +|13| TABLE SCAN |t2 |100000 |64066 | +|14| SCALAR GROUP BY | |1 |7.740665e+19 | +|15| HASH JOIN | |8.687458e+19 |5.160548e+19 | +|16| TABLE SCAN |t1 |100000 |61860 | +|17| HASH JOIN | |8.863849e+16 |5.265328e+16 | +|18| TABLE SCAN |t2 |100000 |64066 | +|19| HASH JOIN | |9.043821e+13 |5.372236e+13 | +|20| TABLE SCAN |t3 |100000 |64066 | +|21| HASH JOIN | |92274469443 |54813560253 | +|22| TABLE SCAN |t4 |100000 |64066 | +|23| HASH JOIN | |94148015 |56156658 | +|24| TABLE SCAN |t5 |98010 |80811 | +|25| TABLE SCAN |t6 |98010 |80811 | +================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([cast(T_FUN_COUNT(*), DECIMAL(20, 0))], [T_FUN_SUM(t2.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t2.c1)]) + 2 - output([t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t2.c2 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t3.c2 = t4.c1]), other_conds(nil) + 4 - output([t4.c1]), filter(nil), + equal_conds([t5.c2 = t6.c1]), other_conds(nil) + 5 - output([t6.c1]), filter([t6.c1 != 44]), + access([t6.c1]), partitions(p0) + 6 - output([t4.c1], [t5.c2]), filter(nil), + equal_conds([t4.c2 = t5.c1]), other_conds(nil) + 7 - output([t5.c1], [t5.c2]), filter([t5.c2 != 44]), + access([t5.c1], [t5.c2]), partitions(p0) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 9 - output([t1.c1], [t3.c1], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 11 - output([t1.c1]), filter(nil) + 12 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 13 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 14 - output([T_FUN_SUM(t1.c1)], [cast(T_FUN_MAX(t2.c2), DECIMAL(11, 0)) + T_FUN_SUM(t5.c1 - t6.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_MAX(t2.c2)], [T_FUN_SUM(t5.c1 - t6.c2)]) + 15 - output([t1.c1], [t2.c2], [t5.c1 - t6.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 16 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 17 - output([t2.c2], [t5.c1], [t6.c2], [t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c1]), other_conds(nil) + 18 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 19 - output([t5.c1], [t6.c2], [t3.c1]), filter(nil), + equal_conds([t3.c2 = t4.c1]), other_conds(nil) + 20 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 21 - output([t5.c1], [t6.c2], [t4.c1]), filter(nil), + equal_conds([t4.c2 = t5.c1]), other_conds(nil) + 22 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 23 - output([t5.c1], [t6.c2]), filter(nil), + equal_conds([t5.c2 = t6.c1]), other_conds(nil) + 24 - output([t5.c1], [t5.c2]), filter([t5.c2 != 55]), + access([t5.c1], [t5.c2]), partitions(p0) + 25 - output([t6.c1], [t6.c2]), filter([t6.c1 != 55]), + access([t6.c1], [t6.c2]), partitions(p0) + +select /*+ leading(t6, (t5, t4), (t3, t1), (t2)) */ count(*), sum(t2.c1) from nn1 t1, nn1 t2 , nn1 t3, nn1 t4, nn1 t5, nn1 t6 +where t1.c1 = t2.c1 and t2.c2 = t3.c1 and t3.c2 = t4.c1 and t4.c2 = t5.c1 and t5.c2 = t6.c1 and t5.c2 <> 44 +union ALL +select /* leading(t2, t1, (t4, t3, (t6, t5))) */ sum(t1.c1), max(t2.c2)+sum(t5.c1-t6.c2) from nn1 t1, nn1 t2 , nn1 t3, nn1 t4, nn1 t5, nn1 t6 +where t1.c1 = t2.c1 and t2.c2 = t3.c1 and t3.c2 = t4.c1 and t4.c2 = t5.c1 and t5.c2 = t6.c1 and t5.c2 <> 55; ++----------+------------+ +| count(*) | sum(t2.c1) | ++----------+------------+ +| 0 | NULL | +| NULL | NULL | ++----------+------------+ + +EXPLAIN select /*+ leading(t9, (t8, t7, (t6, t5), t4), (t3, t1), t2)*/ count(*),sum(t9.c1-t5.c1+t4.d2-t1.c1) from +nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5, nn2 t6, nn1 t7, nn2 t8, nn1 t9 +where mod(t1.c1, 3) = mod(t2.d2,2) and mod(t1.c1,5) = mod(t3.c1,4) and mod(t1.c2, 7) = mod(t4.d1, 3) AND + mod(t1.c2, 5) = mod(t5.c1, 6) and mod(t1.c1, 3) = mod(t6.d2, 2) and mod(t1.c1, 4) = mod(t7.c1,3) AND + mod(t1.c1, 7) = mod(t8.d1, 3) and mod(t1.c2, 5) = mod(t9.c1, 4) AND + mod(t2.d1,5) = mod(t3.c1,4) and mod(t2.d2, 7) = mod(t4.d1, 3) AND + mod(t2.d2, 5) = mod(t5.c1, 6) and mod(t2.d1, 3) = mod(t6.d2, 2) and mod(t2.d1, 4) = mod(t7.c1,3) AND + mod(t2.d1, 7) = mod(t8.d1, 3) and mod(t2.d2, 5) = mod(t9.c1, 4) AND + mod(t3.c2, 7) = mod(t4.d1, 3) AND + mod(t3.c2, 5) = mod(t5.c1, 6) and mod(t3.c1, 3) = mod(t6.d2, 2) and mod(t3.c1, 4) = mod(t7.c1,3) AND + mod(t3.c1, 7) = mod(t8.d1, 3) and mod(t3.c2, 5) = mod(t9.c1, 4) AND +mod(t4.d2, 5) = mod(t5.c1, 6) and mod(t4.d1, 3) = mod(t6.d2, 2) and mod(t4.d1, 4) = mod(t7.c1,3) AND + mod(t4.d1, 7) = mod(t8.d1, 3) and mod(t4.d2, 5) = mod(t9.c1, 4) and + mod(t5.c1, 2) = mod(t6.d2, 5) and mod(t5.c1, 4) = mod(t7.c1,1) AND + mod(t5.c1, 7) = mod(t8.d1, 6) and mod(t5.c2, 5) = mod(t9.c1, 4) AND + mod(t6.d1, 4) = mod(t7.c1,3) AND + mod(t6.d1, 7) = mod(t8.d1, 3) and mod(t6.d2, 5) = mod(t9.c1, 4) AND + mod(t7.c1, 7) = mod(t8.d1, 3) and mod(t7.c2, 5) = mod(t9.c1, 4) AND + mod(t8.d2, 5) = mod(t9.c1, 14) ; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------- +|0 |SCALAR GROUP BY | |1 |121810478| +|1 | HASH JOIN | |1 |121810478| +|2 | HASH JOIN | |1 |121721296| +|3 | HASH JOIN | |2 |121567394| +|4 | TABLE SCAN |t9 |100000 |61860 | +|5 | HASH JOIN | |1 |121390158| +|6 | HASH JOIN | |40 |121281543| +|7 | HASH JOIN | |50000000 |29942983 | +|8 | TABLE SCAN|t8 |100000 |64066 | +|9 | TABLE SCAN|t7 |100000 |64066 | +|10| HASH JOIN | |1250 |273556 | +|11| TABLE SCAN|t6 |100000 |64066 | +|12| TABLE SCAN|t5 |3 |80811 | +|13| TABLE SCAN |t4 |100000 |64066 | +|14| HASH JOIN | |7 |153893 | +|15| TABLE SCAN |t3 |500 |72438 | +|16| TABLE SCAN |t1 |3 |80811 | +|17| TABLE SCAN |t2 |1 |89183 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t9.c1 - t5.c1 + t4.d2 - t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t9.c1 - t5.c1 + t4.d2 - t1.c1)]) + 1 - output([t9.c1 - t5.c1 + t4.d2 - t1.c1]), filter(nil), + equal_conds([t1.c1 % 3 = t2.d2 % 2], [t2.d1 % 5 = t3.c1 % 4], [t2.d2 % 5 = t5.c1 % 6], [t2.d1 % 7 = t8.d1 % 3]), other_conds(nil) + 2 - output([t9.c1], [t5.c1], [t4.d2], [t1.c1], [t1.c1 % 3], [t3.c1 % 4], [t5.c1 % 6], [t8.d1 % 3]), filter(nil), + equal_conds([t1.c2 % 7 = t4.d1 % 3], [t1.c2 % 5 = t5.c1 % 6], [t1.c1 % 3 = t6.d2 % 2], [t1.c1 % 4 = t7.c1 % 3], [t1.c1 % 7 = t8.d1 % 3], [t1.c2 % 5 = t9.c1 % 4], [t3.c2 % 7 = t4.d1 % 3], [t3.c2 % 5 = t5.c1 % 6], [t3.c1 % 7 = t8.d1 % 3]), other_conds(nil) + 3 - output([t9.c1], [t5.c1], [t4.d2], [t8.d1], [t4.d1 % 3], [t5.c1 % 6], [t6.d2 % 2], [t7.c1 % 3], [t8.d1 % 3], [t9.c1 % 4], [t4.d1 % 3], [t5.c1 % 6], [t8.d1 % 3]), filter(nil), + equal_conds([t7.c2 % 5 = t9.c1 % 4], [t8.d2 % 5 = t9.c1 % 14]), other_conds(nil) + 4 - output([t9.c1], [t9.c1 % 4], [t9.c1 % 14]), filter(nil), + access([t9.c1]), partitions(p0) + 5 - output([t5.c1], [t4.d2], [t8.d1], [t4.d1], [t6.d2], [t7.c1], [t5.c1 % 6], [t7.c2 % 5], [t8.d2 % 5]), filter(nil), + equal_conds([t4.d2 % 5 = t5.c1 % 6], [t4.d1 % 4 = t7.c1 % 3], [t4.d1 % 7 = t8.d1 % 3]), other_conds(nil) + 6 - output([t5.c1], [t8.d1], [t6.d2], [t7.c1], [t5.c1 % 6], [t7.c2], [t8.d2], [t5.c1 % 6], [t7.c1 % 3], [t8.d1 % 3]), filter(nil), + equal_conds([t5.c1 % 4 = t7.c1 % 1], [t5.c1 % 7 = t8.d1 % 6], [t6.d1 % 4 = t7.c1 % 3], [t6.d1 % 7 = t8.d1 % 3]), other_conds(nil) + 7 - output([t8.d1], [t7.c1], [t7.c2], [t8.d2], [t7.c1 % 1], [t8.d1 % 6], [t7.c1 % 3], [t8.d1 % 3]), filter(nil), + equal_conds([t7.c1 % 7 = t8.d1 % 3]), other_conds(nil) + 8 - output([t8.d1], [t8.d2], [t8.d1 % 3]), filter(nil), + access([t8.d1], [t8.d2]), partitions(p0) + 9 - output([t7.c1], [t7.c2], [t7.c1 % 7]), filter(nil), + access([t7.c1], [t7.c2]), partitions(p0) + 10 - output([t5.c1], [t6.d2], [t5.c1 % 6], [t5.c1 % 4], [t5.c1 % 7], [t6.d1 % 4], [t6.d1 % 7]), filter(nil), + equal_conds([t5.c1 % 2 = t6.d2 % 5]), other_conds(nil) + 11 - output([t6.d2], [t6.d1], [t6.d2 % 5]), filter(nil), + access([t6.d2], [t6.d1]), partitions(p0) + 12 - output([t5.c1], [t5.c1 % 6], [t5.c1 % 2]), filter([t5.c1 % 6 = t5.c1 % 2], [t5.c1 % 6 = t5.c2 % 5]), + access([t5.c1], [t5.c2]), partitions(p0) + 13 - output([t4.d1], [t4.d2], [t4.d2 % 5], [t4.d1 % 4], [t4.d1 % 7]), filter(nil), + access([t4.d1], [t4.d2]), partitions(p0) + 14 - output([t1.c1], [t3.c1], [t1.c1 % 3], [t1.c2 % 7], [t1.c2 % 5], [t1.c1 % 3], [t1.c1 % 4], [t1.c1 % 7], [t1.c2 % 5], [t3.c2 % 7], [t3.c2 % 5], [t3.c1 % 7]), filter(nil), + equal_conds([t1.c1 % 5 = t3.c1 % 4]), other_conds(nil) + 15 - output([t3.c1], [t3.c2], [t3.c2 % 7], [t3.c1 % 4]), filter([t3.c2 % 7 = t3.c1 % 3]), + access([t3.c1], [t3.c2]), partitions(p0) + 16 - output([t1.c1], [t1.c2], [t1.c1 % 3], [t1.c2 % 7], [t1.c1 % 4], [t1.c1 % 5]), filter([t1.c1 % 3 = t1.c2 % 7], [t1.c1 % 5 = t1.c1 % 4]), + access([t1.c1], [t1.c2]), partitions(p0) + 17 - output([t2.d2 % 2], [t2.d1 % 5], [t2.d2 % 5], [t2.d1 % 7]), filter([t2.d2 % 2 = t2.d2 % 7], [t2.d2 % 2 = t2.d1 % 3], [t2.d1 % 5 = t2.d1 % 4]), + access([t2.d2], [t2.d1]), partitions(p0) + +select /*+ leading(t9, (t8, t7, (t6, t5), t4), (t3, t1), t2)*/ count(*),sum(t9.c1-t5.c1+t4.d2-t1.c1) from +nn1 t1, nn2 t2, nn1 t3, nn2 t4, nn1 t5, nn2 t6, nn1 t7, nn2 t8, nn1 t9 +where mod(t1.c1, 3) = mod(t2.d2,2) and mod(t1.c1,5) = mod(t3.c1,4) and mod(t1.c2, 7) = mod(t4.d1, 3) AND + mod(t1.c2, 5) = mod(t5.c1, 6) and mod(t1.c1, 3) = mod(t6.d2, 2) and mod(t1.c1, 4) = mod(t7.c1,3) AND + mod(t1.c1, 7) = mod(t8.d1, 3) and mod(t1.c2, 5) = mod(t9.c1, 4) AND + mod(t2.d1,5) = mod(t3.c1,4) and mod(t2.d2, 7) = mod(t4.d1, 3) AND + mod(t2.d2, 5) = mod(t5.c1, 6) and mod(t2.d1, 3) = mod(t6.d2, 2) and mod(t2.d1, 4) = mod(t7.c1,3) AND + mod(t2.d1, 7) = mod(t8.d1, 3) and mod(t2.d2, 5) = mod(t9.c1, 4) AND + mod(t3.c2, 7) = mod(t4.d1, 3) AND + mod(t3.c2, 5) = mod(t5.c1, 6) and mod(t3.c1, 3) = mod(t6.d2, 2) and mod(t3.c1, 4) = mod(t7.c1,3) AND + mod(t3.c1, 7) = mod(t8.d1, 3) and mod(t3.c2, 5) = mod(t9.c1, 4) AND +mod(t4.d2, 5) = mod(t5.c1, 6) and mod(t4.d1, 3) = mod(t6.d2, 2) and mod(t4.d1, 4) = mod(t7.c1,3) AND + mod(t4.d1, 7) = mod(t8.d1, 3) and mod(t4.d2, 5) = mod(t9.c1, 4) and + mod(t5.c1, 2) = mod(t6.d2, 5) and mod(t5.c1, 4) = mod(t7.c1,1) AND + mod(t5.c1, 7) = mod(t8.d1, 6) and mod(t5.c2, 5) = mod(t9.c1, 4) AND + mod(t6.d1, 4) = mod(t7.c1,3) AND + mod(t6.d1, 7) = mod(t8.d1, 3) and mod(t6.d2, 5) = mod(t9.c1, 4) AND + mod(t7.c1, 7) = mod(t8.d1, 3) and mod(t7.c2, 5) = mod(t9.c1, 4) AND + mod(t8.d2, 5) = mod(t9.c1, 14) ; ++----------+------------------------------+ +| count(*) | sum(t9.c1-t5.c1+t4.d2-t1.c1) | ++----------+------------------------------+ +| 0 | NULL | ++----------+------------------------------+ + +EXPLAIN select /*+ leading(a (c ,(b, d))) */ count(*),sum(a.c1) from nn1 a, (select * from nn2) b, +(select * from nn1 cc group by c1,c2) c, nn2 d +where a.c1 = c.c1 and b.d2 = d.d1 and c.c2 = d.d2; +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |7.889927e+12 | +|1 | HASH JOIN | |9.414801e+12 |5.592688e+12 | +|2 | TABLE SCAN |a |100000 |61860 | +|3 | HASH JOIN | |9605960101 |5787812376 | +|4 | SUBPLAN SCAN |c |10001 |111242 | +|5 | HASH GROUP BY| |10001 |109862 | +|6 | TABLE SCAN |cc |100000 |64066 | +|7 | HASH JOIN | |98010000 |58396259 | +|8 | TABLE SCAN |nn2 |100000 |61860 | +|9 | TABLE SCAN |d |100000 |64066 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1)]) + 1 - output([a.c1]), filter(nil), + equal_conds([a.c1 = c.c1]), other_conds(nil) + 2 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 3 - output([c.c1]), filter(nil), + equal_conds([c.c2 = d.d2]), other_conds(nil) + 4 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]) + 5 - output([cc.c1], [cc.c2]), filter(nil), + group([cc.c1], [cc.c2]), agg_func(nil) + 6 - output([cc.c1], [cc.c2]), filter(nil), + access([cc.c1], [cc.c2]), partitions(p0) + 7 - output([d.d2]), filter(nil), + equal_conds([nn2.d2 = d.d1]), other_conds(nil) + 8 - output([nn2.d2]), filter(nil), + access([nn2.d2]), partitions(p0) + 9 - output([d.d1], [d.d2]), filter(nil), + access([d.d1], [d.d2]), partitions(p0) + +select /*+ leading(a (c ,(b, d))) */ count(*),sum(a.c1) from nn1 a, (select * from nn2) b, +(select * from nn1 cc group by c1,c2) c, nn2 d +where a.c1 = c.c1 and b.d2 = d.d1 and c.c2 = d.d2; ++----------+-----------+ +| count(*) | sum(a.c1) | ++----------+-----------+ +| 0 | NULL | ++----------+-----------+ + +EXPLAIN select /*+ leading(a (c ,(b, d))) */count(*), sum(b.d2) from nn1 a left join nn2 b +on a.c1 = b.d1 left join nn1 c on b.d2 = c.c1 left join nn2 d on c.c2 = d.d2 +where a.c1 = b.d1 and b.d2 = c.c1 and c.c2 = d.d2; +Query Plan +===================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +--------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |7.891735e+13 | +|1 | HASH JOIN | |9.414801e+13 |5.594496e+13 | +|2 | TABLE SCAN |a |100000 |61860 | +|3 | HASH JOIN | |96059601000 |75954328743 | +|4 | TABLE SCAN |c |100000 |64066 | +|5 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076537535 | +|6 | TABLE SCAN |b |100000 |64066 | +|7 | MATERIAL | |100000 |80235 | +|8 | TABLE SCAN |d |100000 |61860 | +===================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(b.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(b.d2)]) + 1 - output([b.d2]), filter(nil), + equal_conds([a.c1 = b.d1]), other_conds(nil) + 2 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 3 - output([b.d2], [b.d1]), filter(nil), + equal_conds([b.d2 = c.c1], [c.c2 = d.d2]), other_conds(nil) + 4 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 5 - output([b.d2], [b.d1], [d.d2]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([b.d1], [b.d2]), filter(nil), + access([b.d1], [b.d2]), partitions(p0) + 7 - output([d.d2]), filter(nil) + 8 - output([d.d2]), filter(nil), + access([d.d2]), partitions(p0) + +select /*+ leading(a (c ,(b, d))) */count(*), sum(b.d2) from nn1 a left join nn2 b +on a.c1 = b.d1 left join nn1 c on b.d2 = c.c1 left join nn2 d on c.c2 = d.d2 +where a.c1 = b.d1 and b.d2 = c.c1 and c.c2 = d.d2; ++----------+-----------+ +| count(*) | sum(b.d2) | ++----------+-----------+ +| 0 | NULL | ++----------+-----------+ + +EXPLAIN select (select /*+ leading(a (c ,(b, d))) */ count(x.c2) from nn1 a left join nn2 b +on a.c1 = b.d1 left join nn1 c on b.d2 = c.c1 left join nn2 d on c.c2 = d.d2 +where a.c1 = b.d1 and b.d2 = c.c1 and c.c2 = d.d2 and x.c1 = a.c1 + b.d1 + c.c2 - d.d2 * 5) as x +from nn1 x; +Query Plan +=================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------- +|0 |SUBPLAN FILTER | |1 |2.405975e+13 | +|1 | SCALAR GROUP BY | |1 |83167 | +|2 | TABLE SCAN |x |100000 |64066 | +|3 | HASH JOIN | |470740074701|2.399478e+13 | +|4 | TABLE SCAN |a |100000 |61860 | +|5 | HASH JOIN | |96059601000 |75954328743 | +|6 | TABLE SCAN |c |100000 |64066 | +|7 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076537535 | +|8 | TABLE SCAN |b |100000 |64066 | +|9 | MATERIAL | |100000 |80235 | +|10| TABLE SCAN |d |100000 |61860 | +=================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([subquery(1)]), filter(nil), + exec_params_([T_FUN_COUNT(x.c2)], [x.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([T_FUN_COUNT(x.c2)], [x.c1]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(x.c2)]) + 2 - output([x.c1], [x.c2]), filter(nil), + access([x.c1], [x.c2]), partitions(p0) + 3 - output([?]), filter(nil), + equal_conds([a.c1 = b.d1]), other_conds([? = a.c1 + b.d1 + c.c2 - d.d2 * 5]) + 4 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 5 - output([b.d1], [c.c2], [d.d2]), filter(nil), + equal_conds([b.d2 = c.c1], [c.c2 = d.d2]), other_conds(nil) + 6 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 7 - output([b.d1], [d.d2], [b.d2]), filter(nil), + conds(nil), nl_params_(nil) + 8 - output([b.d1], [b.d2]), filter(nil), + access([b.d1], [b.d2]), partitions(p0) + 9 - output([d.d2]), filter(nil) + 10 - output([d.d2]), filter(nil), + access([d.d2]), partitions(p0) + +select (select /*+ leading(a (c ,(b, d))) */ count(x.c2) from nn1 a left join nn2 b +on a.c1 = b.d1 left join nn1 c on b.d2 = c.c1 left join nn2 d on c.c2 = d.d2 +where a.c1 = b.d1 and b.d2 = c.c1 and c.c2 = d.d2 and x.c1 = a.c1 + b.d1 + c.c2 - d.d2 * 5) as x +from nn1 x; ++------+ +| x | ++------+ +| NULL | ++------+ + +EXPLAIN select /* leading(t3 (t2 t1)) */ sum(t1.c1) from nn1 t1 , nn1 t2 , nn1 t3 where t2.c2=t1.c2 and t1.c1 = + (select /*+ leading(x,(y z)) */ count(*) from nn1 x, nn2 y, nn1 z where x.c1 = y.d1 and y.d2 = z.c1) + and t3.c1 in (1,2); +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS |COST | +-------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |77137853108| +|1 | NESTED-LOOP JOIN CARTESIAN| |1921192020 |76770881602| +|2 | HASH JOIN | |970299 |75411299985| +|3 | NESTED-LOOP JOIN | |990 |75410628385| +|4 | SUBPLAN SCAN |VIEW1|1 |75410533268| +|5 | SCALAR GROUP BY | |1 |75410533268| +|6 | HASH JOIN | |96059601000|57061957944| +|7 | TABLE SCAN |x |100000 |61860 | +|8 | HASH JOIN | |98010000 |58414634 | +|9 | TABLE SCAN |y |100000 |64066 | +|10| TABLE SCAN |z |100000 |61860 | +|11| TABLE SCAN |t1 |100000 |64066 | +|12| TABLE SCAN |t2 |100000 |61860 | +|13| MATERIAL | |1980 |70596 | +|14| TABLE SCAN |t3 |1980 |70232 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 1 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1]), filter(nil), + equal_conds([t2.c2 = t1.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + conds([t1.c1 = VIEW1.count(*)]), nl_params_(nil) + 4 - output([VIEW1.count(*)]), filter(nil), + access([VIEW1.count(*)]) + 5 - output([T_FUN_COUNT(*)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 6 - output([1]), filter(nil), + equal_conds([x.c1 = y.d1]), other_conds(nil) + 7 - output([x.c1]), filter(nil), + access([x.c1]), partitions(p0) + 8 - output([y.d1]), filter(nil), + equal_conds([y.d2 = z.c1]), other_conds(nil) + 9 - output([y.d1], [y.d2]), filter(nil), + access([y.d1], [y.d2]), partitions(p0) + 10 - output([z.c1]), filter(nil), + access([z.c1]), partitions(p0) + 11 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 12 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 13 - output([1]), filter(nil) + 14 - output([1]), filter([t3.c1 IN (1, 2)]), + access([t3.c1]), partitions(p0) + +select /* leading(t3 (t2 t1)) */ sum(t1.c1) from nn1 t1 , nn1 t2 , nn1 t3 where t2.c2=t1.c2 and t1.c1 = + (select /*+ leading(x,(y z)) */ count(*) from nn1 x, nn2 y, nn1 z where x.c1 = y.d1 and y.d2 = z.c1) + and t3.c1 in (1,2); ++------------+ +| sum(t1.c1) | ++------------+ +| NULL | ++------------+ + +### 4, 错误、无效或冗余的指定测试 ### +EXPLAIN select /*+ leading((d, c), b , a) */ count(*), sum(b.d1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d +where a.c1 = b.d1 and c.c2 = d.d1; +Query Plan +======================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |8.064079e+15 | +|1 | HASH JOIN | |9.605960e+15 |5.720197e+15 | +|2 | NESTED-LOOP JOIN CARTESIAN| |9.801000e+12 |6.935632e+12 | +|3 | HASH JOIN | |98010000 |58414634 | +|4 | TABLE SCAN |d |100000 |64066 | +|5 | TABLE SCAN |c |100000 |61860 | +|6 | MATERIAL | |100000 |80235 | +|7 | TABLE SCAN |b |100000 |61860 | +|8 | TABLE SCAN |a |100000 |61860 | +======================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(b.d1 + d.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(b.d1 + d.d2)]) + 1 - output([b.d1 + d.d2]), filter(nil), + equal_conds([a.c1 = b.d1]), other_conds(nil) + 2 - output([b.d1], [d.d2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([d.d2]), filter(nil), + equal_conds([c.c2 = d.d1]), other_conds(nil) + 4 - output([d.d1], [d.d2]), filter(nil), + access([d.d1], [d.d2]), partitions(p0) + 5 - output([c.c2]), filter(nil), + access([c.c2]), partitions(p0) + 6 - output([b.d1]), filter(nil) + 7 - output([b.d1]), filter(nil), + access([b.d1]), partitions(p0) + 8 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + +select /*+ leading((d, c), b , a) */ count(*), sum(b.d1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d +where a.c1 = b.d1 and c.c2 = d.d1; ++----------+----------------+ +| count(*) | sum(b.d1+d.d2) | ++----------+----------------+ +| 0 | NULL | ++----------+----------------+ + +EXPLAIN select /*+ leading((d, (c), (b)) , (a)) */ count(*),sum(a.c1+b.d2+c.c1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d +where a.c1 = b.d2 and c.c2 = d.d2; +Query Plan +======================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |8.064079e+15 | +|1 | HASH JOIN | |9.605960e+15 |5.720197e+15 | +|2 | NESTED-LOOP JOIN CARTESIAN| |9.801000e+12 |6.935631e+12 | +|3 | HASH JOIN | |98010000 |58396259 | +|4 | TABLE SCAN |d |100000 |61860 | +|5 | TABLE SCAN |c |100000 |64066 | +|6 | MATERIAL | |100000 |80235 | +|7 | TABLE SCAN |b |100000 |61860 | +|8 | TABLE SCAN |a |100000 |61860 | +======================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1 + b.d2 + c.c1 + d.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(a.c1 + b.d2 + c.c1 + d.d2)]) + 1 - output([a.c1 + b.d2 + c.c1 + d.d2]), filter(nil), + equal_conds([a.c1 = b.d2]), other_conds(nil) + 2 - output([b.d2], [c.c1], [d.d2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([c.c1], [d.d2]), filter(nil), + equal_conds([c.c2 = d.d2]), other_conds(nil) + 4 - output([d.d2]), filter(nil), + access([d.d2]), partitions(p0) + 5 - output([c.c2], [c.c1]), filter(nil), + access([c.c2], [c.c1]), partitions(p0) + 6 - output([b.d2]), filter(nil) + 7 - output([b.d2]), filter(nil), + access([b.d2]), partitions(p0) + 8 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + +select /*+ leading((d, (c), (b)) , (a)) */ count(*),sum(a.c1+b.d2+c.c1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d +where a.c1 = b.d2 and c.c2 = d.d2; ++----------+--------------------------+ +| count(*) | sum(a.c1+b.d2+c.c1+d.d2) | ++----------+--------------------------+ +| 0 | NULL | ++----------+--------------------------+ + +EXPLAIN select /*+ leading(b, (c d)) a) */ count(*), sum(b.d1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d +where a.c1 = b.d1 and c.c2 = d.d1; +Query Plan +======================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |8.064283e+15 | +|1 | HASH JOIN | |9.605960e+15 |5.720402e+15 | +|2 | NESTED-LOOP JOIN CARTESIAN| |9.801000e+12 |7.140422e+12 | +|3 | TABLE SCAN |b |100000 |61860 | +|4 | MATERIAL | |98010000 |112425375 | +|5 | HASH JOIN | |98010000 |58396259 | +|6 | TABLE SCAN |c |100000 |61860 | +|7 | TABLE SCAN |d |100000 |64066 | +|8 | TABLE SCAN |a |100000 |61860 | +======================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(b.d1 + d.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(b.d1 + d.d2)]) + 1 - output([b.d1 + d.d2]), filter(nil), + equal_conds([a.c1 = b.d1]), other_conds(nil) + 2 - output([b.d1], [d.d2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([b.d1]), filter(nil), + access([b.d1]), partitions(p0) + 4 - output([d.d2]), filter(nil) + 5 - output([d.d2]), filter(nil), + equal_conds([c.c2 = d.d1]), other_conds(nil) + 6 - output([c.c2]), filter(nil), + access([c.c2]), partitions(p0) + 7 - output([d.d1], [d.d2]), filter(nil), + access([d.d1], [d.d2]), partitions(p0) + 8 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + +select /*+ leading(b, (c d)) a) */ count(*), sum(b.d1+d.d2) from nn1 a, nn2 b, nn1 c, nn2 d +where a.c1 = b.d1 and c.c2 = d.d1; ++----------+----------------+ +| count(*) | sum(b.d1+d.d2) | ++----------+----------------+ +| 0 | NULL | ++----------+----------------+ + +EXPLAIN select /*+ leading(b1, (c1 d1 ) a1) */ count(*), sum(b.d2+d.d1*c.c1-a.c1) from nn1 a, nn2 b, nn1 c, nn2 d +where a.c1 = b.d1 and c.c2 = d.d1; +Query Plan +======================================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |9.342100e+15 | +|1 | NESTED-LOOP JOIN CARTESIAN| |9.605960e+15 |6.998218e+15 | +|2 | HASH JOIN | |98010000 |58396259 | +|3 | TABLE SCAN |a |100000 |61860 | +|4 | TABLE SCAN |b |100000 |64066 | +|5 | MATERIAL | |98010000 |112425375 | +|6 | HASH JOIN | |98010000 |58396259 | +|7 | TABLE SCAN |d |100000 |61860 | +|8 | TABLE SCAN |c |100000 |64066 | +======================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(b.d2 + d.d1 * c.c1 - a.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(b.d2 + d.d1 * c.c1 - a.c1)]) + 1 - output([b.d2 + d.d1 * c.c1 - a.c1]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([b.d2], [a.c1]), filter(nil), + equal_conds([a.c1 = b.d1]), other_conds(nil) + 3 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 4 - output([b.d1], [b.d2]), filter(nil), + access([b.d1], [b.d2]), partitions(p0) + 5 - output([d.d1], [c.c1]), filter(nil) + 6 - output([d.d1], [c.c1]), filter(nil), + equal_conds([c.c2 = d.d1]), other_conds(nil) + 7 - output([d.d1]), filter(nil), + access([d.d1]), partitions(p0) + 8 - output([c.c2], [c.c1]), filter(nil), + access([c.c2], [c.c1]), partitions(p0) + +select /*+ leading(b1, (c1 d1 ) a1) */ count(*), sum(b.d2+d.d1*c.c1-a.c1) from nn1 a, nn2 b, nn1 c, nn2 d +where a.c1 = b.d1 and c.c2 = d.d1; ++----------+--------------------------+ +| count(*) | sum(b.d2+d.d1*c.c1-a.c1) | ++----------+--------------------------+ +| 0 | NULL | ++----------+--------------------------+ + +EXPLAIN select /*+ leading((((t2,t1,t4),t3),t5), (t6),(t7))*/ count(*), sum(t6.c1+t7.c1+t4.c2) from +nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6, nn1 t7 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1; +Query Plan +==================================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |3.713206e+20 | +|1 | MERGE JOIN | |4.431924e+20 |2.631803e+20 | +|2 | MERGE JOIN | |4.521910e+17 |2.685499e+17 | +|3 | MERGE JOIN | |4.613723e+14 |2.999941e+14 | +|4 | SORT | |470740074701 |2.629763e+13 | +|5 | HASH JOIN | |470740074701 |2.406748e+13 | +|6 | NESTED-LOOP JOIN CARTESIAN| |9.801000e+12 |7.038000e+12 | +|7 | HASH JOIN | |98010000 |58394053 | +|8 | TABLE SCAN |t2 |100000 |61860 | +|9 | TABLE SCAN |t1 |100000 |61860 | +|10| MATERIAL | |100000 |100817 | +|11| TABLE SCAN |t4 |100000 |64066 | +|12| TABLE SCAN |t3 |500 |72438 | +|13| SORT | |100000 |252929 | +|14| TABLE SCAN |t5 |100000 |61860 | +|15| SORT | |100000 |252929 | +|16| TABLE SCAN |t6 |100000 |61860 | +|17| SORT | |100000 |252929 | +|18| TABLE SCAN |t7 |100000 |61860 | +==================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t6.c1 + t7.c1 + t4.c2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t6.c1 + t7.c1 + t4.c2)]) + 1 - output([t6.c1 + t7.c1 + t4.c2]), filter(nil), + equal_conds([t6.c1 = t7.c1]), other_conds(nil) + 2 - output([t6.c1], [t4.c2]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 3 - output([t4.c2], [t5.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 4 - output([t4.c2], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 5 - output([t4.c2], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t3.c2], [t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t4.c2], [t4.c1], [t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t4.c2], [t4.c1]), filter(nil) + 11 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 12 - output([t3.c2], [t3.c1]), filter([t3.c2 = t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 13 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 14 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 15 - output([t6.c1]), filter(nil), sort_keys([t6.c1, ASC]) + 16 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 17 - output([t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 18 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + +select /*+ leading((((t2,t1,t4),t3),t5), (t6),(t7))*/ count(*), sum(t6.c1+t7.c1+t4.c2) from +nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6, nn1 t7 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1; ++----------+------------------------+ +| count(*) | sum(t6.c1+t7.c1+t4.c2) | ++----------+------------------------+ +| 0 | NULL | ++----------+------------------------+ + +EXPLAIN select /*+ leading(t4,t6,t5) */ count(*), sum(t2.c2+t3.c1) +from nn1 t1 left join nn1 t2 on t1.c1 = t2.c1 left JOIN +nn1 t3 on t3.c2 IN(1,23,4,2,5,6) join nn1 t4 on t3.c1=t4.c1 join nn1 t5 on t4.c2=t5.c2 +join nn1 t6 on t5.c1 = t6.c2 left join nn1 t7 on t1.c1=t7.c1; +Query Plan +=================================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |4.515457e+23 | +|1 | HASH OUTER JOIN | |5.372030e+23 |3.204666e+23 | +|2 | HASH JOIN | |5.481103e+20 |3.543583e+20 | +|3 | NESTED-LOOP JOIN CARTESIAN | |9.414801e+18 |6.858953e+18 | +|4 | HASH JOIN | |96059601000 |87302993787 | +|5 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076537535 | +|6 | TABLE SCAN |t4 |100000 |64066 | +|7 | MATERIAL | |100000 |80235 | +|8 | TABLE SCAN |t6 |100000 |61860 | +|9 | TABLE SCAN |t5 |100000 |64066 | +|10| MATERIAL | |98010000 |112425375 | +|11| HASH OUTER JOIN | |98010000 |58396259 | +|12| TABLE SCAN |t1 |100000 |61860 | +|13| TABLE SCAN |t2 |100000 |64066 | +|14| TABLE SCAN |t3 |5940 |72438 | +|15| TABLE SCAN |t7 |100000 |61860 | +=================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t2.c2 + t3.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t2.c2 + t3.c1)]) + 1 - output([t2.c2 + t3.c1]), filter(nil), + equal_conds([t1.c1 = t7.c1]), other_conds(nil) + 2 - output([t2.c2], [t3.c1], [t1.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 3 - output([t2.c2], [t1.c1], [t4.c1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t4.c1]), filter(nil), + equal_conds([t4.c2 = t5.c2], [t5.c1 = t6.c2]), other_conds(nil) + 5 - output([t4.c1], [t4.c2], [t6.c2]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 7 - output([t6.c2]), filter(nil) + 8 - output([t6.c2]), filter(nil), + access([t6.c2]), partitions(p0) + 9 - output([t5.c2], [t5.c1]), filter(nil), + access([t5.c2], [t5.c1]), partitions(p0) + 10 - output([t2.c2], [t1.c1]), filter(nil) + 11 - output([t2.c2], [t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 12 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 13 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 14 - output([t3.c1]), filter([t3.c2 IN (1, 23, 4, 2, 5, 6)]), + access([t3.c2], [t3.c1]), partitions(p0) + 15 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + +select /*+ leading(t4,t6,t5) */ count(*), sum(t2.c2+t3.c1) +from nn1 t1 left join nn1 t2 on t1.c1 = t2.c1 left JOIN +nn1 t3 on t3.c2 IN(1,23,4,2,5,6) join nn1 t4 on t3.c1=t4.c1 join nn1 t5 on t4.c2=t5.c2 +join nn1 t6 on t5.c1 = t6.c2 left join nn1 t7 on t1.c1=t7.c1; ++----------+------------------+ +| count(*) | sum(t2.c2+t3.c1) | ++----------+------------------+ +| 0 | NULL | ++----------+------------------+ + +### 6, 嵌套hint和hint的print测试 ### +EXPLAIN select /*+ leading(c, (a ,(d, b)) ) */ count(a.c1+b.d2) , sum(b.d2+b.d2*a.c1) from nn1 a join nn2 b on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 and d.c1 = b.d2 +and d.c2 = a.c1 ; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |SCALAR GROUP BY| |1 |472792374| +|1 | HASH JOIN | |461372348|360216196| +|2 | TABLE SCAN |c |100000 |64066 | +|3 | HASH JOIN | |48029801 |29200673 | +|4 | TABLE SCAN |a |10000 |80811 | +|5 | HASH JOIN | |490050 |460608 | +|6 | TABLE SCAN |d |500 |72438 | +|7 | TABLE SCAN |b |100000 |64066 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(a.c1 + b.d2)], [T_FUN_SUM(b.d2 + b.d2 * a.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(a.c1 + b.d2)], [T_FUN_SUM(b.d2 + b.d2 * a.c1)]) + 1 - output([a.c1 + b.d2], [b.d2 + b.d2 * a.c1]), filter(nil), + equal_conds([d.c2 = c.c2], [b.d1 = c.c1]), other_conds(nil) + 2 - output([c.c1], [c.c2]), filter(nil), + access([c.c1], [c.c2]), partitions(p0) + 3 - output([a.c1], [b.d2], [d.c2], [b.d1]), filter(nil), + equal_conds([d.c2 = a.c1]), other_conds(nil) + 4 - output([a.c1]), filter([a.c2 < 5]), + access([a.c1], [a.c2]), partitions(p0) + 5 - output([b.d2], [d.c2], [b.d1]), filter(nil), + equal_conds([d.c1 = b.d2]), other_conds(nil) + 6 - output([d.c2], [d.c1]), filter([d.c1 = d.c2]), + access([d.c2], [d.c1]), partitions(p0) + 7 - output([b.d2], [b.d1]), filter(nil), + access([b.d2], [b.d1]), partitions(p0) + +select /*+ leading(c, (a ,(d, b)) ) */ count(a.c1+b.d2) , sum(b.d2+b.d2*a.c1) from nn1 a join nn2 b on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 and d.c1 = b.d2 +and d.c2 = a.c1 ; ++------------------+---------------------+ +| count(a.c1+b.d2) | sum(b.d2+b.d2*a.c1) | ++------------------+---------------------+ +| 0 | NULL | ++------------------+---------------------+ + +create view v1 as select /*+ leading(c, b , a ) use_hash(b a) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2, c.c3 as c_c3 from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5; +show create view v1; +View Create View character_set_client collation_connection +v1 CREATE VIEW `v1` AS select /*+ LEADING(c b a) USE_HASH((b) (a)) */`bushy_leading_hint_db`.`a`.`c1` AS `a_c1`,`bushy_leading_hint_db`.`a`.`c2` AS `a_c2`,`bushy_leading_hint_db`.`a`.`c3` AS `a_c3`,`bushy_leading_hint_db`.`b`.`d1` AS `d1`,`bushy_leading_hint_db`.`b`.`d2` AS `d2`,`bushy_leading_hint_db`.`b`.`d3` AS `d3`,`bushy_leading_hint_db`.`c`.`c1` AS `c_c1`,`bushy_leading_hint_db`.`c`.`c2` AS `c_c2`,`bushy_leading_hint_db`.`c`.`c3` AS `c_c3` from ((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`bushy_leading_hint_db`.`a`.`c1` = `bushy_leading_hint_db`.`b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`bushy_leading_hint_db`.`b`.`d1` = `bushy_leading_hint_db`.`c`.`c1`))) where (`bushy_leading_hint_db`.`a`.`c2` < 5) utf8mb4 utf8mb4_general_ci + +create view v2 as select /*+ leading(c, (b , a)) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2, c.c3 as c_c3 from nn1 a join nn2 b on a.c1 = b.d2 join nn1 c on b.d1 = c.c1 where a.c2 < 5 ; +show create view v2; +View Create View character_set_client collation_connection +v2 CREATE VIEW `v2` AS select /*+ LEADING(c (b a)) */`bushy_leading_hint_db`.`a`.`c1` AS `a_c1`,`bushy_leading_hint_db`.`a`.`c2` AS `a_c2`,`bushy_leading_hint_db`.`a`.`c3` AS `a_c3`,`bushy_leading_hint_db`.`b`.`d1` AS `d1`,`bushy_leading_hint_db`.`b`.`d2` AS `d2`,`bushy_leading_hint_db`.`b`.`d3` AS `d3`,`bushy_leading_hint_db`.`c`.`c1` AS `c_c1`,`bushy_leading_hint_db`.`c`.`c2` AS `c_c2`,`bushy_leading_hint_db`.`c`.`c3` AS `c_c3` from ((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`bushy_leading_hint_db`.`a`.`c1` = `bushy_leading_hint_db`.`b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`bushy_leading_hint_db`.`b`.`d1` = `bushy_leading_hint_db`.`c`.`c1`))) where (`bushy_leading_hint_db`.`a`.`c2` < 5) utf8mb4 utf8mb4_general_ci + +create view v3 as select /*+ leading(c, (d, (a,b))) */ a.c1 as a_c1, a.c2 as a_c2, a.c3 as a_c3, b.d1, b.d2, b.d3, c.c1 as c_c1, c.c2 as c_c2, c.c3 as c_c3 from nn1 a join nn2 b +on a.c1 = b.d2 +join nn1 c on b.d1 = c.c1 join nn1 d on d.c2 = c.c2 where a.c2 < 5 ; +show create view v3; +View Create View character_set_client collation_connection +v3 CREATE VIEW `v3` AS select /*+ LEADING(c (d (a b))) */`bushy_leading_hint_db`.`a`.`c1` AS `a_c1`,`bushy_leading_hint_db`.`a`.`c2` AS `a_c2`,`bushy_leading_hint_db`.`a`.`c3` AS `a_c3`,`bushy_leading_hint_db`.`b`.`d1` AS `d1`,`bushy_leading_hint_db`.`b`.`d2` AS `d2`,`bushy_leading_hint_db`.`b`.`d3` AS `d3`,`bushy_leading_hint_db`.`c`.`c1` AS `c_c1`,`bushy_leading_hint_db`.`c`.`c2` AS `c_c2`,`bushy_leading_hint_db`.`c`.`c3` AS `c_c3` from (((`bushy_leading_hint_db`.`nn1` `a` join `bushy_leading_hint_db`.`nn2` `b` on ((`bushy_leading_hint_db`.`a`.`c1` = `bushy_leading_hint_db`.`b`.`d2`))) join `bushy_leading_hint_db`.`nn1` `c` on ((`bushy_leading_hint_db`.`b`.`d1` = `bushy_leading_hint_db`.`c`.`c1`))) join `bushy_leading_hint_db`.`nn1` `d` on ((`bushy_leading_hint_db`.`d`.`c2` = `bushy_leading_hint_db`.`c`.`c2`))) where (`bushy_leading_hint_db`.`a`.`c2` < 5) utf8mb4 utf8mb4_general_ci + +create view v4 as +select /*+ leading(t2, (t1, t3), (t7, (t8, t9)), (t4, t5, t6)) */ +t1.c1 as x, t3.c2 as y, t5.c2 as z from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; + +show create view v4; +View Create View character_set_client collation_connection +v4 CREATE VIEW `v4` AS select /*+ LEADING(t2 (t1 t3) (t7 (t8 t9)) (t4 t5 t6)) */`bushy_leading_hint_db`.`t1`.`c1` AS `x`,`bushy_leading_hint_db`.`t3`.`c2` AS `y`,`bushy_leading_hint_db`.`t5`.`c2` AS `z` from `bushy_leading_hint_db`.`nn1` `t1`,`bushy_leading_hint_db`.`nn1` `t2`,`bushy_leading_hint_db`.`nn1` `t3`,`bushy_leading_hint_db`.`nn1` `t4`,`bushy_leading_hint_db`.`nn1` `t5`,`bushy_leading_hint_db`.`nn1` `t6`,`bushy_leading_hint_db`.`nn1` `t7`,`bushy_leading_hint_db`.`nn1` `t8`,`bushy_leading_hint_db`.`nn1` `t9` where (`bushy_leading_hint_db`.`t1`.`c1` = `bushy_leading_hint_db`.`t2`.`c1`) and (`bushy_leading_hint_db`.`t1`.`c1` = `bushy_leading_hint_db`.`t3`.`c2`) and (`bushy_leading_hint_db`.`t2`.`c1` = `bushy_leading_hint_db`.`t3`.`c1`) and (`bushy_leading_hint_db`.`t3`.`c1` = `bushy_leading_hint_db`.`t4`.`c1`) and (`bushy_leading_hint_db`.`t4`.`c1` = `bushy_leading_hint_db`.`t5`.`c1`) and (`bushy_leading_hint_db`.`t5`.`c1` = `bushy_leading_hint_db`.`t6`.`c1`) and (`bushy_leading_hint_db`.`t6`.`c1` = `bushy_leading_hint_db`.`t7`.`c1`) and (`bushy_leading_hint_db`.`t7`.`c1` = `bushy_leading_hint_db`.`t8`.`c1`) and (`bushy_leading_hint_db`.`t8`.`c1` = `bushy_leading_hint_db`.`t9`.`c1`) and (`bushy_leading_hint_db`.`t8`.`c1` = `bushy_leading_hint_db`.`t2`.`c1`) and (`bushy_leading_hint_db`.`t1`.`c1` = `bushy_leading_hint_db`.`t9`.`c1`) utf8mb4 utf8mb4_general_ci +EXPLAIN select count(*), sum(x+y-z*4) from v4; +Query Plan +================================================================================ +|ID|OPERATOR |NAME|EST. ROWS |COST | +-------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |3.920151e+26 | +|1 | HASH JOIN | |4.257289e+26 |2.881360e+26 | +|2 | NESTED-LOOP JOIN CARTESIAN| |4.613723e+19 |3.361230e+19 | +|3 | HASH JOIN | |480298005 |285722945 | +|4 | TABLE SCAN |t2 |100000 |61860 | +|5 | HASH JOIN | |490050 |534664 | +|6 | TABLE SCAN |t1 |100000 |61860 | +|7 | TABLE SCAN |t3 |500 |72438 | +|8 | MATERIAL | |96059601000 |109997592500 | +|9 | MERGE JOIN | |96059601000 |57043655452 | +|10| SORT | |100000 |252929 | +|11| TABLE SCAN |t7 |100000 |61860 | +|12| MERGE JOIN | |98010000 |58661407 | +|13| SORT | |100000 |252929 | +|14| TABLE SCAN |t8 |100000 |61860 | +|15| SORT | |100000 |252929 | +|16| TABLE SCAN |t9 |100000 |61860 | +|17| MERGE JOIN | |96059601000 |57043677078 | +|18| MERGE JOIN | |98010000 |58683033 | +|19| SORT | |100000 |252929 | +|20| TABLE SCAN |t4 |100000 |61860 | +|21| SORT | |100000 |274554 | +|22| TABLE SCAN |t5 |100000 |64066 | +|23| SORT | |100000 |252929 | +|24| TABLE SCAN |t6 |100000 |61860 | +================================================================================ + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t3.c2 - t5.c2 * 4)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t3.c2 - t5.c2 * 4)]) + 1 - output([t1.c1 + t3.c2 - t5.c2 * 4]), filter(nil), + equal_conds([t3.c1 = t4.c1], [t6.c1 = t7.c1]), other_conds(nil) + 2 - output([t1.c1], [t3.c2], [t3.c1], [t7.c1]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t3.c2], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t3.c2], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c2]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c2], [t3.c1]), filter([t3.c2 = t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 8 - output([t7.c1]), filter(nil) + 9 - output([t7.c1]), filter(nil), + equal_conds([t7.c1 = t8.c1]), other_conds(nil) + 10 - output([t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 11 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + 12 - output([t8.c1]), filter(nil), + equal_conds([t8.c1 = t9.c1]), other_conds(nil) + 13 - output([t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 14 - output([t8.c1]), filter(nil), + access([t8.c1]), partitions(p0) + 15 - output([t9.c1]), filter(nil), sort_keys([t9.c1, ASC]) + 16 - output([t9.c1]), filter(nil), + access([t9.c1]), partitions(p0) + 17 - output([t5.c2], [t4.c1], [t6.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 18 - output([t5.c2], [t4.c1], [t5.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 19 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 20 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 21 - output([t5.c2], [t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 22 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 23 - output([t6.c1]), filter(nil), sort_keys([t6.c1, ASC]) + 24 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + +select count(*), sum(x+y-z*4) from v4; ++----------+--------------+ +| count(*) | sum(x+y-z*4) | ++----------+--------------+ +| 0 | NULL | ++----------+--------------+ + +EXPLAIN select /*+ leading(t2, (t1, t3), (t7, (t8, t9))) */ +count(*)+sum(t1.c1+t4.c2+t5.c1+t5.c2-5*t9.c1) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; +Query Plan +=================================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |5.427614e+26 | +|1 | HASH JOIN | |4.257289e+26 |4.388823e+26 | +|2 | MERGE JOIN | |4.431924e+25 |2.631837e+25 | +|3 | MERGE JOIN | |4.521910e+22 |2.718869e+22 | +|4 | SORT | |4.613723e+19 |3.636932e+20 | +|5 | NESTED-LOOP JOIN CARTESIAN| |4.613723e+19 |3.361230e+19 | +|6 | MERGE JOIN | |480298005 |285820977 | +|7 | SORT | |100000 |252929 | +|8 | TABLE SCAN |t2 |100000 |61860 | +|9 | MERGE JOIN | |490050 |630610 | +|10| SORT | |100000 |252929 | +|11| TABLE SCAN |t1 |100000 |61860 | +|12| SORT | |500 |73171 | +|13| TABLE SCAN |t3 |500 |72438 | +|14| MATERIAL | |96059601000 |109997592500 | +|15| MERGE JOIN | |96059601000 |57043655452 | +|16| SORT | |100000 |252929 | +|17| TABLE SCAN |t7 |100000 |61860 | +|18| MERGE JOIN | |98010000 |58661407 | +|19| SORT | |100000 |252929 | +|20| TABLE SCAN |t8 |100000 |61860 | +|21| SORT | |100000 |252929 | +|22| TABLE SCAN |t9 |100000 |61860 | +|23| SORT | |100000 |252929 | +|24| TABLE SCAN |t6 |100000 |61860 | +|25| SORT | |100000 |274554 | +|26| TABLE SCAN |t5 |100000 |64066 | +|27| TABLE SCAN |t4 |100000 |64066 | +=================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(T_FUN_COUNT(*), DECIMAL(20, 0)) + T_FUN_SUM(t1.c1 + t4.c2 + t5.c1 + t5.c2 - 5 * t9.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t4.c2 + t5.c1 + t5.c2 - 5 * t9.c1)]) + 1 - output([t1.c1 + t4.c2 + t5.c1 + t5.c2 - 5 * t9.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1], [t4.c1 = t5.c1]), other_conds(nil) + 2 - output([t1.c1], [t5.c1], [t5.c2], [t9.c1], [t3.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 3 - output([t1.c1], [t9.c1], [t3.c1], [t6.c1]), filter(nil), + equal_conds([t6.c1 = t7.c1]), other_conds(nil) + 4 - output([t1.c1], [t9.c1], [t3.c1], [t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 5 - output([t1.c1], [t9.c1], [t3.c1], [t7.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c2]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 13 - output([t3.c2], [t3.c1]), filter([t3.c2 = t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 14 - output([t9.c1], [t7.c1]), filter(nil) + 15 - output([t9.c1], [t7.c1]), filter(nil), + equal_conds([t7.c1 = t8.c1]), other_conds(nil) + 16 - output([t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 17 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + 18 - output([t9.c1], [t8.c1]), filter(nil), + equal_conds([t8.c1 = t9.c1]), other_conds(nil) + 19 - output([t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 20 - output([t8.c1]), filter(nil), + access([t8.c1]), partitions(p0) + 21 - output([t9.c1]), filter(nil), sort_keys([t9.c1, ASC]) + 22 - output([t9.c1]), filter(nil), + access([t9.c1]), partitions(p0) + 23 - output([t6.c1]), filter(nil), sort_keys([t6.c1, ASC]) + 24 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 25 - output([t5.c1], [t5.c2]), filter(nil), sort_keys([t5.c1, ASC]) + 26 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 27 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select /*+ leading(t2, (t1, t3), (t7, (t8, t9))) */ +count(*)+sum(t1.c1+t4.c2+t5.c1+t5.c2-5*t9.c1) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; ++-----------------------------------------------+ +| count(*)+sum(t1.c1+t4.c2+t5.c1+t5.c2-5*t9.c1) | ++-----------------------------------------------+ +| NULL | ++-----------------------------------------------+ + +EXPLAIN select /*+ leading(t2, t1, t3, (t4, (t5, t6)), (t8, (t9, t7))) */ +count(*), sum(t1.c1+t5.c1+t6.c1-t7.c1-t8.c2*t9.c1) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 >= t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c2 and t8.c2 = t9.c1 and t8.c1 <= t2.c1 and t1.c1 = t9.c1; +Query Plan +================================================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +--------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |4.355726e+25 | +|1 | HASH JOIN | |4.730321e+25 |3.201514e+25 | +|2 | NESTED-LOOP JOIN CARTESIAN | |1.537908e+19 |1.120410e+19 | +|3 | MERGE JOIN | |160099335 |167221992 | +|4 | MERGE JOIN | |98010000 |58661407 | +|5 | SORT | |100000 |252929 | +|6 | TABLE SCAN |t2 |100000 |61860 | +|7 | SORT | |100000 |252929 | +|8 | TABLE SCAN |t1 |100000 |61860 | +|9 | SORT | |167 |81033 | +|10| TABLE SCAN |t3 |167 |80811 | +|11| MATERIAL | |96059601000 |109997592500 | +|12| MERGE JOIN | |96059601000 |57043655452 | +|13| SORT | |100000 |252929 | +|14| TABLE SCAN |t4 |100000 |61860 | +|15| MERGE JOIN | |98010000 |58661407 | +|16| SORT | |100000 |252929 | +|17| TABLE SCAN |t5 |100000 |61860 | +|18| SORT | |100000 |252929 | +|19| TABLE SCAN |t6 |100000 |61860 | +|20| HASH JOIN | |32019867000 |32611769323 | +|21| TABLE SCAN |t8 |33334 |72438 | +|22| NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076535329 | +|23| TABLE SCAN |t9 |100000 |61860 | +|24| MATERIAL | |100000 |80235 | +|25| TABLE SCAN |t7 |100000 |61860 | +================================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t5.c1 + t6.c1 - t7.c1 - t8.c2 * t9.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t5.c1 + t6.c1 - t7.c1 - t8.c2 * t9.c1)]) + 1 - output([t1.c1 + t5.c1 + t6.c1 - t7.c1 - t8.c2 * t9.c1]), filter(nil), + equal_conds([t6.c1 = t7.c1], [t1.c1 = t9.c1]), other_conds(nil) + 2 - output([t1.c1], [t5.c1], [t6.c1]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c2]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 10 - output([t3.c2]), filter([t3.c2 = t3.c1], [t3.c2 >= t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 11 - output([t5.c1], [t6.c1]), filter(nil) + 12 - output([t5.c1], [t6.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 15 - output([t5.c1], [t6.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 16 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 17 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 18 - output([t6.c1]), filter(nil), sort_keys([t6.c1, ASC]) + 19 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 20 - output([t7.c1], [t8.c2], [t9.c1]), filter(nil), + equal_conds([t7.c1 = t8.c2], [t8.c2 = t9.c1]), other_conds(nil) + 21 - output([t8.c2]), filter([t8.c2 >= t8.c1]), + access([t8.c2], [t8.c1]), partitions(p0) + 22 - output([t7.c1], [t9.c1]), filter(nil), + conds(nil), nl_params_(nil) + 23 - output([t9.c1]), filter(nil), + access([t9.c1]), partitions(p0) + 24 - output([t7.c1]), filter(nil) + 25 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + +select /*+ leading(t2, t1, t3, (t4, (t5, t6)), (t8, (t9, t7))) */ +count(*), sum(t1.c1+t5.c1+t6.c1-t7.c1-t8.c2*t9.c1) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 >= t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c2 and t8.c2 = t9.c1 and t8.c1 <= t2.c1 and t1.c1 = t9.c1; ++----------+------------------------------------------+ +| count(*) | sum(t1.c1+t5.c1+t6.c1-t7.c1-t8.c2*t9.c1) | ++----------+------------------------------------------+ +| 0 | NULL | ++----------+------------------------------------------+ + +EXPLAIN select /*+ leading(t2, (t1, t3), (t7, t8, t9), (t4, t5, t6)) */ +count(*), sum(t1.c1-t7.c2-t8.c1-t9.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; +Query Plan +================================================================================ +|ID|OPERATOR |NAME|EST. ROWS |COST | +-------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |3.920151e+26 | +|1 | HASH JOIN | |4.257289e+26 |2.881360e+26 | +|2 | NESTED-LOOP JOIN CARTESIAN| |4.613723e+19 |3.457608e+19 | +|3 | HASH JOIN | |480298005 |285722945 | +|4 | TABLE SCAN |t2 |100000 |61860 | +|5 | HASH JOIN | |490050 |534664 | +|6 | TABLE SCAN |t1 |100000 |61860 | +|7 | TABLE SCAN |t3 |500 |72438 | +|8 | MATERIAL | |96059601000 |145300260450 | +|9 | MERGE JOIN | |96059601000 |57043698704 | +|10| MERGE JOIN | |98010000 |58683033 | +|11| SORT | |100000 |274554 | +|12| TABLE SCAN |t7 |100000 |64066 | +|13| SORT | |100000 |252929 | +|14| TABLE SCAN |t8 |100000 |61860 | +|15| SORT | |100000 |274554 | +|16| TABLE SCAN |t9 |100000 |64066 | +|17| MERGE JOIN | |96059601000 |57043655452 | +|18| MERGE JOIN | |98010000 |58661407 | +|19| SORT | |100000 |252929 | +|20| TABLE SCAN |t4 |100000 |61860 | +|21| SORT | |100000 |252929 | +|22| TABLE SCAN |t5 |100000 |61860 | +|23| SORT | |100000 |252929 | +|24| TABLE SCAN |t6 |100000 |61860 | +================================================================================ + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 - t7.c2 - t8.c1 - t9.c2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 - t7.c2 - t8.c1 - t9.c2)]) + 1 - output([t1.c1 - t7.c2 - t8.c1 - t9.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1], [t6.c1 = t7.c1]), other_conds(nil) + 2 - output([t1.c1], [t7.c2], [t8.c1], [t9.c2], [t3.c1], [t7.c1]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c2]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c2], [t3.c1]), filter([t3.c2 = t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 8 - output([t7.c2], [t8.c1], [t9.c2], [t7.c1]), filter(nil) + 9 - output([t7.c2], [t8.c1], [t9.c2], [t7.c1]), filter(nil), + equal_conds([t8.c1 = t9.c1]), other_conds(nil) + 10 - output([t7.c2], [t8.c1], [t7.c1]), filter(nil), + equal_conds([t7.c1 = t8.c1]), other_conds(nil) + 11 - output([t7.c2], [t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 12 - output([t7.c1], [t7.c2]), filter(nil), + access([t7.c1], [t7.c2]), partitions(p0) + 13 - output([t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 14 - output([t8.c1]), filter(nil), + access([t8.c1]), partitions(p0) + 15 - output([t9.c2], [t9.c1]), filter(nil), sort_keys([t9.c1, ASC]) + 16 - output([t9.c1], [t9.c2]), filter(nil), + access([t9.c1], [t9.c2]), partitions(p0) + 17 - output([t4.c1], [t6.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 18 - output([t4.c1], [t5.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 19 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 20 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 21 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 22 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 23 - output([t6.c1]), filter(nil), sort_keys([t6.c1, ASC]) + 24 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + +select /*+ leading(t2, (t1, t3), (t7, t8, t9), (t4, t5, t6)) */ +count(*), sum(t1.c1-t7.c2-t8.c1-t9.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; ++----------+------------------------------+ +| count(*) | sum(t1.c1-t7.c2-t8.c1-t9.c2) | ++----------+------------------------------+ +| 0 | NULL | ++----------+------------------------------+ + +EXPLAIN select /*+ leading(t1, (t2 t3), (t4, t5 (t6, t7))) use_hash(t4, t5) use_hash(t6,t7) */ +count(*), sum(t1.c1-t5.c2+t6.c1) - max(t2.c1*t8.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; +Query Plan +==================================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |3.792486e+26 | +|1 | MERGE JOIN | |4.257289e+26 |2.528099e+26 | +|2 | MERGE JOIN | |4.343729e+23 |2.579427e+23 | +|3 | MERGE JOIN | |4.431924e+20 |2.628494e+20 | +|4 | MERGE JOIN | |480298005 |521833951 | +|5 | SORT | |100000 |254319 | +|6 | TABLE SCAN |t1 |100000 |61860 | +|7 | SORT | |50000000 |189596160 | +|8 | NESTED-LOOP JOIN CARTESIAN| |50000000 |36038682 | +|9 | TABLE SCAN |t2 |100000 |61860 | +|10| MATERIAL | |500 |72622 | +|11| TABLE SCAN |t3 |500 |72438 | +|12| MERGE JOIN | |9.414801e+13 |5.583821e+13 | +|13| SORT | |98010000 |365268805 | +|14| HASH JOIN | |98010000 |58396259 | +|15| TABLE SCAN |t4 |100000 |61860 | +|16| TABLE SCAN |t5 |100000 |64066 | +|17| SORT | |98010000 |346233210 | +|18| HASH JOIN | |98010000 |58394053 | +|19| TABLE SCAN |t6 |100000 |61860 | +|20| TABLE SCAN |t7 |100000 |61860 | +|21| SORT | |100000 |274554 | +|22| TABLE SCAN |t8 |100000 |64066 | +|23| SORT | |100000 |252929 | +|24| TABLE SCAN |t9 |100000 |61860 | +==================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 - t5.c2 + t6.c1) - cast(T_FUN_MAX(t2.c1 * t8.c2), DECIMAL(22, 0))]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 - t5.c2 + t6.c1)], [T_FUN_MAX(t2.c1 * t8.c2)]) + 1 - output([t1.c1 - t5.c2 + t6.c1], [t2.c1 * t8.c2]), filter(nil), + equal_conds([t8.c1 = t9.c1]), other_conds(nil) + 2 - output([t1.c1], [t5.c2], [t6.c1], [t2.c1], [t8.c2], [t8.c1]), filter(nil), + equal_conds([t7.c1 = t8.c1]), other_conds(nil) + 3 - output([t1.c1], [t5.c2], [t6.c1], [t2.c1], [t7.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t2.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c1 = t3.c2]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t3.c1], [t3.c2]), filter(nil), sort_keys([t2.c1, ASC], [t3.c2, ASC]) + 8 - output([t2.c1], [t3.c1], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1], [t3.c2]), filter(nil) + 11 - output([t3.c2], [t3.c1]), filter([t3.c2 = t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 12 - output([t5.c2], [t6.c1], [t7.c1], [t4.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 13 - output([t5.c2], [t4.c1], [t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 14 - output([t5.c2], [t4.c1], [t5.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 15 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 16 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 17 - output([t6.c1], [t7.c1]), filter(nil), sort_keys([t6.c1, ASC]) + 18 - output([t6.c1], [t7.c1]), filter(nil), + equal_conds([t6.c1 = t7.c1]), other_conds(nil) + 19 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 20 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + 21 - output([t8.c2], [t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 22 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 23 - output([t9.c1]), filter(nil), sort_keys([t9.c1, ASC]) + 24 - output([t9.c1]), filter(nil), + access([t9.c1]), partitions(p0) + +select /*+ leading(t1, (t2 t3), (t4, t5 (t6, t7))) use_hash(t4, t5) use_hash(t6,t7) */ +count(*), sum(t1.c1-t5.c2+t6.c1) - max(t2.c1*t8.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; ++----------+-------------------------------------------+ +| count(*) | sum(t1.c1-t5.c2+t6.c1) - max(t2.c1*t8.c2) | ++----------+-------------------------------------------+ +| 0 | NULL | ++----------+-------------------------------------------+ +EXPLAIN select /*+ leading(t2 (t7, t1 (t8, t9))) */ +count(*) , sum(t1.c1+t5.c1+t8.c2*t9.c1-t3.c1*4) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; +Query Plan +====================================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +-------------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |5.427610e+26 | +|1 | HASH JOIN | |4.257289e+26 |4.388820e+26 | +|2 | MERGE JOIN | |4.431924e+25 |2.631804e+25 | +|3 | MERGE JOIN | |4.521910e+22 |2.685930e+22 | +|4 | MERGE JOIN | |4.613723e+19 |3.430853e+19 | +|5 | MERGE JOIN | |9.414801e+18 |5.645928e+18 | +|6 | SORT | |100000 |252929 | +|7 | TABLE SCAN |t2 |100000 |61860 | +|8 | SORT | |9.605960e+15 |6.085465e+16 | +|9 | HASH JOIN | |9.605960e+15 |5.697140e+15 | +|10| NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076535329 | +|11| TABLE SCAN |t7 |100000 |61860 | +|12| MATERIAL | |100000 |80235 | +|13| TABLE SCAN |t1 |100000 |61860 | +|14| HASH JOIN | |98010000 |58414634 | +|15| TABLE SCAN |t8 |100000 |64066 | +|16| TABLE SCAN |t9 |100000 |61860 | +|17| SORT | |500 |73171 | +|18| TABLE SCAN |t3 |500 |72438 | +|19| SORT | |100000 |252929 | +|20| TABLE SCAN |t4 |100000 |61860 | +|21| SORT | |100000 |252929 | +|22| TABLE SCAN |t5 |100000 |61860 | +|23| TABLE SCAN |t6 |100000 |61860 | +====================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t5.c1 + t8.c2 * t9.c1 - t3.c1 * 4)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1 + t5.c1 + t8.c2 * t9.c1 - t3.c1 * 4)]) + 1 - output([t1.c1 + t5.c1 + t8.c2 * t9.c1 - t3.c1 * 4]), filter(nil), + equal_conds([t5.c1 = t6.c1], [t6.c1 = t7.c1]), other_conds(nil) + 2 - output([t1.c1], [t5.c1], [t8.c2], [t9.c1], [t3.c1], [t7.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 3 - output([t1.c1], [t8.c2], [t9.c1], [t3.c1], [t7.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t8.c2], [t9.c1], [t3.c1], [t7.c1]), filter(nil), + equal_conds([t1.c1 = t3.c2]), other_conds(nil) + 5 - output([t1.c1], [t8.c2], [t9.c1], [t7.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1], [t8.c2], [t9.c1], [t7.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 9 - output([t1.c1], [t8.c2], [t9.c1], [t7.c1]), filter(nil), + equal_conds([t7.c1 = t8.c1]), other_conds(nil) + 10 - output([t1.c1], [t7.c1]), filter(nil), + conds(nil), nl_params_(nil) + 11 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p0) + 12 - output([t1.c1]), filter(nil) + 13 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 14 - output([t8.c2], [t9.c1], [t8.c1]), filter(nil), + equal_conds([t8.c1 = t9.c1]), other_conds(nil) + 15 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 16 - output([t9.c1]), filter(nil), + access([t9.c1]), partitions(p0) + 17 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 18 - output([t3.c2], [t3.c1]), filter([t3.c2 = t3.c1]), + access([t3.c2], [t3.c1]), partitions(p0) + 19 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 20 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 21 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 22 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 23 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + +select /*+ leading(t2 (t7, t1 (t8, t9))) */ +count(*) , sum(t1.c1+t5.c1+t8.c2*t9.c1-t3.c1*4) from nn1 t1, nn1 t2, nn1 t3, nn1 t4, nn1 t5, nn1 t6 , nn1 t7, nn1 t8, nn1 t9 +where t1.c1 = t2.c1 and t1.c1=t3.c2 and t2.c1 = t3.c1 and t3.c1 = t4.c1 and t4.c1 = t5.c1 and t5.c1 = t6.c1 AND +t6.c1 = t7.c1 and t7.c1 = t8.c1 and t8.c1 = t9.c1 and t8.c1 = t2.c1 and t1.c1 = t9.c1; ++----------+--------------------------------------+ +| count(*) | sum(t1.c1+t5.c1+t8.c2*t9.c1-t3.c1*4) | ++----------+--------------------------------------+ +| 0 | NULL | ++----------+--------------------------------------+ + +EXPLAIN select /*+ leading(t1,t4,(t2,t3)) */ +count(*), sum(t1.c1)-sum(t4.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4 +where t1.c1 = t2.c1 and t3.c1 = t4.c1 and t1.c2 = t3.c2; +Query Plan +==================================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +-------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |9.960018e+13 | +|1 | HASH JOIN | |9.414801e+13 |7.163885e+13 | +|2 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7181005020 | +|3 | TABLE SCAN |t1 |100000 |64066 | +|4 | MATERIAL | |100000 |100817 | +|5 | TABLE SCAN |t4 |100000 |64066 | +|6 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7181002814 | +|7 | TABLE SCAN |t2 |100000 |61860 | +|8 | MATERIAL | |100000 |100817 | +|9 | TABLE SCAN |t3 |100000 |64066 | +==================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1) - T_FUN_SUM(t4.c2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_SUM(t1.c1)], [T_FUN_SUM(t4.c2)]) + 1 - output([t1.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t3.c1 = t4.c1], [t1.c2 = t3.c2]), other_conds(nil) + 2 - output([t1.c1], [t4.c2], [t4.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t4.c2], [t4.c1]), filter(nil) + 5 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 6 - output([t2.c1], [t3.c1], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1], [t3.c2]), filter(nil) + 9 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select /*+ leading(t1,t4,(t2,t3)) */ +count(*), sum(t1.c1)-sum(t4.c2) from nn1 t1, nn1 t2, nn1 t3, nn1 t4 +where t1.c1 = t2.c1 and t3.c1 = t4.c1 and t1.c2 = t3.c2; ++----------+-----------------------+ +| count(*) | sum(t1.c1)-sum(t4.c2) | ++----------+-----------------------+ +| 0 | NULL | ++----------+-----------------------+ + +### 7, 带qb_name的测试 ### +EXPLAIN select /*+ LEADING(@x2x (c d), (a b)) */ +* from nn1 x +where exists (select /*+ qb_name(x2x) */ 1 +from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 + and c.c2 = d.d1) order by x.c1 asc, x.c2 asc, x.c3 desc; +Query Plan +========================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------------------------- +|0 |SORT | |50000 |94778881| +|1 | SUBPLAN FILTER | |50000 |94664996| +|2 | TABLE SCAN |x |100000 |66272 | +|3 | LIMIT | |1 |94584922| +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |94584922| +|5 | HASH JOIN | |1 |171458 | +|6 | TABLE SCAN |c |100000 |61860 | +|7 | TABLE SCAN |d |1 |36 | +|8 | MATERIAL | |98010000 |94413464| +|9 | HASH JOIN | |98010000 |58394053| +|10| TABLE SCAN |a |100000 |61860 | +|11| TABLE SCAN |b |100000 |61860 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([x.c1], [x.c2], [x.c3]), filter(nil), sort_keys([x.c1, ASC], [x.c2, ASC], [x.c3, DESC]) + 1 - output([x.c1], [x.c2], [x.c3]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 2 - output([x.c1], [x.c2], [x.c3]), filter(nil), + access([x.c1], [x.c2], [x.c3]), partitions(p0) + 3 - output([1]), filter(nil), limit(1), offset(nil) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + equal_conds([c.c2 = d.d1]), other_conds(nil) + 6 - output([c.c2]), filter(nil), + access([c.c2]), partitions(p0) + 7 - output([d.d1]), filter(nil), + access([d.d1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + equal_conds([a.c1 = b.d1]), other_conds(nil) + 10 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 11 - output([b.d1]), filter(nil), + access([b.d1]), partitions(p0) + +select /*+ LEADING(@x2x (c d), (a b)) */ +* from nn1 x +where exists (select /*+ qb_name(x2x) */ 1 +from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 + and c.c2 = d.d1) order by x.c1 asc, x.c2 asc, x.c3 desc; ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ ++------+------+------+ + +EXPLAIN select /*+ LEADING(@x2x (c d), (a b)) */ +* from nn1 x +where exists (select /*+ qb_name(x2x) LEADING(a c b d)*/ 1 +from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 + and c.c2 = d.d1) order by x.c1 desc, x.c2 asc, x.c3 desc; +Query Plan +========================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------------------------- +|0 |SORT | |50000 |94778881| +|1 | SUBPLAN FILTER | |50000 |94664996| +|2 | TABLE SCAN |x |100000 |66272 | +|3 | LIMIT | |1 |94584922| +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |94584922| +|5 | HASH JOIN | |1 |171458 | +|6 | TABLE SCAN |c |100000 |61860 | +|7 | TABLE SCAN |d |1 |36 | +|8 | MATERIAL | |98010000 |94413464| +|9 | HASH JOIN | |98010000 |58394053| +|10| TABLE SCAN |a |100000 |61860 | +|11| TABLE SCAN |b |100000 |61860 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([x.c1], [x.c2], [x.c3]), filter(nil), sort_keys([x.c1, DESC], [x.c2, ASC], [x.c3, DESC]) + 1 - output([x.c1], [x.c2], [x.c3]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 2 - output([x.c1], [x.c2], [x.c3]), filter(nil), + access([x.c1], [x.c2], [x.c3]), partitions(p0) + 3 - output([1]), filter(nil), limit(1), offset(nil) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + equal_conds([c.c2 = d.d1]), other_conds(nil) + 6 - output([c.c2]), filter(nil), + access([c.c2]), partitions(p0) + 7 - output([d.d1]), filter(nil), + access([d.d1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + equal_conds([a.c1 = b.d1]), other_conds(nil) + 10 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 11 - output([b.d1]), filter(nil), + access([b.d1]), partitions(p0) + +select /*+ LEADING(@x2x (c d), (a b)) */ +* from nn1 x +where exists (select /*+ qb_name(x2x) LEADING(a c b d)*/ 1 +from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 + and c.c2 = d.d1) order by x.c1 desc, x.c2 asc, x.c3 desc; ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ ++------+------+------+ + +EXPLAIN select /*+ LEADING(@x3x b d (a c)) */ +* from nn1 x +where exists (select /*+ qb_name(x3x) */ 1 +from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 + and c.c2 = d.d1) order by x.c1 desc, x.c3 desc, x.c2 asc ; +Query Plan +================================================================ +|ID|OPERATOR |NAME|EST. ROWS |COST | +---------------------------------------------------------------- +|0 |SORT | |50000 |20451913903| +|1 | SUBPLAN FILTER | |50000 |20451797046| +|2 | TABLE SCAN |x |100000 |66272 | +|3 | LIMIT | |1 |20451716973| +|4 | HASH JOIN | |1 |20451716972| +|5 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7076535329 | +|6 | TABLE SCAN |b |100000 |61860 | +|7 | MATERIAL | |100000 |80235 | +|8 | TABLE SCAN |d |100000 |61860 | +|9 | NESTED-LOOP JOIN CARTESIAN| |1 |80271 | +|10| TABLE SCAN |a |1 |36 | +|11| MATERIAL | |100000 |80235 | +|12| TABLE SCAN |c |100000 |61860 | +================================================================ + +Outputs & filters: +------------------------------------- + 0 - output([x.c1], [x.c2], [x.c3]), filter(nil), sort_keys([x.c1, DESC], [x.c3, DESC], [x.c2, ASC]) + 1 - output([x.c1], [x.c2], [x.c3]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 2 - output([x.c1], [x.c2], [x.c3]), filter(nil), + access([x.c1], [x.c2], [x.c3]), partitions(p0) + 3 - output([1]), filter(nil), limit(1), offset(nil) + 4 - output([1]), filter(nil), + equal_conds([a.c1 = b.d1], [c.c2 = d.d1]), other_conds(nil) + 5 - output([b.d1], [d.d1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([b.d1]), filter(nil), + access([b.d1]), partitions(p0) + 7 - output([d.d1]), filter(nil) + 8 - output([d.d1]), filter(nil), + access([d.d1]), partitions(p0) + 9 - output([a.c1], [c.c2]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 11 - output([c.c2]), filter(nil) + 12 - output([c.c2]), filter(nil), + access([c.c2]), partitions(p0) + +select /*+ LEADING(@x3x b d (a c)) */ +* from nn1 x +where exists (select /*+ qb_name(x3x) */ 1 +from nn1 a, nn2 b, nn1 c, nn2 d where a.c1 = b.d1 + and c.c2 = d.d1) order by x.c1 desc, x.c3 desc, x.c2 asc ; ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ ++------+------+------+ + +### 8, 通过bushy 扩展能获取较好的计划 ### +EXPLAIN select /*+ leading(t1,t2,(t4,t5))*/ count(*),min(t2.c1)+max(t5.d2) from nn1 t1, nn1 t2, nn2 t4, nn2 t5 +where t1.c1 = t2.c1 and + t4.d1 = t5.d1 AND + t1.c1 + t2.c1 = t4.d1 + t5.d2 ; +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +------------------------------------------------------- +|0 |SCALAR GROUP BY| |1 |4.275041e+13 | +|1 | HASH JOIN | |4.802980e+13 |2.848587e+13 | +|2 | HASH JOIN | |98010000 |58394053 | +|3 | TABLE SCAN |t1 |100000 |61860 | +|4 | TABLE SCAN |t2 |100000 |61860 | +|5 | HASH JOIN | |98010000 |58396259 | +|6 | TABLE SCAN |t4 |100000 |61860 | +|7 | TABLE SCAN |t5 |100000 |64066 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)], [T_FUN_MIN(t2.c1) + T_FUN_MAX(t5.d2)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)], [T_FUN_MIN(t2.c1)], [T_FUN_MAX(t5.d2)]) + 1 - output([t2.c1], [t5.d2]), filter(nil), + equal_conds([t1.c1 + t2.c1 = t4.d1 + t5.d2]), other_conds(nil) + 2 - output([t2.c1], [t1.c1 + t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t5.d2], [t4.d1 + t5.d2]), filter(nil), + equal_conds([t4.d1 = t5.d1]), other_conds(nil) + 6 - output([t4.d1]), filter(nil), + access([t4.d1]), partitions(p0) + 7 - output([t5.d1], [t5.d2]), filter(nil), + access([t5.d1], [t5.d2]), partitions(p0) + +select /*+ leading(t1,t2,(t4,t5))*/ count(*),min(t2.c1)+max(t5.d2) from nn1 t1, nn1 t2, nn2 t4, nn2 t5 +where t1.c1 = t2.c1 and + t4.d1 = t5.d1 AND + t1.c1 + t2.c1 = t4.d1 + t5.d2 ; ++----------+-----------------------+ +| count(*) | min(t2.c1)+max(t5.d2) | ++----------+-----------------------+ +| 0 | NULL | ++----------+-----------------------+ + +explain select /*+leading(t1 (t2 t3))*/* from t1,t3 where t1.a = t3.a and t1.b not in (select b from t2); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------------- +|0 |HASH JOIN | |960597 |2820926886| +|1 | NESTED-LOOP ANTI JOIN| |981 |2820256644| +|2 | TABLE SCAN |t1 |100000 |66272 | +|3 | MATERIAL | |100000 |80235 | +|4 | TABLE SCAN |t2 |100000 |61860 | +|5 | TABLE SCAN |t3 |100000 |66272 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), + equal_conds([t1.a = t3.a]), other_conds(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + conds([(T_OP_OR, t1.b = t2.b, (T_OP_IS, t1.b, NULL, 0), (T_OP_IS, t2.b, NULL, 0))]), nl_params_(nil) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 3 - output([t2.b]), filter(nil) + 4 - output([t2.b]), filter(nil), + access([t2.b]), partitions(p0) + 5 - output([t3.a], [t3.b], [t3.c]), filter(nil), + access([t3.a], [t3.b], [t3.c]), partitions(p0) + +explain select /*+leading(t2 t3 t1)*/* from t1,t3 where t1.a = t3.a and t1.b not in (select b from t2); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------------- +|0 |HASH JOIN | |960597 |2820926886| +|1 | NESTED-LOOP ANTI JOIN| |981 |2820256644| +|2 | TABLE SCAN |t1 |100000 |66272 | +|3 | MATERIAL | |100000 |80235 | +|4 | TABLE SCAN |t2 |100000 |61860 | +|5 | TABLE SCAN |t3 |100000 |66272 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), + equal_conds([t1.a = t3.a]), other_conds(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + conds([(T_OP_OR, t1.b = t2.b, (T_OP_IS, t1.b, NULL, 0), (T_OP_IS, t2.b, NULL, 0))]), nl_params_(nil) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 3 - output([t2.b]), filter(nil) + 4 - output([t2.b]), filter(nil), + access([t2.b]), partitions(p0) + 5 - output([t3.a], [t3.b], [t3.c]), filter(nil), + access([t3.a], [t3.b], [t3.c]), partitions(p0) + +explain select /*+leading(t3 t1 t2)*/* from t1,t3 where t1.a = t3.a and t1.b not in (select b from t2); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |960597 |2.764048e+12 | +|1 | HASH JOIN | |98010000 |58439627 | +|2 | TABLE SCAN |t3 |100000 |66272 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | MATERIAL | |100000 |80235 | +|5 | TABLE SCAN |t2 |100000 |61860 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), + conds([(T_OP_OR, t1.b = t2.b, (T_OP_IS, t1.b, NULL, 0), (T_OP_IS, t2.b, NULL, 0))]), nl_params_(nil) + 1 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), + equal_conds([t1.a = t3.a]), other_conds(nil) + 2 - output([t3.a], [t3.b], [t3.c]), filter(nil), + access([t3.a], [t3.b], [t3.c]), partitions(p0) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([t2.b]), filter(nil) + 5 - output([t2.b]), filter(nil), + access([t2.b]), partitions(p0) + +explain select /*+leading(t1 t2 t3)*/* from t1,t3 where t1.a = t3.a and t1.b not in (select b from t2); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------------- +|0 |HASH JOIN | |960597 |2820926886| +|1 | NESTED-LOOP ANTI JOIN| |981 |2820256644| +|2 | TABLE SCAN |t1 |100000 |66272 | +|3 | MATERIAL | |100000 |80235 | +|4 | TABLE SCAN |t2 |100000 |61860 | +|5 | TABLE SCAN |t3 |100000 |66272 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t3.a], [t3.b], [t3.c]), filter(nil), + equal_conds([t1.a = t3.a]), other_conds(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + conds([(T_OP_OR, t1.b = t2.b, (T_OP_IS, t1.b, NULL, 0), (T_OP_IS, t2.b, NULL, 0))]), nl_params_(nil) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 3 - output([t2.b]), filter(nil) + 4 - output([t2.b]), filter(nil), + access([t2.b]), partitions(p0) + 5 - output([t3.a], [t3.b], [t3.c]), filter(nil), + access([t3.a], [t3.b], [t3.c]), partitions(p0) + +drop table nn1; +drop table nn2; + +drop table t1; +drop table t2; +drop table t3; + +drop database bushy_leading_hint_db; diff --git a/test/mysql_test/test_suite/optimizer/r/mysql/default_statistic.result b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/default_statistic.result similarity index 100% rename from test/mysql_test/test_suite/optimizer/r/mysql/default_statistic.result rename to tools/deploy/mysql_test/test_suite/optimizer/r/mysql/default_statistic.result diff --git a/test/mysql_test/test_suite/optimizer/r/mysql/equal_set_mysql.result b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/equal_set_mysql.result similarity index 100% rename from test/mysql_test/test_suite/optimizer/r/mysql/equal_set_mysql.result rename to tools/deploy/mysql_test/test_suite/optimizer/r/mysql/equal_set_mysql.result diff --git a/test/mysql_test/test_suite/optimizer/r/mysql/estimate_cost.result b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/estimate_cost.result similarity index 100% rename from test/mysql_test/test_suite/optimizer/r/mysql/estimate_cost.result rename to tools/deploy/mysql_test/test_suite/optimizer/r/mysql/estimate_cost.result diff --git a/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/union_sort_opt.result b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/union_sort_opt.result new file mode 100644 index 000000000..b8dae75ac --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/optimizer/r/mysql/union_sort_opt.result @@ -0,0 +1,1801 @@ +drop database if exists union_sort_opt_db; +create database union_sort_opt_db; +use union_sort_opt_db; +create table t4(c1 int primary key, c2 int, c3 int); +insert into t4 values(10,12,3),(4,5,6),(2,13,4),(3,4,25),(7,18,9); +commit; +create index idx_t4_c2c3 on t4(c2,c3); +result_format: 4 +explain_protocol: 2 +### 1, 基本测试 表有PK ### +select* from (select * from t4 union select * from t4) as x order by 1,2,3; ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 2 | 13 | 4 | +| 3 | 4 | 25 | +| 4 | 5 | 6 | +| 7 | 18 | 9 | +| 10 | 12 | 3 | ++----+------+------+ + +EXPLAIN select * from t4 union select * from t4; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE UNION DISTINCT| |10 |78 | +|1 | TABLE SCAN |t4 |5 |37 | +|2 | TABLE SCAN |t4 |5 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from t4 union select * from t4; ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 2 | 13 | 4 | +| 3 | 4 | 25 | +| 4 | 5 | 6 | +| 7 | 18 | 9 | +| 10 | 12 | 3 | ++----+------+------+ + +#1.2 使用索引c2c3也ok +EXPLAIN select /*+ index(t4 idx_t4_c2c3) */ * from t4 union +select /*+ index(t4 idx_t4_c2c3) */ * from t4 order by 1,2,3; +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |SORT | |10 |90 | +|1 | MERGE UNION DISTINCT| |10 |78 | +|2 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +|3 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC], [UNION([3]), ASC]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ index(t4 idx_t4_c2c3) */ * from t4 union +select /*+ index(t4 idx_t4_c2c3) */ * from t4 order by 1,2,3; ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 2 | 13 | 4 | +| 3 | 4 | 25 | +| 4 | 5 | 6 | +| 7 | 18 | 9 | +| 10 | 12 | 3 | ++----+------+------+ + +#1.3 顺序一致, 原本就支持 +EXPLAIN select /*+ index(t4 idx_t4_c2c3) */ c2,c3 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c2,c3 from t4 order by 2,1; +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |SORT | |10 |88 | +|1 | MERGE UNION DISTINCT| |10 |78 | +|2 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +|3 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil), sort_keys([UNION([2]), ASC], [UNION([1]), ASC]) + 1 - output([UNION([1])], [UNION([2])]), filter(nil) + 2 - output([t4.c2], [t4.c3]), filter(nil), + access([t4.c2], [t4.c3]), partitions(p0) + 3 - output([t4.c2], [t4.c3]), filter(nil), + access([t4.c2], [t4.c3]), partitions(p0) + +select /*+ index(t4 idx_t4_c2c3) */ c2,c3 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c2,c3 from t4 order by 2,1; ++------+------+ +| c2 | c3 | ++------+------+ +| 12 | 3 | +| 13 | 4 | +| 5 | 6 | +| 18 | 9 | +| 4 | 25 | ++------+------+ + +#1.4 顺序不一致, 修改后支持, 5 +EXPLAIN select /*+ index(t4 idx_t4_c2c3) */ c3,c2 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c3,c2 from t4 order by 1,2; +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |SORT | |10 |88 | +|1 | MERGE UNION DISTINCT| |10 |78 | +|2 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +|3 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC]) + 1 - output([UNION([1])], [UNION([2])]), filter(nil) + 2 - output([t4.c3], [t4.c2]), filter(nil), + access([t4.c3], [t4.c2]), partitions(p0) + 3 - output([t4.c3], [t4.c2]), filter(nil), + access([t4.c3], [t4.c2]), partitions(p0) + +select /*+ index(t4 idx_t4_c2c3) */ c3,c2 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c3,c2 from t4 order by 1,2; ++------+------+ +| c3 | c2 | ++------+------+ +| 3 | 12 | +| 4 | 13 | +| 6 | 5 | +| 9 | 18 | +| 25 | 4 | ++------+------+ + +#1.5 完全一致 +EXPLAIN select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 order by 1,2,3; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |10 |78 | +|1 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +|2 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 1 - output([t4.c2], [t4.c3], [t4.c1]), filter(nil), + access([t4.c2], [t4.c3], [t4.c1]), partitions(p0) + 2 - output([t4.c2], [t4.c3], [t4.c1]), filter(nil), + access([t4.c2], [t4.c3], [t4.c1]), partitions(p0) + +select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 order by 1,2,3; ++------+------+----+ +| c2 | c3 | c1 | ++------+------+----+ +| 4 | 25 | 3 | +| 5 | 6 | 4 | +| 12 | 3 | 10 | +| 13 | 4 | 2 | +| 18 | 9 | 7 | ++------+------+----+ + +#1.5.2 左匹配, 原本就支持 +EXPLAIN select /*+ index(t4 idx_t4_c2c3) */ c2 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c2 from t4 order by 1; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |10 |77 | +|1 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +|2 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil) + 1 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 2 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + +select /*+ index(t4 idx_t4_c2c3) */ c2 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c2 from t4 order by 1; ++------+ +| c2 | ++------+ +| 4 | +| 5 | +| 12 | +| 13 | +| 18 | ++------+ +#1.5.3 不能优化 +EXPLAIN select /*+ index(t4 idx_t4_c2c3) */ c3 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c3 from t4 order by 1; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |10 |84 | +|1 | SORT | |5 |41 | +|2 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +|3 | SORT | |5 |41 | +|4 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil) + 1 - output([t4.c3]), filter(nil), sort_keys([t4.c3, ASC]) + 2 - output([t4.c3]), filter(nil), + access([t4.c3]), partitions(p0) + 3 - output([t4.c3]), filter(nil), sort_keys([t4.c3, ASC]) + 4 - output([t4.c3]), filter(nil), + access([t4.c3]), partitions(p0) + +select /*+ index(t4 idx_t4_c2c3) */ c3 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c3 from t4 order by 1; ++------+ +| c3 | ++------+ +| 3 | +| 4 | +| 6 | +| 9 | +| 25 | ++------+ +#1.5.4 不支持 +EXPLAIN select /*+ index(t4 idx_t4_c2c3) */ c1 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c1 from t4 order by 1; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |10 |84 | +|1 | SORT | |5 |41 | +|2 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +|3 | SORT | |5 |41 | +|4 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil) + 1 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 2 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 3 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +select /*+ index(t4 idx_t4_c2c3) */ c1 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c1 from t4 order by 1; ++----+ +| c1 | ++----+ +| 2 | +| 3 | +| 4 | +| 7 | +| 10 | ++----+ + +#1.6 两侧不匹配不能优化, 都加sort 10 +EXPLAIN select /*+ index(x idx_t4_c2c3) */ c3,c1,c2 from t4 x union +select /*+ index(y idx_t4_c2c3) */ c3,c2,c1 from t4 y order by 1,2,3; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |SORT | |10 |96 | +|1 | MERGE UNION DISTINCT| |10 |84 | +|2 | TABLE SCAN |x(idx_t4_c2c3)|5 |37 | +|3 | SORT | |5 |43 | +|4 | TABLE SCAN |y(idx_t4_c2c3)|5 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC], [UNION([3]), ASC]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([x.c3], [x.c1], [x.c2]), filter(nil), + access([x.c3], [x.c1], [x.c2]), partitions(p0) + 3 - output([y.c3], [y.c2], [y.c1]), filter(nil), sort_keys([y.c1, ASC], [y.c3, ASC], [y.c2, ASC]) + 4 - output([y.c3], [y.c2], [y.c1]), filter(nil), + access([y.c3], [y.c2], [y.c1]), partitions(p0) + +select /*+ index(x idx_t4_c2c3) */ c3,c1,c2 from t4 x union +select /*+ index(y idx_t4_c2c3) */ c3,c2,c1 from t4 y order by 1,2,3; ++------+------+------+ +| c3 | c1 | c2 | ++------+------+------+ +| 3 | 10 | 12 | +| 3 | 12 | 10 | +| 4 | 2 | 13 | +| 4 | 13 | 2 | +| 6 | 4 | 5 | +| 6 | 5 | 4 | +| 9 | 7 | 18 | +| 9 | 18 | 7 | +| 25 | 3 | 4 | +| 25 | 4 | 3 | ++------+------+------+ + +#1.7 两侧不匹配不能优化, 单侧加sort +EXPLAIN select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c3,c2,c1 from t4 order by 1,2,3; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |10 |84 | +|1 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +|2 | SORT | |5 |43 | +|3 | TABLE SCAN |t4(idx_t4_c2c3)|5 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 1 - output([t4.c2], [t4.c3], [t4.c1]), filter(nil), + access([t4.c2], [t4.c3], [t4.c1]), partitions(p0) + 2 - output([t4.c3], [t4.c2], [t4.c1]), filter(nil), sort_keys([t4.c3, ASC], [t4.c2, ASC], [t4.c1, ASC]) + 3 - output([t4.c3], [t4.c2], [t4.c1]), filter(nil), + access([t4.c3], [t4.c2], [t4.c1]), partitions(p0) + +select /*+ index(t4 idx_t4_c2c3) */ c2,c3,c1 from t4 union +select /*+ index(t4 idx_t4_c2c3) */ c3,c2,c1 from t4 order by 1,2,3; ++------+------+----+ +| c2 | c3 | c1 | ++------+------+----+ +| 3 | 12 | 10 | +| 4 | 13 | 2 | +| 4 | 25 | 3 | +| 5 | 6 | 4 | +| 6 | 5 | 4 | +| 9 | 18 | 7 | +| 12 | 3 | 10 | +| 13 | 4 | 2 | +| 18 | 9 | 7 | +| 25 | 4 | 3 | ++------+------+----+ + +### 2, 不包含PK的简单测试, 单key索引 ### +create table t5(c int, c2 int, c3 int); +EXPLAIN insert into t5 values(1,2,3),(2,3,4),(0,1,2),(3,4,5),(0,2,3),(2,4,5); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |6 |2 | +|1 | EXPRESSION| |6 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(INT,PS:(11,0),NULL,__values.c3)]), filter(nil), + columns([{t5: ({t5: (t5.__pk_increment, t5.c, t5.c2, t5.c3)})}]), partitions(p0) + 1 - output([__values.c], [__values.c2], [__values.c3]), filter(nil) + values({1, 2, 3}, {2, 3, 4}, {0, 1, 2}, {3, 4, 5}, {0, 2, 3}, {2, 4, 5}) + +insert into t5 values(1,2,3),(2,3,4),(0,1,2),(3,4,5),(0,2,3),(2,4,5); +create index idx_t5_c2 on t5(c2); +#2.1 不能优化 +EXPLAIN select /*+ index(t5 idx_t5_c2) */ c2,c3 from t5 union +select /*+ index(t5 idx_t5_c2) */ c2,c3 from t5 order by 1,2; +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |MERGE UNION DISTINCT| |12 |242 | +|1 | SORT | |6 |119 | +|2 | TABLE SCAN |t5(idx_t5_c2)|6 |115 | +|3 | SORT | |6 |119 | +|4 | TABLE SCAN |t5(idx_t5_c2)|6 |115 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t5.c2], [t5.c3]), filter(nil), sort_keys([t5.c2, ASC], [t5.c3, ASC]), prefix_pos(1) + 2 - output([t5.c2], [t5.c3]), filter(nil), + access([t5.c2], [t5.c3]), partitions(p0) + 3 - output([t5.c2], [t5.c3]), filter(nil), sort_keys([t5.c2, ASC], [t5.c3, ASC]), prefix_pos(1) + 4 - output([t5.c2], [t5.c3]), filter(nil), + access([t5.c2], [t5.c3]), partitions(p0) + +select /*+ index(t5 idx_t5_c2) */ c2,c3 from t5 union +select /*+ index(t5 idx_t5_c2) */ c2,c3 from t5 order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| 1 | 2 | +| 2 | 3 | +| 3 | 4 | +| 4 | 5 | ++------+------+ + +#2.2 原本就可优化 +EXPLAIN select /*+ index(t5 idx_t5_c2) */ c2 from t5 union +select /*+ index(t5 idx_t5_c2) */ c2 from t5 order by 1; +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |MERGE UNION DISTINCT| |12 |78 | +|1 | TABLE SCAN |t5(idx_t5_c2)|6 |37 | +|2 | TABLE SCAN |t5(idx_t5_c2)|6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil) + 1 - output([t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + 2 - output([t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select /*+ index(t5 idx_t5_c2) */ c2 from t5 union +select /*+ index(t5 idx_t5_c2) */ c2 from t5 order by 1; ++------+ +| c2 | ++------+ +| 1 | +| 2 | +| 3 | +| 4 | ++------+ + +### 3, 无PK, 数据有重复, 结果正确性验证1 +create table t6(c1 int, c2 int); +create index idx_t6_c1c2 on t6(c1,c2); +EXPLAIN insert into t6 values(10,20),(10,30),(20,10),(20,5),(10,30),(40,5),(10,8),(10,20),(1,0),(0,1),(20,80),(10,5),(10,5),(30,20),(30,1),(30,5), + (10,20),(10,30),(20,10),(20,5),(10,30),(40,5),(10,8),(20,80),(10,5),(10,5),(30,20),(30,1),(1,0),(0,1),(0,0),(30,5); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |32 |9 | +|1 | EXPRESSION| |32 |5 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t6: ({t6: (t6.__pk_increment, t6.c1, t6.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({10, 20}, {10, 30}, {20, 10}, {20, 5}, {10, 30}, {40, 5}, {10, 8}, {10, 20}, {1, 0}, {0, 1}, {20, 80}, {10, 5}, {10, 5}, {30, 20}, {30, 1}, {30, 5}, {10, 20}, {10, 30}, {20, 10}, {20, 5}, {10, 30}, {40, 5}, {10, 8}, {20, 80}, {10, 5}, {10, 5}, {30, 20}, {30, 1}, {1, 0}, {0, 1}, {0, 0}, {30, 5}) + +insert into t6 values(10,20),(10,30),(20,10),(20,5),(10,30),(40,5),(10,8),(10,20),(1,0),(0,1),(20,80),(10,5),(10,5),(30,20),(30,1),(30,5), + (10,20),(10,30),(20,10),(20,5),(10,30),(40,5),(10,8),(20,80),(10,5),(10,5),(30,20),(30,1),(1,0),(0,1),(0,0),(30,5); +#3.1 可以优化, 14 rows +EXPLAIN select c1,c2 from t6 union select c1,c2 from t6 order by 1,2; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |64 |110 | +|1 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +|2 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t6.c1], [t6.c2]), filter(nil), + access([t6.c1], [t6.c2]), partitions(p0) + 2 - output([t6.c1], [t6.c2]), filter(nil), + access([t6.c1], [t6.c2]), partitions(p0) + +select c1,c2 from t6 union select c1,c2 from t6 order by 1,2; ++------+------+ +| c1 | c2 | ++------+------+ +| 0 | 0 | +| 0 | 1 | +| 1 | 0 | +| 10 | 5 | +| 10 | 8 | +| 10 | 20 | +| 10 | 30 | +| 20 | 5 | +| 20 | 10 | +| 20 | 80 | +| 30 | 1 | +| 30 | 5 | +| 30 | 20 | +| 40 | 5 | ++------+------+ + +#3.2 可以优化, 14 rows +EXPLAIN select c2,c1 from t6 union select c2,c1 from t6 order by 1,2; +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |SORT | |64 |188 | +|1 | MERGE UNION DISTINCT| |64 |110 | +|2 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +|3 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC]) + 1 - output([UNION([1])], [UNION([2])]), filter(nil) + 2 - output([t6.c2], [t6.c1]), filter(nil), + access([t6.c2], [t6.c1]), partitions(p0) + 3 - output([t6.c2], [t6.c1]), filter(nil), + access([t6.c2], [t6.c1]), partitions(p0) + +select c2,c1 from t6 union select c2,c1 from t6 order by 1,2; ++------+------+ +| c2 | c1 | ++------+------+ +| 0 | 0 | +| 0 | 1 | +| 1 | 0 | +| 1 | 30 | +| 5 | 10 | +| 5 | 20 | +| 5 | 30 | +| 5 | 40 | +| 8 | 10 | +| 10 | 20 | +| 20 | 10 | +| 20 | 30 | +| 30 | 10 | +| 80 | 20 | ++------+------+ + +#3.3 不能优化 23 rows +EXPLAIN select c2,c1 from t6 union select c1,c2 from t6 order by 1,2; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |64 |146 | +|1 | SORT | |32 |79 | +|2 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +|3 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t6.c2], [t6.c1]), filter(nil), sort_keys([t6.c2, ASC], [t6.c1, ASC]) + 2 - output([t6.c2], [t6.c1]), filter(nil), + access([t6.c2], [t6.c1]), partitions(p0) + 3 - output([t6.c1], [t6.c2]), filter(nil), + access([t6.c1], [t6.c2]), partitions(p0) + +select c2,c1 from t6 union select c1,c2 from t6 order by 1,2; ++------+------+ +| c2 | c1 | ++------+------+ +| 0 | 0 | +| 0 | 1 | +| 1 | 0 | +| 1 | 30 | +| 5 | 10 | +| 5 | 20 | +| 5 | 30 | +| 5 | 40 | +| 8 | 10 | +| 10 | 5 | +| 10 | 8 | +| 10 | 20 | +| 10 | 30 | +| 20 | 5 | +| 20 | 10 | +| 20 | 30 | +| 20 | 80 | +| 30 | 1 | +| 30 | 5 | +| 30 | 10 | +| 30 | 20 | +| 40 | 5 | +| 80 | 20 | ++------+------+ + +#3.4 不能优化, 有计算列的情况, 23 rows, 14 +EXPLAIN select c2,c1 from t6 union select 0+c1,c2 from t6 order by 1,2; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |64 |182 | +|1 | SORT | |32 |79 | +|2 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +|3 | SORT | |32 |79 | +|4 | TABLE SCAN |t6 |32 |43 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([cast(t6.c2, BIGINT(20, 0))], [t6.c1]), filter(nil), sort_keys([cast(t6.c2, BIGINT(20, 0)), ASC], [t6.c1, ASC]) + 2 - output([t6.c1], [cast(t6.c2, BIGINT(20, 0))]), filter(nil), + access([t6.c2], [t6.c1]), partitions(p0) + 3 - output([0 + t6.c1], [t6.c2]), filter(nil), sort_keys([0 + t6.c1, ASC], [t6.c2, ASC]) + 4 - output([t6.c2], [0 + t6.c1]), filter(nil), + access([t6.c1], [t6.c2]), partitions(p0) + +select c2,c1 from t6 union select 0+c1,c2 from t6 order by 1,2; ++------+------+ +| c2 | c1 | ++------+------+ +| 0 | 0 | +| 0 | 1 | +| 1 | 0 | +| 1 | 30 | +| 5 | 10 | +| 5 | 20 | +| 5 | 30 | +| 5 | 40 | +| 8 | 10 | +| 10 | 5 | +| 10 | 8 | +| 10 | 20 | +| 10 | 30 | +| 20 | 5 | +| 20 | 10 | +| 20 | 30 | +| 20 | 80 | +| 30 | 1 | +| 30 | 5 | +| 30 | 10 | +| 30 | 20 | +| 40 | 5 | +| 80 | 20 | ++------+------+ + +EXPLAIN select c1,c2,c1,c2 from t6 union select 0+c1,c2,c1,c2 from t6 order by 1,2,3,4; +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |SORT | |64 |240 | +|1 | MERGE UNION DISTINCT| |64 |162 | +|2 | SORT | |32 |66 | +|3 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +|4 | SORT | |32 |66 | +|5 | TABLE SCAN |t6(idx_t6_c1c2)|32 |43 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC], [UNION([3]), ASC], [UNION([4]), ASC]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 2 - output([cast(t6.c1, BIGINT(20, 0))], [t6.c2], [t6.c1], [t6.c2]), filter(nil), sort_keys([t6.c1, ASC], [t6.c2, ASC], [cast(t6.c1, BIGINT(20, 0)), ASC], [t6.c2, ASC]), prefix_pos(2) + 3 - output([t6.c1], [t6.c2], [cast(t6.c1, BIGINT(20, 0))]), filter(nil), + access([t6.c1], [t6.c2]), partitions(p0) + 4 - output([0 + t6.c1], [t6.c2], [t6.c1], [t6.c2]), filter(nil), sort_keys([t6.c1, ASC], [t6.c2, ASC], [0 + t6.c1, ASC], [t6.c2, ASC]), prefix_pos(2) + 5 - output([t6.c1], [t6.c2], [0 + t6.c1]), filter(nil), + access([t6.c1], [t6.c2]), partitions(p0) + +select c1,c2,c1,c2 from t6 union select 0+c1,c2,c1,c2 from t6 order by 1,2,3,4; ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 0 | 0 | 0 | 0 | +| 0 | 1 | 0 | 1 | +| 1 | 0 | 1 | 0 | +| 10 | 5 | 10 | 5 | +| 10 | 8 | 10 | 8 | +| 10 | 20 | 10 | 20 | +| 10 | 30 | 10 | 30 | +| 20 | 5 | 20 | 5 | +| 20 | 10 | 20 | 10 | +| 20 | 80 | 20 | 80 | +| 30 | 1 | 30 | 1 | +| 30 | 5 | 30 | 5 | +| 30 | 20 | 30 | 20 | +| 40 | 5 | 40 | 5 | ++------+------+------+------+ + +#4 分区表的测试 +create table t7(c1 varchar(10), c2 decimal(10,2), c3 int, c4 int) partition by hash(c4) partitions 5; +EXPLAIN insert into t7 values('11', 1.2, 1, 7),('22', 2.3, 2, 6),('33', 3.4, 3, 2), ('44', 4.5, 4, 10), ('55', 5.6, 5, 6), +('12', 1.244, 4, 22),('22', 2.3, 3, 13),('3', 3.4, 2, 0), ('44', 4.5, 4, 1), ('56', 56, 1, 6),('44', 4.5, 4, 10); +insert into t7 values('11', 1.2, 1, 7),('22', 2.3, 2, 6),('33', 3.4, 3, 2), ('44', 4.5, 4, 10), ('55', 5.6, 5, 6), +('12', 1.244, 4, 22),('22', 2.3, 3, 13),('3', 3.4, 2, 0), ('44', 4.5, 4, 1), ('56', 56, 1, 6),('44', 4.5, 4, 10); +create index idx_t7_c2c1 on t7(c2,c1,c3) local; +#4.1 可以优化, 完全匹配, 9 rows +EXPLAIN select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union +select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 where c2 < 10 order by 1,2,3; +Query Plan +=============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------------- +|0 |MERGE UNION DISTINCT | |30 |155 | +|1 | PX COORDINATOR MERGE SORT | |15 |71 | +|2 | EXCHANGE OUT DISTR |:EX10000 |15 |68 | +|3 | SORT | |15 |68 | +|4 | PX PARTITION ITERATOR | |15 |40 | +|5 | TABLE SCAN |t7(idx_t7_c2c1)|15 |40 | +|6 | PX COORDINATOR MERGE SORT | |15 |71 | +|7 | EXCHANGE OUT DISTR |:EX20000 |15 |68 | +|8 | SORT | |15 |68 | +|9 | PX PARTITION ITERATOR | |15 |40 | +|10| TABLE SCAN |t7(idx_t7_c2c1)|15 |40 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 1 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]) + 2 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), dop=1 + 3 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]), local merge sort + 4 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil) + 5 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), + access([t7.c2], [t7.c1], [t7.c3]), partitions(p[0-4]) + 6 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]) + 7 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), dop=1 + 8 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]), local merge sort + 9 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil) + 10 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), + access([t7.c2], [t7.c1], [t7.c3]), partitions(p[0-4]) + +select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union +select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 where c2 < 10 order by 1,2,3; ++-------+------+------+ +| c2 | c1 | c3 | ++-------+------+------+ +| 1.20 | 11 | 1 | +| 1.24 | 12 | 4 | +| 2.30 | 22 | 2 | +| 2.30 | 22 | 3 | +| 3.40 | 3 | 2 | +| 3.40 | 33 | 3 | +| 4.50 | 44 | 4 | +| 5.60 | 55 | 5 | +| 56.00 | 56 | 1 | ++-------+------+------+ + +#4.2 可以优化, 后续有连接, 15 rows +EXPLAIN select xx.c2,xx.c1 from +(select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union + select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 where c2 < 10) xx, +t7 yy where xx.c2 = yy.c2 order by 1,2; +Query Plan +================================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------------- +|0 |MERGE JOIN | |30 |247 | +|1 | SUBPLAN SCAN |xx |30 |159 | +|2 | MERGE UNION DISTINCT | |30 |155 | +|3 | PX COORDINATOR MERGE SORT | |15 |71 | +|4 | EXCHANGE OUT DISTR |:EX10000 |15 |68 | +|5 | SORT | |15 |68 | +|6 | PX PARTITION ITERATOR | |15 |40 | +|7 | TABLE SCAN |t7(idx_t7_c2c1)|15 |40 | +|8 | PX COORDINATOR MERGE SORT | |15 |71 | +|9 | EXCHANGE OUT DISTR |:EX20000 |15 |68 | +|10| SORT | |15 |68 | +|11| PX PARTITION ITERATOR | |15 |40 | +|12| TABLE SCAN |t7(idx_t7_c2c1)|15 |40 | +|13| PX COORDINATOR MERGE SORT | |15 |62 | +|14| EXCHANGE OUT DISTR |:EX30000 |15 |61 | +|15| SORT | |15 |61 | +|16| PX PARTITION ITERATOR | |15 |39 | +|17| TABLE SCAN |yy(idx_t7_c2c1)|15 |39 | +================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([xx.c2], [xx.c1]), filter(nil), + equal_conds([xx.c2 = yy.c2]), other_conds(nil) + 1 - output([xx.c2], [xx.c1]), filter(nil), + access([xx.c2], [xx.c1]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 3 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]) + 4 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), dop=1 + 5 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]), local merge sort + 6 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil) + 7 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), + access([t7.c2], [t7.c1], [t7.c3]), partitions(p[0-4]) + 8 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]) + 9 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), dop=1 + 10 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]), local merge sort + 11 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil) + 12 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), + access([t7.c2], [t7.c1], [t7.c3]), partitions(p[0-4]) + 13 - output([yy.c2]), filter(nil), sort_keys([yy.c2, ASC]) + 14 - output([yy.c2]), filter(nil), dop=1 + 15 - output([yy.c2]), filter(nil), sort_keys([yy.c2, ASC]), local merge sort + 16 - output([yy.c2]), filter(nil) + 17 - output([yy.c2]), filter(nil), + access([yy.c2]), partitions(p[0-4]) + +select xx.c2,xx.c1 from +(select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union + select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 where c2 < 10) xx, +t7 yy where xx.c2 = yy.c2 order by 1,2; ++-------+------+ +| c2 | c1 | ++-------+------+ +| 1.20 | 11 | +| 1.24 | 12 | +| 2.30 | 22 | +| 2.30 | 22 | +| 2.30 | 22 | +| 2.30 | 22 | +| 3.40 | 3 | +| 3.40 | 3 | +| 3.40 | 33 | +| 3.40 | 33 | +| 4.50 | 44 | +| 4.50 | 44 | +| 4.50 | 44 | +| 5.60 | 55 | +| 56.00 | 56 | ++-------+------+ + +#4.3 可以优化, 9 rows +EXPLAIN select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union +select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 order by 1,2,3; +Query Plan +=============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------------- +|0 |MERGE UNION DISTINCT | |30 |155 | +|1 | PX COORDINATOR MERGE SORT | |15 |71 | +|2 | EXCHANGE OUT DISTR |:EX10000 |15 |68 | +|3 | SORT | |15 |68 | +|4 | PX PARTITION ITERATOR | |15 |40 | +|5 | TABLE SCAN |t7(idx_t7_c2c1)|15 |40 | +|6 | PX COORDINATOR MERGE SORT | |15 |71 | +|7 | EXCHANGE OUT DISTR |:EX20000 |15 |68 | +|8 | SORT | |15 |68 | +|9 | PX PARTITION ITERATOR | |15 |40 | +|10| TABLE SCAN |t7(idx_t7_c2c1)|15 |40 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 1 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]) + 2 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), dop=1 + 3 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]), local merge sort + 4 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil) + 5 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), + access([t7.c2], [t7.c1], [t7.c3]), partitions(p[0-4]) + 6 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]) + 7 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), dop=1 + 8 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]), local merge sort + 9 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil) + 10 - output([t7.c2], [t7.c1], [t7.c3]), filter(nil), + access([t7.c2], [t7.c1], [t7.c3]), partitions(p[0-4]) + +select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 union +select /*+ index(t7 idx_t7_c2c1) */ c2,c1,c3 from t7 order by 1,2,3; ++-------+------+------+ +| c2 | c1 | c3 | ++-------+------+------+ +| 1.20 | 11 | 1 | +| 1.24 | 12 | 4 | +| 2.30 | 22 | 2 | +| 2.30 | 22 | 3 | +| 3.40 | 3 | 2 | +| 3.40 | 33 | 3 | +| 4.50 | 44 | 4 | +| 5.60 | 55 | 5 | +| 56.00 | 56 | 1 | ++-------+------+------+ + +EXPLAIN select c1 from t7 union select c1 from t7 order by 1; +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |MERGE UNION DISTINCT | |30 |169 | +|1 | PX COORDINATOR MERGE SORT | |15 |80 | +|2 | EXCHANGE OUT DISTR |:EX10000|15 |78 | +|3 | SORT | |15 |78 | +|4 | PX PARTITION ITERATOR | |15 |39 | +|5 | TABLE SCAN |t7 |15 |39 | +|6 | PX COORDINATOR MERGE SORT | |15 |80 | +|7 | EXCHANGE OUT DISTR |:EX20000|15 |78 | +|8 | SORT | |15 |78 | +|9 | PX PARTITION ITERATOR | |15 |39 | +|10| TABLE SCAN |t7 |15 |39 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil) + 1 - output([t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 2 - output([t7.c1]), filter(nil), dop=1 + 3 - output([t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 4 - output([t7.c1]), filter(nil) + 5 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p[0-4]) + 6 - output([t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 7 - output([t7.c1]), filter(nil), dop=1 + 8 - output([t7.c1]), filter(nil), sort_keys([t7.c1, ASC]) + 9 - output([t7.c1]), filter(nil) + 10 - output([t7.c1]), filter(nil), + access([t7.c1]), partitions(p[0-4]) + +select c1 from t7 union select c1 from t7 order by 1; ++------+ +| c1 | ++------+ +| 11 | +| 12 | +| 22 | +| 3 | +| 33 | +| 44 | +| 55 | +| 56 | ++------+ +EXPLAIN select /*+ index(t7 idx_t7_c2c1) */ c1,c2,c3 from t7 union +select /*+ index(t7 idx_t7_c2c1) */ c1,c2,c3 from t7 order by 1,2,3; +Query Plan +================================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------------- +|0 |SORT | |30 |260 | +|1 | MERGE UNION DISTINCT | |30 |155 | +|2 | PX COORDINATOR MERGE SORT | |15 |71 | +|3 | EXCHANGE OUT DISTR |:EX10000 |15 |68 | +|4 | SORT | |15 |68 | +|5 | PX PARTITION ITERATOR | |15 |40 | +|6 | TABLE SCAN |t7(idx_t7_c2c1)|15 |40 | +|7 | PX COORDINATOR MERGE SORT | |15 |71 | +|8 | EXCHANGE OUT DISTR |:EX20000 |15 |68 | +|9 | SORT | |15 |68 | +|10| PX PARTITION ITERATOR | |15 |40 | +|11| TABLE SCAN |t7(idx_t7_c2c1)|15 |40 | +================================================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC], [UNION([3]), ASC]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]) + 3 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), dop=1 + 4 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]), local merge sort + 5 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil) + 6 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), + access([t7.c1], [t7.c2], [t7.c3]), partitions(p[0-4]) + 7 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]) + 8 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), dop=1 + 9 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), sort_keys([t7.c2, ASC], [t7.c1, ASC], [t7.c3, ASC]), local merge sort + 10 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil) + 11 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), + access([t7.c1], [t7.c2], [t7.c3]), partitions(p[0-4]) + +select /*+ index(t7 idx_t7_c2c1) */ c1,c2,c3 from t7 union +select /*+ index(t7 idx_t7_c2c1) */ c1,c2,c3 from t7 order by 1,2,3; ++------+-------+------+ +| c1 | c2 | c3 | ++------+-------+------+ +| 11 | 1.20 | 1 | +| 12 | 1.24 | 4 | +| 22 | 2.30 | 2 | +| 22 | 2.30 | 3 | +| 3 | 3.40 | 2 | +| 33 | 3.40 | 3 | +| 44 | 4.50 | 4 | +| 55 | 5.60 | 5 | +| 56 | 56.00 | 1 | ++------+-------+------+ + +#4.4 索引KEY升降序的测试, 目前此功能并不支持, 实际都是ASC +drop index idx_t7_c2c1 on t7; +create index idx_t7_c3c2c1 on t7(c3 asc,c2 asc,c1 asc) local; +create table t72(c1 varchar(10), c2 decimal(10,2), c3 int); +EXPLAIN insert into t72 values('11', 1.2, 1),('22', 2.3, 2),('33', 3.4, 3), ('44', 4.5, 4), ('55', 5.6, 5), +('12', 1.244, 4),('22', 2.3, 3),('3', 3.4, 2), ('44', 4.5, 4), ('56', 56, 1),('44', 4.5, 4); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |11 |4 | +|1 | EXPRESSION| |11 |2 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(VARCHAR,utf8mb4_general_ci,length:10,NULL,__values.c1)], [column_conv(DECIMAL,PS:(10,2),NULL,__values.c2)], [column_conv(INT,PS:(11,0),NULL,__values.c3)]), filter(nil), + columns([{t72: ({t72: (t72.__pk_increment, t72.c1, t72.c2, t72.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({'11', 1.2, 1}, {'22', 2.3, 2}, {'33', 3.4, 3}, {'44', 4.5, 4}, {'55', 5.6, 5}, {'12', 1.244, 4}, {'22', 2.3, 3}, {'3', 3.4, 2}, {'44', 4.5, 4}, {'56', 56, 1}, {'44', 4.5, 4}) + +insert into t72 values('11', 1.2, 1),('22', 2.3, 2),('33', 3.4, 3), ('44', 4.5, 4), ('55', 5.6, 5), +('12', 1.244, 4),('22', 2.3, 3),('3', 3.4, 2), ('44', 4.5, 4), ('56', 56, 1),('44', 4.5, 4); +create index idx_t72_c3c2c1 on t72(c3 asc,c2 asc,c1 asc); +#4.4.1 两个表上索引升降序一致, 不一一对应但两侧分支匹配, 可以优化, 8 rows +EXPLAIN select /*+ index(t7 idx_t7_c3c2c1) */ c1,c2,c3 from t7 where c3 < 5 union +select /*+ index(t72 idx_t72_c3c2c1) */ c1,c2,c3 from t72 where c3 < 5 order by 1,2,3; +Query Plan +==================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------------- +|0 |SORT | |25 |200 | +|1 | MERGE UNION DISTINCT | |25 |115 | +|2 | PX COORDINATOR MERGE SORT | |15 |66 | +|3 | EXCHANGE OUT DISTR |:EX10000 |15 |63 | +|4 | SORT | |15 |63 | +|5 | PX PARTITION ITERATOR | |15 |40 | +|6 | TABLE SCAN |t7(idx_t7_c3c2c1) |15 |40 | +|7 | TABLE SCAN |t72(idx_t72_c3c2c1)|10 |39 | +==================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC], [UNION([3]), ASC]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), sort_keys([t7.c3, ASC], [t7.c2, ASC], [t7.c1, ASC]) + 3 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), dop=1 + 4 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), sort_keys([t7.c3, ASC], [t7.c2, ASC], [t7.c1, ASC]), local merge sort + 5 - output([t7.c3], [t7.c1], [t7.c2]), filter(nil) + 6 - output([t7.c3], [t7.c1], [t7.c2]), filter(nil), + access([t7.c3], [t7.c1], [t7.c2]), partitions(p[0-4]) + 7 - output([t72.c1], [t72.c2], [t72.c3]), filter(nil), + access([t72.c3], [t72.c1], [t72.c2]), partitions(p0) + +select /*+ index(t7 idx_t7_c3c2c1) */ c1,c2,c3 from t7 where c3 < 5 union +select /*+ index(t72 idx_t72_c3c2c1) */ c1,c2,c3 from t72 where c3 < 5 order by 1,2,3; ++------+-------+------+ +| c1 | c2 | c3 | ++------+-------+------+ +| 11 | 1.20 | 1 | +| 12 | 1.24 | 4 | +| 22 | 2.30 | 2 | +| 22 | 2.30 | 3 | +| 3 | 3.40 | 2 | +| 33 | 3.40 | 3 | +| 44 | 4.50 | 4 | +| 56 | 56.00 | 1 | ++------+-------+------+ + +#4.4.2 可以优化, 同上 +EXPLAIN select /*+ index(t7 idx_t7_c3c2c1) */ c3,c2,c1 from t7 where c3 < 5 union +select /*+ index(t72 idx_t72_c3c2c1) */ c3,c2,c1 from t72 where c3 < 5 order by 1,2,3; +Query Plan +=================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------------- +|0 |MERGE UNION DISTINCT | |25 |115 | +|1 | PX COORDINATOR MERGE SORT | |15 |66 | +|2 | EXCHANGE OUT DISTR |:EX10000 |15 |63 | +|3 | SORT | |15 |63 | +|4 | PX PARTITION ITERATOR | |15 |40 | +|5 | TABLE SCAN |t7(idx_t7_c3c2c1) |15 |40 | +|6 | TABLE SCAN |t72(idx_t72_c3c2c1)|10 |39 | +=================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 1 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil), sort_keys([t7.c3, ASC], [t7.c2, ASC], [t7.c1, ASC]) + 2 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil), dop=1 + 3 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil), sort_keys([t7.c3, ASC], [t7.c2, ASC], [t7.c1, ASC]), local merge sort + 4 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil) + 5 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil), + access([t7.c3], [t7.c2], [t7.c1]), partitions(p[0-4]) + 6 - output([t72.c3], [t72.c2], [t72.c1]), filter(nil), + access([t72.c3], [t72.c2], [t72.c1]), partitions(p0) + +select /*+ index(t7 idx_t7_c3c2c1) */ c3,c2,c1 from t7 where c3 < 5 union +select /*+ index(t72 idx_t72_c3c2c1) */ c3,c2,c1 from t72 where c3 < 5 order by 1,2,3; ++------+-------+------+ +| c3 | c2 | c1 | ++------+-------+------+ +| 1 | 1.20 | 11 | +| 1 | 56.00 | 56 | +| 2 | 2.30 | 22 | +| 2 | 3.40 | 3 | +| 3 | 2.30 | 22 | +| 3 | 3.40 | 33 | +| 4 | 1.24 | 12 | +| 4 | 4.50 | 44 | ++------+-------+------+ + +drop index idx_t72_c3c2c1 on t72; +create index idx_t72_c3c2c1 on t72(c3 asc,c2 asc,c1 asc); +#4.4.3 A,D不同, 但是实际存储一样, 所以也能优化, 8 rows +EXPLAIN select /*+ index(t7 idx_t7_c3c2c1) */ c1,c2,c3 from t7 where c3 < 5 union +select /*+ index(t72 idx_t72_c3c2c1) */ c1,c2,c3 from t72 where c3 < 5 order by 1,2,3; +Query Plan +==================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------------- +|0 |SORT | |25 |200 | +|1 | MERGE UNION DISTINCT | |25 |115 | +|2 | PX COORDINATOR MERGE SORT | |15 |66 | +|3 | EXCHANGE OUT DISTR |:EX10000 |15 |63 | +|4 | SORT | |15 |63 | +|5 | PX PARTITION ITERATOR | |15 |40 | +|6 | TABLE SCAN |t7(idx_t7_c3c2c1) |15 |40 | +|7 | TABLE SCAN |t72(idx_t72_c3c2c1)|10 |39 | +==================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC], [UNION([3]), ASC]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), sort_keys([t7.c3, ASC], [t7.c2, ASC], [t7.c1, ASC]) + 3 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), dop=1 + 4 - output([t7.c1], [t7.c2], [t7.c3]), filter(nil), sort_keys([t7.c3, ASC], [t7.c2, ASC], [t7.c1, ASC]), local merge sort + 5 - output([t7.c3], [t7.c1], [t7.c2]), filter(nil) + 6 - output([t7.c3], [t7.c1], [t7.c2]), filter(nil), + access([t7.c3], [t7.c1], [t7.c2]), partitions(p[0-4]) + 7 - output([t72.c1], [t72.c2], [t72.c3]), filter(nil), + access([t72.c3], [t72.c1], [t72.c2]), partitions(p0) + +select /*+ index(t7 idx_t7_c3c2c1) */ c1,c2,c3 from t7 where c3 < 5 union +select /*+ index(t72 idx_t72_c3c2c1) */ c1,c2,c3 from t72 where c3 < 5 order by 1,2,3; ++------+-------+------+ +| c1 | c2 | c3 | ++------+-------+------+ +| 11 | 1.20 | 1 | +| 12 | 1.24 | 4 | +| 22 | 2.30 | 2 | +| 22 | 2.30 | 3 | +| 3 | 3.40 | 2 | +| 33 | 3.40 | 3 | +| 44 | 4.50 | 4 | +| 56 | 56.00 | 1 | ++------+-------+------+ + +#4.4.4 同上, 也能优化 +EXPLAIN select /*+ index(t7 idx_t7_c3c2c1) */ c3,c2,c1 from t7 where c3 < 5 union +select /*+ index(t72 idx_t72_c3c2c1) */ c3,c2,c1 from t72 where c3 < 5 order by 1,2,3; +Query Plan +=================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------------- +|0 |MERGE UNION DISTINCT | |25 |115 | +|1 | PX COORDINATOR MERGE SORT | |15 |66 | +|2 | EXCHANGE OUT DISTR |:EX10000 |15 |63 | +|3 | SORT | |15 |63 | +|4 | PX PARTITION ITERATOR | |15 |40 | +|5 | TABLE SCAN |t7(idx_t7_c3c2c1) |15 |40 | +|6 | TABLE SCAN |t72(idx_t72_c3c2c1)|10 |39 | +=================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 1 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil), sort_keys([t7.c3, ASC], [t7.c2, ASC], [t7.c1, ASC]) + 2 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil), dop=1 + 3 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil), sort_keys([t7.c3, ASC], [t7.c2, ASC], [t7.c1, ASC]), local merge sort + 4 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil) + 5 - output([t7.c3], [t7.c2], [t7.c1]), filter(nil), + access([t7.c3], [t7.c2], [t7.c1]), partitions(p[0-4]) + 6 - output([t72.c3], [t72.c2], [t72.c1]), filter(nil), + access([t72.c3], [t72.c2], [t72.c1]), partitions(p0) + +select /*+ index(t7 idx_t7_c3c2c1) */ c3,c2,c1 from t7 where c3 < 5 union +select /*+ index(t72 idx_t72_c3c2c1) */ c3,c2,c1 from t72 where c3 < 5 order by 1,2,3; ++------+-------+------+ +| c3 | c2 | c1 | ++------+-------+------+ +| 1 | 1.20 | 11 | +| 1 | 56.00 | 56 | +| 2 | 2.30 | 22 | +| 2 | 3.40 | 3 | +| 3 | 2.30 | 22 | +| 3 | 3.40 | 33 | +| 4 | 1.24 | 12 | +| 4 | 4.50 | 44 | ++------+-------+------+ + +#5 结果正确性测试2 +create table test1(c1 int, c2 int); +create table test2(d1 int, d2 int); + +EXPLAIN insert into test1 values(1,1),(1,2),(2,1),(2,2),(2,0),(1,3),(1,0),(3,0),(3,2),(3,1),(2,1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |11 |4 | +|1 | EXPRESSION| |11 |2 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{test1: ({test1: (test1.__pk_increment, test1.c1, test1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({1, 1}, {1, 2}, {2, 1}, {2, 2}, {2, 0}, {1, 3}, {1, 0}, {3, 0}, {3, 2}, {3, 1}, {2, 1}) + +insert into test1 values(1,1),(1,2),(2,1),(2,2),(2,0),(1,3),(1,0),(3,0),(3,2),(3,1),(2,1); +EXPLAIN insert into test2 values(1,1),(1,2),(2,1),(2,2),(2,0),(1,3),(1,0),(3,0),(3,2),(3,1),(2,1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |11 |4 | +|1 | EXPRESSION| |11 |2 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.d1)], [column_conv(INT,PS:(11,0),NULL,__values.d2)]), filter(nil), + columns([{test2: ({test2: (test2.__pk_increment, test2.d1, test2.d2)})}]), partitions(p0) + 1 - output([__values.d1], [__values.d2]), filter(nil) + values({1, 1}, {1, 2}, {2, 1}, {2, 2}, {2, 0}, {1, 3}, {1, 0}, {3, 0}, {3, 2}, {3, 1}, {2, 1}) + +insert into test2 values(1,1),(1,2),(2,1),(2,2),(2,0),(1,3),(1,0),(3,0),(3,2),(3,1),(2,1); +commit; +create index idx_test1_c1c2 on test1(c1 asc, c2 asc); +create index idx_test2_d1d2 on test2(d1 asc, d2 asc); +#5.1 最后加了排序, which can't be optimized... +EXPLAIN select c2, c1 from test1 union select d2,d1 from test2 order by c2,c1; +Query Plan +=============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------------- +|0 |SORT | |22 |109 | +|1 | MERGE UNION DISTINCT| |22 |85 | +|2 | TABLE SCAN |test1(idx_test1_c1c2)|11 |38 | +|3 | TABLE SCAN |test2(idx_test2_d1d2)|11 |38 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC]) + 1 - output([UNION([1])], [UNION([2])]), filter(nil) + 2 - output([test1.c2], [test1.c1]), filter(nil), + access([test1.c2], [test1.c1]), partitions(p0) + 3 - output([test2.d2], [test2.d1]), filter(nil), + access([test2.d2], [test2.d1]), partitions(p0) + +select c2, c1 from test1 union select d2,d1 from test2 order by c2,c1; ++------+------+ +| c2 | c1 | ++------+------+ +| 0 | 1 | +| 0 | 2 | +| 0 | 3 | +| 1 | 1 | +| 1 | 2 | +| 1 | 3 | +| 2 | 1 | +| 2 | 2 | +| 2 | 3 | +| 3 | 1 | ++------+------+ + +#5.2 最后的排序可以被优化 +EXPLAIN select c2, c1 from test1 union select d2,d1 from test2 order by c1,c2; +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------- +|0 |MERGE UNION DISTINCT| |22 |85 | +|1 | TABLE SCAN |test1(idx_test1_c1c2)|11 |38 | +|2 | TABLE SCAN |test2(idx_test2_d1d2)|11 |38 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([test1.c2], [test1.c1]), filter(nil), + access([test1.c2], [test1.c1]), partitions(p0) + 2 - output([test2.d2], [test2.d1]), filter(nil), + access([test2.d2], [test2.d1]), partitions(p0) + +select c2, c1 from test1 union select d2,d1 from test2 order by c1,c2; ++------+------+ +| c2 | c1 | ++------+------+ +| 0 | 1 | +| 1 | 1 | +| 2 | 1 | +| 3 | 1 | +| 0 | 2 | +| 1 | 2 | +| 2 | 2 | +| 0 | 3 | +| 1 | 3 | +| 2 | 3 | ++------+------+ + +#5.3 最后的排序由于是逆序不能被优化掉 +EXPLAIN select c2, c1 from test1 union select d2,d1 from test2 order by c1 desc,c2 desc; +Query Plan +=============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------------- +|0 |SORT | |22 |109 | +|1 | MERGE UNION DISTINCT| |22 |85 | +|2 | TABLE SCAN |test1(idx_test1_c1c2)|11 |38 | +|3 | TABLE SCAN |test2(idx_test2_d1d2)|11 |38 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil), sort_keys([UNION([2]), DESC], [UNION([1]), DESC]) + 1 - output([UNION([1])], [UNION([2])]), filter(nil) + 2 - output([test1.c2], [test1.c1]), filter(nil), + access([test1.c2], [test1.c1]), partitions(p0) + 3 - output([test2.d2], [test2.d1]), filter(nil), + access([test2.d2], [test2.d1]), partitions(p0) + +select c2, c1 from test1 union select d2,d1 from test2 order by c1 desc,c2 desc; ++------+------+ +| c2 | c1 | ++------+------+ +| 2 | 3 | +| 1 | 3 | +| 0 | 3 | +| 2 | 2 | +| 1 | 2 | +| 0 | 2 | +| 3 | 1 | +| 2 | 1 | +| 1 | 1 | +| 0 | 1 | ++------+------+ + +#5.4 整数的查询项, 6 rows, 10, 4 rows +EXPLAIN select 1, c1 from test1 union select 2,d1 from test2 order by 1,2; +Query Plan +=============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------------- +|0 |SORT | |22 |104 | +|1 | MERGE UNION DISTINCT| |22 |84 | +|2 | TABLE SCAN |test1(idx_test1_c1c2)|11 |38 | +|3 | TABLE SCAN |test2(idx_test2_d1d2)|11 |38 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil), sort_keys([UNION([1]), ASC], [UNION([2]), ASC]) + 1 - output([UNION([1])], [UNION([2])]), filter(nil) + 2 - output([1], [test1.c1]), filter(nil), + access([test1.c1]), partitions(p0) + 3 - output([2], [test2.d1]), filter(nil), + access([test2.d1]), partitions(p0) + +select 1, c1 from test1 union select 2,d1 from test2 order by 1,2; ++------+------+ +| 1 | c1 | ++------+------+ +| 1 | 1 | +| 1 | 2 | +| 1 | 3 | +| 2 | 1 | +| 2 | 2 | +| 2 | 3 | ++------+------+ + +EXPLAIN select 1, c2 from test1 union select d1,d2 from test2 order by 1,2; +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE UNION DISTINCT| |22 |105 | +|1 | SORT | |11 |47 | +|2 | TABLE SCAN |test1|11 |38 | +|3 | SORT | |11 |50 | +|4 | TABLE SCAN |test2|11 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([1], [test1.c2]), filter(nil), sort_keys([test1.c2, ASC]) + 2 - output([test1.c2]), filter(nil), + access([test1.c2]), partitions(p0) + 3 - output([cast(test2.d1, BIGINT(20, 0))], [test2.d2]), filter(nil), sort_keys([cast(test2.d1, BIGINT(20, 0)), ASC], [test2.d2, ASC]) + 4 - output([test2.d2], [cast(test2.d1, BIGINT(20, 0))]), filter(nil), + access([test2.d1], [test2.d2]), partitions(p0) + +select 1, c2 from test1 union select d1,d2 from test2 order by 1,2; ++------+------+ +| 1 | c2 | ++------+------+ +| 1 | 0 | +| 1 | 1 | +| 1 | 2 | +| 1 | 3 | +| 2 | 0 | +| 2 | 1 | +| 2 | 2 | +| 3 | 0 | +| 3 | 1 | +| 3 | 2 | ++------+------+ +EXPLAIN select mod(c1,2),mod(c2,2) from test1 union select mod(d1,2),mod(d2,2) from test2 order by 1,2; +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE UNION DISTINCT| |22 |107 | +|1 | SORT | |11 |50 | +|2 | TABLE SCAN |test1|11 |38 | +|3 | SORT | |11 |50 | +|4 | TABLE SCAN |test2|11 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([test1.c1 % 2], [test1.c2 % 2]), filter(nil), sort_keys([test1.c1 % 2, ASC], [test1.c2 % 2, ASC]) + 2 - output([test1.c1 % 2], [test1.c2 % 2]), filter(nil), + access([test1.c1], [test1.c2]), partitions(p0) + 3 - output([test2.d1 % 2], [test2.d2 % 2]), filter(nil), sort_keys([test2.d1 % 2, ASC], [test2.d2 % 2, ASC]) + 4 - output([test2.d1 % 2], [test2.d2 % 2]), filter(nil), + access([test2.d1], [test2.d2]), partitions(p0) + +select mod(c1,2),mod(c2,2) from test1 union select mod(d1,2),mod(d2,2) from test2 order by 1,2; ++-----------+-----------+ +| mod(c1,2) | mod(c2,2) | ++-----------+-----------+ +| 0 | 0 | +| 0 | 1 | +| 1 | 0 | +| 1 | 1 | ++-----------+-----------+ + +#6 from mysqltest union1, simply recreate +create table x1(c1 int, c2 char(10), c3 int); +create table x2(d1 int, d2 char(10), d3 int, index ix2(d2, d3)); +EXPLAIN insert into x1 values(1,'xx2',3),(2,'xxx3',4),(3,'aaa4',5); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |3 |1 | +|1 | EXPRESSION| |3 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(CHAR,utf8mb4_general_ci,length:10,NULL,__values.c2)], [column_conv(INT,PS:(11,0),NULL,__values.c3)]), filter(nil), + columns([{x1: ({x1: (x1.__pk_increment, x1.c1, x1.c2, x1.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 'xx2', 3}, {2, 'xxx3', 4}, {3, 'aaa4', 5}) + +insert into x1 values(1,'xx2',3),(2,'xxx3',4),(3,'aaa4',5); +EXPLAIN insert into x2 values(11,'xx2',3),(2,'xx3',4),(3,'aaa4',5); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |3 |1 | +|1 | EXPRESSION| |3 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.d1)], [column_conv(CHAR,utf8mb4_general_ci,length:10,NULL,__values.d2)], [column_conv(INT,PS:(11,0),NULL,__values.d3)]), filter(nil), + columns([{x2: ({x2: (x2.__pk_increment, x2.d1, x2.d2, x2.d3)})}]), partitions(p0) + 1 - output([__values.d1], [__values.d2], [__values.d3]), filter(nil) + values({11, 'xx2', 3}, {2, 'xx3', 4}, {3, 'aaa4', 5}) + +insert into x2 values(11,'xx2',3),(2,'xx3',4),(3,'aaa4',5); +EXPLAIN select c2, c3 from x1 union select /*+ index(x2 ix2) */ d2, d3 from x2 order by 1,2; +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |MERGE UNION DISTINCT| |6 |80 | +|1 | SORT | |3 |41 | +|2 | TABLE SCAN |x1 |3 |37 | +|3 | TABLE SCAN |x2(ix2)|3 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([x1.c2], [x1.c3]), filter(nil), sort_keys([x1.c2, ASC], [x1.c3, ASC]) + 2 - output([x1.c2], [x1.c3]), filter(nil), + access([x1.c2], [x1.c3]), partitions(p0) + 3 - output([x2.d2], [x2.d3]), filter(nil), + access([x2.d2], [x2.d3]), partitions(p0) + +select c2, c3 from x1 union select /*+ index(x2 ix2) */ d2, d3 from x2 order by 1,2; ++------+------+ +| c2 | c3 | ++------+------+ +| aaa4 | 5 | +| xx2 | 3 | +| xx3 | 4 | +| xxx3 | 4 | ++------+------+ +EXPLAIN select c3, c2 from x1 union select /*+ index(x2 ix2) */ d3, d2 from x2 order by 1,2; +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |MERGE UNION DISTINCT| |6 |81 | +|1 | SORT | |3 |40 | +|2 | TABLE SCAN |x1 |3 |37 | +|3 | SORT | |3 |40 | +|4 | TABLE SCAN |x2(ix2)|3 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([x1.c3], [x1.c2]), filter(nil), sort_keys([x1.c3, ASC], [x1.c2, ASC]) + 2 - output([x1.c3], [x1.c2]), filter(nil), + access([x1.c3], [x1.c2]), partitions(p0) + 3 - output([x2.d3], [x2.d2]), filter(nil), sort_keys([x2.d3, ASC], [x2.d2, ASC]) + 4 - output([x2.d3], [x2.d2]), filter(nil), + access([x2.d3], [x2.d2]), partitions(p0) + +select c3, c2 from x1 union select /*+ index(x2 ix2) */ d3, d2 from x2 order by 1,2; ++------+------+ +| c3 | c2 | ++------+------+ +| 3 | xx2 | +| 4 | xx3 | +| 4 | xxx3 | +| 5 | aaa4 | ++------+------+ + +CREATE TABLE ts1 (c1 VARCHAR(10) NOT NULL, c2 INT NOT NULL); +CREATE TABLE ts2 (c1 VARCHAR(10) NOT NULL, c2 INT NOT NULL); +EXPLAIN INSERT INTO ts1 (c1, c2) VALUES ('t1a', 1), ('t1a', 2), ('t1a', 3), ('t1b', 2), ('t1b', 1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |5 |2 | +|1 | EXPRESSION| |5 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(VARCHAR,utf8mb4_general_ci,length:10,NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)]), filter(nil), + columns([{ts1: ({ts1: (ts1.__pk_increment, ts1.c1, ts1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({'t1a', 1}, {'t1a', 2}, {'t1a', 3}, {'t1b', 2}, {'t1b', 1}) + +INSERT INTO ts1 (c1, c2) VALUES ('t1a', 1), ('t1a', 2), ('t1a', 3), ('t1b', 2), ('t1b', 1); +EXPLAIN INSERT INTO ts2 (c1, c2) VALUES ('t2a', 1), ('t2a', 2), ('t2a', 3), ('t2b', 2), ('t2b', 1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |5 |2 | +|1 | EXPRESSION| |5 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(VARCHAR,utf8mb4_general_ci,length:10,NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)]), filter(nil), + columns([{ts2: ({ts2: (ts2.__pk_increment, ts2.c1, ts2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({'t2a', 1}, {'t2a', 2}, {'t2a', 3}, {'t2b', 2}, {'t2b', 1}) + +INSERT INTO ts2 (c1, c2) VALUES ('t2a', 1), ('t2a', 2), ('t2a', 3), ('t2b', 2), ('t2b', 1); + +EXPLAIN SELECT c1, c2 FROM ( + SELECT c1, c2 FROM ts1 + UNION + (SELECT c1, c2 FROM ts2 ORDER BY c2 DESC, c1 LIMIT 1) +) AS res order by 1,2; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE UNION DISTINCT| |6 |88 | +|1 | SORT | |5 |47 | +|2 | TABLE SCAN |ts1 |5 |37 | +|3 | SORT | |1 |40 | +|4 | LIMIT | |1 |39 | +|5 | TOP-N SORT | |1 |39 | +|6 | TABLE SCAN |ts2 |5 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([ts1.c1], [ts1.c2]), filter(nil), sort_keys([ts1.c1, ASC], [ts1.c2, ASC]) + 2 - output([ts1.c1], [ts1.c2]), filter(nil), + access([ts1.c1], [ts1.c2]), partitions(p0) + 3 - output([ts2.c1], [ts2.c2]), filter(nil), sort_keys([ts2.c1, ASC], [ts2.c2, ASC]) + 4 - output([ts2.c1], [ts2.c2]), filter(nil), limit(1), offset(nil) + 5 - output([ts2.c1], [ts2.c2]), filter(nil), sort_keys([ts2.c2, DESC], [ts2.c1, ASC]), topn(1) + 6 - output([ts2.c1], [ts2.c2]), filter(nil), + access([ts2.c1], [ts2.c2]), partitions(p0) + +SELECT c1, c2 FROM ( + SELECT c1, c2 FROM ts1 + UNION + (SELECT c1, c2 FROM ts2 ORDER BY c2 DESC, c1 LIMIT 1) +) AS res order by 1,2; ++-----+----+ +| c1 | c2 | ++-----+----+ +| t1a | 1 | +| t1a | 2 | +| t1a | 3 | +| t1b | 1 | +| t1b | 2 | +| t2a | 3 | ++-----+----+ + +DROP TABLE IF EXISTS T1, T2, T3; +CREATE TABLE T1 (PK INT PRIMARY KEY, C1 INT, C2 INT); +CREATE TABLE T2 (PK INT PRIMARY KEY, C1 INT, C2 INT); +CREATE TABLE T3 (PK INT PRIMARY KEY, C1 INT, C2 INT); + +EXPLAIN SELECT C1, C2, PK FROM T1 ORDER BY PK DESC LIMIT 1 UNION (SELECT C1, C2, PK FROM T2 UNION SELECT C1, C2 ,PK FROM T3); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |HASH DISTINCT| |5 |117 | +|1 | UNION ALL | |5 |111 | +|2 | TABLE SCAN |t1(Reverse)|1 |36 | +|3 | TABLE SCAN |t2 |2 |37 | +|4 | TABLE SCAN |t3 |2 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil), + distinct([UNION([1])], [UNION([2])], [UNION([3])]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([t1.C1], [t1.C2], [t1.PK]), filter(nil), + access([t1.C1], [t1.C2], [t1.PK]), partitions(p0), + limit(1), offset(nil) + 3 - output([t2.C1], [t2.C2], [t2.PK]), filter(nil), + access([t2.C1], [t2.C2], [t2.PK]), partitions(p0) + 4 - output([t3.C1], [t3.C2], [t3.PK]), filter(nil), + access([t3.C1], [t3.C2], [t3.PK]), partitions(p0) + +SELECT C1, C2, PK FROM T1 ORDER BY PK DESC LIMIT 1 UNION (SELECT C1, C2, PK FROM T2 UNION SELECT C1, C2 ,PK FROM T3); ++------+------+----+ +| C1 | C2 | PK | ++------+------+----+ +| 5 | 4 | 2 | +| 1 | 1 | 1 | +| 1 | 1 | 2 | ++------+------+----+ + +CREATE TABLE table2_bigint ( +col_decimal_20_0_signed decimal(20,0) signed, +col_decimal_20_0_unsigned decimal(20,0) unsigned, +col_char_20 char(20), +col_decimal_20_0 decimal(20,0), +pk bigint, +col_bigint bigint, +col_timestamp_6 timestamp(6) NULL DEFAULT NULL, +col_bigint_unsigned bigint unsigned, +col_bigint_signed bigint signed, +primary key (pk)); +CREATE TABLE table100_bigint ( +col_bigint_unsigned bigint unsigned, +col_decimal_20_0_unsigned decimal(20,0) unsigned, +col_bigint_signed bigint signed, +col_bigint bigint, +pk bigint, +col_decimal_20_0_signed decimal(20,0) signed, +col_timestamp_6 timestamp(6) NULL DEFAULT NULL, +col_char_20 char(20), +col_decimal_20_0 decimal(20,0), +/*Indices*/ +primary key (pk)) ; + +EXPLAIN SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM + ( + (SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM table2_bigint + WHERE col_decimal_20_0_unsigned <> 99999 + ORDER BY pk DESC , 6 DESC , pk + LIMIT 1, + 5) + UNION DISTINCT SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM ( + (SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM table100_bigint + WHERE col_decimal_20_0_signed = ROUND(SIGN(col_decimal_20_0)) + ORDER BY col_bigint_signed , 6 , col_decimal_20_0 , pk DESC LIMIT 7) + UNION DISTINCT + (SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM table2_bigint + WHERE SUBSTR('g', 1, LEAST(58, 20)) <> INSERT('lgeswk', 99, 8, TRIM(SUBSTRING(CONVERT(TRIM(SUBSTR(TRIM(SUBSTR(SUBSTRING('nlge', 1, LEAST(58, 20)), 1, 2) + FROM SUBSTRING('', 1, LEAST(58, 20))), 1, LEAST(58, 20))), CHAR(50)), 1, LEAST(58, 20)))) + ORDER BY 3 , + col_bigint_unsigned , + pk DESC)) TUT + ORDER BY col_bigint, + col_bigint_signed, + col_bigint_unsigned, + col_char_20, + col_decimal_20_0, + col_decimal_20_0_signed, + col_decimal_20_0_unsigned, + col_timestamp_6, + pk) TUT WHERE pk in (9727744 ,7826688 ,1657856 , 55039 , 50631) + ORDER BY col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk; +Query Plan +=================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------------- +|0 |SORT | |1 |252 | +|1 | SUBPLAN SCAN |TUT |1 |252 | +|2 | MERGE UNION DISTINCT | |1 |252 | +|3 | TABLE SCAN |table2_bigint(Reverse)|5 |42 | +|4 | SORT | |1 |206 | +|5 | MERGE UNION DISTINCT| |1 |206 | +|6 | SORT | |1 |126 | +|7 | LIMIT | |1 |124 | +|8 | TOP-N SORT | |1 |124 | +|9 | TABLE SCAN |table100_bigint |1 |122 | +|10| TABLE GET |table2_bigint |5 |76 | +=================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([TUT.col_bigint], [TUT.col_bigint_signed], [TUT.col_bigint_unsigned], [TUT.col_char_20], [TUT.col_decimal_20_0], [TUT.col_decimal_20_0_signed], [TUT.col_decimal_20_0_unsigned], [TUT.col_timestamp_6], [TUT.pk]), filter(nil), sort_keys([TUT.col_bigint, ASC], [TUT.col_bigint_signed, ASC], [TUT.col_bigint_unsigned, ASC], [TUT.col_char_20, ASC], [TUT.col_decimal_20_0, ASC], [TUT.col_decimal_20_0_signed, ASC], [TUT.col_decimal_20_0_unsigned, ASC], [TUT.col_timestamp_6, ASC], [TUT.pk, ASC]) + 1 - output([TUT.pk], [TUT.col_bigint], [TUT.col_bigint_signed], [TUT.col_bigint_unsigned], [TUT.col_char_20], [TUT.col_decimal_20_0], [TUT.col_decimal_20_0_signed], [TUT.col_decimal_20_0_unsigned], [TUT.col_timestamp_6]), filter(nil), + access([TUT.pk], [TUT.col_bigint], [TUT.col_bigint_signed], [TUT.col_bigint_unsigned], [TUT.col_char_20], [TUT.col_decimal_20_0], [TUT.col_decimal_20_0_signed], [TUT.col_decimal_20_0_unsigned], [TUT.col_timestamp_6]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])], [UNION([5])], [UNION([6])], [UNION([7])], [UNION([8])], [UNION([9])]), filter([UNION([9]) IN (9727744, 7826688, 1657856, 55039, 50631)]) + 3 - output([table2_bigint.col_bigint], [table2_bigint.col_bigint_signed], [table2_bigint.col_bigint_unsigned], [table2_bigint.col_char_20], [table2_bigint.col_decimal_20_0], [table2_bigint.col_decimal_20_0_signed], [table2_bigint.col_decimal_20_0_unsigned], [table2_bigint.col_timestamp_6], [table2_bigint.pk]), filter([cast(table2_bigint.col_decimal_20_0_unsigned, DECIMAL(20, 0)) != ?]), + access([table2_bigint.col_decimal_20_0_unsigned], [table2_bigint.col_bigint], [table2_bigint.col_bigint_signed], [table2_bigint.col_bigint_unsigned], [table2_bigint.col_char_20], [table2_bigint.col_decimal_20_0], [table2_bigint.col_decimal_20_0_signed], [table2_bigint.col_timestamp_6], [table2_bigint.pk]), partitions(p0), + limit(5), offset(1) + 4 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])], [UNION([5])], [UNION([6])], [UNION([7])], [UNION([8])], [UNION([9])]), filter(nil), sort_keys([UNION([9]), DESC], [UNION([1]), ASC], [UNION([2]), ASC], [UNION([3]), ASC], [UNION([4]), ASC], [UNION([5]), ASC], [UNION([6]), DESC], [UNION([7]), ASC], [UNION([8]), ASC]) + 5 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])], [UNION([5])], [UNION([6])], [UNION([7])], [UNION([8])], [UNION([9])]), filter([UNION([9]) IN (9727744, 7826688, 1657856, 55039, 50631)]) + 6 - output([table100_bigint.col_bigint], [table100_bigint.col_bigint_signed], [table100_bigint.col_bigint_unsigned], [table100_bigint.col_char_20], [table100_bigint.col_decimal_20_0], [table100_bigint.col_decimal_20_0_signed], [table100_bigint.col_decimal_20_0_unsigned], [table100_bigint.col_timestamp_6], [table100_bigint.pk]), filter(nil), sort_keys([table100_bigint.pk, ASC], [table100_bigint.col_bigint, ASC], [table100_bigint.col_bigint_signed, ASC], [table100_bigint.col_bigint_unsigned, ASC], [table100_bigint.col_char_20, ASC], [table100_bigint.col_decimal_20_0, ASC], [table100_bigint.col_decimal_20_0_signed, ASC], [table100_bigint.col_decimal_20_0_unsigned, ASC], [table100_bigint.col_timestamp_6, ASC]) + 7 - output([table100_bigint.col_bigint], [table100_bigint.col_bigint_signed], [table100_bigint.col_bigint_unsigned], [table100_bigint.col_char_20], [table100_bigint.col_decimal_20_0], [table100_bigint.col_decimal_20_0_signed], [table100_bigint.col_decimal_20_0_unsigned], [table100_bigint.col_timestamp_6], [table100_bigint.pk]), filter(nil), limit(7), offset(nil) + 8 - output([table100_bigint.col_bigint], [table100_bigint.col_bigint_signed], [table100_bigint.col_bigint_unsigned], [table100_bigint.col_char_20], [table100_bigint.col_decimal_20_0], [table100_bigint.col_decimal_20_0_signed], [table100_bigint.col_decimal_20_0_unsigned], [table100_bigint.col_timestamp_6], [table100_bigint.pk]), filter(nil), sort_keys([table100_bigint.col_bigint_signed, ASC], [table100_bigint.col_decimal_20_0_signed, ASC], [table100_bigint.col_decimal_20_0, ASC], [table100_bigint.pk, DESC]), topn(7) + 9 - output([table100_bigint.col_decimal_20_0_signed], [table100_bigint.col_decimal_20_0], [table100_bigint.col_bigint], [table100_bigint.col_bigint_signed], [table100_bigint.col_bigint_unsigned], [table100_bigint.col_char_20], [table100_bigint.col_decimal_20_0_unsigned], [table100_bigint.col_timestamp_6], [table100_bigint.pk]), filter([table100_bigint.col_decimal_20_0_signed = cast(ROUND(SIGN(table100_bigint.col_decimal_20_0)), DECIMAL(-1, 0))]), + access([table100_bigint.col_decimal_20_0_signed], [table100_bigint.col_decimal_20_0], [table100_bigint.col_bigint], [table100_bigint.col_bigint_signed], [table100_bigint.col_bigint_unsigned], [table100_bigint.col_char_20], [table100_bigint.col_decimal_20_0_unsigned], [table100_bigint.col_timestamp_6], [table100_bigint.pk]), partitions(p0) + 10 - output([table2_bigint.col_bigint], [table2_bigint.col_bigint_signed], [table2_bigint.col_bigint_unsigned], [table2_bigint.col_char_20], [table2_bigint.col_decimal_20_0], [table2_bigint.col_decimal_20_0_signed], [table2_bigint.col_decimal_20_0_unsigned], [table2_bigint.col_timestamp_6], [table2_bigint.pk]), filter(nil), + access([table2_bigint.col_bigint], [table2_bigint.col_bigint_signed], [table2_bigint.col_bigint_unsigned], [table2_bigint.col_char_20], [table2_bigint.col_decimal_20_0], [table2_bigint.col_decimal_20_0_signed], [table2_bigint.col_decimal_20_0_unsigned], [table2_bigint.col_timestamp_6], [table2_bigint.pk]), partitions(p0) + +SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM + ( + (SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM table2_bigint + WHERE col_decimal_20_0_unsigned <> 99999 + ORDER BY pk DESC , 6 DESC , pk + LIMIT 1, + 5) + UNION DISTINCT SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM ( + (SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM table100_bigint + WHERE col_decimal_20_0_signed = ROUND(SIGN(col_decimal_20_0)) + ORDER BY col_bigint_signed , 6 , col_decimal_20_0 , pk DESC LIMIT 7) + UNION DISTINCT + (SELECT col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk + FROM table2_bigint + WHERE SUBSTR('g', 1, LEAST(58, 20)) <> INSERT('lgeswk', 99, 8, TRIM(SUBSTRING(CONVERT(TRIM(SUBSTR(TRIM(SUBSTR(SUBSTRING('nlge', 1, LEAST(58, 20)), 1, 2) + FROM SUBSTRING('', 1, LEAST(58, 20))), 1, LEAST(58, 20))), CHAR(50)), 1, LEAST(58, 20)))) + ORDER BY 3 , + col_bigint_unsigned , + pk DESC)) TUT + ORDER BY col_bigint, + col_bigint_signed, + col_bigint_unsigned, + col_char_20, + col_decimal_20_0, + col_decimal_20_0_signed, + col_decimal_20_0_unsigned, + col_timestamp_6, + pk) TUT WHERE pk in (9727744 ,7826688 ,1657856 , 55039 , 50631) + ORDER BY col_bigint, col_bigint_signed, col_bigint_unsigned, col_char_20, col_decimal_20_0, col_decimal_20_0_signed, col_decimal_20_0_unsigned, col_timestamp_6, pk; ++------------+-------------------+---------------------+-------------+------------------+-------------------------+---------------------------+-----------------+---------+ +| col_bigint | col_bigint_signed | col_bigint_unsigned | col_char_20 | col_decimal_20_0 | col_decimal_20_0_signed | col_decimal_20_0_unsigned | col_timestamp_6 | pk | ++------------+-------------------+---------------------+-------------+------------------+-------------------------+---------------------------+-----------------+---------+ +| NULL | NULL | NULL | NULL | NULL | NULL | 0 | NULL | 7826688 | +| NULL | NULL | NULL | NULL | NULL | NULL | 1 | NULL | 1657856 | +| NULL | NULL | NULL | NULL | NULL | NULL | 11753728 | NULL | 9727744 | +| NULL | NULL | NULL | 0 | NULL | NULL | 999999999 | NULL | 50631 | +| NULL | NULL | NULL | nf | NULL | NULL | 22222222 | NULL | 55039 | ++------------+-------------------+---------------------+-------------+------------------+-------------------------+---------------------------+-----------------+---------+ + +drop database union_sort_opt_db; diff --git a/test/mysql_test/test_suite/optimizer/t/bushy_leading_hint.test b/tools/deploy/mysql_test/test_suite/optimizer/t/bushy_leading_hint.test similarity index 98% rename from test/mysql_test/test_suite/optimizer/t/bushy_leading_hint.test rename to tools/deploy/mysql_test/test_suite/optimizer/t/bushy_leading_hint.test index 9507d0310..c01e6d4cd 100644 --- a/test/mysql_test/test_suite/optimizer/t/bushy_leading_hint.test +++ b/tools/deploy/mysql_test/test_suite/optimizer/t/bushy_leading_hint.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: guoping.wgp +# owner group: SQL1 +# tags: optimizer +# description: leading hint is used to specify table join order, e.g., select /*+ leading(t1, t3, t2) */ ... from t1,t2,t3,t4,t5,t6... # will consider join order t1,t3,t2,*,*,* only, now leading hitn function is extended to support bushy tree with () , # leading (t1, t2, (t3, t4)) will get plan like # join __ join __ t1 @@ -31,8 +35,8 @@ create table t3(a int, b int, c int); ## set @@session.ob_enable_transformation = 0; # trace result set and plan both - - +--result_format 4 +--explain_protocol 2 --echo ### 1, 基本测试 ### #1.1 diff --git a/test/mysql_test/test_suite/optimizer/t/default_statistic.test b/tools/deploy/mysql_test/test_suite/optimizer/t/default_statistic.test similarity index 95% rename from test/mysql_test/test_suite/optimizer/t/default_statistic.test rename to tools/deploy/mysql_test/test_suite/optimizer/t/default_statistic.test index 292bb498c..ab53b73bf 100644 --- a/test/mysql_test/test_suite/optimizer/t/default_statistic.test +++ b/tools/deploy/mysql_test/test_suite/optimizer/t/default_statistic.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner:guoping.wgp +#owner group: sql1 +# tags: optimizer #this file test default optimizer selectivity --disable_warnings @@ -61,4 +64,4 @@ explain select * from t3 where c1 > 1 and c1 < 10; explain select * from t3 where c1 = 1 and c2 < 1; explain select * from t3 where c1 = 1 and c2 = 1; explain select * from t3 where c1 = 1 and c2 = 1 and c3 < 1; -explain select * from t3 where c1 = 1 and c2 = 1 and c3 = 1; +explain select * from t3 where c1 = 1 and c2 = 1 and c3 = 1; \ No newline at end of file diff --git a/test/mysql_test/test_suite/optimizer/t/equal_set_mysql.test b/tools/deploy/mysql_test/test_suite/optimizer/t/equal_set_mysql.test similarity index 99% rename from test/mysql_test/test_suite/optimizer/t/equal_set_mysql.test rename to tools/deploy/mysql_test/test_suite/optimizer/t/equal_set_mysql.test index fd2650cae..190c05ae4 100644 --- a/test/mysql_test/test_suite/optimizer/t/equal_set_mysql.test +++ b/tools/deploy/mysql_test/test_suite/optimizer/t/equal_set_mysql.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner:guoping.wgp +#owner group: sql1 +# tags: optimizer #equal set mainly has two advantages, the first one is to elimiate sort, the other one is to optimize partition_wise_join #test equal set in elimiating sort diff --git a/test/mysql_test/test_suite/optimizer/t/estimate_cost.test b/tools/deploy/mysql_test/test_suite/optimizer/t/estimate_cost.test similarity index 92% rename from test/mysql_test/test_suite/optimizer/t/estimate_cost.test rename to tools/deploy/mysql_test/test_suite/optimizer/t/estimate_cost.test index cde842dc2..89363820d 100644 --- a/test/mysql_test/test_suite/optimizer/t/estimate_cost.test +++ b/tools/deploy/mysql_test/test_suite/optimizer/t/estimate_cost.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: guoping.wgp +#owner group: sql1 +# tags: optimizer --disable_warnings --disable_query_log @@ -39,6 +42,7 @@ while($count < 300) if ($TENANT =='oracle') { +# case 1: all data in memtable, no sstable --echo case 1: all data in memtable, no sstable select count(*) from test_table; explain select * from test_table; @@ -53,6 +57,7 @@ explain select /*+index(test_table index_2)*/ * from test_table where name = 'na --source mysql_test/include/wait_daily_merge.inc --source mysql_test/include/check_stat.inc +# case 2: all data in sstable, not memtable data --echo case 2: all data in sstable, not memtable data select count(*) from test_table; explain select * from test_table; @@ -63,6 +68,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 22; select count(*) from test_table where name = 'name22'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name22'; +# case 3: main table delete estimate cost --echo case 3: main table delete estimate cost delete from test_table where id < 50; @@ -75,6 +81,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 33; select count(*) from test_table where name = 'name33'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name33'; +# case 4: main table delete -> insert estimate cost --echo case 4: main table delete -> insert estimate cost --let $count = 0 while($count < 50) @@ -93,6 +100,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 33; select count(*) from test_table where name = 'name33'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name33'; +# case 5: main table update estimate cost --echo case 5: main table update estimate cost --let $count = 100 while($count < 150) @@ -111,6 +119,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 44; select count(*) from test_table where name = 'name44'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name44'; +# case 6: main table update -> delete estimate cost --echo case 6: main table update -> delete estimate cost delete from test_table where id >= 100 and id < 150; @@ -123,6 +132,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 44; select count(*) from test_table where name = 'name44'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name44'; +# case 7: main table update -> delete -> insert estimate cost --echo case 7: main table update -> delete -> insert estimate cost --let $count = 100 while($count < 150) @@ -141,6 +151,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 44; select count(*) from test_table where name = 'name44'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name44'; +# case 8: index update estimate cost --echo case 8: index update estimate cost --let $count = 200 while($count < 250) @@ -159,6 +170,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 22; select count(*) from test_table where name = 'name22'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name22'; +# case 9: index update -> update back estimate cost --echo case 9: index update ->update back estimate cost --let $count = 200 while($count < 250) @@ -177,6 +189,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 22; select count(*) from test_table where name = 'name22'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name22'; +# case 10: main table insert estimate cost --echo case 10: main table insert estimate cost --let $count = 300 while($count < 400) @@ -195,6 +208,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 22; select count(*) from test_table where name = 'name22'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name22'; +# case 11: main table insert -> update estimate cost --echo case 11: main table insert ->update estimate cost --let $count = 300 while($count < 400) @@ -213,6 +227,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 22; select count(*) from test_table where name = 'name22'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name22'; +# case 12: main table insert -> update -> delete estimate cost --echo case 12: main table insert ->update -> delete estimate cost delete from test_table where id >= 300 and id < 400; @@ -225,6 +240,7 @@ explain select /*+index(test_table index_1)*/ * from test_table where age = 22; select count(*) from test_table where name = 'name22'; explain select /*+index(test_table index_2)*/ * from test_table where name = 'name22'; +# case 13: main table insert extra 10000 row estimate cost --echo case 13: main table insert extra 10000 row estimate cost --disable_query_log --let $count = 400 diff --git a/test/mysql_test/test_suite/optimizer/t/union_sort_opt.test b/tools/deploy/mysql_test/test_suite/optimizer/t/union_sort_opt.test similarity index 99% rename from test/mysql_test/test_suite/optimizer/t/union_sort_opt.test rename to tools/deploy/mysql_test/test_suite/optimizer/t/union_sort_opt.test index 1cc8d56b0..5e8af36e2 100644 --- a/test/mysql_test/test_suite/optimizer/t/union_sort_opt.test +++ b/tools/deploy/mysql_test/test_suite/optimizer/t/union_sort_opt.test @@ -1,6 +1,10 @@ --disable_query_log #set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: link.zt +# owner group: SQL1 +# tags: optimizer +# description: bug#11183594, union distinct 加入了不应该需要的sort算子 # 此前union查询要求查询项和索引完全匹配时才能消除sort, 新的优化下, 只要查询项 # 左匹配于index即可, 如index(c1,c2,c3,c4) # select c2, c1, c3 ... union select c2, c1, c3 即可不用sort @@ -18,8 +22,8 @@ create index idx_t4_c2c3 on t4(c2,c3); --source mysql_test/include/check_all_idx_ok.inc ## set @@session.ob_enable_transformation = 0; # trace result set and plan both - - +--result_format 4 +--explain_protocol 2 --echo ### 1, 基本测试 表有PK ### #1.1 以前就可以 @@ -205,6 +209,7 @@ SELECT c1, c2 FROM ( (SELECT c1, c2 FROM ts2 ORDER BY c2 DESC, c1 LIMIT 1) ) AS res order by 1,2; +# bug: https://work.aone.alibaba-inc.com/issue/21382678 --disable_warnings DROP TABLE IF EXISTS T1, T2, T3; diff --git a/test/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_multi_query.result b/tools/deploy/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_multi_query.result similarity index 74% rename from test/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_multi_query.result rename to tools/deploy/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_multi_query.result index cdfaaeb10..2670b813d 100644 --- a/test/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_multi_query.result +++ b/tools/deploy/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_multi_query.result @@ -1,13 +1,10 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; alter system flush plan cache global; -connection default; // test multi query hit plan drop table if exists t1; create table t1(c1 int); begin; -connection default; +select * from t1; select * from t1 where c1 = 1;select * from t1 where c1 = 1;select * from t1 where c1 = 1;// commit; // expected hit_count 2 diff --git a/tools/deploy/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_select_list.result b/tools/deploy/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_select_list.result new file mode 100644 index 000000000..850248f69 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/plan_cache/r/mysql/plan_cache_select_list.result @@ -0,0 +1,362 @@ +result_format: 4 +// >>>>>>>>>>>>>>>>>>>> TEST Paramed Const In Select <<<<<<<<<<<<<<<<<<<< + +// >>>>>>>>>> Test#1 Basic Cases +begin; + +select 1, 2, 3, 'hello' from dual; ++---+---+---+-------+ +| 1 | 2 | 3 | hello | ++---+---+---+-------+ +| 1 | 2 | 3 | hello | ++---+---+---+-------+ +select 3, 4, 5, 'hi' from dual; ++---+---+---+----+ +| 3 | 4 | 5 | hi | ++---+---+---+----+ +| 3 | 4 | 5 | hi | ++---+---+---+----+ + +// expect hit_count = 1 + +select substr('hello', 2), cast(2 as char(20)), concat('h', '2'), 1 is NULL, abs(-1), floor(1.23) from dual; ++--------------------+---------------------+------------------+-----------+---------+-------------+ +| substr('hello', 2) | cast(2 as char(20)) | concat('h', '2') | 1 is NULL | abs(-1) | floor(1.23) | ++--------------------+---------------------+------------------+-----------+---------+-------------+ +| ello | 2 | h2 | 0 | 1 | 1 | ++--------------------+---------------------+------------------+-----------+---------+-------------+ +select substr('hey', 2), cast(3 as char(20)), concat('', 'h2'), 1 is NULL, abs(-2), floor(2.23) from dual; ++------------------+---------------------+------------------+-----------+---------+-------------+ +| substr('hey', 2) | cast(3 as char(20)) | concat('', 'h2') | 1 is NULL | abs(-2) | floor(2.23) | ++------------------+---------------------+------------------+-----------+---------+-------------+ +| ey | 3 | h2 | 0 | 2 | 2 | ++------------------+---------------------+------------------+-----------+---------+-------------+ + +// expect hit_count = 1 +select hit_count from oceanbase.gv$plan_cache_plan_stat where statement like 'select substr(?, 2), cast(? as char(20)), concat(?, ?), ? is NULL, abs(?), floor(?) from dual'; ++-----------+ +| hit_count | ++-----------+ +| 1 | ++-----------+ +commit; + +drop table if exists test_t; +insert into test_t values (1, 1), (2, 2), (3, 3); + + +select a, a as test_a, b + 1 as test_b, a + 1, b + 1 from test_t; ++------+--------+--------+-------+-------+ +| a | test_a | test_b | a + 1 | b + 1 | ++------+--------+--------+-------+-------+ +| 1 | 1 | 2 | 2 | 2 | +| 2 | 2 | 3 | 3 | 3 | +| 3 | 3 | 4 | 4 | 4 | ++------+--------+--------+-------+-------+ +select a, a as test_a, b + 3 as test_b, a + 2, b + 3 from test_t; ++------+--------+--------+-------+-------+ +| a | test_a | test_b | a + 2 | b + 3 | ++------+--------+--------+-------+-------+ +| 1 | 1 | 4 | 3 | 4 | +| 2 | 2 | 5 | 4 | 5 | +| 3 | 3 | 6 | 5 | 6 | ++------+--------+--------+-------+-------+ + +// expect hit_count = 1 +select hit_count from oceanbase.gv$plan_cache_plan_stat where statement like 'select a, a as test_a, b + ? as test_b, a + ?, b + ? from test_t'; ++-----------+ +| hit_count | ++-----------+ +| 1 | ++-----------+ + +// >>>>>>>>>> Test#2 Subquery +select * from (select 1, 2, 3 from dual); ++---+---+---+ +| 1 | 2 | 3 | ++---+---+---+ +| 1 | 2 | 3 | ++---+---+---+ +select * from (select 2, 3, 4 from dual); ++---+---+---+ +| 2 | 3 | 4 | ++---+---+---+ +| 2 | 3 | 4 | ++---+---+---+ + +// expect hit_count = 1 +select hit_count from oceanbase.gv$plan_cache_plan_stat where statement like 'select * from (select ?, ?, ? from dual)'; ++-----------+ +| hit_count | ++-----------+ +| 1 | ++-----------+ + +// expect error +select * from (select 1, 2, 2 from dual); +ERROR 42S21: Duplicate column name '2' + +select * from (select 1 as c1, a, b + 1 from test_t); ++----+------+-------+ +| c1 | a | b + 1 | ++----+------+-------+ +| 1 | 1 | 2 | +| 1 | 2 | 3 | +| 1 | 3 | 4 | ++----+------+-------+ +select * from (select 2 as c1, a, b + 2 from test_t); ++----+------+-------+ +| c1 | a | b + 2 | ++----+------+-------+ +| 2 | 1 | 3 | +| 2 | 2 | 4 | +| 2 | 3 | 5 | ++----+------+-------+ + +// expect hit_count = 1 +select hit_count from oceanbase.gv$plan_cache_plan_stat where statement like 'select * from (select ? as c1, a, b + ? from test_t)'; ++-----------+ +| hit_count | ++-----------+ +| 1 | ++-----------+ +commit; + +// >>>>>>>>>> Test#3 Column is Const String +begin; + +select 'hello' from dual; ++-------+ +| hello | ++-------+ +| hello | ++-------+ +select "hello hey" from dual; ++-----------+ +| hello hey | ++-----------+ +| hello hey | ++-----------+ +select '\'hello' from dual; ++--------+ +| 'hello | ++--------+ +| 'hello | ++--------+ +select '\0hello' from dual; ++--------+ +| hello | ++--------+ +| hello | ++--------+ +select '\\hello' from dual; ++--------+ +| \hello | ++--------+ +| \hello | ++--------+ +select '\"hello' from dual; ++--------+ +| "hello | ++--------+ +| "hello | ++--------+ +select '\nhello\n' from dual; ++---------+ +| hello + | ++---------+ +| +hello + | ++---------+ +select '\rhello\r' from dual; ++---------+ +| hello | ++---------+ +| hello | ++---------+ +select '\thello\t' from dual; ++---------+ +| hello | ++---------+ +| hello | ++---------+ + +// >>>>>>>>>> Test#4 Negetive Const +select -1, -2, -1-2, 1-3 from dual; ++----+----+------+-----+ +| -1 | -2 | -1-2 | 1-3 | ++----+----+------+-----+ +| -1 | -2 | -3 | -2 | ++----+----+------+-----+ +select -2, -3, -2-1, 1-3 from dual; ++----+----+------+-----+ +| -2 | -3 | -2-1 | 1-3 | ++----+----+------+-----+ +| -2 | -3 | -3 | -2 | ++----+----+------+-----+ + +// expect hit_count = 1 +select hit_count from oceanbase.gv$plan_cache_plan_stat where statement like 'select ?, ?, ?-?, ?-? from dual'; ++-----------+ +| hit_count | ++-----------+ +| 1 | ++-----------+ +commit; + +// >>>>>>>>>> Test#4 Select From View +drop view if exists test_view; +create view test_view as select 1, 2, 3 from dual; + +select * from test_view; ++---+---+---+ +| 1 | 2 | 3 | ++---+---+---+ +| 1 | 2 | 3 | ++---+---+---+ + +// >>>>>>>>>> Test#5 Const Value with Prefix +begin; + +select B'0011' from dual; ++---------+ +| B'0011' | ++---------+ +|  | ++---------+ +select B'1010' from dual; ++---------+ +| B'1010' | ++---------+ +| + | ++---------+ +select Date'2012-12-12' from dual; ++------------------+ +| Date'2012-12-12' | ++------------------+ +| 2012-12-12 | ++------------------+ +select Date'2013-12-12' from dual; ++------------------+ +| Date'2013-12-12' | ++------------------+ +| 2013-12-12 | ++------------------+ +select Time'12:00:00' from dual; ++----------------+ +| Time'12:00:00' | ++----------------+ +| 12:00:00 | ++----------------+ +select Time'12:01:01' from dual; ++----------------+ +| Time'12:01:01' | ++----------------+ +| 12:01:01 | ++----------------+ +select Timestamp'2012-12-12 12:12:12' from dual; ++--------------------------------+ +| Timestamp'2012-12-12 12:12:12' | ++--------------------------------+ +| 2012-12-12 12:12:12 | ++--------------------------------+ +select Timestamp'2012-12-12 12:13:13' from dual; ++--------------------------------+ +| Timestamp'2012-12-12 12:13:13' | ++--------------------------------+ +| 2012-12-12 12:13:13 | ++--------------------------------+ + +// >>>>>>>>>> Test#6 Union +select 1 from dual union select 2 from dual; ++------+ +| 1 | ++------+ +| 1 | +| 2 | ++------+ +select 2 from dual union select 3 from dual; ++------+ +| 2 | ++------+ +| 2 | +| 3 | ++------+ + +// expect hit_count = 1 +select hit_count from oceanbase.gv$plan_cache_plan_stat where statement like 'select ? from dual union select ? from dual'; ++-----------+ +| hit_count | ++-----------+ +| 1 | ++-----------+ + +select * from (select 1, 2 + 3, 4 as c0, a, b + 1 from test_t union select 1, 2, 3, 4, 6 from dual); ++------+-------+------+------+-------+ +| 1 | 2 + 3 | c0 | a | b + 1 | ++------+-------+------+------+-------+ +| 1 | 2 | 3 | 4 | 6 | +| 1 | 5 | 4 | 1 | 2 | +| 1 | 5 | 4 | 2 | 3 | +| 1 | 5 | 4 | 3 | 4 | ++------+-------+------+------+-------+ +select * from (select 2, 3 + 4, 5 as c0, a, b + 2 from test_t union select 2, 3, 4, 5, 6 from dual); ++------+-------+------+------+-------+ +| 2 | 3 + 4 | c0 | a | b + 2 | ++------+-------+------+------+-------+ +| 2 | 3 | 4 | 5 | 6 | +| 2 | 7 | 5 | 1 | 3 | +| 2 | 7 | 5 | 2 | 4 | +| 2 | 7 | 5 | 3 | 5 | ++------+-------+------+------+-------+ + +// expect hit_count = 1 +// >>>>>>>>>> Test#7 `select str as str` and `select str str` +select 'abc' as 'a' from dual; ++-----+ +| a | ++-----+ +| abc | ++-----+ +select 'abd' as 'a' from dual; ++-----+ +| a | ++-----+ +| abd | ++-----+ +// expect hit_count = 1 +select hit_count from oceanbase.gv$plan_cache_plan_stat where statement like "select ? as 'a' from dual"; ++-----------+ +| hit_count | ++-----------+ +| 1 | ++-----------+ + +select 'abc' 'a' from dual; ++------+ +| abc | ++------+ +| abca | ++------+ +select 'adb' 'b' from dual; ++------+ +| adb | ++------+ +| adbb | ++------+ + +// expect hit_count = 1 +select hit_count from oceanbase.gv$plan_cache_plan_stat where statement like 'select ? from dual'; ++-----------+ +| hit_count | ++-----------+ +| 1 | ++-----------+ +commit; + +drop table if exists test_t; +drop view if exists test_view; +alter system set large_query_threshold = '100ms'; diff --git a/test/mysql_test/test_suite/plan_cache/t/plan_cache_multi_query.test b/tools/deploy/mysql_test/test_suite/plan_cache/t/plan_cache_multi_query.test similarity index 93% rename from test/mysql_test/test_suite/plan_cache/t/plan_cache_multi_query.test rename to tools/deploy/mysql_test/test_suite/plan_cache/t/plan_cache_multi_query.test index 7262664c3..fe578bfd8 100644 --- a/test/mysql_test/test_suite/plan_cache/t/plan_cache_multi_query.test +++ b/tools/deploy/mysql_test/test_suite/plan_cache/t/plan_cache_multi_query.test @@ -1,3 +1,5 @@ +## owner: xiaoyi.xy +# owner group: sql1 --disable_info --disable_metadata @@ -22,10 +24,12 @@ create table proxy_mock_table_for_pc(a int); drop table if exists t1; --enable_warnings create table t1(c1 int); +--sleep 3 begin; --source mysql_test/include/proxy_route_to_c.inc delimiter //; --disable_result_log +select * from t1; select * from t1 where c1 = 1;select * from t1 where c1 = 1;select * from t1 where c1 = 1;// delimiter ;// commit; diff --git a/test/mysql_test/test_suite/plan_cache/t/plan_cache_select_list.test b/tools/deploy/mysql_test/test_suite/plan_cache/t/plan_cache_select_list.test similarity index 97% rename from test/mysql_test/test_suite/plan_cache/t/plan_cache_select_list.test rename to tools/deploy/mysql_test/test_suite/plan_cache/t/plan_cache_select_list.test index fd0c00077..e922efb3a 100644 --- a/test/mysql_test/test_suite/plan_cache/t/plan_cache_select_list.test +++ b/tools/deploy/mysql_test/test_suite/plan_cache/t/plan_cache_select_list.test @@ -1,8 +1,12 @@ +#owner: guoyun.lgy +#owner group: sql1 ## +## Test Name: plan_cache_plan_num_limit ## +## Date: 2019-03-21 ## - +--result_format 4 --echo // >>>>>>>>>>>>>>>>>>>> TEST Paramed Const In Select <<<<<<<<<<<<<<<<<<<< connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/px/r/mysql/add_material.result b/tools/deploy/mysql_test/test_suite/px/r/mysql/add_material.result similarity index 100% rename from test/mysql_test/test_suite/px/r/mysql/add_material.result rename to tools/deploy/mysql_test/test_suite/px/r/mysql/add_material.result diff --git a/test/mysql_test/test_suite/px/r/mysql/alloc_material_for_producer_consumer_schedule_mode.result b/tools/deploy/mysql_test/test_suite/px/r/mysql/alloc_material_for_producer_consumer_schedule_mode.result similarity index 100% rename from test/mysql_test/test_suite/px/r/mysql/alloc_material_for_producer_consumer_schedule_mode.result rename to tools/deploy/mysql_test/test_suite/px/r/mysql/alloc_material_for_producer_consumer_schedule_mode.result diff --git a/test/mysql_test/test_suite/px/r/mysql/default_open_px.result b/tools/deploy/mysql_test/test_suite/px/r/mysql/default_open_px.result similarity index 94% rename from test/mysql_test/test_suite/px/r/mysql/default_open_px.result rename to tools/deploy/mysql_test/test_suite/px/r/mysql/default_open_px.result index d55585db3..15c1e9abf 100644 --- a/test/mysql_test/test_suite/px/r/mysql/default_open_px.result +++ b/tools/deploy/mysql_test/test_suite/px/r/mysql/default_open_px.result @@ -2,7 +2,9 @@ drop database if exists muhangtest; drop table if exists t1; create database muhangtest; use muhangtest; +result_format: 4 create table t1 (c1 int(11) not null, c2 int(11) not null, c3 int(11) not null, primary key (c1, c2, c3)) partition by key(c2) partitions 4; + explain select * from t1; Query Plan ====================================================== @@ -117,14 +119,19 @@ Outputs & filters: 3 - output([t1.c2], [t1.c1], [t1.c3]), filter(nil), access([t1.c2], [t1.c1], [t1.c3]), partitions(p[0-3]) + drop table if exists t7; create table t7(a int, b int, c int, d int, primary key (a)) partition by hash(a) partitions 3; insert into t7 values(1,2,3,4); insert into t7 values(2,3,5,6); select /*+NO_REWRITE use_px */ * from t7 as A, t7 as B where A.a = B.a and exists(select * from t7 where t7.a=B.a); -a b c d a b c d -1 2 3 4 1 2 3 4 -2 3 5 6 2 3 5 6 ++---+------+------+------+---+------+------+------+ +| a | b | c | d | a | b | c | d | ++---+------+------+------+---+------+------+------+ +| 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | +| 2 | 3 | 5 | 6 | 2 | 3 | 5 | 6 | ++---+------+------+------+---+------+------+------+ + drop table if exists t1; drop table if exists t7; drop database if exists muhangtest; diff --git a/test/mysql_test/test_suite/px/r/mysql/dml_use_px.result b/tools/deploy/mysql_test/test_suite/px/r/mysql/dml_use_px.result similarity index 91% rename from test/mysql_test/test_suite/px/r/mysql/dml_use_px.result rename to tools/deploy/mysql_test/test_suite/px/r/mysql/dml_use_px.result index 1f39c89d6..8cb30e8e4 100644 --- a/test/mysql_test/test_suite/px/r/mysql/dml_use_px.result +++ b/tools/deploy/mysql_test/test_suite/px/r/mysql/dml_use_px.result @@ -1,4 +1,6 @@ +result_format: 4 drop table if exists s,p,p4,no_p,temp_s,temp_p,temp_p4,temp_p5; + create table s(c1 int primary key, c2 int ,c3 int); create table p(c1 int primary key, c2 int ,c3 int) partition by hash(c1) partitions 4; create table p4(c1 int primary key, c2 int ,c3 int) partition by hash(c1) partitions 4; @@ -7,6 +9,8 @@ create table temp_s(c1 int, c2 int, c3 int); create table temp_p(c1 int, c2 int ,c3 int) partition by hash(c1) partitions 4; create table temp_p4(c1 int, c2 int ,c3 int) partition by hash(c1) partitions 4; create table temp_p5(c1 int, c2 int ,c3 int) partition by hash(c1) partitions 5; + +## delete测试 insert into s(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px*/ from s; Query Plan @@ -40,7 +44,10 @@ Outputs & filters: delete /*+use_px*/ from s; select * from s order by c1; -c1 c2 c3 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ ++----+------+------+ insert into s(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+use_px, parallel(10)*/ from s; Query Plan @@ -65,7 +72,11 @@ Outputs & filters: delete /*+use_px, parallel(10)*/ from s; select * from s order by c1; -c1 c2 c3 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ ++----+------+------+ + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px,parallel(10)*/ from p; Query Plan @@ -111,7 +122,11 @@ Outputs & filters: delete /*+use_px,parallel(10)*/ from p; select * from p order by c1; -c1 c2 c3 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ ++----+------+------+ + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px,parallel(10)*/ from p where c1 >= 5; Query Plan @@ -157,12 +172,16 @@ Outputs & filters: delete /*+use_px,parallel(10)*/ from p where c1 >= 5; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | ++----+------+------+ delete from p; + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+use_px*/ from p where c1 = 5; Query Plan @@ -223,17 +242,21 @@ Outputs & filters: delete /*+use_px,parallel(10)*/ from p where c1 = 5; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | ++----+------+------+ delete from p; + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); insert into p4(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px, use_nl(p,p4), parallel(10)*/ p from p,p4 where p.c1 = p4.c1 and p.c1 >= 5; @@ -292,12 +315,16 @@ Outputs & filters: delete /*+use_px, parallel(10)*/ p from p,p4 where p.c1 = p4.c1 and p.c1 >= 5; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | ++----+------+------+ delete from p; + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px, parallel(10)*/ p from p,p4 where p.c1 = p4.c2 and p.c1 >= 5; Query Plan @@ -367,12 +394,16 @@ Outputs & filters: delete /*+use_px, parallel(10)*/ p from p,p4 where p.c1 = p4.c2 and p.c1 >= 5; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | ++----+------+------+ delete from p; + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); insert into s(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px,parallel(10)*/ s,p from s,p; @@ -447,9 +478,16 @@ Outputs & filters: delete /*+use_px,parallel(10)*/ s,p from s,p; select * from p order by c1; -c1 c2 c3 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ ++----+------+------+ select * from s order by c1; -c1 c2 c3 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ ++----+------+------+ + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); insert into s(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px, parallel(10)*/ s from s,p where p.c1 = s.c1; @@ -524,7 +562,10 @@ Outputs & filters: delete /*+use_px, parallel(10),leading(s,p),pq_distribute(p,none,broadcast)*/ s from s,p where p.c1 = s.c1; select * from s order by c1; -c1 c2 c3 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ ++----+------+------+ insert into s(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+use_px, parallel(10)*/ s from s,p where p.c1 = s.c1; Query Plan @@ -563,7 +604,11 @@ Outputs & filters: delete /*+use_px, parallel(10)*/ s from s,p where p.c1 = s.c1; select * from s order by c1; -c1 c2 c3 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ ++----+------+------+ + insert into s(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px, parallel(10)*/ p from s,p where p.c1 = s.c1 and p.c1 = 1; Query Plan @@ -654,18 +699,22 @@ Outputs & filters: delete /*+use_px, parallel(10)*/ p from s,p where p.c1 = s.c1 and p.c1 = 1; select * from p order by c1; -c1 c2 c3 -2 2 NULL -3 3 NULL -4 4 NULL -5 5 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 5 | 5 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | ++----+------+------+ delete from p; delete from s; + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+no_use_px, parallel(10)*/ p from p4,p where p.c1 = p4.c2 and p4.c2 = 4; Query Plan @@ -731,16 +780,19 @@ Outputs & filters: delete /*+use_px, parallel(1)*/ p from p4,p where p.c1 = p4.c2 and p4.c2 = 4; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -5 5 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 5 | 5 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | ++----+------+------+ delete from p; insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic delete /*+use_px, parallel(10)*/ p from p4,p where p.c1 = p4.c2 and p4.c2 = 4; @@ -780,18 +832,23 @@ Outputs & filters: delete /*+use_px, parallel(10)*/ p from p4,p where p.c1 = p4.c2 and p4.c2 = 4; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -5 5 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 5 | 5 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | ++----+------+------+ delete from p; delete from p4; + +## update测试 insert into s(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic update /*+no_use_px, parallel(10)*/ s set s.c2 = 20 where s.c1 >= 5; Query Plan @@ -839,18 +896,22 @@ Outputs & filters: update /*+use_px, parallel(10)*/ s set s.c2 = 20 where s.c1 >=5; select * from s order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -5 20 NULL -6 20 NULL -7 20 NULL -8 20 NULL -9 20 NULL -10 20 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 5 | 20 | NULL | +| 6 | 20 | NULL | +| 7 | 20 | NULL | +| 8 | 20 | NULL | +| 9 | 20 | NULL | +| 10 | 20 | NULL | ++----+------+------+ delete from s; + insert into s(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic update /*+no_use_px, parallel(10)*/ s set s.c1 = 20 where s.c2 = 5; Query Plan @@ -898,18 +959,22 @@ Outputs & filters: update /*+use_px, parallel(10)*/ s set s.c1 = 20 where s.c2 = 5; select * from s order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL -20 5 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | +| 20 | 5 | NULL | ++----+------+------+ delete from s; + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic update /*+no_use_px, parallel(10)*/ p set p.c3 = 20 where p.c1 >= 5; Query Plan @@ -957,18 +1022,22 @@ Outputs & filters: update /*+use_px, parallel(10)*/ p set p.c3 = 20 where p.c1 >= 5; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -5 5 20 -6 6 20 -7 7 20 -8 8 20 -9 9 20 -10 10 20 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 5 | 5 | 20 | +| 6 | 6 | 20 | +| 7 | 7 | 20 | +| 8 | 8 | 20 | +| 9 | 9 | 20 | +| 10 | 10 | 20 | ++----+------+------+ delete from p; + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic update /*+no_use_px, parallel(10)*/ p set p.c1 = 20 where p.c1 = 5; Query Plan @@ -1016,18 +1085,22 @@ Outputs & filters: update /*+use_px, parallel(10)*/ p set p.c1 = 20 where p.c1 = 5; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL -20 5 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | +| 20 | 5 | NULL | ++----+------+------+ delete from p; + insert into p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic update /*+no_use_px, parallel(10)*/ p as pp set pp.c3 = 20 where pp.c1 >= 5; Query Plan @@ -1075,18 +1148,22 @@ Outputs & filters: update /*+use_px, parallel(10)*/ p as pp set pp.c3 = 20 where pp.c1 >= 5; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -5 5 20 -6 6 20 -7 7 20 -8 8 20 -9 9 20 -10 10 20 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 5 | 5 | 20 | +| 6 | 6 | 20 | +| 7 | 7 | 20 | +| 8 | 8 | 20 | +| 9 | 9 | 20 | +| 10 | 10 | 20 | ++----+------+------+ delete from p; + insert into no_p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); explain basic update /*+no_use_px, parallel(10)*/ no_p set no_p.c1 = 20 where no_p.c1 >= 5; Query Plan @@ -1134,22 +1211,29 @@ Outputs & filters: update /*+use_px, parallel(10)*/ no_p set no_p.c1 = 20 where no_p.c1 >= 5; select * from no_p order by c2; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -20 5 NULL -20 6 NULL -20 7 NULL -20 8 NULL -20 9 NULL -20 10 NULL ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 20 | 5 | NULL | +| 20 | 6 | NULL | +| 20 | 7 | NULL | +| 20 | 8 | NULL | +| 20 | 9 | NULL | +| 20 | 10 | NULL | ++------+------+------+ delete from no_p; + +## insert测试:insert插入的表是local的非分区表/单分区的计划是非multi part,其他都是multi part计划 +## insert不会出现GI算子在insert算子头上的计划 insert into temp_p(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); insert into temp_s(c1,c3) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); insert into temp_p4(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); insert into temp_p5(c1,c2) values(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(10,10); + explain basic insert /*+no_use_px*/ into s select * from temp_s; Query Plan ========================= @@ -1190,18 +1274,22 @@ Outputs & filters: insert /*+use_px*/ into s select * from temp_s; select * from s order by c1; -c1 c2 c3 -1 NULL 1 -2 NULL 2 -3 NULL 3 -4 NULL 4 -5 NULL 5 -6 NULL 6 -7 NULL 7 -8 NULL 8 -9 NULL 9 -10 NULL 10 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | NULL | 1 | +| 2 | NULL | 2 | +| 3 | NULL | 3 | +| 4 | NULL | 4 | +| 5 | NULL | 5 | +| 6 | NULL | 6 | +| 7 | NULL | 7 | +| 8 | NULL | 8 | +| 9 | NULL | 9 | +| 10 | NULL | 10 | ++----+------+------+ delete from s; + explain basic insert /*+no_use_px,parallel(10)*/ into s select * from temp_s; Query Plan =================================== @@ -1254,18 +1342,22 @@ Outputs & filters: insert /*+use_px,parallel(10)*/ into s select * from temp_s; select * from s order by c1; -c1 c2 c3 -1 NULL 1 -2 NULL 2 -3 NULL 3 -4 NULL 4 -5 NULL 5 -6 NULL 6 -7 NULL 7 -8 NULL 8 -9 NULL 9 -10 NULL 10 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | NULL | 1 | +| 2 | NULL | 2 | +| 3 | NULL | 3 | +| 4 | NULL | 4 | +| 5 | NULL | 5 | +| 6 | NULL | 6 | +| 7 | NULL | 7 | +| 8 | NULL | 8 | +| 9 | NULL | 9 | +| 10 | NULL | 10 | ++----+------+------+ delete from s; + explain basic insert /*+no_use_px,parallel(10)*/ into s select * from temp_p where temp_p.c2 >= 5; Query Plan =================================== @@ -1318,14 +1410,18 @@ Outputs & filters: insert /*+use_px,parallel(10)*/ into s select * from temp_p where temp_p.c2 >= 5; select * from s order by c1; -c1 c2 c3 -5 5 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 5 | 5 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | ++----+------+------+ delete from s; + explain basic insert /*+no_use_px,parallel(10)*/ into s select temp_p.c1,temp_p.c2,temp_s.c3 from temp_p,temp_s where temp_p.c1 = temp_s.c1; Query Plan ============================================== @@ -1410,18 +1506,22 @@ Outputs & filters: insert /*+use_px,parallel(10)*/ into s select temp_p.c1,temp_p.c2,temp_s.c3 from temp_p,temp_s where temp_p.c1 = temp_s.c1; select * from s order by c1; -c1 c2 c3 -1 1 1 -2 2 2 -3 3 3 -4 4 4 -5 5 5 -6 6 6 -7 7 7 -8 8 8 -9 9 9 -10 10 10 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | 1 | +| 2 | 2 | 2 | +| 3 | 3 | 3 | +| 4 | 4 | 4 | +| 5 | 5 | 5 | +| 6 | 6 | 6 | +| 7 | 7 | 7 | +| 8 | 8 | 8 | +| 9 | 9 | 9 | +| 10 | 10 | 10 | ++----+------+------+ delete from s; + explain basic insert /*+no_use_px,parallel(10)*/ into p select * from temp_s; Query Plan ==================================== @@ -1474,18 +1574,22 @@ Outputs & filters: insert /*+use_px,parallel(10)*/ into p select * from temp_s; select * from p order by c1; -c1 c2 c3 -1 NULL 1 -2 NULL 2 -3 NULL 3 -4 NULL 4 -5 NULL 5 -6 NULL 6 -7 NULL 7 -8 NULL 8 -9 NULL 9 -10 NULL 10 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | NULL | 1 | +| 2 | NULL | 2 | +| 3 | NULL | 3 | +| 4 | NULL | 4 | +| 5 | NULL | 5 | +| 6 | NULL | 6 | +| 7 | NULL | 7 | +| 8 | NULL | 8 | +| 9 | NULL | 9 | +| 10 | NULL | 10 | ++----+------+------+ delete from p; + explain basic insert /*+no_use_px,parallel(10)*/ into p select * from temp_p; Query Plan ===================================== @@ -1538,18 +1642,22 @@ Outputs & filters: insert /*+use_px,parallel(10)*/ into p select * from temp_p; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -5 5 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 5 | 5 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | ++----+------+------+ delete from p; + explain basic insert /*+no_use_px, parallel(10)*/ into p select temp_p.c1,temp_p.c2,temp_p.c3 from temp_p,temp_p5 where temp_p.c1 = temp_p5.c1; Query Plan =============================================== @@ -1630,18 +1738,22 @@ Outputs & filters: insert /*+use_px, parallel(10)*/ into p select temp_p.c1,temp_p.c2,temp_p.c3 from temp_p,temp_p5 where temp_p.c1 = temp_p5.c1; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -5 5 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 5 | 5 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | ++----+------+------+ delete from p; + explain basic insert /*+use_px, parallel(10)*/ into p select temp_p.c1,temp_p.c2,temp_p.c3 from temp_p,temp_p5 where temp_p.c1 = temp_p5.c1 and temp_p.c1 = 3; Query Plan =================================================== @@ -1683,9 +1795,13 @@ Outputs & filters: insert /*+use_px, parallel(10)*/ into p select temp_p.c1,temp_p.c2,temp_p.c3 from temp_p,temp_p5 where temp_p.c1 = temp_p5.c1 and temp_p.c1 = 3; select * from p order by c1; -c1 c2 c3 -3 3 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 3 | 3 | NULL | ++----+------+------+ delete from p; + explain basic insert /*+use_px, parallel(10)*/ into p select temp_p.c1, temp_p.c2, temp_p.c3 from temp_p, temp_p4 where temp_p.c1 = temp_p4.c1; Query Plan ===================================== @@ -1719,18 +1835,22 @@ Outputs & filters: insert /*+use_px, parallel(10)*/ into p select temp_p.c1, temp_p.c2, temp_p.c3 from temp_p, temp_p4 where temp_p.c1 = temp_p4.c1; select * from p order by c1; -c1 c2 c3 -1 1 NULL -2 2 NULL -3 3 NULL -4 4 NULL -5 5 NULL -6 6 NULL -7 7 NULL -8 8 NULL -9 9 NULL -10 10 NULL ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | NULL | +| 2 | 2 | NULL | +| 3 | 3 | NULL | +| 4 | 4 | NULL | +| 5 | 5 | NULL | +| 6 | 6 | NULL | +| 7 | 7 | NULL | +| 8 | 8 | NULL | +| 9 | 9 | NULL | +| 10 | 10 | NULL | ++----+------+------+ delete from p; + explain basic insert /*+no_use_px,parallel(10)*/ into p select temp_p.c1,temp_p.c2,temp_s.c3 from temp_p,temp_s where temp_p.c1 = temp_s.c1; Query Plan ============================================== @@ -1815,18 +1935,24 @@ Outputs & filters: insert /*+use_px,parallel(10)*/ into p select temp_p.c1,temp_p.c2,temp_s.c3 from temp_p,temp_s where temp_p.c1 = temp_s.c1; select * from p order by c1; -c1 c2 c3 -1 1 1 -2 2 2 -3 3 3 -4 4 4 -5 5 5 -6 6 6 -7 7 7 -8 8 8 -9 9 9 -10 10 10 ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 1 | 1 | 1 | +| 2 | 2 | 2 | +| 3 | 3 | 3 | +| 4 | 4 | 4 | +| 5 | 5 | 5 | +| 6 | 6 | 6 | +| 7 | 7 | 7 | +| 8 | 8 | 8 | +| 9 | 9 | 9 | +| 10 | 10 | 10 | ++----+------+------+ delete from p; + +## replace / insert on duplicate 计划 +## 目前replace / insert on duplicate计划是不支持PX explain basic replace /*+use_px,parallel(10)*/ into p select * from temp_p; Query Plan ===================================== @@ -1878,4 +2004,5 @@ Outputs & filters: 5 - output([temp_p.c1], [temp_p.c2], [temp_p.c3]), filter(nil), access([temp_p.c1], [temp_p.c2], [temp_p.c3]), partitions(p[0-3]) + drop table if exists s,p,p4,no_p,temp_s,temp_p,temp_p4,temp_p5; diff --git a/test/mysql_test/test_suite/px/r/mysql/join_mj.result b/tools/deploy/mysql_test/test_suite/px/r/mysql/join_mj.result similarity index 100% rename from test/mysql_test/test_suite/px/r/mysql/join_mj.result rename to tools/deploy/mysql_test/test_suite/px/r/mysql/join_mj.result diff --git a/test/mysql_test/test_suite/px/r/mysql/join_nlj.result b/tools/deploy/mysql_test/test_suite/px/r/mysql/join_nlj.result similarity index 100% rename from test/mysql_test/test_suite/px/r/mysql/join_nlj.result rename to tools/deploy/mysql_test/test_suite/px/r/mysql/join_nlj.result diff --git a/test/mysql_test/test_suite/px/r/mysql/join_pwj.result b/tools/deploy/mysql_test/test_suite/px/r/mysql/join_pwj.result similarity index 100% rename from test/mysql_test/test_suite/px/r/mysql/join_pwj.result rename to tools/deploy/mysql_test/test_suite/px/r/mysql/join_pwj.result diff --git a/tools/deploy/mysql_test/test_suite/px/r/mysql/sql_audit.result b/tools/deploy/mysql_test/test_suite/px/r/mysql/sql_audit.result new file mode 100644 index 000000000..5e133164b --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/px/r/mysql/sql_audit.result @@ -0,0 +1,123 @@ +result_format: 4 +set ob_query_timeout=1000000000; +drop database if exists px_test; +create database px_test; +use px_test; + +create table stu ( + sid int, + name varchar(32), + cls int, + primary key (cls, sid) +) partition by hash(sid) partitions 6; + +create table teacher ( + tid int, + name varchar(32), + subject varchar(4), + primary key (tid) +) partition by hash(tid) partitions 8; + +create table score ( + sid int, + subject varchar(4), + score int, + primary key (sid, subject) +) partition by hash(sid) partitions 6; + +insert into stu values +(11, 'a1', 1), +(12, 'b1', 1), +(13, 'c1', 1), + +(21, 'a2', 2), +(22, 'b2', 2), + +(31, 'a3', 3), + +(41, 'a4', 4), +(42, 'b4', 4), + +(51, 'a5', 5), +(52, 'b5', 5), + +(61, 'a6', 6), +(62, 'b6', 6), +(63, 'c6', 6), +(64, 'd6', 6); + +insert into teacher values +(1, 'Miss Zhang', 'EN'), +(2, 'Mr Wang', 'MA'); + +insert into score values +(11, 'EN', 60), +(12, 'EN', 70), +(13, 'EN', 80), + +(21, 'EN', 58), +(22, 'EN', 90), + +(31, 'EN', 80), + +(41, 'EN', 80), +(42, 'EN', 90), + +(51, 'EN', 89), +(52, 'EN', 99), + +(61, 'EN', 100), +(62, 'EN', 90), +(63, 'EN', 99), +(64, 'EN', 87); + +insert into score values +(11, 'MA', 60), +(12, 'MA', 70), +(13, 'MA', 80), + +(21, 'MA', 58), +(22, 'MA', 90), + +(31, 'MA', 80), + +(41, 'MA', 80), +(42, 'MA', 90), + +(51, 'MA', 89), +(52, 'MA', 99), + +(61, 'MA', 100), +(62, 'MA', 90), +(63, 'MA', 99), +(64, 'MA', 87); + +alter system set enable_sql_audit = true; +alter system flush sql audit global; + + +select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ * from teacher; +select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ * from teacher; +select /*+ TEST_SQL_AUDIT USE_PX parallel(4) */ * from teacher; +select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ subject, avg(score), max(score), min(score) from score group by subject; +select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject; +select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject; +select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ subject, avg(score), max(score), min(score) from score group by subject; +select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject; +select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject; + + +select query_sql, EXPECTED_WORKER_COUNT, USED_WORKER_COUNT from oceanbase.gv$sql_audit where EXPECTED_WORKER_COUNT > 0 AND query_sql like '%TEST_SQL_AUDIT%' order by request_time desc limit 10; ++--------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------+ +| query_sql | EXPECTED_WORKER_COUNT | USED_WORKER_COUNT | ++--------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------+ +| select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ * from teacher | 2 | 2 | +| select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject | 4 | 4 | +| select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject | 4 | 4 | +| select /*+ TEST_SQL_AUDIT USE_PX parallel(2) */ subject, avg(score), max(score), min(score) from score group by subject | 4 | 4 | +| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ * from teacher | 3 | 3 | +| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ cls, subject, avg(score), max(score), min(score) from score join stu using (sid) group by cls, subject | 6 | 6 | +| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ count(*) from score join stu using (sid) inner join teacher where score.subject = teacher.subject | 6 | 6 | +| select /*+ TEST_SQL_AUDIT USE_PX parallel(3) */ subject, avg(score), max(score), min(score) from score group by subject | 6 | 6 | +| select /*+ TEST_SQL_AUDIT USE_PX parallel(4) */ * from teacher | 4 | 4 | ++--------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------+-------------------+ diff --git a/test/mysql_test/test_suite/px/t/add_material.test b/tools/deploy/mysql_test/test_suite/px/t/add_material.test similarity index 96% rename from test/mysql_test/test_suite/px/t/add_material.test rename to tools/deploy/mysql_test/test_suite/px/t/add_material.test index 08f78838a..a090e26dc 100644 --- a/test/mysql_test/test_suite/px/t/add_material.test +++ b/tools/deploy/mysql_test/test_suite/px/t/add_material.test @@ -1,3 +1,6 @@ +#owner: peihan.dph +#owner group: SQL3 +# tags: optimizer # test blocking operator for material --disable_warnings diff --git a/test/mysql_test/test_suite/px/t/alloc_material_for_producer_consumer_schedule_mode.test b/tools/deploy/mysql_test/test_suite/px/t/alloc_material_for_producer_consumer_schedule_mode.test similarity index 94% rename from test/mysql_test/test_suite/px/t/alloc_material_for_producer_consumer_schedule_mode.test rename to tools/deploy/mysql_test/test_suite/px/t/alloc_material_for_producer_consumer_schedule_mode.test index 653789af4..5738e9e29 100644 --- a/test/mysql_test/test_suite/px/t/alloc_material_for_producer_consumer_schedule_mode.test +++ b/tools/deploy/mysql_test/test_suite/px/t/alloc_material_for_producer_consumer_schedule_mode.test @@ -1,3 +1,6 @@ +# owner: bin.lb +# owner group: sql3 +# tags: px, optimizer # # Need to alloc material operator to make producer/consumer threads mode schedulable. # diff --git a/test/mysql_test/test_suite/px/t/default_open_px.test b/tools/deploy/mysql_test/test_suite/px/t/default_open_px.test similarity index 93% rename from test/mysql_test/test_suite/px/t/default_open_px.test rename to tools/deploy/mysql_test/test_suite/px/t/default_open_px.test index 85f4a4b20..c3a2f25b8 100644 --- a/test/mysql_test/test_suite/px/t/default_open_px.test +++ b/tools/deploy/mysql_test/test_suite/px/t/default_open_px.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: mingdou.tmd +#owner group: sql3 +# tags: optimizer --disable_warnings drop database if exists muhangtest; @@ -9,7 +12,7 @@ create database muhangtest; use muhangtest; --enable_warnings - +--result_format 4 create table t1 (c1 int(11) not null, c2 int(11) not null, c3 int(11) not null, primary key (c1, c2, c3)) partition by key(c2) partitions 4; diff --git a/test/mysql_test/test_suite/px/t/dml_use_px.test b/tools/deploy/mysql_test/test_suite/px/t/dml_use_px.test similarity index 98% rename from test/mysql_test/test_suite/px/t/dml_use_px.test rename to tools/deploy/mysql_test/test_suite/px/t/dml_use_px.test index 2f0b51c58..1610516ab 100644 --- a/test/mysql_test/test_suite/px/t/dml_use_px.test +++ b/tools/deploy/mysql_test/test_suite/px/t/dml_use_px.test @@ -1,9 +1,12 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: xiaochu.yh +# owner group: sql2 # 测试 dml 查询部分打开px +# tags: dml, px, optimizer # dml查询部分打开px,必须使用 USE_PX hint - +--result_format 4 --disable_warnings drop table if exists s,p,p4,no_p,temp_s,temp_p,temp_p4,temp_p5; @@ -238,4 +241,4 @@ explain basic replace /*+use_px,parallel(10)*/ into p select * from temp_p; explain basic insert /*+use_px,parallel(10)*/ into p select * from temp_p on duplicate key update c3 = 2; # 清理测试 -drop table if exists s,p,p4,no_p,temp_s,temp_p,temp_p4,temp_p5; +drop table if exists s,p,p4,no_p,temp_s,temp_p,temp_p4,temp_p5; \ No newline at end of file diff --git a/test/mysql_test/test_suite/px/t/join_mj.test b/tools/deploy/mysql_test/test_suite/px/t/join_mj.test similarity index 82% rename from test/mysql_test/test_suite/px/t/join_mj.test rename to tools/deploy/mysql_test/test_suite/px/t/join_mj.test index 274bdf25c..8ff74a7b5 100644 --- a/test/mysql_test/test_suite/px/t/join_mj.test +++ b/tools/deploy/mysql_test/test_suite/px/t/join_mj.test @@ -1,3 +1,6 @@ +#owner: mingdou.tmd +#owner group: SQL3 +# tags: optimizer --source mysql_test/test_suite/px/include/exam_data.inc diff --git a/test/mysql_test/test_suite/px/t/join_nlj.test b/tools/deploy/mysql_test/test_suite/px/t/join_nlj.test similarity index 96% rename from test/mysql_test/test_suite/px/t/join_nlj.test rename to tools/deploy/mysql_test/test_suite/px/t/join_nlj.test index 3d294855b..8a58a07dc 100644 --- a/test/mysql_test/test_suite/px/t/join_nlj.test +++ b/tools/deploy/mysql_test/test_suite/px/t/join_nlj.test @@ -1,3 +1,6 @@ +#owner: mingdou.tmd +#owner group: SQL3 +# tags: optimizer --source mysql_test/test_suite/px/include/exam_data.inc diff --git a/test/mysql_test/test_suite/px/t/join_pwj.test b/tools/deploy/mysql_test/test_suite/px/t/join_pwj.test similarity index 82% rename from test/mysql_test/test_suite/px/t/join_pwj.test rename to tools/deploy/mysql_test/test_suite/px/t/join_pwj.test index 9db3485a6..0fe106346 100644 --- a/test/mysql_test/test_suite/px/t/join_pwj.test +++ b/tools/deploy/mysql_test/test_suite/px/t/join_pwj.test @@ -1,3 +1,6 @@ +#owner: mingdou.tmd +#owner group: SQL3 +# tags: optimizer --source mysql_test/test_suite/px/include/exam_data.inc diff --git a/test/mysql_test/test_suite/px/t/sql_audit.test b/tools/deploy/mysql_test/test_suite/px/t/sql_audit.test similarity index 96% rename from test/mysql_test/test_suite/px/t/sql_audit.test rename to tools/deploy/mysql_test/test_suite/px/t/sql_audit.test index e4a3caee2..d124de8e7 100644 --- a/test/mysql_test/test_suite/px/t/sql_audit.test +++ b/tools/deploy/mysql_test/test_suite/px/t/sql_audit.test @@ -1,4 +1,7 @@ - +#owner: xiaochu.yh +#owner group: SQL3 +# tags: optimizer +--result_format 4 # test aggregation diff --git a/test/mysql_test/test_suite/skyline/r/mysql/skyline_basic_mysql.result b/tools/deploy/mysql_test/test_suite/skyline/r/mysql/skyline_basic_mysql.result similarity index 100% rename from test/mysql_test/test_suite/skyline/r/mysql/skyline_basic_mysql.result rename to tools/deploy/mysql_test/test_suite/skyline/r/mysql/skyline_basic_mysql.result diff --git a/test/mysql_test/test_suite/skyline/r/mysql/skyline_complicate_mysql.result b/tools/deploy/mysql_test/test_suite/skyline/r/mysql/skyline_complicate_mysql.result similarity index 100% rename from test/mysql_test/test_suite/skyline/r/mysql/skyline_complicate_mysql.result rename to tools/deploy/mysql_test/test_suite/skyline/r/mysql/skyline_complicate_mysql.result diff --git a/test/mysql_test/test_suite/skyline/t/skyline_basic_mysql.test b/tools/deploy/mysql_test/test_suite/skyline/t/skyline_basic_mysql.test similarity index 99% rename from test/mysql_test/test_suite/skyline/t/skyline_basic_mysql.test rename to tools/deploy/mysql_test/test_suite/skyline/t/skyline_basic_mysql.test index d7e620f46..94bf6751b 100644 --- a/test/mysql_test/test_suite/skyline/t/skyline_basic_mysql.test +++ b/tools/deploy/mysql_test/test_suite/skyline/t/skyline_basic_mysql.test @@ -1,3 +1,6 @@ +# owner: guoping.wgp +# owner group: sql1 +# tags: optimizer # description: # diff --git a/test/mysql_test/test_suite/skyline/t/skyline_complicate_mysql.test b/tools/deploy/mysql_test/test_suite/skyline/t/skyline_complicate_mysql.test similarity index 99% rename from test/mysql_test/test_suite/skyline/t/skyline_complicate_mysql.test rename to tools/deploy/mysql_test/test_suite/skyline/t/skyline_complicate_mysql.test index 801fb3eb5..c2570972b 100644 --- a/test/mysql_test/test_suite/skyline/t/skyline_complicate_mysql.test +++ b/tools/deploy/mysql_test/test_suite/skyline/t/skyline_complicate_mysql.test @@ -1,3 +1,6 @@ +# owner: guoping.wgp +# owner group: sql1 +# tags: optimizer # description: # diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/explicit_cast.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/explicit_cast.result new file mode 100644 index 000000000..67f4fb1f8 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/explicit_cast.result @@ -0,0 +1,343 @@ +result_format: 4 +drop database if exists shaoge; +drop table if exists t1; +create database shaoge; +use shaoge; + +create table t1(col_float float, col_char char(100), col_text text); +insert into t1 values (1.1, '1.1', '1.1'); +insert into t1 values (1.9, '1.9', '1.9'); +insert into t1 values (2.1, '2.1', '2.1'); +insert into t1 values (2.9, '2.9', '2.9'); +insert into t1 values (9223372036854775807, '9223372036854775807', '9223372036854775807'); +insert into t1 values (9223372036854775807.5, '9223372036854775807.5', '9223372036854775807.5'); +insert into t1 values (9223372036854775806.5, '9223372036854775806.5', '9223372036854775806.5'); +insert into t1 values (null, '1234567890123456789012345678901234567890.5', '1234567890123456789012345678901234567890.5'); + +insert into t1 values (-1.1, '-1.1', '-1.1'); +insert into t1 values (-1.9, '-1.9', '-1.9'); +insert into t1 values (-2.1, '-2.1', '-2.1'); +insert into t1 values (-2.9, '-2.9', '-2.9'); +insert into t1 values (-9223372036854775807, '-9223372036854775808', '-9223372036854775808'); +insert into t1 values (-9223372036854775807.5, '-9223372036854775807.5', '-9223372036854775807.5'); +insert into t1 values (-9223372036854775806.5, '-9223372036854775806.5', '-9223372036854775806.5'); +insert into t1 values (null, '-1234567890123456789012345678901234567890.5', '-1234567890123456789012345678901234567890.5'); + +create table tbl_check_zerofill(col_zf int(3) zerofill, col_no_zf int(3)); +insert into tbl_check_zerofill values(1, 1); + +// sql engine 3.0 test +// string->int/uint will trunc +// otherwise will round +select col_float, cast(col_float as signed) from t1; ++-------------+---------------------------+ +| col_float | cast(col_float as signed) | ++-------------+---------------------------+ +| 1.1 | 1 | +| 1.9 | 2 | +| 2.1 | 2 | +| 2.9 | 3 | +| 9.22337e18 | -9223372036854775808 | +| 9.22337e18 | -9223372036854775808 | +| 9.22337e18 | -9223372036854775808 | +| NULL | NULL | +| -1.1 | -1 | +| -1.9 | -2 | +| -2.1 | -2 | +| -2.9 | -3 | +| -9.22337e18 | -9223372036854775808 | +| -9.22337e18 | -9223372036854775808 | +| -9.22337e18 | -9223372036854775808 | +| NULL | NULL | ++-------------+---------------------------+ +select col_char, cast(col_char as signed) from t1; ++---------------------------------------------+--------------------------+ +| col_char | cast(col_char as signed) | ++---------------------------------------------+--------------------------+ +| 1.1 | 1 | +| 1.9 | 1 | +| 2.1 | 2 | +| 2.9 | 2 | +| 9223372036854775807 | 9223372036854775807 | +| 9223372036854775807.5 | 9223372036854775807 | +| 9223372036854775806.5 | 9223372036854775806 | +| 1234567890123456789012345678901234567890.5 | 9223372036854775807 | +| -1.1 | -1 | +| -1.9 | -1 | +| -2.1 | -2 | +| -2.9 | -2 | +| -9223372036854775808 | -9223372036854775808 | +| -9223372036854775807.5 | -9223372036854775807 | +| -9223372036854775806.5 | -9223372036854775806 | +| -1234567890123456789012345678901234567890.5 | -9223372036854775808 | ++---------------------------------------------+--------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '1.1' +Warning 1292 Truncated incorrect INTEGER value: '1.9' +Warning 1292 Truncated incorrect INTEGER value: '2.1' +Warning 1292 Truncated incorrect INTEGER value: '2.9' +Warning 1292 Truncated incorrect INTEGER value: '9223372036854775807.5' +Warning 1292 Truncated incorrect INTEGER value: '9223372036854775806.5' +Warning 1292 Truncated incorrect INTEGER value: '-1.1' +Warning 1292 Truncated incorrect INTEGER value: '-1.9' +Warning 1292 Truncated incorrect INTEGER value: '-2.1' +Warning 1292 Truncated incorrect INTEGER value: '-2.9' +Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775807.5' +Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775806.5' +select col_text, cast(col_text as signed) from t1; ++---------------------------------------------+--------------------------+ +| col_text | cast(col_text as signed) | ++---------------------------------------------+--------------------------+ +| 1.1 | 1 | +| 1.9 | 1 | +| 2.1 | 2 | +| 2.9 | 2 | +| 9223372036854775807 | 9223372036854775807 | +| 9223372036854775807.5 | 9223372036854775807 | +| 9223372036854775806.5 | 9223372036854775806 | +| 1234567890123456789012345678901234567890.5 | 9223372036854775807 | +| -1.1 | -1 | +| -1.9 | -1 | +| -2.1 | -2 | +| -2.9 | -2 | +| -9223372036854775808 | -9223372036854775808 | +| -9223372036854775807.5 | -9223372036854775807 | +| -9223372036854775806.5 | -9223372036854775806 | +| -1234567890123456789012345678901234567890.5 | -9223372036854775808 | ++---------------------------------------------+--------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '1.1' +Warning 1292 Truncated incorrect INTEGER value: '1.9' +Warning 1292 Truncated incorrect INTEGER value: '2.1' +Warning 1292 Truncated incorrect INTEGER value: '2.9' +Warning 1292 Truncated incorrect INTEGER value: '9223372036854775807.5' +Warning 1292 Truncated incorrect INTEGER value: '9223372036854775806.5' +Warning 1292 Truncated incorrect INTEGER value: '-1.1' +Warning 1292 Truncated incorrect INTEGER value: '-1.9' +Warning 1292 Truncated incorrect INTEGER value: '-2.1' +Warning 1292 Truncated incorrect INTEGER value: '-2.9' +Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775807.5' +Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775806.5' + +select col_float, cast(col_float as unsigned) from t1; ++-------------+-----------------------------+ +| col_float | cast(col_float as unsigned) | ++-------------+-----------------------------+ +| 1.1 | 1 | +| 1.9 | 2 | +| 2.1 | 2 | +| 2.9 | 3 | +| 9.22337e18 | 9223372036854775808 | +| 9.22337e18 | 9223372036854775808 | +| 9.22337e18 | 9223372036854775808 | +| NULL | NULL | +| -1.1 | 18446744073709551615 | +| -1.9 | 18446744073709551614 | +| -2.1 | 18446744073709551614 | +| -2.9 | 18446744073709551613 | +| -9.22337e18 | 9223372036854775808 | +| -9.22337e18 | 9223372036854775808 | +| -9.22337e18 | 9223372036854775808 | +| NULL | NULL | ++-------------+-----------------------------+ +select col_char, cast(col_char as unsigned) from t1; ++---------------------------------------------+----------------------------+ +| col_char | cast(col_char as unsigned) | ++---------------------------------------------+----------------------------+ +| 1.1 | 1 | +| 1.9 | 1 | +| 2.1 | 2 | +| 2.9 | 2 | +| 9223372036854775807 | 9223372036854775807 | +| 9223372036854775807.5 | 9223372036854775807 | +| 9223372036854775806.5 | 9223372036854775806 | +| 1234567890123456789012345678901234567890.5 | 18446744073709551615 | +| -1.1 | 18446744073709551615 | +| -1.9 | 18446744073709551615 | +| -2.1 | 18446744073709551614 | +| -2.9 | 18446744073709551614 | +| -9223372036854775808 | 9223372036854775808 | +| -9223372036854775807.5 | 9223372036854775809 | +| -9223372036854775806.5 | 9223372036854775810 | +| -1234567890123456789012345678901234567890.5 | 18446744073709551615 | ++---------------------------------------------+----------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '1.1' +Warning 1292 Truncated incorrect INTEGER value: '1.9' +Warning 1292 Truncated incorrect INTEGER value: '2.1' +Warning 1292 Truncated incorrect INTEGER value: '2.9' +Warning 1292 Truncated incorrect INTEGER value: '9223372036854775807.5' +Warning 1292 Truncated incorrect INTEGER value: '9223372036854775806.5' +Warning 1292 Truncated incorrect INTEGER value: '1234567890123456789012345678901234567890.5' +Warning 1292 Truncated incorrect INTEGER value: '-1.1' +Warning 1292 Truncated incorrect INTEGER value: '-1.9' +Warning 1292 Truncated incorrect INTEGER value: '-2.1' +Warning 1292 Truncated incorrect INTEGER value: '-2.9' +Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775807.5' +Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775806.5' +Warning 1292 Truncated incorrect INTEGER value: '-1234567890123456789012345678901234567890.5' +select col_text, cast(col_text as unsigned) from t1; ++---------------------------------------------+----------------------------+ +| col_text | cast(col_text as unsigned) | ++---------------------------------------------+----------------------------+ +| 1.1 | 1 | +| 1.9 | 1 | +| 2.1 | 2 | +| 2.9 | 2 | +| 9223372036854775807 | 9223372036854775807 | +| 9223372036854775807.5 | 9223372036854775807 | +| 9223372036854775806.5 | 9223372036854775806 | +| 1234567890123456789012345678901234567890.5 | 18446744073709551615 | +| -1.1 | 18446744073709551615 | +| -1.9 | 18446744073709551615 | +| -2.1 | 18446744073709551614 | +| -2.9 | 18446744073709551614 | +| -9223372036854775808 | 9223372036854775808 | +| -9223372036854775807.5 | 9223372036854775809 | +| -9223372036854775806.5 | 9223372036854775810 | +| -1234567890123456789012345678901234567890.5 | 18446744073709551615 | ++---------------------------------------------+----------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '1.1' +Warning 1292 Truncated incorrect INTEGER value: '1.9' +Warning 1292 Truncated incorrect INTEGER value: '2.1' +Warning 1292 Truncated incorrect INTEGER value: '2.9' +Warning 1292 Truncated incorrect INTEGER value: '9223372036854775807.5' +Warning 1292 Truncated incorrect INTEGER value: '9223372036854775806.5' +Warning 1292 Truncated incorrect INTEGER value: '1234567890123456789012345678901234567890.5' +Warning 1292 Truncated incorrect INTEGER value: '-1.1' +Warning 1292 Truncated incorrect INTEGER value: '-1.9' +Warning 1292 Truncated incorrect INTEGER value: '-2.1' +Warning 1292 Truncated incorrect INTEGER value: '-2.9' +Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775807.5' +Warning 1292 Truncated incorrect INTEGER value: '-9223372036854775806.5' +Warning 1292 Truncated incorrect INTEGER value: '-1234567890123456789012345678901234567890.5' + +// 测试zerofill +// 应该有warning: Truncated incorrect CHAR(1) value: '001' +select cast(col_zf as char(1)) from tbl_check_zerofill; ++-------------------------+ +| cast(col_zf as char(1)) | ++-------------------------+ +| 0 | ++-------------------------+ +select cast(col_zf as char(2)) from tbl_check_zerofill; ++-------------------------+ +| cast(col_zf as char(2)) | ++-------------------------+ +| 00 | ++-------------------------+ +select cast(col_zf as char(3)) from tbl_check_zerofill; ++-------------------------+ +| cast(col_zf as char(3)) | ++-------------------------+ +| 001 | ++-------------------------+ +select cast(col_zf as char(4)) from tbl_check_zerofill; ++-------------------------+ +| cast(col_zf as char(4)) | ++-------------------------+ +| 001 | ++-------------------------+ +select cast(col_no_zf as char(1)) from tbl_check_zerofill; ++----------------------------+ +| cast(col_no_zf as char(1)) | ++----------------------------+ +| 1 | ++----------------------------+ +select cast(col_no_zf as char(1)) from tbl_check_zerofill; ++----------------------------+ +| cast(col_no_zf as char(1)) | ++----------------------------+ +| 1 | ++----------------------------+ +select cast(col_no_zf as char(2)) from tbl_check_zerofill; ++----------------------------+ +| cast(col_no_zf as char(2)) | ++----------------------------+ +| 1 | ++----------------------------+ +select cast(col_no_zf as char(3)) from tbl_check_zerofill; ++----------------------------+ +| cast(col_no_zf as char(3)) | ++----------------------------+ +| 1 | ++----------------------------+ +select cast(col_no_zf as char(4)) from tbl_check_zerofill; ++----------------------------+ +| cast(col_no_zf as char(4)) | ++----------------------------+ +| 1 | ++----------------------------+ + +drop table t1; +create table t1(c1 varchar(3)); +insert into t1 values('abc'); +select cast(c1 as char(10)), concat(c1, '123') from t1; ++----------------------+-------------------+ +| cast(c1 as char(10)) | concat(c1, '123') | ++----------------------+-------------------+ +| abc | abc123 | ++----------------------+-------------------+ +select cast(c1 as char(1)), concat(c1, '123') from t1; ++---------------------+-------------------+ +| cast(c1 as char(1)) | concat(c1, '123') | ++---------------------+-------------------+ +| a | abc123 | ++---------------------+-------------------+ +select concat(cast(c1 as char(10)), '123') from t1; ++-------------------------------------+ +| concat(cast(c1 as char(10)), '123') | ++-------------------------------------+ +| abc123 | ++-------------------------------------+ +select concat(cast(c1 as char(1)), '123') from t1; ++------------------------------------+ +| concat(cast(c1 as char(1)), '123') | ++------------------------------------+ +| a123 | ++------------------------------------+ + +drop table t1; +create table t1(c1 decimal(10, 3)); +insert into t1 values(1.123); +select cast(c1 as decimal(10,1)), concat(c1, 'abc') from t1; ++---------------------------+-------------------+ +| cast(c1 as decimal(10,1)) | concat(c1, 'abc') | ++---------------------------+-------------------+ +| 1.1 | 1.123abc | ++---------------------------+-------------------+ +select c1, cast(c1 as binary(10)), hex(cast(c1 as binary(10))) from t1; ++-------+------------------------+-----------------------------+ +| c1 | cast(c1 as binary(10)) | hex(cast(c1 as binary(10))) | ++-------+------------------------+-----------------------------+ +| 1.123 | 1.123 | 312E3132330000000000 | ++-------+------------------------+-----------------------------+ + +drop table t1; +create table t1(c1 time(6)); +insert into t1 values('11:11:11.123456'); +select cast(c1 as time), concat(c1, 'abc') from t1; ++------------------+--------------------+ +| cast(c1 as time) | concat(c1, 'abc') | ++------------------+--------------------+ +| 11:11:11 | 11:11:11.123456abc | ++------------------+--------------------+ + +drop table t1; +create table t1(c1 bigint unsigned); +insert into t1 values(18446744073709551615); +select cast(c1 as signed) from t1; ++--------------------+ +| cast(c1 as signed) | ++--------------------+ +| -1 | ++--------------------+ +select c1, cast(c1 as binary(30)), hex(cast(c1 as binary(30))) from t1; ++----------------------+--------------------------------+--------------------------------------------------------------+ +| c1 | cast(c1 as binary(30)) | hex(cast(c1 as binary(30))) | ++----------------------+--------------------------------+--------------------------------------------------------------+ +| 18446744073709551615 | 18446744073709551615 | 313834343637343430373337303935353136313500000000000000000000 | ++----------------------+--------------------------------+--------------------------------------------------------------+ + +drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_abs.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_abs.result similarity index 75% rename from test/mysql_test/test_suite/static_engine/r/mysql/expr_abs.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_abs.result index 3276bdcbb..c4f583baa 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_abs.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_abs.result @@ -1,48 +1,55 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; +result_format: 4 + alter system flush plan cache global; -connection default; + + drop table if exists t; create table t (t1 tinyint, -t2 smallint, -t3 mediumint, -t4 integer, -t5 bigint, -t6 tinyint unsigned, -t7 smallint unsigned, -t8 mediumint unsigned, -t9 integer unsigned, -t10 bigint unsigned, -t11 float, -t12 float unsigned, -t13 double, -t14 double unsigned, -t15 number, -t16 number unsigned, -t17 datetime, -t18 timestamp, -t19 date, -t20 time, -t21 year, -t22 varchar(255), -t23 char(255), -t24 tinytext, -t25 mediumtext, -t26 longtext, -t27 bit, -t28 enum('a', 'b', 'c'), -t29 set('a', 'b', 'c')); + t2 smallint, + t3 mediumint, + t4 integer, + t5 bigint, + t6 tinyint unsigned, + t7 smallint unsigned, + t8 mediumint unsigned, + t9 integer unsigned, + t10 bigint unsigned, + t11 float, + t12 float unsigned, + t13 double, + t14 double unsigned, + t15 number, + t16 number unsigned, + t17 datetime, + t18 timestamp, + t19 date, + t20 time, + t21 year, + t22 varchar(255), + t23 char(255), + t24 tinytext, + t25 mediumtext, + t26 longtext, + t27 bit, + t28 enum('a', 'b', 'c'), + t29 set('a', 'b', 'c')); + insert into t values (1, -1, 1, -1, 1, 1, 1, 1, 1, 1, -0.2, 0.3, 0.4, 0.5, -0.6, 0.7, -'1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '0.8', '0.9', '1.0', '1.1', -'1.2', 1, 'b', 'b'); + '1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '0.8', '0.9', '1.0', '1.1', + '1.2', 1, 'b', 'b'); insert into t(t1) values (null); -connection conn_admin; + + alter system flush plan cache global; -connection default; + set ob_enable_plan_cache=false; + select abs(1.0); -abs(1.0) -1.0 ++----------+ +| abs(1.0) | ++----------+ +| 1.0 | ++----------+ explain select abs(1.0); Query Plan =================================== @@ -57,8 +64,11 @@ Outputs & filters: values({?}) select abs(1); -abs(1) -1 ++--------+ +| abs(1) | ++--------+ +| 1 | ++--------+ explain select abs(1); Query Plan =================================== @@ -73,8 +83,11 @@ Outputs & filters: values({?}) select abs(1+2+3-4-1-2+5-5); -abs(1+2+3-4-1-2+5-5) -1 ++----------------------+ +| abs(1+2+3-4-1-2+5-5) | ++----------------------+ +| 1 | ++----------------------+ explain select abs(1+2+3-4-1-2+5-5); Query Plan =================================== @@ -89,8 +102,11 @@ Outputs & filters: values({?}) select abs(abs(1+2+3-4-1-2+5-5)-abs(-3)); -abs(abs(1+2+3-4-1-2+5-5)-abs(-3)) -2 ++-----------------------------------+ +| abs(abs(1+2+3-4-1-2+5-5)-abs(-3)) | ++-----------------------------------+ +| 2 | ++-----------------------------------+ explain select abs(abs(1+2+3-4-1-2+5-5)-abs(-3)); Query Plan =================================== @@ -105,8 +121,11 @@ Outputs & filters: values({?}) select abs(true and false); -abs(true and false) -0 ++---------------------+ +| abs(true and false) | ++---------------------+ +| 0 | ++---------------------+ explain select abs(true and false); Query Plan =================================== @@ -121,15 +140,21 @@ Outputs & filters: values({?}) select abs(10/0); -abs(10/0) -NULL ++-----------+ +| abs(10/0) | ++-----------+ +| NULL | ++-----------+ SELECT ABS(-9223372036854775808); ERROR 22003: value is out of range explain SELECT ABS(-9223372036854775808); ERROR 22003: value is out of range select abs(-9999999999999999999999); -abs(-9999999999999999999999) -9999999999999999999999 ++------------------------------+ +| abs(-9999999999999999999999) | ++------------------------------+ +| 9999999999999999999999 | ++------------------------------+ explain select abs(-9999999999999999999999); Query Plan =================================== @@ -144,8 +169,11 @@ Outputs & filters: values({?}) select abs(9999999999999999999999); -abs(9999999999999999999999) -9999999999999999999999 ++-----------------------------+ +| abs(9999999999999999999999) | ++-----------------------------+ +| 9999999999999999999999 | ++-----------------------------+ explain select abs(9999999999999999999999); Query Plan =================================== @@ -160,8 +188,11 @@ Outputs & filters: values({?}) select abs(repeat('1',100)); -abs(repeat('1',100)) -1.111111111111111e99 ++----------------------+ +| abs(repeat('1',100)) | ++----------------------+ +| 1.111111111111111e99 | ++----------------------+ explain select abs(repeat('1',100)); Query Plan =================================== @@ -176,8 +207,11 @@ Outputs & filters: values({?}) select abs(repeat('1',46)); -abs(repeat('1',46)) -1.1111111111111112e45 ++-----------------------+ +| abs(repeat('1',46)) | ++-----------------------+ +| 1.1111111111111112e45 | ++-----------------------+ explain select abs(repeat('1',46)); Query Plan =================================== @@ -192,8 +226,11 @@ Outputs & filters: values({?}) select abs(0-repeat('1',46)); -abs(0-repeat('1',46)) -1.1111111111111112e45 ++-----------------------+ +| abs(0-repeat('1',46)) | ++-----------------------+ +| 1.1111111111111112e45 | ++-----------------------+ explain select abs(0-repeat('1',46)); Query Plan =================================== @@ -207,10 +244,15 @@ Outputs & filters: 0 - output([?]), filter(nil) values({?}) + + select abs(t1) from t; -abs(t1) -1 -NULL ++---------+ +| abs(t1) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t1) from t; Query Plan =================================== @@ -225,9 +267,12 @@ Outputs & filters: access([t.t1]), partitions(p0) select abs(t2) from t; -abs(t2) -1 -NULL ++---------+ +| abs(t2) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t2) from t; Query Plan =================================== @@ -242,9 +287,12 @@ Outputs & filters: access([t.t2]), partitions(p0) select abs(t3) from t; -abs(t3) -1 -NULL ++---------+ +| abs(t3) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t3) from t; Query Plan =================================== @@ -259,9 +307,12 @@ Outputs & filters: access([t.t3]), partitions(p0) select abs(t4) from t; -abs(t4) -1 -NULL ++---------+ +| abs(t4) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t4) from t; Query Plan =================================== @@ -276,9 +327,12 @@ Outputs & filters: access([t.t4]), partitions(p0) select abs(t5) from t; -abs(t5) -1 -NULL ++---------+ +| abs(t5) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t5) from t; Query Plan =================================== @@ -293,9 +347,12 @@ Outputs & filters: access([t.t5]), partitions(p0) select abs(t6) from t; -abs(t6) -1 -NULL ++---------+ +| abs(t6) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t6) from t; Query Plan =================================== @@ -310,9 +367,12 @@ Outputs & filters: access([t.t6]), partitions(p0) select abs(t7) from t; -abs(t7) -1 -NULL ++---------+ +| abs(t7) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t7) from t; Query Plan =================================== @@ -327,9 +387,12 @@ Outputs & filters: access([t.t7]), partitions(p0) select abs(t8) from t; -abs(t8) -1 -NULL ++---------+ +| abs(t8) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t8) from t; Query Plan =================================== @@ -344,9 +407,12 @@ Outputs & filters: access([t.t8]), partitions(p0) select abs(t9) from t; -abs(t9) -1 -NULL ++---------+ +| abs(t9) | ++---------+ +| 1 | +| NULL | ++---------+ explain select abs(t9) from t; Query Plan =================================== @@ -361,9 +427,12 @@ Outputs & filters: access([t.t9]), partitions(p0) select abs(t10) from t; -abs(t10) -1 -NULL ++----------+ +| abs(t10) | ++----------+ +| 1 | +| NULL | ++----------+ explain select abs(t10) from t; Query Plan =================================== @@ -378,9 +447,12 @@ Outputs & filters: access([t.t10]), partitions(p0) select abs(t11) from t; -abs(t11) -0.20000000298023224 -NULL ++---------------------+ +| abs(t11) | ++---------------------+ +| 0.20000000298023224 | +| NULL | ++---------------------+ explain select abs(t11) from t; Query Plan =================================== @@ -395,9 +467,12 @@ Outputs & filters: access([t.t11]), partitions(p0) select abs(t12) from t; -abs(t12) -0.30000001192092896 -NULL ++---------------------+ +| abs(t12) | ++---------------------+ +| 0.30000001192092896 | +| NULL | ++---------------------+ explain select abs(t12) from t; Query Plan =================================== @@ -412,9 +487,12 @@ Outputs & filters: access([t.t12]), partitions(p0) select abs(t13) from t; -abs(t13) -0.4 -NULL ++----------+ +| abs(t13) | ++----------+ +| 0.4 | +| NULL | ++----------+ explain select abs(t13) from t; Query Plan =================================== @@ -429,9 +507,12 @@ Outputs & filters: access([t.t13]), partitions(p0) select abs(t14) from t; -abs(t14) -0.5 -NULL ++----------+ +| abs(t14) | ++----------+ +| 0.5 | +| NULL | ++----------+ explain select abs(t14) from t; Query Plan =================================== @@ -446,9 +527,12 @@ Outputs & filters: access([t.t14]), partitions(p0) select abs(t15) from t; -abs(t15) -1 -NULL ++----------+ +| abs(t15) | ++----------+ +| 1 | +| NULL | ++----------+ explain select abs(t15) from t; Query Plan =================================== @@ -463,9 +547,12 @@ Outputs & filters: access([t.t15]), partitions(p0) select abs(t16) from t; -abs(t16) -1 -NULL ++----------+ +| abs(t16) | ++----------+ +| 1 | +| NULL | ++----------+ explain select abs(t16) from t; Query Plan =================================== @@ -480,9 +567,12 @@ Outputs & filters: access([t.t16]), partitions(p0) select abs(t17) from t; -abs(t17) -19930320000000 -NULL ++----------------+ +| abs(t17) | ++----------------+ +| 19930320000000 | +| NULL | ++----------------+ explain select abs(t17) from t; Query Plan =================================== @@ -497,9 +587,12 @@ Outputs & filters: access([t.t17]), partitions(p0) select abs(t18) from t; -abs(t18) -19930320000000 -NULL ++----------------+ +| abs(t18) | ++----------------+ +| 19930320000000 | +| NULL | ++----------------+ explain select abs(t18) from t; Query Plan =================================== @@ -514,9 +607,12 @@ Outputs & filters: access([t.t18]), partitions(p0) select abs(t19) from t; -abs(t19) -19930320 -NULL ++----------+ +| abs(t19) | ++----------+ +| 19930320 | +| NULL | ++----------+ explain select abs(t19) from t; Query Plan =================================== @@ -531,9 +627,12 @@ Outputs & filters: access([t.t19]), partitions(p0) select abs(t20) from t; -abs(t20) -101010 -NULL ++----------+ +| abs(t20) | ++----------+ +| 101010 | +| NULL | ++----------+ explain select abs(t20) from t; Query Plan =================================== @@ -548,9 +647,12 @@ Outputs & filters: access([t.t20]), partitions(p0) select abs(t21) from t; -abs(t21) -1993 -NULL ++----------+ +| abs(t21) | ++----------+ +| 1993 | +| NULL | ++----------+ explain select abs(t21) from t; Query Plan =================================== @@ -565,9 +667,12 @@ Outputs & filters: access([t.t21]), partitions(p0) select abs(t22) from t; -abs(t22) -0.8 -NULL ++----------+ +| abs(t22) | ++----------+ +| 0.8 | +| NULL | ++----------+ explain select abs(t22) from t; Query Plan =================================== @@ -582,9 +687,12 @@ Outputs & filters: access([t.t22]), partitions(p0) select abs(t23) from t; -abs(t23) -0.9 -NULL ++----------+ +| abs(t23) | ++----------+ +| 0.9 | +| NULL | ++----------+ explain select abs(t23) from t; Query Plan =================================== @@ -599,9 +707,12 @@ Outputs & filters: access([t.t23]), partitions(p0) select abs(t24) from t; -abs(t24) -1 -NULL ++----------+ +| abs(t24) | ++----------+ +| 1 | +| NULL | ++----------+ explain select abs(t24) from t; Query Plan =================================== @@ -616,9 +727,12 @@ Outputs & filters: access([t.t24]), partitions(p0) select abs(t25) from t; -abs(t25) -1.1 -NULL ++----------+ +| abs(t25) | ++----------+ +| 1.1 | +| NULL | ++----------+ explain select abs(t25) from t; Query Plan =================================== @@ -633,9 +747,12 @@ Outputs & filters: access([t.t25]), partitions(p0) select abs(t26) from t; -abs(t26) -1.2 -NULL ++----------+ +| abs(t26) | ++----------+ +| 1.2 | +| NULL | ++----------+ explain select abs(t26) from t; Query Plan =================================== @@ -650,9 +767,12 @@ Outputs & filters: access([t.t26]), partitions(p0) select abs(t27) from t; -abs(t27) -1 -NULL ++----------+ +| abs(t27) | ++----------+ +| 1 | +| NULL | ++----------+ explain select abs(t27) from t; Query Plan =================================== @@ -667,9 +787,12 @@ Outputs & filters: access([t.t27]), partitions(p0) select abs(t28) from t; -abs(t28) -2 -NULL ++----------+ +| abs(t28) | ++----------+ +| 2 | +| NULL | ++----------+ explain select abs(t28) from t; Query Plan =================================== @@ -684,9 +807,12 @@ Outputs & filters: access([t.t28]), partitions(p0) select abs(t29) from t; -abs(t29) -2 -NULL ++----------+ +| abs(t29) | ++----------+ +| 2 | +| NULL | ++----------+ explain select abs(t29) from t; Query Plan =================================== @@ -700,21 +826,34 @@ Outputs & filters: 0 - output([abs(cast(t.t29, DOUBLE(-1, -1)))]), filter(nil), access([t.t29]), partitions(p0) + drop table if exists t1; create table t1(c1 decimal unsigned, c2 smallint unsigned); insert into t1 values(1, 1); select mod(round(abs(c1)), c2) from t1; -mod(round(abs(c1)), c2) -0 ++-------------------------+ +| mod(round(abs(c1)), c2) | ++-------------------------+ +| 0 | ++-------------------------+ drop table t1; + // abs(hex_string) select abs(X'31'); -abs(X'31') -49 ++------------+ +| abs(X'31') | ++------------+ +| 49 | ++------------+ select abs(binary'-100'); -abs(binary'-100') -100 ++-------------------+ +| abs(binary'-100') | ++-------------------+ +| 100 | ++-------------------+ select abs(_utf8'-100'); -abs(_utf8'-100') -100 -connection conn_admin; ++------------------+ +| abs(_utf8'-100') | ++------------------+ +| 100 | ++------------------+ diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_and_or.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_and_or.result new file mode 100644 index 000000000..333a7da57 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_and_or.result @@ -0,0 +1,1439 @@ +result_format: 4 + +set ob_enable_plan_cache = 0; +drop table if exists t1; +create table t1(col_int int, + col_zero int, + col_null int, + col_varchar varchar(100), + col_varchar_num varchar(100), + col_empty_str varchar(100), + col_varchar_zero varchar(100)); +insert into t1 values(1, 0, null, 'abc', '1', '', '0'); + +explain_protocol: 2 +// Case1: normal test +// Case1.1: int test +// bool expr exists, no cast expr, res is NULL +EXPLAIN select col_int and col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int AND t1.col_null]), filter(nil), + access([t1.col_int], [t1.col_null]), partitions(p0) + +select col_int and col_null from t1; ++----------------------+ +| col_int and col_null | ++----------------------+ +| NULL | ++----------------------+ +// same as above +EXPLAIN select col_null and col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null AND t1.col_int]), filter(nil), + access([t1.col_null], [t1.col_int]), partitions(p0) + +select col_null and col_int from t1; ++----------------------+ +| col_null and col_int | ++----------------------+ +| NULL | ++----------------------+ + +// bool expr exists for col_varchar, cast expr exists, res is 0 +EXPLAIN select col_int and col_varchar from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int AND cast(t1.col_varchar, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_int], [t1.col_varchar]), partitions(p0) + +select col_int and col_varchar from t1; ++-------------------------+ +| col_int and col_varchar | ++-------------------------+ +| 0 | ++-------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'abc' +// same as above +EXPLAIN select col_varchar and col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar, DOUBLE(-1, -1)) AND t1.col_int]), filter(nil), + access([t1.col_varchar], [t1.col_int]), partitions(p0) + +select col_varchar and col_int from t1; ++-------------------------+ +| col_varchar and col_int | ++-------------------------+ +| 0 | ++-------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'abc' + +// bool expr and cast expr exists for col_varchar_num, res is 0 +EXPLAIN select col_int and col_varchar_num from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int AND cast(t1.col_varchar_num, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_int], [t1.col_varchar_num]), partitions(p0) + +select col_int and col_varchar_num from t1; ++-----------------------------+ +| col_int and col_varchar_num | ++-----------------------------+ +| 1 | ++-----------------------------+ +// same as above +EXPLAIN select col_varchar_num and col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar_num, DOUBLE(-1, -1)) AND t1.col_int]), filter(nil), + access([t1.col_varchar_num], [t1.col_int]), partitions(p0) + +select col_varchar_num and col_int from t1; ++-----------------------------+ +| col_varchar_num and col_int | ++-----------------------------+ +| 1 | ++-----------------------------+ + +// bool expr exists, no cast expr, res is 0 +EXPLAIN select col_int and 0 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int AND 0]), filter(nil), + access([t1.col_int]), partitions(p0) + +select col_int and 0 from t1; ++---------------+ +| col_int and 0 | ++---------------+ +| 0 | ++---------------+ +// same as above +EXPLAIN select 0 and col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([0 AND t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select 0 and col_int from t1; ++---------------+ +| 0 and col_int | ++---------------+ +| 0 | ++---------------+ + +// Case1.1: null test +// bool expr exists, no cast expr, res is NULL +EXPLAIN select col_null and col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null AND t1.col_null]), filter(nil), + access([t1.col_null]), partitions(p0) + +select col_null and col_null from t1; ++-----------------------+ +| col_null and col_null | ++-----------------------+ +| NULL | ++-----------------------+ +// bool expr and cast expr exists for col_varchar_num, res is NULL +EXPLAIN select col_null and col_varchar_num from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null AND cast(t1.col_varchar_num, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_null], [t1.col_varchar_num]), partitions(p0) + +select col_null and col_varchar_num from t1; ++------------------------------+ +| col_null and col_varchar_num | ++------------------------------+ +| NULL | ++------------------------------+ +// same as above +EXPLAIN select col_varchar_num and col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar_num, DOUBLE(-1, -1)) AND t1.col_null]), filter(nil), + access([t1.col_varchar_num], [t1.col_null]), partitions(p0) + +select col_varchar_num and col_null from t1; ++------------------------------+ +| col_varchar_num and col_null | ++------------------------------+ +| NULL | ++------------------------------+ + +// bool expr and cast expr exists for col_varchar_num, res is 0 +EXPLAIN select col_null and col_varchar from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null AND cast(t1.col_varchar, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_null], [t1.col_varchar]), partitions(p0) + +select col_null and col_varchar from t1; ++--------------------------+ +| col_null and col_varchar | ++--------------------------+ +| 0 | ++--------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'abc' +// same as above +EXPLAIN select col_varchar and col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar, DOUBLE(-1, -1)) AND t1.col_null]), filter(nil), + access([t1.col_varchar], [t1.col_null]), partitions(p0) + +select col_varchar and col_null from t1; ++--------------------------+ +| col_varchar and col_null | ++--------------------------+ +| 0 | ++--------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'abc' + +// same as above +EXPLAIN select col_null and 0 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null AND 0]), filter(nil), + access([t1.col_null]), partitions(p0) + +select col_null and 0 from t1; ++----------------+ +| col_null and 0 | ++----------------+ +| 0 | ++----------------+ + +// Case1.2: 0 test +// bool expr exists, no cast expr, res is 0 +EXPLAIN select col_varchar_num and 0 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar_num, DOUBLE(-1, -1)) AND 0]), filter(nil), + access([t1.col_varchar_num]), partitions(p0) + +select col_varchar_num and 0 from t1; ++-----------------------+ +| col_varchar_num and 0 | ++-----------------------+ +| 0 | ++-----------------------+ +// same as above +EXPLAIN select col_varchar_num and 0 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar_num, DOUBLE(-1, -1)) AND 0]), filter(nil), + access([t1.col_varchar_num]), partitions(p0) + +select col_varchar_num and 0 from t1; ++-----------------------+ +| col_varchar_num and 0 | ++-----------------------+ +| 0 | ++-----------------------+ + +// Case1.3: empty str test +// bool expr and cast expr exists for empty str, res is 0 +EXPLAIN select col_int and '' from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int AND ?]), filter(nil), + access([t1.col_int]), partitions(p0) + +select col_int and '' from t1; ++----------------+ +| col_int and '' | ++----------------+ +| 0 | ++----------------+ +// same as above +EXPLAIN select '' and col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? AND t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select '' and col_int from t1; ++----------------+ +| '' and col_int | ++----------------+ +| 0 | ++----------------+ + +// bool expr and cast expr exists for empty str and col_varchar, res is 0 +EXPLAIN select col_varchar and '' from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar, DOUBLE(-1, -1)) AND ?]), filter(nil), + access([t1.col_varchar]), partitions(p0) + +select col_varchar and '' from t1; ++--------------------+ +| col_varchar and '' | ++--------------------+ +| 0 | ++--------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'abc' +// same as above +EXPLAIN select '' and col_varchar from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? AND cast(t1.col_varchar, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_varchar]), partitions(p0) + +select '' and col_varchar from t1; ++--------------------+ +| '' and col_varchar | ++--------------------+ +| 0 | ++--------------------+ +// bool expr and cast expr exists for empty str and col_varchar_num, res is 0 +EXPLAIN select col_varchar_num and '' from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar_num, DOUBLE(-1, -1)) AND ?]), filter(nil), + access([t1.col_varchar_num]), partitions(p0) + +select col_varchar_num and '' from t1; ++------------------------+ +| col_varchar_num and '' | ++------------------------+ +| 0 | ++------------------------+ + +// same as above +EXPLAIN select '' and col_varchar_num from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? AND cast(t1.col_varchar_num, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_varchar_num]), partitions(p0) + +select '' and col_varchar_num from t1; ++------------------------+ +| '' and col_varchar_num | ++------------------------+ +| 0 | ++------------------------+ + +// Case2: create table as test. 因为select/explain语句对应的cast mode +// 有WARN_ON_FAIL。其他的没有,所以结果是有区别的 +// TODO: 目前没法测试,建表语句还不完善 +// Case3: or test +// Case3.1 normal test +// bool expr exists, res is 1 +EXPLAIN select col_int or col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int OR t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select col_int or col_int from t1; ++--------------------+ +| col_int or col_int | ++--------------------+ +| 1 | ++--------------------+ +// bool expr exists, res is 0 +EXPLAIN select col_zero or col_zero from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_zero OR t1.col_zero]), filter(nil), + access([t1.col_zero]), partitions(p0) + +select col_zero or col_zero from t1; ++----------------------+ +| col_zero or col_zero | ++----------------------+ +| 0 | ++----------------------+ +// bool expr exists, cast expr exists res is 0 +EXPLAIN select col_varchar_zero or col_varchar_zero from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar_zero, DOUBLE(-1, -1)) OR cast(t1.col_varchar_zero, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_varchar_zero]), partitions(p0) + +select col_varchar_zero or col_varchar_zero from t1; ++--------------------------------------+ +| col_varchar_zero or col_varchar_zero | ++--------------------------------------+ +| 0 | ++--------------------------------------+ + +// Case3.2 null test +// bool expr exists, res is NULL +EXPLAIN select col_null or col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null OR t1.col_null]), filter(nil), + access([t1.col_null]), partitions(p0) + +select col_null or col_null from t1; ++----------------------+ +| col_null or col_null | ++----------------------+ +| NULL | ++----------------------+ +// bool expr exists, res is 1 +EXPLAIN select col_int or col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int OR t1.col_null]), filter(nil), + access([t1.col_int], [t1.col_null]), partitions(p0) + +select col_int or col_null from t1; ++---------------------+ +| col_int or col_null | ++---------------------+ +| 1 | ++---------------------+ +// same as above +EXPLAIN select col_null or col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null OR t1.col_int]), filter(nil), + access([t1.col_null], [t1.col_int]), partitions(p0) + +select col_null or col_int from t1; ++---------------------+ +| col_null or col_int | ++---------------------+ +| 1 | ++---------------------+ + +// bool expr exists, res is NULL +EXPLAIN select col_zero or col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_zero OR t1.col_null]), filter(nil), + access([t1.col_zero], [t1.col_null]), partitions(p0) + +select col_zero or col_null from t1; ++----------------------+ +| col_zero or col_null | ++----------------------+ +| NULL | ++----------------------+ +// same as above +EXPLAIN select col_null or col_zero from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null OR t1.col_zero]), filter(nil), + access([t1.col_null], [t1.col_zero]), partitions(p0) + +select col_null or col_zero from t1; ++----------------------+ +| col_null or col_zero | ++----------------------+ +| NULL | ++----------------------+ + +// bool expr exists, res is 1 +EXPLAIN select col_varchar_num or col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar_num, DOUBLE(-1, -1)) OR t1.col_null]), filter(nil), + access([t1.col_varchar_num], [t1.col_null]), partitions(p0) + +select col_varchar_num or col_null from t1; ++-----------------------------+ +| col_varchar_num or col_null | ++-----------------------------+ +| 1 | ++-----------------------------+ +// same as above +EXPLAIN select col_null or col_varchar_num from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null OR cast(t1.col_varchar_num, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_null], [t1.col_varchar_num]), partitions(p0) + +select col_null or col_varchar_num from t1; ++-----------------------------+ +| col_null or col_varchar_num | ++-----------------------------+ +| 1 | ++-----------------------------+ + +// bool expr exists, res is NULL +EXPLAIN select col_varchar_zero or col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_varchar_zero, DOUBLE(-1, -1)) OR t1.col_null]), filter(nil), + access([t1.col_varchar_zero], [t1.col_null]), partitions(p0) + +select col_varchar_zero or col_null from t1; ++------------------------------+ +| col_varchar_zero or col_null | ++------------------------------+ +| NULL | ++------------------------------+ +// same as above +EXPLAIN select col_null or col_varchar_zero from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null OR cast(t1.col_varchar_zero, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_null], [t1.col_varchar_zero]), partitions(p0) + +select col_null or col_varchar_zero from t1; ++------------------------------+ +| col_null or col_varchar_zero | ++------------------------------+ +| NULL | ++------------------------------+ + +// Case3.3 empty str test +// bool expr exists, res is NULL +EXPLAIN select col_null or '' from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_null OR ?]), filter(nil), + access([t1.col_null]), partitions(p0) + +select col_null or '' from t1; ++----------------+ +| col_null or '' | ++----------------+ +| NULL | ++----------------+ +// same as above +EXPLAIN select '' or col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? OR t1.col_null]), filter(nil), + access([t1.col_null]), partitions(p0) + +select '' or col_null from t1; ++----------------+ +| '' or col_null | ++----------------+ +| NULL | ++----------------+ + +// bool expr exists, res is 1 +EXPLAIN select col_int or '' from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int OR ?]), filter(nil), + access([t1.col_int]), partitions(p0) + +select col_int or '' from t1; ++---------------+ +| col_int or '' | ++---------------+ +| 1 | ++---------------+ +// same as above +EXPLAIN select '' or col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? OR t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select '' or col_int from t1; ++---------------+ +| '' or col_int | ++---------------+ +| 1 | ++---------------+ + +// bool expr exists, res is 0 +EXPLAIN select col_zero or '' from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_zero OR ?]), filter(nil), + access([t1.col_zero]), partitions(p0) + +select col_zero or '' from t1; ++----------------+ +| col_zero or '' | ++----------------+ +| 0 | ++----------------+ +// same as above +EXPLAIN select '' or col_zero from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? OR t1.col_zero]), filter(nil), + access([t1.col_zero]), partitions(p0) + +select '' or col_zero from t1; ++----------------+ +| '' or col_zero | ++----------------+ +| 0 | ++----------------+ + +// res is 0 +EXPLAIN select col_empty_str or '' from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.col_empty_str, DOUBLE(-1, -1)) OR ?]), filter(nil), + access([t1.col_empty_str]), partitions(p0) + +select col_empty_str or '' from t1; ++---------------------+ +| col_empty_str or '' | ++---------------------+ +| 0 | ++---------------------+ + +// Case4: multi and test +// res is 1 +EXPLAIN select 1 and 2 and 3 and col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? AND t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select 1 and 2 and 3 and col_int from t1; ++---------------------------+ +| 1 and 2 and 3 and col_int | ++---------------------------+ +| 1 | ++---------------------------+ +// res is NULL +EXPLAIN select 1 and col_null and 3 and col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([1 AND t1.col_null AND 3 AND t1.col_int]), filter(nil), + access([t1.col_null], [t1.col_int]), partitions(p0) + +select 1 and col_null and 3 and col_int from t1; ++----------------------------------+ +| 1 and col_null and 3 and col_int | ++----------------------------------+ +| NULL | ++----------------------------------+ +// res is 0 +EXPLAIN select 1 and col_null and 3 and col_zero from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([1 AND t1.col_null AND 3 AND t1.col_zero]), filter(nil), + access([t1.col_null], [t1.col_zero]), partitions(p0) + +select 1 and col_null and 3 and col_zero from t1; ++-----------------------------------+ +| 1 and col_null and 3 and col_zero | ++-----------------------------------+ +| 0 | ++-----------------------------------+ +// res is 0 +EXPLAIN select 1 and col_null and 3 and col_empty_str from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([1 AND t1.col_null AND 3 AND cast(t1.col_empty_str, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_null], [t1.col_empty_str]), partitions(p0) + +select 1 and col_null and 3 and col_empty_str from t1; ++----------------------------------------+ +| 1 and col_null and 3 and col_empty_str | ++----------------------------------------+ +| 0 | ++----------------------------------------+ + +// Case5: multi or test +// res is 1 +EXPLAIN select 1 or 2 or col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? OR t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select 1 or 2 or col_int from t1; ++-------------------+ +| 1 or 2 or col_int | ++-------------------+ +| 1 | ++-------------------+ +// res is NULL +EXPLAIN select 1 or 2 or col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? OR t1.col_null]), filter(nil), + access([t1.col_null]), partitions(p0) + +select 1 or 2 or col_null from t1; ++--------------------+ +| 1 or 2 or col_null | ++--------------------+ +| 1 | ++--------------------+ +// res is 0 +EXPLAIN select '' or 0 or col_null from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([? OR t1.col_null]), filter(nil), + access([t1.col_null]), partitions(p0) + +select '' or 0 or col_null from t1; ++---------------------+ +| '' or 0 or col_null | ++---------------------+ +| NULL | ++---------------------+ + +// Case6: 0, 1, null三个值组合测试,结果跟不开新引擎的结果进行对比 +drop table if exists t1; +explain_protocol: 0 +create table t1 (c1 int, c2 int, c3 int, + c4 float, c5 float, c6 float, + c7 double, c8 double, c9 double, + c10 decimal, c11 decimal, c12 decimal, + c13 datetime, c14 datetime, c15 datetime, + c16 timestamp, c17 timestamp, c18 timestamp, + c19 date, c20 date, c21 date, + c22 varchar(10), c23 varchar(10), c24 varchar(10), + c25 char(11), c26 char(11), c27 char(12), + c28 char(10), c29 char(10), c30 char(10)); +insert into t1 values(0, 1, null, + 0.0, 1.0, null, + 0.0, 1.0, null, + 0.0, 1.0, null, + 0, '2019-01-01 00:00:00', null, + 0, '2019-01-01 00:00:00', null, + 0, '2019-01-01', null, + '0', '123', null, + '0', '123', null, + '0', 'abc', null); + +explain_protocol: 2 +set @@ob_enable_plan_cache = 0; + +EXPLAIN select c1, c1, c1 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c1], [t1.c1 AND t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, c1, c1 and c1 from t1; ++------+------+-----------+ +| c1 | c1 | c1 and c1 | ++------+------+-----------+ +| 0 | 0 | 0 | ++------+------+-----------+ +EXPLAIN select c1, c1, c1 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c1], [t1.c1 OR t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, c1, c1 or c1 from t1; ++------+------+----------+ +| c1 | c1 | c1 or c1 | ++------+------+----------+ +| 0 | 0 | 0 | ++------+------+----------+ +EXPLAIN select c1, c2, c1 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c1 AND t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1, c2, c1 and c2 from t1; ++------+------+-----------+ +| c1 | c2 | c1 and c2 | ++------+------+-----------+ +| 0 | 1 | 0 | ++------+------+-----------+ +EXPLAIN select c1, c2, c1 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c1 OR t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1, c2, c1 or c2 from t1; ++------+------+----------+ +| c1 | c2 | c1 or c2 | ++------+------+----------+ +| 0 | 1 | 1 | ++------+------+----------+ +EXPLAIN select c1, c3, c1 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c3], [t1.c1 AND t1.c3]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, c3, c1 and c3 from t1; ++------+------+-----------+ +| c1 | c3 | c1 and c3 | ++------+------+-----------+ +| 0 | NULL | 0 | ++------+------+-----------+ +EXPLAIN select c1, c3, c1 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c3], [t1.c1 OR t1.c3]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, c3, c1 or c3 from t1; ++------+------+----------+ +| c1 | c3 | c1 or c3 | ++------+------+----------+ +| 0 | NULL | NULL | ++------+------+----------+ +EXPLAIN select c2, c1, c2 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c1], [t1.c2 AND t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select c2, c1, c2 and c1 from t1; ++------+------+-----------+ +| c2 | c1 | c2 and c1 | ++------+------+-----------+ +| 1 | 0 | 0 | ++------+------+-----------+ +EXPLAIN select c2, c1, c2 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c1], [t1.c2 OR t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select c2, c1, c2 or c1 from t1; ++------+------+----------+ +| c2 | c1 | c2 or c1 | ++------+------+----------+ +| 1 | 0 | 1 | ++------+------+----------+ +EXPLAIN select c2, c2, c2 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c2], [t1.c2 AND t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, c2, c2 and c2 from t1; ++------+------+-----------+ +| c2 | c2 | c2 and c2 | ++------+------+-----------+ +| 1 | 1 | 1 | ++------+------+-----------+ +EXPLAIN select c2, c2, c2 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c2], [t1.c2 OR t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, c2, c2 or c2 from t1; ++------+------+----------+ +| c2 | c2 | c2 or c2 | ++------+------+----------+ +| 1 | 1 | 1 | ++------+------+----------+ +EXPLAIN select c2, c3, c2 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c3], [t1.c2 AND t1.c3]), filter(nil), + access([t1.c2], [t1.c3]), partitions(p0) + +select c2, c3, c2 and c3 from t1; ++------+------+-----------+ +| c2 | c3 | c2 and c3 | ++------+------+-----------+ +| 1 | NULL | NULL | ++------+------+-----------+ +EXPLAIN select c2, c3, c2 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c3], [t1.c2 OR t1.c3]), filter(nil), + access([t1.c2], [t1.c3]), partitions(p0) + +select c2, c3, c2 or c3 from t1; ++------+------+----------+ +| c2 | c3 | c2 or c3 | ++------+------+----------+ +| 1 | NULL | 1 | ++------+------+----------+ +EXPLAIN select c3, c1, c3 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c1], [t1.c3 AND t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + +select c3, c1, c3 and c1 from t1; ++------+------+-----------+ +| c3 | c1 | c3 and c1 | ++------+------+-----------+ +| NULL | 0 | 0 | ++------+------+-----------+ +EXPLAIN select c3, c1, c3 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c1], [t1.c3 OR t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + +select c3, c1, c3 or c1 from t1; ++------+------+----------+ +| c3 | c1 | c3 or c1 | ++------+------+----------+ +| NULL | 0 | NULL | ++------+------+----------+ +EXPLAIN select c3, c2, c3 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c2], [t1.c3 AND t1.c2]), filter(nil), + access([t1.c3], [t1.c2]), partitions(p0) + +select c3, c2, c3 and c2 from t1; ++------+------+-----------+ +| c3 | c2 | c3 and c2 | ++------+------+-----------+ +| NULL | 1 | NULL | ++------+------+-----------+ +EXPLAIN select c3, c2, c3 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c2], [t1.c3 OR t1.c2]), filter(nil), + access([t1.c3], [t1.c2]), partitions(p0) + +select c3, c2, c3 or c2 from t1; ++------+------+----------+ +| c3 | c2 | c3 or c2 | ++------+------+----------+ +| NULL | 1 | 1 | ++------+------+----------+ +EXPLAIN select c3, c3, c3 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c3], [t1.c3 AND t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, c3, c3 and c3 from t1; ++------+------+-----------+ +| c3 | c3 | c3 and c3 | ++------+------+-----------+ +| NULL | NULL | NULL | ++------+------+-----------+ +EXPLAIN select c3, c3, c3 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c3], [t1.c3 OR t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, c3, c3 or c3 from t1; ++------+------+----------+ +| c3 | c3 | c3 or c3 | ++------+------+----------+ +| NULL | NULL | NULL | ++------+------+----------+ + +drop table t1; +CREATE TABLE t1(c0 VARCHAR(500), c1 DECIMAL); +EXPLAIN insert into t1 values('', 123); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(VARCHAR,utf8mb4_general_ci,length:500,NULL,__values.c0)], [column_conv(DECIMAL,PS:(10,0),NULL,__values.c1)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c0, t1.c1)})}]), partitions(p0) + 1 - output([__values.c0], [__values.c1]), filter(nil) + values({'', 123}) + +insert into t1 values('', 123); +EXPLAIN SELECT ALL t1.c0 AS ref0 FROM t1 WHERE (NULL AND ( CAST(COALESCE(t1.c0, EXISTS (SELECT 1)) AS SIGNED) IS NOT NULL)) IS NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |37 | +|1 | TABLE SCAN |t1 |1 |37 | +|2 | LIMIT | |1 |1 | +|3 | EXPRESSION | |1 |1 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c0]), filter(nil), + exec_params_(nil), onetime_exprs_([cast((T_OP_EXISTS, subquery(1)), VARCHAR(500))]), init_plan_idxs_(nil) + 1 - output([t1.c0]), filter([(T_OP_IS, ? AND (T_OP_IS_NOT, cast(coalesce(t1.c0, ?), BIGINT(0, 0)), NULL, 0), NULL, 0)]), + access([t1.c0]), partitions(p0) + 2 - output([1]), filter(nil), limit(1), offset(nil) + 3 - output([1]), filter(nil) + values({1}) + +SELECT ALL t1.c0 AS ref0 FROM t1 WHERE (NULL AND ( CAST(COALESCE(t1.c0, EXISTS (SELECT 1)) AS SIGNED) IS NOT NULL)) IS NULL; ++------+ +| ref0 | ++------+ +| | ++------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '' +drop table t1; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_assign.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_assign.result new file mode 100644 index 000000000..d9c8ad98b --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_assign.result @@ -0,0 +1,342 @@ +result_format: 4 +explain_protocol: 0 + +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30)); +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5'); + +select @var1, @var2; ++-------+-------+ +| @var1 | @var2 | ++-------+-------+ +| NULL | NULL | ++-------+-------+ + +select @var2_1 := @var1_1 := c1 from t1; ++--------------------------+ +| @var2_1 := @var1_1 := c1 | ++--------------------------+ +| 1 | ++--------------------------+ +select @var1_1, @var2_1; ++---------+---------+ +| @var1_1 | @var2_1 | ++---------+---------+ +| 1 | 1 | ++---------+---------+ +select @var2_2 := @var1_2 := c2 from t1; ++--------------------------+ +| @var2_2 := @var1_2 := c2 | ++--------------------------+ +| 2 | ++--------------------------+ +select @var1_2, @var2_2; ++---------+---------+ +| @var1_2 | @var2_2 | ++---------+---------+ +| 2 | 2 | ++---------+---------+ +select @var2_3 := @var1_3 := c3 from t1; ++--------------------------+ +| @var2_3 := @var1_3 := c3 | ++--------------------------+ +| 1 | ++--------------------------+ +select @var1_3, @var2_3; ++---------+---------+ +| @var1_3 | @var2_3 | ++---------+---------+ +| 1 | 1 | ++---------+---------+ +select @var2_4 := @var1_4 := c4 from t1; ++--------------------------+ +| @var2_4 := @var1_4 := c4 | ++--------------------------+ +| 2 | ++--------------------------+ +select @var1_4, @var2_4; ++---------+---------+ +| @var1_4 | @var2_4 | ++---------+---------+ +| 2 | 2 | ++---------+---------+ +select @var2_5 := @var1_5 := c5 from t1; ++--------------------------+ +| @var2_5 := @var1_5 := c5 | ++--------------------------+ +| 1 | ++--------------------------+ +select @var1_5, @var2_5; ++---------+---------+ +| @var1_5 | @var2_5 | ++---------+---------+ +| 1 | 1 | ++---------+---------+ +select @var2_6 := @var1_6 := c6 from t1; ++--------------------------+ +| @var2_6 := @var1_6 := c6 | ++--------------------------+ +| 2 | ++--------------------------+ +select @var1_6, @var2_6; ++---------+---------+ +| @var1_6 | @var2_6 | ++---------+---------+ +| 2 | 2 | ++---------+---------+ +select @var2_7 := @var1_7 := c7 from t1; ++--------------------------+ +| @var2_7 := @var1_7 := c7 | ++--------------------------+ +| 1 | ++--------------------------+ +select @var1_7, @var2_7; ++---------+---------+ +| @var1_7 | @var2_7 | ++---------+---------+ +| 1 | 1 | ++---------+---------+ +select @var2_8 := @var1_8 := c8 from t1; ++--------------------------+ +| @var2_8 := @var1_8 := c8 | ++--------------------------+ +| 2 | ++--------------------------+ +select @var1_8, @var2_8; ++---------+---------+ +| @var1_8 | @var2_8 | ++---------+---------+ +| 2 | 2 | ++---------+---------+ +select @var2_9 := @var1_9 := c9 from t1; ++--------------------------+ +| @var2_9 := @var1_9 := c9 | ++--------------------------+ +| 1 | ++--------------------------+ +select @var1_9, @var2_9; ++---------+---------+ +| @var1_9 | @var2_9 | ++---------+---------+ +| 1 | 1 | ++---------+---------+ +select @var2_10 := @var1_10 := c10 from t1; ++-----------------------------+ +| @var2_10 := @var1_10 := c10 | ++-----------------------------+ +| 2 | ++-----------------------------+ +select @var1_10, @var2_10; ++----------+----------+ +| @var1_10 | @var2_10 | ++----------+----------+ +| 2 | 2 | ++----------+----------+ +select @var2_11 := @var1_11 := c11 from t1; ++-----------------------------+ +| @var2_11 := @var1_11 := c11 | ++-----------------------------+ +| 1 | ++-----------------------------+ +select @var1_11, @var2_11; ++----------+----------+ +| @var1_11 | @var2_11 | ++----------+----------+ +| 1 | 1 | ++----------+----------+ +select @var2_12 := @var1_12 := c12 from t1; ++-----------------------------+ +| @var2_12 := @var1_12 := c12 | ++-----------------------------+ +| 2 | ++-----------------------------+ +select @var1_12, @var2_12; ++----------+----------+ +| @var1_12 | @var2_12 | ++----------+----------+ +| 2 | 2 | ++----------+----------+ +select @var2_13 := @var1_13 := c13 from t1; ++-----------------------------+ +| @var2_13 := @var1_13 := c13 | ++-----------------------------+ +| 3.5 | ++-----------------------------+ +select @var1_13, @var2_13; ++----------+----------+ +| @var1_13 | @var2_13 | ++----------+----------+ +| 3.5 | 3.5 | ++----------+----------+ +select @var2_14 := @var1_14 := c14 from t1; ++-----------------------------+ +| @var2_14 := @var1_14 := c14 | ++-----------------------------+ +| 4.5 | ++-----------------------------+ +select @var1_14, @var2_14; ++----------+----------+ +| @var1_14 | @var2_14 | ++----------+----------+ +| 4.5 | 4.5 | ++----------+----------+ +select @var2_15 := @var1_15 := c15 from t1; ++-----------------------------+ +| @var2_15 := @var1_15 := c15 | ++-----------------------------+ +| 5.5 | ++-----------------------------+ +select @var1_15, @var2_15; ++----------+----------+ +| @var1_15 | @var2_15 | ++----------+----------+ +| 5.5 | 5.5 | ++----------+----------+ +select @var2_16 := @var1_16 := c16 from t1; ++-----------------------------+ +| @var2_16 := @var1_16 := c16 | ++-----------------------------+ +| 6.5 | ++-----------------------------+ +select @var1_16, @var2_16; ++----------+----------+ +| @var1_16 | @var2_16 | ++----------+----------+ +| 6.5 | 6.5 | ++----------+----------+ +select @var2_17 := @var1_17 := c17 from t1; ++-----------------------------+ +| @var2_17 := @var1_17 := c17 | ++-----------------------------+ +| 8 | ++-----------------------------+ +select @var1_17, @var2_17; ++----------+----------+ +| @var1_17 | @var2_17 | ++----------+----------+ +| 8 | 8 | ++----------+----------+ +select @var2_18 := @var1_18 := c18 from t1; ++-----------------------------+ +| @var2_18 := @var1_18 := c18 | ++-----------------------------+ +| 9 | ++-----------------------------+ +select @var1_18, @var2_18; ++----------+----------+ +| @var1_18 | @var2_18 | ++----------+----------+ +| 9 | 9 | ++----------+----------+ +select @var2_19 := @var1_19 := c19 from t1; ++-----------------------------+ +| @var2_19 := @var1_19 := c19 | ++-----------------------------+ +| 2019-12-01 12:00:00 | ++-----------------------------+ +select @var1_19, @var2_19; ++---------------------+---------------------+ +| @var1_19 | @var2_19 | ++---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+---------------------+ +select @var2_20 := @var1_20 := c20 from t1; ++-----------------------------+ +| @var2_20 := @var1_20 := c20 | ++-----------------------------+ +| 2019-12-03 06:00:00 | ++-----------------------------+ +select @var1_20, @var2_20; ++---------------------+---------------------+ +| @var1_20 | @var2_20 | ++---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+---------------------+ +select @var2_21 := @var1_21 := c21 from t1; ++-----------------------------+ +| @var2_21 := @var1_21 := c21 | ++-----------------------------+ +| 9.5 | ++-----------------------------+ +select @var1_21, @var2_21; ++----------+----------+ +| @var1_21 | @var2_21 | ++----------+----------+ +| 9.5 | 9.5 | ++----------+----------+ +select @var2_22 := @var1_22 := c22 from t1; ++-----------------------------+ +| @var2_22 := @var1_22 := c22 | ++-----------------------------+ +| 10.5 | ++-----------------------------+ +select @var1_22, @var2_22; ++----------+----------+ +| @var1_22 | @var2_22 | ++----------+----------+ +| 10.5 | 10.5 | ++----------+----------+ + +set @a = 1; +select @a := @someval; ++----------------+ +| @a := @someval | ++----------------+ +| NULL | ++----------------+ +select @a; ++------+ +| @a | ++------+ +| NULL | ++------+ +drop view if exists vv; +create view vv as select @a; +desc vv; ++-------+--------------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-------+--------------------+------+-----+---------+-------+ +| @a | varbinary(1048576) | NO | | | | ++-------+--------------------+------+-----+---------+-------+ + +select @a := null; ++------------+ +| @a := null | ++------------+ +| NULL | ++------------+ +select @a; ++------+ +| @a | ++------+ +| NULL | ++------+ +drop view if exists vv; +create view vv as select @a; +desc vv; ++-------+--------------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-------+--------------------+------+-----+---------+-------+ +| @a | varbinary(1048576) | NO | | | | ++-------+--------------------+------+-----+---------+-------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_bool.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_bool.result new file mode 100644 index 000000000..ebaa062fb --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_bool.result @@ -0,0 +1,23304 @@ +result_format: 4 + +drop table if exists t1, t2; +explain_protocol: 0 +create table t1 ( + col_tinyint tinyint, + col_smallint smallint, + col_mediumint tinyint, + col_int int, + col_bigint bigint, + col_float float, + col_double double, + col_decimal decimal, + + col_utinyint tinyint unsigned, + col_usmallint smallint unsigned, + col_umediumint tinyint unsigned, + col_uint int unsigned, + col_ubigint bigint unsigned, + col_ufloat float unsigned, + col_udouble double unsigned, + col_udecimal decimal unsigned, + + col_char char(100), + col_varchar varchar(100), + col_blob blob, + col_text text, + + col_date date, + col_datetime datetime, + col_timestamp timestamp, + col_year year, + col_time time, + + col_bit bit + ); + +insert into t1 values( + -1, + -2, + -3, + -4, + -5, + -1.0, + -2.0, + -111.11, + + 0, + 0, + 0, + 0, + 0, + 1.0, + 2.0, + 111.11, + + '0', + 'varchar type', + 'blob type', + 'text type', + + '2019-01-01', + '2019-01-01 00:00:00', + '2019-01-01 00:00:00', + '1997', + '00:12:12', + + b'001' +); +create table t2 (c1 int); +insert into t2 values(1); + +// Case1: AND/OR测试 +set ob_enable_plan_cache = 0; +explain_protocol: 2 +// 两个col_int上面应该有bool expr +EXPLAIN select col_int and col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int AND t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select col_int and col_int from t1; ++---------------------+ +| col_int and col_int | ++---------------------+ +| 1 | ++---------------------+ +// 两个col_xxx上面都应该有bool expr,col_varchar上面应该有cast,转换为decimal +EXPLAIN select col_int and col_varchar from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int AND cast(t1.col_varchar, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_int], [t1.col_varchar]), partitions(p0) + +select col_int and col_varchar from t1; ++-------------------------+ +| col_int and col_varchar | ++-------------------------+ +| 0 | ++-------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'varchar type' +// 两个col_int上面应该有bool expr +EXPLAIN select col_int or col_int from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int OR t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select col_int or col_int from t1; ++--------------------+ +| col_int or col_int | ++--------------------+ +| 1 | ++--------------------+ +// 两个col_xxx上面都应该有bool expr,col_varchar上面应该有cast,转换为decimal +EXPLAIN select col_int or col_varchar from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int OR cast(t1.col_varchar, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_int], [t1.col_varchar]), partitions(p0) + +select col_int or col_varchar from t1; ++------------------------+ +| col_int or col_varchar | ++------------------------+ +| 1 | ++------------------------+ + +// 两个col_uint上面应该有bool expr, 结果为0 +EXPLAIN select 1 and col_uint from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([1 AND t1.col_uint]), filter(nil), + access([t1.col_uint]), partitions(p0) + +select 1 and col_uint from t1; ++----------------+ +| 1 and col_uint | ++----------------+ +| 0 | ++----------------+ +// 两个col_xxx上面都应该有bool expr,col_char上面应该有cast,转换为decimal, 结果为0 +EXPLAIN select 1 and col_char from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([1 AND cast(t1.col_char, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_char]), partitions(p0) + +select 1 and col_char from t1; ++----------------+ +| 1 and col_char | ++----------------+ +| 0 | ++----------------+ +// 两个col_uint上面应该有bool expr, 结果为0 +EXPLAIN select col_uint or col_uint from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_uint OR t1.col_uint]), filter(nil), + access([t1.col_uint]), partitions(p0) + +select col_uint or col_uint from t1; ++----------------------+ +| col_uint or col_uint | ++----------------------+ +| 0 | ++----------------------+ +// 两个col_xxx上面都应该有bool expr,col_char上面应该有cast,转换为decimal, 结果为0 +EXPLAIN select col_uint or col_char from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_uint OR cast(t1.col_char, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_uint], [t1.col_char]), partitions(p0) + +select col_uint or col_char from t1; ++----------------------+ +| col_uint or col_char | ++----------------------+ +| 0 | ++----------------------+ +// 两个col_uint上面应该有bool expr, 结果为1 +EXPLAIN select col_uint or 1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_uint OR 1]), filter(nil), + access([t1.col_uint]), partitions(p0) + +select col_uint or 1 from t1; ++---------------+ +| col_uint or 1 | ++---------------+ +| 1 | ++---------------+ +// 两个col_xxx上面都应该有bool expr,col_char上面应该有cast,转换为decimal, 结果为1 +EXPLAIN select 1 or col_char from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([1 OR cast(t1.col_char, DOUBLE(-1, -1))]), filter(nil), + access([t1.col_char]), partitions(p0) + +select 1 or col_char from t1; ++---------------+ +| 1 or col_char | ++---------------+ +| 1 | ++---------------+ + +// Case2: 有布尔语义的表达式,不会有bool expr被插入 +// and表达式的两个子节点都是有布尔语义的,所以bool expr不会出现 +EXPLAIN select col_int from t1 where (col_int = col_int) and (col_uint = col_uint); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int]), filter([t1.col_int = t1.col_int], [t1.col_uint = t1.col_uint]), + access([t1.col_int], [t1.col_uint]), partitions(p0) + +select col_int from t1 where (col_int = col_int) and (col_uint = col_uint); ++---------+ +| col_int | ++---------+ +| -4 | ++---------+ +// 同上,也不会有bool expr +EXPLAIN select 1 from t1 where t1.col_int = t1.col_uint; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter([t1.col_int = t1.col_uint]), + access([t1.col_int], [t1.col_uint]), partitions(p0) + +select 1 from t1 where t1.col_int = t1.col_uint; ++---+ +| 1 | ++---+ ++---+ +// 同上,也不会有bool expr +EXPLAIN select col_int from t1 having avg(col_int) = 1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |37 | +|1 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.col_int]), filter([T_FUN_SUM(t1.col_int) / cast(T_FUN_COUNT(t1.col_int), DECIMAL(20, 0)) = ?]), + group(nil), agg_func([T_FUN_SUM(t1.col_int)], [T_FUN_COUNT(t1.col_int)]) + 1 - output([t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + +select col_int from t1 having avg(col_int) = 1; ++---------+ +| col_int | ++---------+ ++---------+ +// 同上,也不会有bool expr +EXPLAIN select 1 from t1 inner join t2 on t2.c1 = t1.col_int; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |1 |74 | +|1 | SORT | |1 |37 | +|2 | TABLE SCAN|t1 |1 |36 | +|3 | SORT | |1 |37 | +|4 | TABLE SCAN|t2 |1 |36 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter(nil), + equal_conds([t2.c1 = t1.col_int]), other_conds(nil) + 1 - output([t1.col_int]), filter(nil), sort_keys([t1.col_int, ASC]) + 2 - output([t1.col_int]), filter(nil), + access([t1.col_int]), partitions(p0) + 3 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select 1 from t1 inner join t2 on t2.c1 = t1.col_int; ++---+ +| 1 | ++---+ ++---+ + +// Case3: TODO: 测试where/having/join condition, +// 需要想一些不带有布尔语义的作为各个子句的条件 +// Case4: 对各种类型进行测试,看能否顺利转换,且结果跟不加bool expr是一致的 +explain_protocol: 0 +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30), c23 blob, c24 text); +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5', 'blob type', 'text type'); +set ob_enable_plan_cache = 0; +explain_protocol: 2 +EXPLAIN select c1 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1 and c1 from t1; ++-----------+ +| c1 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1 or c1 from t1; ++----------+ +| c1 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1 and c2 from t1; ++-----------+ +| c1 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1 or c2 from t1; ++----------+ +| c1 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c3]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1 and c3 from t1; ++-----------+ +| c1 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c3]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1 or c3 from t1; ++----------+ +| c1 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c4]), filter(nil), + access([t1.c1], [t1.c4]), partitions(p0) + +select c1 and c4 from t1; ++-----------+ +| c1 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c4]), filter(nil), + access([t1.c1], [t1.c4]), partitions(p0) + +select c1 or c4 from t1; ++----------+ +| c1 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c5]), filter(nil), + access([t1.c1], [t1.c5]), partitions(p0) + +select c1 and c5 from t1; ++-----------+ +| c1 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c5]), filter(nil), + access([t1.c1], [t1.c5]), partitions(p0) + +select c1 or c5 from t1; ++----------+ +| c1 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c6]), filter(nil), + access([t1.c1], [t1.c6]), partitions(p0) + +select c1 and c6 from t1; ++-----------+ +| c1 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c6]), filter(nil), + access([t1.c1], [t1.c6]), partitions(p0) + +select c1 or c6 from t1; ++----------+ +| c1 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c7]), filter(nil), + access([t1.c1], [t1.c7]), partitions(p0) + +select c1 and c7 from t1; ++-----------+ +| c1 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c7]), filter(nil), + access([t1.c1], [t1.c7]), partitions(p0) + +select c1 or c7 from t1; ++----------+ +| c1 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c8]), filter(nil), + access([t1.c1], [t1.c8]), partitions(p0) + +select c1 and c8 from t1; ++-----------+ +| c1 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c8]), filter(nil), + access([t1.c1], [t1.c8]), partitions(p0) + +select c1 or c8 from t1; ++----------+ +| c1 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c9]), filter(nil), + access([t1.c1], [t1.c9]), partitions(p0) + +select c1 and c9 from t1; ++-----------+ +| c1 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c1 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c9]), filter(nil), + access([t1.c1], [t1.c9]), partitions(p0) + +select c1 or c9 from t1; ++----------+ +| c1 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c1 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c10]), filter(nil), + access([t1.c1], [t1.c10]), partitions(p0) + +select c1 and c10 from t1; ++------------+ +| c1 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c10]), filter(nil), + access([t1.c1], [t1.c10]), partitions(p0) + +select c1 or c10 from t1; ++-----------+ +| c1 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c11]), filter(nil), + access([t1.c1], [t1.c11]), partitions(p0) + +select c1 and c11 from t1; ++------------+ +| c1 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c11]), filter(nil), + access([t1.c1], [t1.c11]), partitions(p0) + +select c1 or c11 from t1; ++-----------+ +| c1 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c12]), filter(nil), + access([t1.c1], [t1.c12]), partitions(p0) + +select c1 and c12 from t1; ++------------+ +| c1 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c12]), filter(nil), + access([t1.c1], [t1.c12]), partitions(p0) + +select c1 or c12 from t1; ++-----------+ +| c1 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c13]), filter(nil), + access([t1.c1], [t1.c13]), partitions(p0) + +select c1 and c13 from t1; ++------------+ +| c1 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c13]), filter(nil), + access([t1.c1], [t1.c13]), partitions(p0) + +select c1 or c13 from t1; ++-----------+ +| c1 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c14]), filter(nil), + access([t1.c1], [t1.c14]), partitions(p0) + +select c1 and c14 from t1; ++------------+ +| c1 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c14]), filter(nil), + access([t1.c1], [t1.c14]), partitions(p0) + +select c1 or c14 from t1; ++-----------+ +| c1 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c15]), filter(nil), + access([t1.c1], [t1.c15]), partitions(p0) + +select c1 and c15 from t1; ++------------+ +| c1 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c15]), filter(nil), + access([t1.c1], [t1.c15]), partitions(p0) + +select c1 or c15 from t1; ++-----------+ +| c1 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c16]), filter(nil), + access([t1.c1], [t1.c16]), partitions(p0) + +select c1 and c16 from t1; ++------------+ +| c1 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c16]), filter(nil), + access([t1.c1], [t1.c16]), partitions(p0) + +select c1 or c16 from t1; ++-----------+ +| c1 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c17]), filter(nil), + access([t1.c1], [t1.c17]), partitions(p0) + +select c1 and c17 from t1; ++------------+ +| c1 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c17]), filter(nil), + access([t1.c1], [t1.c17]), partitions(p0) + +select c1 or c17 from t1; ++-----------+ +| c1 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND t1.c18]), filter(nil), + access([t1.c1], [t1.c18]), partitions(p0) + +select c1 and c18 from t1; ++------------+ +| c1 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR t1.c18]), filter(nil), + access([t1.c1], [t1.c18]), partitions(p0) + +select c1 or c18 from t1; ++-----------+ +| c1 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c19]), partitions(p0) + +select c1 and c19 from t1; ++------------+ +| c1 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c19]), partitions(p0) + +select c1 or c19 from t1; ++-----------+ +| c1 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c20]), partitions(p0) + +select c1 and c20 from t1; ++------------+ +| c1 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c20]), partitions(p0) + +select c1 or c20 from t1; ++-----------+ +| c1 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c21]), partitions(p0) + +select c1 and c21 from t1; ++------------+ +| c1 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c21]), partitions(p0) + +select c1 or c21 from t1; ++-----------+ +| c1 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c22]), partitions(p0) + +select c1 and c22 from t1; ++------------+ +| c1 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c1 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c22]), partitions(p0) + +select c1 or c22 from t1; ++-----------+ +| c1 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c23]), partitions(p0) + +select c1 and c23 from t1; ++------------+ +| c1 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c1 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c23]), partitions(p0) + +select c1 or c23 from t1; ++-----------+ +| c1 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c1 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c24]), partitions(p0) + +select c1 and c24 from t1; ++------------+ +| c1 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c1 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c1], [t1.c24]), partitions(p0) + +select c1 or c24 from t1; ++-----------+ +| c1 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select c2 and c1 from t1; ++-----------+ +| c2 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select c2 or c1 from t1; ++----------+ +| c2 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2 and c2 from t1; ++-----------+ +| c2 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2 or c2 from t1; ++----------+ +| c2 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c3]), filter(nil), + access([t1.c2], [t1.c3]), partitions(p0) + +select c2 and c3 from t1; ++-----------+ +| c2 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c3]), filter(nil), + access([t1.c2], [t1.c3]), partitions(p0) + +select c2 or c3 from t1; ++----------+ +| c2 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c4]), filter(nil), + access([t1.c2], [t1.c4]), partitions(p0) + +select c2 and c4 from t1; ++-----------+ +| c2 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c4]), filter(nil), + access([t1.c2], [t1.c4]), partitions(p0) + +select c2 or c4 from t1; ++----------+ +| c2 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c5]), filter(nil), + access([t1.c2], [t1.c5]), partitions(p0) + +select c2 and c5 from t1; ++-----------+ +| c2 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c5]), filter(nil), + access([t1.c2], [t1.c5]), partitions(p0) + +select c2 or c5 from t1; ++----------+ +| c2 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c6]), filter(nil), + access([t1.c2], [t1.c6]), partitions(p0) + +select c2 and c6 from t1; ++-----------+ +| c2 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c6]), filter(nil), + access([t1.c2], [t1.c6]), partitions(p0) + +select c2 or c6 from t1; ++----------+ +| c2 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c7]), filter(nil), + access([t1.c2], [t1.c7]), partitions(p0) + +select c2 and c7 from t1; ++-----------+ +| c2 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c7]), filter(nil), + access([t1.c2], [t1.c7]), partitions(p0) + +select c2 or c7 from t1; ++----------+ +| c2 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c8]), filter(nil), + access([t1.c2], [t1.c8]), partitions(p0) + +select c2 and c8 from t1; ++-----------+ +| c2 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c8]), filter(nil), + access([t1.c2], [t1.c8]), partitions(p0) + +select c2 or c8 from t1; ++----------+ +| c2 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c9]), filter(nil), + access([t1.c2], [t1.c9]), partitions(p0) + +select c2 and c9 from t1; ++-----------+ +| c2 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c2 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c9]), filter(nil), + access([t1.c2], [t1.c9]), partitions(p0) + +select c2 or c9 from t1; ++----------+ +| c2 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c2 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c10]), filter(nil), + access([t1.c2], [t1.c10]), partitions(p0) + +select c2 and c10 from t1; ++------------+ +| c2 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c10]), filter(nil), + access([t1.c2], [t1.c10]), partitions(p0) + +select c2 or c10 from t1; ++-----------+ +| c2 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c11]), filter(nil), + access([t1.c2], [t1.c11]), partitions(p0) + +select c2 and c11 from t1; ++------------+ +| c2 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c11]), filter(nil), + access([t1.c2], [t1.c11]), partitions(p0) + +select c2 or c11 from t1; ++-----------+ +| c2 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c12]), filter(nil), + access([t1.c2], [t1.c12]), partitions(p0) + +select c2 and c12 from t1; ++------------+ +| c2 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c12]), filter(nil), + access([t1.c2], [t1.c12]), partitions(p0) + +select c2 or c12 from t1; ++-----------+ +| c2 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c13]), filter(nil), + access([t1.c2], [t1.c13]), partitions(p0) + +select c2 and c13 from t1; ++------------+ +| c2 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c13]), filter(nil), + access([t1.c2], [t1.c13]), partitions(p0) + +select c2 or c13 from t1; ++-----------+ +| c2 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c14]), filter(nil), + access([t1.c2], [t1.c14]), partitions(p0) + +select c2 and c14 from t1; ++------------+ +| c2 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c14]), filter(nil), + access([t1.c2], [t1.c14]), partitions(p0) + +select c2 or c14 from t1; ++-----------+ +| c2 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c15]), filter(nil), + access([t1.c2], [t1.c15]), partitions(p0) + +select c2 and c15 from t1; ++------------+ +| c2 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c15]), filter(nil), + access([t1.c2], [t1.c15]), partitions(p0) + +select c2 or c15 from t1; ++-----------+ +| c2 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c16]), filter(nil), + access([t1.c2], [t1.c16]), partitions(p0) + +select c2 and c16 from t1; ++------------+ +| c2 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c16]), filter(nil), + access([t1.c2], [t1.c16]), partitions(p0) + +select c2 or c16 from t1; ++-----------+ +| c2 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c17]), filter(nil), + access([t1.c2], [t1.c17]), partitions(p0) + +select c2 and c17 from t1; ++------------+ +| c2 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c17]), filter(nil), + access([t1.c2], [t1.c17]), partitions(p0) + +select c2 or c17 from t1; ++-----------+ +| c2 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND t1.c18]), filter(nil), + access([t1.c2], [t1.c18]), partitions(p0) + +select c2 and c18 from t1; ++------------+ +| c2 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR t1.c18]), filter(nil), + access([t1.c2], [t1.c18]), partitions(p0) + +select c2 or c18 from t1; ++-----------+ +| c2 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c19]), partitions(p0) + +select c2 and c19 from t1; ++------------+ +| c2 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c19]), partitions(p0) + +select c2 or c19 from t1; ++-----------+ +| c2 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c20]), partitions(p0) + +select c2 and c20 from t1; ++------------+ +| c2 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c20]), partitions(p0) + +select c2 or c20 from t1; ++-----------+ +| c2 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c21]), partitions(p0) + +select c2 and c21 from t1; ++------------+ +| c2 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c21]), partitions(p0) + +select c2 or c21 from t1; ++-----------+ +| c2 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c22]), partitions(p0) + +select c2 and c22 from t1; ++------------+ +| c2 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c2 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c22]), partitions(p0) + +select c2 or c22 from t1; ++-----------+ +| c2 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c23]), partitions(p0) + +select c2 and c23 from t1; ++------------+ +| c2 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c2 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c23]), partitions(p0) + +select c2 or c23 from t1; ++-----------+ +| c2 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c2 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c24]), partitions(p0) + +select c2 and c24 from t1; ++------------+ +| c2 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c2 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c2], [t1.c24]), partitions(p0) + +select c2 or c24 from t1; ++-----------+ +| c2 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + +select c3 and c1 from t1; ++-----------+ +| c3 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + +select c3 or c1 from t1; ++----------+ +| c3 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c2]), filter(nil), + access([t1.c3], [t1.c2]), partitions(p0) + +select c3 and c2 from t1; ++-----------+ +| c3 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c2]), filter(nil), + access([t1.c3], [t1.c2]), partitions(p0) + +select c3 or c2 from t1; ++----------+ +| c3 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3 and c3 from t1; ++-----------+ +| c3 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3 or c3 from t1; ++----------+ +| c3 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c4]), filter(nil), + access([t1.c3], [t1.c4]), partitions(p0) + +select c3 and c4 from t1; ++-----------+ +| c3 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c4]), filter(nil), + access([t1.c3], [t1.c4]), partitions(p0) + +select c3 or c4 from t1; ++----------+ +| c3 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c5]), filter(nil), + access([t1.c3], [t1.c5]), partitions(p0) + +select c3 and c5 from t1; ++-----------+ +| c3 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c5]), filter(nil), + access([t1.c3], [t1.c5]), partitions(p0) + +select c3 or c5 from t1; ++----------+ +| c3 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c6]), filter(nil), + access([t1.c3], [t1.c6]), partitions(p0) + +select c3 and c6 from t1; ++-----------+ +| c3 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c6]), filter(nil), + access([t1.c3], [t1.c6]), partitions(p0) + +select c3 or c6 from t1; ++----------+ +| c3 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c7]), filter(nil), + access([t1.c3], [t1.c7]), partitions(p0) + +select c3 and c7 from t1; ++-----------+ +| c3 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c7]), filter(nil), + access([t1.c3], [t1.c7]), partitions(p0) + +select c3 or c7 from t1; ++----------+ +| c3 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c8]), filter(nil), + access([t1.c3], [t1.c8]), partitions(p0) + +select c3 and c8 from t1; ++-----------+ +| c3 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c8]), filter(nil), + access([t1.c3], [t1.c8]), partitions(p0) + +select c3 or c8 from t1; ++----------+ +| c3 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c9]), filter(nil), + access([t1.c3], [t1.c9]), partitions(p0) + +select c3 and c9 from t1; ++-----------+ +| c3 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c3 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c9]), filter(nil), + access([t1.c3], [t1.c9]), partitions(p0) + +select c3 or c9 from t1; ++----------+ +| c3 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c3 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c10]), filter(nil), + access([t1.c3], [t1.c10]), partitions(p0) + +select c3 and c10 from t1; ++------------+ +| c3 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c10]), filter(nil), + access([t1.c3], [t1.c10]), partitions(p0) + +select c3 or c10 from t1; ++-----------+ +| c3 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c11]), filter(nil), + access([t1.c3], [t1.c11]), partitions(p0) + +select c3 and c11 from t1; ++------------+ +| c3 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c11]), filter(nil), + access([t1.c3], [t1.c11]), partitions(p0) + +select c3 or c11 from t1; ++-----------+ +| c3 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c12]), filter(nil), + access([t1.c3], [t1.c12]), partitions(p0) + +select c3 and c12 from t1; ++------------+ +| c3 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c12]), filter(nil), + access([t1.c3], [t1.c12]), partitions(p0) + +select c3 or c12 from t1; ++-----------+ +| c3 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c13]), filter(nil), + access([t1.c3], [t1.c13]), partitions(p0) + +select c3 and c13 from t1; ++------------+ +| c3 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c13]), filter(nil), + access([t1.c3], [t1.c13]), partitions(p0) + +select c3 or c13 from t1; ++-----------+ +| c3 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c14]), filter(nil), + access([t1.c3], [t1.c14]), partitions(p0) + +select c3 and c14 from t1; ++------------+ +| c3 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c14]), filter(nil), + access([t1.c3], [t1.c14]), partitions(p0) + +select c3 or c14 from t1; ++-----------+ +| c3 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c15]), filter(nil), + access([t1.c3], [t1.c15]), partitions(p0) + +select c3 and c15 from t1; ++------------+ +| c3 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c15]), filter(nil), + access([t1.c3], [t1.c15]), partitions(p0) + +select c3 or c15 from t1; ++-----------+ +| c3 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c16]), filter(nil), + access([t1.c3], [t1.c16]), partitions(p0) + +select c3 and c16 from t1; ++------------+ +| c3 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c16]), filter(nil), + access([t1.c3], [t1.c16]), partitions(p0) + +select c3 or c16 from t1; ++-----------+ +| c3 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c17]), filter(nil), + access([t1.c3], [t1.c17]), partitions(p0) + +select c3 and c17 from t1; ++------------+ +| c3 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c17]), filter(nil), + access([t1.c3], [t1.c17]), partitions(p0) + +select c3 or c17 from t1; ++-----------+ +| c3 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND t1.c18]), filter(nil), + access([t1.c3], [t1.c18]), partitions(p0) + +select c3 and c18 from t1; ++------------+ +| c3 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR t1.c18]), filter(nil), + access([t1.c3], [t1.c18]), partitions(p0) + +select c3 or c18 from t1; ++-----------+ +| c3 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c19]), partitions(p0) + +select c3 and c19 from t1; ++------------+ +| c3 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c19]), partitions(p0) + +select c3 or c19 from t1; ++-----------+ +| c3 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c20]), partitions(p0) + +select c3 and c20 from t1; ++------------+ +| c3 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c20]), partitions(p0) + +select c3 or c20 from t1; ++-----------+ +| c3 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c21]), partitions(p0) + +select c3 and c21 from t1; ++------------+ +| c3 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c21]), partitions(p0) + +select c3 or c21 from t1; ++-----------+ +| c3 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c22]), partitions(p0) + +select c3 and c22 from t1; ++------------+ +| c3 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c3 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c22]), partitions(p0) + +select c3 or c22 from t1; ++-----------+ +| c3 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c23]), partitions(p0) + +select c3 and c23 from t1; ++------------+ +| c3 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c3 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c23]), partitions(p0) + +select c3 or c23 from t1; ++-----------+ +| c3 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c3 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c24]), partitions(p0) + +select c3 and c24 from t1; ++------------+ +| c3 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c3 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c3], [t1.c24]), partitions(p0) + +select c3 or c24 from t1; ++-----------+ +| c3 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c1]), filter(nil), + access([t1.c4], [t1.c1]), partitions(p0) + +select c4 and c1 from t1; ++-----------+ +| c4 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c1]), filter(nil), + access([t1.c4], [t1.c1]), partitions(p0) + +select c4 or c1 from t1; ++----------+ +| c4 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c2]), filter(nil), + access([t1.c4], [t1.c2]), partitions(p0) + +select c4 and c2 from t1; ++-----------+ +| c4 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c2]), filter(nil), + access([t1.c4], [t1.c2]), partitions(p0) + +select c4 or c2 from t1; ++----------+ +| c4 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c3]), filter(nil), + access([t1.c4], [t1.c3]), partitions(p0) + +select c4 and c3 from t1; ++-----------+ +| c4 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c3]), filter(nil), + access([t1.c4], [t1.c3]), partitions(p0) + +select c4 or c3 from t1; ++----------+ +| c4 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c4]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4 and c4 from t1; ++-----------+ +| c4 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c4]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4 or c4 from t1; ++----------+ +| c4 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c5]), filter(nil), + access([t1.c4], [t1.c5]), partitions(p0) + +select c4 and c5 from t1; ++-----------+ +| c4 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c5]), filter(nil), + access([t1.c4], [t1.c5]), partitions(p0) + +select c4 or c5 from t1; ++----------+ +| c4 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c6]), filter(nil), + access([t1.c4], [t1.c6]), partitions(p0) + +select c4 and c6 from t1; ++-----------+ +| c4 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c6]), filter(nil), + access([t1.c4], [t1.c6]), partitions(p0) + +select c4 or c6 from t1; ++----------+ +| c4 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c7]), filter(nil), + access([t1.c4], [t1.c7]), partitions(p0) + +select c4 and c7 from t1; ++-----------+ +| c4 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c7]), filter(nil), + access([t1.c4], [t1.c7]), partitions(p0) + +select c4 or c7 from t1; ++----------+ +| c4 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c8]), filter(nil), + access([t1.c4], [t1.c8]), partitions(p0) + +select c4 and c8 from t1; ++-----------+ +| c4 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c8]), filter(nil), + access([t1.c4], [t1.c8]), partitions(p0) + +select c4 or c8 from t1; ++----------+ +| c4 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c9]), filter(nil), + access([t1.c4], [t1.c9]), partitions(p0) + +select c4 and c9 from t1; ++-----------+ +| c4 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c4 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c9]), filter(nil), + access([t1.c4], [t1.c9]), partitions(p0) + +select c4 or c9 from t1; ++----------+ +| c4 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c4 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c10]), filter(nil), + access([t1.c4], [t1.c10]), partitions(p0) + +select c4 and c10 from t1; ++------------+ +| c4 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c10]), filter(nil), + access([t1.c4], [t1.c10]), partitions(p0) + +select c4 or c10 from t1; ++-----------+ +| c4 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c11]), filter(nil), + access([t1.c4], [t1.c11]), partitions(p0) + +select c4 and c11 from t1; ++------------+ +| c4 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c11]), filter(nil), + access([t1.c4], [t1.c11]), partitions(p0) + +select c4 or c11 from t1; ++-----------+ +| c4 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c12]), filter(nil), + access([t1.c4], [t1.c12]), partitions(p0) + +select c4 and c12 from t1; ++------------+ +| c4 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c12]), filter(nil), + access([t1.c4], [t1.c12]), partitions(p0) + +select c4 or c12 from t1; ++-----------+ +| c4 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c13]), filter(nil), + access([t1.c4], [t1.c13]), partitions(p0) + +select c4 and c13 from t1; ++------------+ +| c4 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c13]), filter(nil), + access([t1.c4], [t1.c13]), partitions(p0) + +select c4 or c13 from t1; ++-----------+ +| c4 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c14]), filter(nil), + access([t1.c4], [t1.c14]), partitions(p0) + +select c4 and c14 from t1; ++------------+ +| c4 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c14]), filter(nil), + access([t1.c4], [t1.c14]), partitions(p0) + +select c4 or c14 from t1; ++-----------+ +| c4 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c15]), filter(nil), + access([t1.c4], [t1.c15]), partitions(p0) + +select c4 and c15 from t1; ++------------+ +| c4 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c15]), filter(nil), + access([t1.c4], [t1.c15]), partitions(p0) + +select c4 or c15 from t1; ++-----------+ +| c4 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c16]), filter(nil), + access([t1.c4], [t1.c16]), partitions(p0) + +select c4 and c16 from t1; ++------------+ +| c4 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c16]), filter(nil), + access([t1.c4], [t1.c16]), partitions(p0) + +select c4 or c16 from t1; ++-----------+ +| c4 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c17]), filter(nil), + access([t1.c4], [t1.c17]), partitions(p0) + +select c4 and c17 from t1; ++------------+ +| c4 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c17]), filter(nil), + access([t1.c4], [t1.c17]), partitions(p0) + +select c4 or c17 from t1; ++-----------+ +| c4 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND t1.c18]), filter(nil), + access([t1.c4], [t1.c18]), partitions(p0) + +select c4 and c18 from t1; ++------------+ +| c4 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR t1.c18]), filter(nil), + access([t1.c4], [t1.c18]), partitions(p0) + +select c4 or c18 from t1; ++-----------+ +| c4 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c19]), partitions(p0) + +select c4 and c19 from t1; ++------------+ +| c4 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c19]), partitions(p0) + +select c4 or c19 from t1; ++-----------+ +| c4 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c20]), partitions(p0) + +select c4 and c20 from t1; ++------------+ +| c4 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c20]), partitions(p0) + +select c4 or c20 from t1; ++-----------+ +| c4 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c21]), partitions(p0) + +select c4 and c21 from t1; ++------------+ +| c4 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c21]), partitions(p0) + +select c4 or c21 from t1; ++-----------+ +| c4 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c22]), partitions(p0) + +select c4 and c22 from t1; ++------------+ +| c4 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c4 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c22]), partitions(p0) + +select c4 or c22 from t1; ++-----------+ +| c4 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c23]), partitions(p0) + +select c4 and c23 from t1; ++------------+ +| c4 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c4 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c23]), partitions(p0) + +select c4 or c23 from t1; ++-----------+ +| c4 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c4 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c24]), partitions(p0) + +select c4 and c24 from t1; ++------------+ +| c4 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c4 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c4], [t1.c24]), partitions(p0) + +select c4 or c24 from t1; ++-----------+ +| c4 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c1]), filter(nil), + access([t1.c5], [t1.c1]), partitions(p0) + +select c5 and c1 from t1; ++-----------+ +| c5 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c1]), filter(nil), + access([t1.c5], [t1.c1]), partitions(p0) + +select c5 or c1 from t1; ++----------+ +| c5 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c2]), filter(nil), + access([t1.c5], [t1.c2]), partitions(p0) + +select c5 and c2 from t1; ++-----------+ +| c5 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c2]), filter(nil), + access([t1.c5], [t1.c2]), partitions(p0) + +select c5 or c2 from t1; ++----------+ +| c5 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c3]), filter(nil), + access([t1.c5], [t1.c3]), partitions(p0) + +select c5 and c3 from t1; ++-----------+ +| c5 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c3]), filter(nil), + access([t1.c5], [t1.c3]), partitions(p0) + +select c5 or c3 from t1; ++----------+ +| c5 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c4]), filter(nil), + access([t1.c5], [t1.c4]), partitions(p0) + +select c5 and c4 from t1; ++-----------+ +| c5 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c4]), filter(nil), + access([t1.c5], [t1.c4]), partitions(p0) + +select c5 or c4 from t1; ++----------+ +| c5 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c5]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5 and c5 from t1; ++-----------+ +| c5 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c5]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5 or c5 from t1; ++----------+ +| c5 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c6]), filter(nil), + access([t1.c5], [t1.c6]), partitions(p0) + +select c5 and c6 from t1; ++-----------+ +| c5 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c6]), filter(nil), + access([t1.c5], [t1.c6]), partitions(p0) + +select c5 or c6 from t1; ++----------+ +| c5 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c7]), filter(nil), + access([t1.c5], [t1.c7]), partitions(p0) + +select c5 and c7 from t1; ++-----------+ +| c5 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c7]), filter(nil), + access([t1.c5], [t1.c7]), partitions(p0) + +select c5 or c7 from t1; ++----------+ +| c5 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c8]), filter(nil), + access([t1.c5], [t1.c8]), partitions(p0) + +select c5 and c8 from t1; ++-----------+ +| c5 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c8]), filter(nil), + access([t1.c5], [t1.c8]), partitions(p0) + +select c5 or c8 from t1; ++----------+ +| c5 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c9]), filter(nil), + access([t1.c5], [t1.c9]), partitions(p0) + +select c5 and c9 from t1; ++-----------+ +| c5 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c5 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c9]), filter(nil), + access([t1.c5], [t1.c9]), partitions(p0) + +select c5 or c9 from t1; ++----------+ +| c5 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c5 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c10]), filter(nil), + access([t1.c5], [t1.c10]), partitions(p0) + +select c5 and c10 from t1; ++------------+ +| c5 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c10]), filter(nil), + access([t1.c5], [t1.c10]), partitions(p0) + +select c5 or c10 from t1; ++-----------+ +| c5 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c11]), filter(nil), + access([t1.c5], [t1.c11]), partitions(p0) + +select c5 and c11 from t1; ++------------+ +| c5 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c11]), filter(nil), + access([t1.c5], [t1.c11]), partitions(p0) + +select c5 or c11 from t1; ++-----------+ +| c5 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c12]), filter(nil), + access([t1.c5], [t1.c12]), partitions(p0) + +select c5 and c12 from t1; ++------------+ +| c5 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c12]), filter(nil), + access([t1.c5], [t1.c12]), partitions(p0) + +select c5 or c12 from t1; ++-----------+ +| c5 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c13]), filter(nil), + access([t1.c5], [t1.c13]), partitions(p0) + +select c5 and c13 from t1; ++------------+ +| c5 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c13]), filter(nil), + access([t1.c5], [t1.c13]), partitions(p0) + +select c5 or c13 from t1; ++-----------+ +| c5 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c14]), filter(nil), + access([t1.c5], [t1.c14]), partitions(p0) + +select c5 and c14 from t1; ++------------+ +| c5 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c14]), filter(nil), + access([t1.c5], [t1.c14]), partitions(p0) + +select c5 or c14 from t1; ++-----------+ +| c5 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c15]), filter(nil), + access([t1.c5], [t1.c15]), partitions(p0) + +select c5 and c15 from t1; ++------------+ +| c5 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c15]), filter(nil), + access([t1.c5], [t1.c15]), partitions(p0) + +select c5 or c15 from t1; ++-----------+ +| c5 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c16]), filter(nil), + access([t1.c5], [t1.c16]), partitions(p0) + +select c5 and c16 from t1; ++------------+ +| c5 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c16]), filter(nil), + access([t1.c5], [t1.c16]), partitions(p0) + +select c5 or c16 from t1; ++-----------+ +| c5 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c17]), filter(nil), + access([t1.c5], [t1.c17]), partitions(p0) + +select c5 and c17 from t1; ++------------+ +| c5 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c17]), filter(nil), + access([t1.c5], [t1.c17]), partitions(p0) + +select c5 or c17 from t1; ++-----------+ +| c5 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND t1.c18]), filter(nil), + access([t1.c5], [t1.c18]), partitions(p0) + +select c5 and c18 from t1; ++------------+ +| c5 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR t1.c18]), filter(nil), + access([t1.c5], [t1.c18]), partitions(p0) + +select c5 or c18 from t1; ++-----------+ +| c5 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c19]), partitions(p0) + +select c5 and c19 from t1; ++------------+ +| c5 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c19]), partitions(p0) + +select c5 or c19 from t1; ++-----------+ +| c5 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c20]), partitions(p0) + +select c5 and c20 from t1; ++------------+ +| c5 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c20]), partitions(p0) + +select c5 or c20 from t1; ++-----------+ +| c5 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c21]), partitions(p0) + +select c5 and c21 from t1; ++------------+ +| c5 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c21]), partitions(p0) + +select c5 or c21 from t1; ++-----------+ +| c5 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c22]), partitions(p0) + +select c5 and c22 from t1; ++------------+ +| c5 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c5 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c22]), partitions(p0) + +select c5 or c22 from t1; ++-----------+ +| c5 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c23]), partitions(p0) + +select c5 and c23 from t1; ++------------+ +| c5 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c5 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c23]), partitions(p0) + +select c5 or c23 from t1; ++-----------+ +| c5 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c5 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c24]), partitions(p0) + +select c5 and c24 from t1; ++------------+ +| c5 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c5 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c5], [t1.c24]), partitions(p0) + +select c5 or c24 from t1; ++-----------+ +| c5 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c1]), filter(nil), + access([t1.c6], [t1.c1]), partitions(p0) + +select c6 and c1 from t1; ++-----------+ +| c6 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c1]), filter(nil), + access([t1.c6], [t1.c1]), partitions(p0) + +select c6 or c1 from t1; ++----------+ +| c6 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c2]), filter(nil), + access([t1.c6], [t1.c2]), partitions(p0) + +select c6 and c2 from t1; ++-----------+ +| c6 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c2]), filter(nil), + access([t1.c6], [t1.c2]), partitions(p0) + +select c6 or c2 from t1; ++----------+ +| c6 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c3]), filter(nil), + access([t1.c6], [t1.c3]), partitions(p0) + +select c6 and c3 from t1; ++-----------+ +| c6 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c3]), filter(nil), + access([t1.c6], [t1.c3]), partitions(p0) + +select c6 or c3 from t1; ++----------+ +| c6 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c4]), filter(nil), + access([t1.c6], [t1.c4]), partitions(p0) + +select c6 and c4 from t1; ++-----------+ +| c6 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c4]), filter(nil), + access([t1.c6], [t1.c4]), partitions(p0) + +select c6 or c4 from t1; ++----------+ +| c6 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c5]), filter(nil), + access([t1.c6], [t1.c5]), partitions(p0) + +select c6 and c5 from t1; ++-----------+ +| c6 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c5]), filter(nil), + access([t1.c6], [t1.c5]), partitions(p0) + +select c6 or c5 from t1; ++----------+ +| c6 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c6]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6 and c6 from t1; ++-----------+ +| c6 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c6]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6 or c6 from t1; ++----------+ +| c6 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c7]), filter(nil), + access([t1.c6], [t1.c7]), partitions(p0) + +select c6 and c7 from t1; ++-----------+ +| c6 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c7]), filter(nil), + access([t1.c6], [t1.c7]), partitions(p0) + +select c6 or c7 from t1; ++----------+ +| c6 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c8]), filter(nil), + access([t1.c6], [t1.c8]), partitions(p0) + +select c6 and c8 from t1; ++-----------+ +| c6 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c8]), filter(nil), + access([t1.c6], [t1.c8]), partitions(p0) + +select c6 or c8 from t1; ++----------+ +| c6 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c9]), filter(nil), + access([t1.c6], [t1.c9]), partitions(p0) + +select c6 and c9 from t1; ++-----------+ +| c6 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c6 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c9]), filter(nil), + access([t1.c6], [t1.c9]), partitions(p0) + +select c6 or c9 from t1; ++----------+ +| c6 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c6 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c10]), filter(nil), + access([t1.c6], [t1.c10]), partitions(p0) + +select c6 and c10 from t1; ++------------+ +| c6 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c10]), filter(nil), + access([t1.c6], [t1.c10]), partitions(p0) + +select c6 or c10 from t1; ++-----------+ +| c6 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c11]), filter(nil), + access([t1.c6], [t1.c11]), partitions(p0) + +select c6 and c11 from t1; ++------------+ +| c6 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c11]), filter(nil), + access([t1.c6], [t1.c11]), partitions(p0) + +select c6 or c11 from t1; ++-----------+ +| c6 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c12]), filter(nil), + access([t1.c6], [t1.c12]), partitions(p0) + +select c6 and c12 from t1; ++------------+ +| c6 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c12]), filter(nil), + access([t1.c6], [t1.c12]), partitions(p0) + +select c6 or c12 from t1; ++-----------+ +| c6 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c13]), filter(nil), + access([t1.c6], [t1.c13]), partitions(p0) + +select c6 and c13 from t1; ++------------+ +| c6 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c13]), filter(nil), + access([t1.c6], [t1.c13]), partitions(p0) + +select c6 or c13 from t1; ++-----------+ +| c6 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c14]), filter(nil), + access([t1.c6], [t1.c14]), partitions(p0) + +select c6 and c14 from t1; ++------------+ +| c6 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c14]), filter(nil), + access([t1.c6], [t1.c14]), partitions(p0) + +select c6 or c14 from t1; ++-----------+ +| c6 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c15]), filter(nil), + access([t1.c6], [t1.c15]), partitions(p0) + +select c6 and c15 from t1; ++------------+ +| c6 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c15]), filter(nil), + access([t1.c6], [t1.c15]), partitions(p0) + +select c6 or c15 from t1; ++-----------+ +| c6 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c16]), filter(nil), + access([t1.c6], [t1.c16]), partitions(p0) + +select c6 and c16 from t1; ++------------+ +| c6 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c16]), filter(nil), + access([t1.c6], [t1.c16]), partitions(p0) + +select c6 or c16 from t1; ++-----------+ +| c6 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c17]), filter(nil), + access([t1.c6], [t1.c17]), partitions(p0) + +select c6 and c17 from t1; ++------------+ +| c6 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c17]), filter(nil), + access([t1.c6], [t1.c17]), partitions(p0) + +select c6 or c17 from t1; ++-----------+ +| c6 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND t1.c18]), filter(nil), + access([t1.c6], [t1.c18]), partitions(p0) + +select c6 and c18 from t1; ++------------+ +| c6 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR t1.c18]), filter(nil), + access([t1.c6], [t1.c18]), partitions(p0) + +select c6 or c18 from t1; ++-----------+ +| c6 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c19]), partitions(p0) + +select c6 and c19 from t1; ++------------+ +| c6 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c19]), partitions(p0) + +select c6 or c19 from t1; ++-----------+ +| c6 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c20]), partitions(p0) + +select c6 and c20 from t1; ++------------+ +| c6 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c20]), partitions(p0) + +select c6 or c20 from t1; ++-----------+ +| c6 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c21]), partitions(p0) + +select c6 and c21 from t1; ++------------+ +| c6 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c21]), partitions(p0) + +select c6 or c21 from t1; ++-----------+ +| c6 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c22]), partitions(p0) + +select c6 and c22 from t1; ++------------+ +| c6 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c6 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c22]), partitions(p0) + +select c6 or c22 from t1; ++-----------+ +| c6 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c23]), partitions(p0) + +select c6 and c23 from t1; ++------------+ +| c6 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c6 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c23]), partitions(p0) + +select c6 or c23 from t1; ++-----------+ +| c6 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c6 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c24]), partitions(p0) + +select c6 and c24 from t1; ++------------+ +| c6 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c6 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c6], [t1.c24]), partitions(p0) + +select c6 or c24 from t1; ++-----------+ +| c6 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c1]), filter(nil), + access([t1.c7], [t1.c1]), partitions(p0) + +select c7 and c1 from t1; ++-----------+ +| c7 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c1]), filter(nil), + access([t1.c7], [t1.c1]), partitions(p0) + +select c7 or c1 from t1; ++----------+ +| c7 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c2]), filter(nil), + access([t1.c7], [t1.c2]), partitions(p0) + +select c7 and c2 from t1; ++-----------+ +| c7 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c2]), filter(nil), + access([t1.c7], [t1.c2]), partitions(p0) + +select c7 or c2 from t1; ++----------+ +| c7 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c3]), filter(nil), + access([t1.c7], [t1.c3]), partitions(p0) + +select c7 and c3 from t1; ++-----------+ +| c7 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c3]), filter(nil), + access([t1.c7], [t1.c3]), partitions(p0) + +select c7 or c3 from t1; ++----------+ +| c7 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c4]), filter(nil), + access([t1.c7], [t1.c4]), partitions(p0) + +select c7 and c4 from t1; ++-----------+ +| c7 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c4]), filter(nil), + access([t1.c7], [t1.c4]), partitions(p0) + +select c7 or c4 from t1; ++----------+ +| c7 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c5]), filter(nil), + access([t1.c7], [t1.c5]), partitions(p0) + +select c7 and c5 from t1; ++-----------+ +| c7 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c5]), filter(nil), + access([t1.c7], [t1.c5]), partitions(p0) + +select c7 or c5 from t1; ++----------+ +| c7 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c6]), filter(nil), + access([t1.c7], [t1.c6]), partitions(p0) + +select c7 and c6 from t1; ++-----------+ +| c7 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c6]), filter(nil), + access([t1.c7], [t1.c6]), partitions(p0) + +select c7 or c6 from t1; ++----------+ +| c7 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c7]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7 and c7 from t1; ++-----------+ +| c7 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c7]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7 or c7 from t1; ++----------+ +| c7 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c8]), filter(nil), + access([t1.c7], [t1.c8]), partitions(p0) + +select c7 and c8 from t1; ++-----------+ +| c7 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c8]), filter(nil), + access([t1.c7], [t1.c8]), partitions(p0) + +select c7 or c8 from t1; ++----------+ +| c7 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c9]), filter(nil), + access([t1.c7], [t1.c9]), partitions(p0) + +select c7 and c9 from t1; ++-----------+ +| c7 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c7 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c9]), filter(nil), + access([t1.c7], [t1.c9]), partitions(p0) + +select c7 or c9 from t1; ++----------+ +| c7 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c7 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c10]), filter(nil), + access([t1.c7], [t1.c10]), partitions(p0) + +select c7 and c10 from t1; ++------------+ +| c7 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c10]), filter(nil), + access([t1.c7], [t1.c10]), partitions(p0) + +select c7 or c10 from t1; ++-----------+ +| c7 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c11]), filter(nil), + access([t1.c7], [t1.c11]), partitions(p0) + +select c7 and c11 from t1; ++------------+ +| c7 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c11]), filter(nil), + access([t1.c7], [t1.c11]), partitions(p0) + +select c7 or c11 from t1; ++-----------+ +| c7 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c12]), filter(nil), + access([t1.c7], [t1.c12]), partitions(p0) + +select c7 and c12 from t1; ++------------+ +| c7 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c12]), filter(nil), + access([t1.c7], [t1.c12]), partitions(p0) + +select c7 or c12 from t1; ++-----------+ +| c7 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c13]), filter(nil), + access([t1.c7], [t1.c13]), partitions(p0) + +select c7 and c13 from t1; ++------------+ +| c7 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c13]), filter(nil), + access([t1.c7], [t1.c13]), partitions(p0) + +select c7 or c13 from t1; ++-----------+ +| c7 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c14]), filter(nil), + access([t1.c7], [t1.c14]), partitions(p0) + +select c7 and c14 from t1; ++------------+ +| c7 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c14]), filter(nil), + access([t1.c7], [t1.c14]), partitions(p0) + +select c7 or c14 from t1; ++-----------+ +| c7 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c15]), filter(nil), + access([t1.c7], [t1.c15]), partitions(p0) + +select c7 and c15 from t1; ++------------+ +| c7 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c15]), filter(nil), + access([t1.c7], [t1.c15]), partitions(p0) + +select c7 or c15 from t1; ++-----------+ +| c7 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c16]), filter(nil), + access([t1.c7], [t1.c16]), partitions(p0) + +select c7 and c16 from t1; ++------------+ +| c7 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c16]), filter(nil), + access([t1.c7], [t1.c16]), partitions(p0) + +select c7 or c16 from t1; ++-----------+ +| c7 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c17]), filter(nil), + access([t1.c7], [t1.c17]), partitions(p0) + +select c7 and c17 from t1; ++------------+ +| c7 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c17]), filter(nil), + access([t1.c7], [t1.c17]), partitions(p0) + +select c7 or c17 from t1; ++-----------+ +| c7 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND t1.c18]), filter(nil), + access([t1.c7], [t1.c18]), partitions(p0) + +select c7 and c18 from t1; ++------------+ +| c7 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR t1.c18]), filter(nil), + access([t1.c7], [t1.c18]), partitions(p0) + +select c7 or c18 from t1; ++-----------+ +| c7 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c19]), partitions(p0) + +select c7 and c19 from t1; ++------------+ +| c7 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c19]), partitions(p0) + +select c7 or c19 from t1; ++-----------+ +| c7 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c20]), partitions(p0) + +select c7 and c20 from t1; ++------------+ +| c7 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c20]), partitions(p0) + +select c7 or c20 from t1; ++-----------+ +| c7 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c21]), partitions(p0) + +select c7 and c21 from t1; ++------------+ +| c7 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c21]), partitions(p0) + +select c7 or c21 from t1; ++-----------+ +| c7 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c22]), partitions(p0) + +select c7 and c22 from t1; ++------------+ +| c7 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c7 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c22]), partitions(p0) + +select c7 or c22 from t1; ++-----------+ +| c7 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c23]), partitions(p0) + +select c7 and c23 from t1; ++------------+ +| c7 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c7 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c23]), partitions(p0) + +select c7 or c23 from t1; ++-----------+ +| c7 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c7 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c24]), partitions(p0) + +select c7 and c24 from t1; ++------------+ +| c7 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c7 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c7], [t1.c24]), partitions(p0) + +select c7 or c24 from t1; ++-----------+ +| c7 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c1]), filter(nil), + access([t1.c8], [t1.c1]), partitions(p0) + +select c8 and c1 from t1; ++-----------+ +| c8 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c1]), filter(nil), + access([t1.c8], [t1.c1]), partitions(p0) + +select c8 or c1 from t1; ++----------+ +| c8 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c2]), filter(nil), + access([t1.c8], [t1.c2]), partitions(p0) + +select c8 and c2 from t1; ++-----------+ +| c8 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c2]), filter(nil), + access([t1.c8], [t1.c2]), partitions(p0) + +select c8 or c2 from t1; ++----------+ +| c8 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c3]), filter(nil), + access([t1.c8], [t1.c3]), partitions(p0) + +select c8 and c3 from t1; ++-----------+ +| c8 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c3]), filter(nil), + access([t1.c8], [t1.c3]), partitions(p0) + +select c8 or c3 from t1; ++----------+ +| c8 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c4]), filter(nil), + access([t1.c8], [t1.c4]), partitions(p0) + +select c8 and c4 from t1; ++-----------+ +| c8 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c4]), filter(nil), + access([t1.c8], [t1.c4]), partitions(p0) + +select c8 or c4 from t1; ++----------+ +| c8 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c5]), filter(nil), + access([t1.c8], [t1.c5]), partitions(p0) + +select c8 and c5 from t1; ++-----------+ +| c8 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c5]), filter(nil), + access([t1.c8], [t1.c5]), partitions(p0) + +select c8 or c5 from t1; ++----------+ +| c8 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c6]), filter(nil), + access([t1.c8], [t1.c6]), partitions(p0) + +select c8 and c6 from t1; ++-----------+ +| c8 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c6]), filter(nil), + access([t1.c8], [t1.c6]), partitions(p0) + +select c8 or c6 from t1; ++----------+ +| c8 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c7]), filter(nil), + access([t1.c8], [t1.c7]), partitions(p0) + +select c8 and c7 from t1; ++-----------+ +| c8 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c7]), filter(nil), + access([t1.c8], [t1.c7]), partitions(p0) + +select c8 or c7 from t1; ++----------+ +| c8 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c8]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8 and c8 from t1; ++-----------+ +| c8 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c8]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8 or c8 from t1; ++----------+ +| c8 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c9]), filter(nil), + access([t1.c8], [t1.c9]), partitions(p0) + +select c8 and c9 from t1; ++-----------+ +| c8 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c8 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c9]), filter(nil), + access([t1.c8], [t1.c9]), partitions(p0) + +select c8 or c9 from t1; ++----------+ +| c8 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c8 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c10]), filter(nil), + access([t1.c8], [t1.c10]), partitions(p0) + +select c8 and c10 from t1; ++------------+ +| c8 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c10]), filter(nil), + access([t1.c8], [t1.c10]), partitions(p0) + +select c8 or c10 from t1; ++-----------+ +| c8 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c11]), filter(nil), + access([t1.c8], [t1.c11]), partitions(p0) + +select c8 and c11 from t1; ++------------+ +| c8 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c11]), filter(nil), + access([t1.c8], [t1.c11]), partitions(p0) + +select c8 or c11 from t1; ++-----------+ +| c8 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c12]), filter(nil), + access([t1.c8], [t1.c12]), partitions(p0) + +select c8 and c12 from t1; ++------------+ +| c8 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c12]), filter(nil), + access([t1.c8], [t1.c12]), partitions(p0) + +select c8 or c12 from t1; ++-----------+ +| c8 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c13]), filter(nil), + access([t1.c8], [t1.c13]), partitions(p0) + +select c8 and c13 from t1; ++------------+ +| c8 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c13]), filter(nil), + access([t1.c8], [t1.c13]), partitions(p0) + +select c8 or c13 from t1; ++-----------+ +| c8 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c14]), filter(nil), + access([t1.c8], [t1.c14]), partitions(p0) + +select c8 and c14 from t1; ++------------+ +| c8 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c14]), filter(nil), + access([t1.c8], [t1.c14]), partitions(p0) + +select c8 or c14 from t1; ++-----------+ +| c8 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c15]), filter(nil), + access([t1.c8], [t1.c15]), partitions(p0) + +select c8 and c15 from t1; ++------------+ +| c8 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c15]), filter(nil), + access([t1.c8], [t1.c15]), partitions(p0) + +select c8 or c15 from t1; ++-----------+ +| c8 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c16]), filter(nil), + access([t1.c8], [t1.c16]), partitions(p0) + +select c8 and c16 from t1; ++------------+ +| c8 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c16]), filter(nil), + access([t1.c8], [t1.c16]), partitions(p0) + +select c8 or c16 from t1; ++-----------+ +| c8 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c17]), filter(nil), + access([t1.c8], [t1.c17]), partitions(p0) + +select c8 and c17 from t1; ++------------+ +| c8 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c17]), filter(nil), + access([t1.c8], [t1.c17]), partitions(p0) + +select c8 or c17 from t1; ++-----------+ +| c8 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND t1.c18]), filter(nil), + access([t1.c8], [t1.c18]), partitions(p0) + +select c8 and c18 from t1; ++------------+ +| c8 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR t1.c18]), filter(nil), + access([t1.c8], [t1.c18]), partitions(p0) + +select c8 or c18 from t1; ++-----------+ +| c8 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c19]), partitions(p0) + +select c8 and c19 from t1; ++------------+ +| c8 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c19]), partitions(p0) + +select c8 or c19 from t1; ++-----------+ +| c8 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c20]), partitions(p0) + +select c8 and c20 from t1; ++------------+ +| c8 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c20]), partitions(p0) + +select c8 or c20 from t1; ++-----------+ +| c8 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c21]), partitions(p0) + +select c8 and c21 from t1; ++------------+ +| c8 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c21]), partitions(p0) + +select c8 or c21 from t1; ++-----------+ +| c8 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c22]), partitions(p0) + +select c8 and c22 from t1; ++------------+ +| c8 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c8 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c22]), partitions(p0) + +select c8 or c22 from t1; ++-----------+ +| c8 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c23]), partitions(p0) + +select c8 and c23 from t1; ++------------+ +| c8 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c8 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c23]), partitions(p0) + +select c8 or c23 from t1; ++-----------+ +| c8 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c8 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c24]), partitions(p0) + +select c8 and c24 from t1; ++------------+ +| c8 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c8 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c8], [t1.c24]), partitions(p0) + +select c8 or c24 from t1; ++-----------+ +| c8 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c1]), filter(nil), + access([t1.c9], [t1.c1]), partitions(p0) + +select c9 and c1 from t1; ++-----------+ +| c9 and c1 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c1]), filter(nil), + access([t1.c9], [t1.c1]), partitions(p0) + +select c9 or c1 from t1; ++----------+ +| c9 or c1 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c2]), filter(nil), + access([t1.c9], [t1.c2]), partitions(p0) + +select c9 and c2 from t1; ++-----------+ +| c9 and c2 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c2]), filter(nil), + access([t1.c9], [t1.c2]), partitions(p0) + +select c9 or c2 from t1; ++----------+ +| c9 or c2 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c3]), filter(nil), + access([t1.c9], [t1.c3]), partitions(p0) + +select c9 and c3 from t1; ++-----------+ +| c9 and c3 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c3]), filter(nil), + access([t1.c9], [t1.c3]), partitions(p0) + +select c9 or c3 from t1; ++----------+ +| c9 or c3 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c4]), filter(nil), + access([t1.c9], [t1.c4]), partitions(p0) + +select c9 and c4 from t1; ++-----------+ +| c9 and c4 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c4]), filter(nil), + access([t1.c9], [t1.c4]), partitions(p0) + +select c9 or c4 from t1; ++----------+ +| c9 or c4 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c5]), filter(nil), + access([t1.c9], [t1.c5]), partitions(p0) + +select c9 and c5 from t1; ++-----------+ +| c9 and c5 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c5]), filter(nil), + access([t1.c9], [t1.c5]), partitions(p0) + +select c9 or c5 from t1; ++----------+ +| c9 or c5 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c6]), filter(nil), + access([t1.c9], [t1.c6]), partitions(p0) + +select c9 and c6 from t1; ++-----------+ +| c9 and c6 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c6]), filter(nil), + access([t1.c9], [t1.c6]), partitions(p0) + +select c9 or c6 from t1; ++----------+ +| c9 or c6 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c7]), filter(nil), + access([t1.c9], [t1.c7]), partitions(p0) + +select c9 and c7 from t1; ++-----------+ +| c9 and c7 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c7]), filter(nil), + access([t1.c9], [t1.c7]), partitions(p0) + +select c9 or c7 from t1; ++----------+ +| c9 or c7 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c8]), filter(nil), + access([t1.c9], [t1.c8]), partitions(p0) + +select c9 and c8 from t1; ++-----------+ +| c9 and c8 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c8]), filter(nil), + access([t1.c9], [t1.c8]), partitions(p0) + +select c9 or c8 from t1; ++----------+ +| c9 or c8 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c9]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9 and c9 from t1; ++-----------+ +| c9 and c9 | ++-----------+ +| 1 | ++-----------+ +EXPLAIN select c9 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c9]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9 or c9 from t1; ++----------+ +| c9 or c9 | ++----------+ +| 1 | ++----------+ + +EXPLAIN select c9 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c10]), filter(nil), + access([t1.c9], [t1.c10]), partitions(p0) + +select c9 and c10 from t1; ++------------+ +| c9 and c10 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c10]), filter(nil), + access([t1.c9], [t1.c10]), partitions(p0) + +select c9 or c10 from t1; ++-----------+ +| c9 or c10 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c11]), filter(nil), + access([t1.c9], [t1.c11]), partitions(p0) + +select c9 and c11 from t1; ++------------+ +| c9 and c11 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c11]), filter(nil), + access([t1.c9], [t1.c11]), partitions(p0) + +select c9 or c11 from t1; ++-----------+ +| c9 or c11 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c12]), filter(nil), + access([t1.c9], [t1.c12]), partitions(p0) + +select c9 and c12 from t1; ++------------+ +| c9 and c12 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c12]), filter(nil), + access([t1.c9], [t1.c12]), partitions(p0) + +select c9 or c12 from t1; ++-----------+ +| c9 or c12 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c13]), filter(nil), + access([t1.c9], [t1.c13]), partitions(p0) + +select c9 and c13 from t1; ++------------+ +| c9 and c13 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c13]), filter(nil), + access([t1.c9], [t1.c13]), partitions(p0) + +select c9 or c13 from t1; ++-----------+ +| c9 or c13 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c14]), filter(nil), + access([t1.c9], [t1.c14]), partitions(p0) + +select c9 and c14 from t1; ++------------+ +| c9 and c14 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c14]), filter(nil), + access([t1.c9], [t1.c14]), partitions(p0) + +select c9 or c14 from t1; ++-----------+ +| c9 or c14 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c15]), filter(nil), + access([t1.c9], [t1.c15]), partitions(p0) + +select c9 and c15 from t1; ++------------+ +| c9 and c15 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c15]), filter(nil), + access([t1.c9], [t1.c15]), partitions(p0) + +select c9 or c15 from t1; ++-----------+ +| c9 or c15 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c16]), filter(nil), + access([t1.c9], [t1.c16]), partitions(p0) + +select c9 and c16 from t1; ++------------+ +| c9 and c16 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c16]), filter(nil), + access([t1.c9], [t1.c16]), partitions(p0) + +select c9 or c16 from t1; ++-----------+ +| c9 or c16 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c17]), filter(nil), + access([t1.c9], [t1.c17]), partitions(p0) + +select c9 and c17 from t1; ++------------+ +| c9 and c17 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c17]), filter(nil), + access([t1.c9], [t1.c17]), partitions(p0) + +select c9 or c17 from t1; ++-----------+ +| c9 or c17 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND t1.c18]), filter(nil), + access([t1.c9], [t1.c18]), partitions(p0) + +select c9 and c18 from t1; ++------------+ +| c9 and c18 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR t1.c18]), filter(nil), + access([t1.c9], [t1.c18]), partitions(p0) + +select c9 or c18 from t1; ++-----------+ +| c9 or c18 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c19]), partitions(p0) + +select c9 and c19 from t1; ++------------+ +| c9 and c19 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c19]), partitions(p0) + +select c9 or c19 from t1; ++-----------+ +| c9 or c19 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c20]), partitions(p0) + +select c9 and c20 from t1; ++------------+ +| c9 and c20 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c20]), partitions(p0) + +select c9 or c20 from t1; ++-----------+ +| c9 or c20 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c21]), partitions(p0) + +select c9 and c21 from t1; ++------------+ +| c9 and c21 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c21]), partitions(p0) + +select c9 or c21 from t1; ++-----------+ +| c9 or c21 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c22]), partitions(p0) + +select c9 and c22 from t1; ++------------+ +| c9 and c22 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c9 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c22]), partitions(p0) + +select c9 or c22 from t1; ++-----------+ +| c9 or c22 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c23]), partitions(p0) + +select c9 and c23 from t1; ++------------+ +| c9 and c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c9 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c23]), partitions(p0) + +select c9 or c23 from t1; ++-----------+ +| c9 or c23 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c9 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c24]), partitions(p0) + +select c9 and c24 from t1; ++------------+ +| c9 and c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c9 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c9], [t1.c24]), partitions(p0) + +select c9 or c24 from t1; ++-----------+ +| c9 or c24 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c1]), filter(nil), + access([t1.c10], [t1.c1]), partitions(p0) + +select c10 and c1 from t1; ++------------+ +| c10 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c1]), filter(nil), + access([t1.c10], [t1.c1]), partitions(p0) + +select c10 or c1 from t1; ++-----------+ +| c10 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c2]), filter(nil), + access([t1.c10], [t1.c2]), partitions(p0) + +select c10 and c2 from t1; ++------------+ +| c10 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c2]), filter(nil), + access([t1.c10], [t1.c2]), partitions(p0) + +select c10 or c2 from t1; ++-----------+ +| c10 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c3]), filter(nil), + access([t1.c10], [t1.c3]), partitions(p0) + +select c10 and c3 from t1; ++------------+ +| c10 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c3]), filter(nil), + access([t1.c10], [t1.c3]), partitions(p0) + +select c10 or c3 from t1; ++-----------+ +| c10 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c4]), filter(nil), + access([t1.c10], [t1.c4]), partitions(p0) + +select c10 and c4 from t1; ++------------+ +| c10 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c4]), filter(nil), + access([t1.c10], [t1.c4]), partitions(p0) + +select c10 or c4 from t1; ++-----------+ +| c10 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c5]), filter(nil), + access([t1.c10], [t1.c5]), partitions(p0) + +select c10 and c5 from t1; ++------------+ +| c10 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c5]), filter(nil), + access([t1.c10], [t1.c5]), partitions(p0) + +select c10 or c5 from t1; ++-----------+ +| c10 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c6]), filter(nil), + access([t1.c10], [t1.c6]), partitions(p0) + +select c10 and c6 from t1; ++------------+ +| c10 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c6]), filter(nil), + access([t1.c10], [t1.c6]), partitions(p0) + +select c10 or c6 from t1; ++-----------+ +| c10 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c7]), filter(nil), + access([t1.c10], [t1.c7]), partitions(p0) + +select c10 and c7 from t1; ++------------+ +| c10 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c7]), filter(nil), + access([t1.c10], [t1.c7]), partitions(p0) + +select c10 or c7 from t1; ++-----------+ +| c10 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c8]), filter(nil), + access([t1.c10], [t1.c8]), partitions(p0) + +select c10 and c8 from t1; ++------------+ +| c10 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c8]), filter(nil), + access([t1.c10], [t1.c8]), partitions(p0) + +select c10 or c8 from t1; ++-----------+ +| c10 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c9]), filter(nil), + access([t1.c10], [t1.c9]), partitions(p0) + +select c10 and c9 from t1; ++------------+ +| c10 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c10 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c9]), filter(nil), + access([t1.c10], [t1.c9]), partitions(p0) + +select c10 or c9 from t1; ++-----------+ +| c10 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c10 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c10]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10 and c10 from t1; ++-------------+ +| c10 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c10]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10 or c10 from t1; ++------------+ +| c10 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c11]), filter(nil), + access([t1.c10], [t1.c11]), partitions(p0) + +select c10 and c11 from t1; ++-------------+ +| c10 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c11]), filter(nil), + access([t1.c10], [t1.c11]), partitions(p0) + +select c10 or c11 from t1; ++------------+ +| c10 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c12]), filter(nil), + access([t1.c10], [t1.c12]), partitions(p0) + +select c10 and c12 from t1; ++-------------+ +| c10 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c12]), filter(nil), + access([t1.c10], [t1.c12]), partitions(p0) + +select c10 or c12 from t1; ++------------+ +| c10 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c13]), filter(nil), + access([t1.c10], [t1.c13]), partitions(p0) + +select c10 and c13 from t1; ++-------------+ +| c10 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c13]), filter(nil), + access([t1.c10], [t1.c13]), partitions(p0) + +select c10 or c13 from t1; ++------------+ +| c10 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c14]), filter(nil), + access([t1.c10], [t1.c14]), partitions(p0) + +select c10 and c14 from t1; ++-------------+ +| c10 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c14]), filter(nil), + access([t1.c10], [t1.c14]), partitions(p0) + +select c10 or c14 from t1; ++------------+ +| c10 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c15]), filter(nil), + access([t1.c10], [t1.c15]), partitions(p0) + +select c10 and c15 from t1; ++-------------+ +| c10 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c15]), filter(nil), + access([t1.c10], [t1.c15]), partitions(p0) + +select c10 or c15 from t1; ++------------+ +| c10 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c16]), filter(nil), + access([t1.c10], [t1.c16]), partitions(p0) + +select c10 and c16 from t1; ++-------------+ +| c10 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c16]), filter(nil), + access([t1.c10], [t1.c16]), partitions(p0) + +select c10 or c16 from t1; ++------------+ +| c10 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c17]), filter(nil), + access([t1.c10], [t1.c17]), partitions(p0) + +select c10 and c17 from t1; ++-------------+ +| c10 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c17]), filter(nil), + access([t1.c10], [t1.c17]), partitions(p0) + +select c10 or c17 from t1; ++------------+ +| c10 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND t1.c18]), filter(nil), + access([t1.c10], [t1.c18]), partitions(p0) + +select c10 and c18 from t1; ++-------------+ +| c10 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR t1.c18]), filter(nil), + access([t1.c10], [t1.c18]), partitions(p0) + +select c10 or c18 from t1; ++------------+ +| c10 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c19]), partitions(p0) + +select c10 and c19 from t1; ++-------------+ +| c10 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c19]), partitions(p0) + +select c10 or c19 from t1; ++------------+ +| c10 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c20]), partitions(p0) + +select c10 and c20 from t1; ++-------------+ +| c10 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c20]), partitions(p0) + +select c10 or c20 from t1; ++------------+ +| c10 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c21]), partitions(p0) + +select c10 and c21 from t1; ++-------------+ +| c10 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c21]), partitions(p0) + +select c10 or c21 from t1; ++------------+ +| c10 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c22]), partitions(p0) + +select c10 and c22 from t1; ++-------------+ +| c10 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c10 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c22]), partitions(p0) + +select c10 or c22 from t1; ++------------+ +| c10 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c23]), partitions(p0) + +select c10 and c23 from t1; ++-------------+ +| c10 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c10 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c23]), partitions(p0) + +select c10 or c23 from t1; ++------------+ +| c10 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c10 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c24]), partitions(p0) + +select c10 and c24 from t1; ++-------------+ +| c10 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c10 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c10], [t1.c24]), partitions(p0) + +select c10 or c24 from t1; ++------------+ +| c10 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c1]), filter(nil), + access([t1.c11], [t1.c1]), partitions(p0) + +select c11 and c1 from t1; ++------------+ +| c11 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c1]), filter(nil), + access([t1.c11], [t1.c1]), partitions(p0) + +select c11 or c1 from t1; ++-----------+ +| c11 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c2]), filter(nil), + access([t1.c11], [t1.c2]), partitions(p0) + +select c11 and c2 from t1; ++------------+ +| c11 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c2]), filter(nil), + access([t1.c11], [t1.c2]), partitions(p0) + +select c11 or c2 from t1; ++-----------+ +| c11 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c3]), filter(nil), + access([t1.c11], [t1.c3]), partitions(p0) + +select c11 and c3 from t1; ++------------+ +| c11 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c3]), filter(nil), + access([t1.c11], [t1.c3]), partitions(p0) + +select c11 or c3 from t1; ++-----------+ +| c11 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c4]), filter(nil), + access([t1.c11], [t1.c4]), partitions(p0) + +select c11 and c4 from t1; ++------------+ +| c11 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c4]), filter(nil), + access([t1.c11], [t1.c4]), partitions(p0) + +select c11 or c4 from t1; ++-----------+ +| c11 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c5]), filter(nil), + access([t1.c11], [t1.c5]), partitions(p0) + +select c11 and c5 from t1; ++------------+ +| c11 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c5]), filter(nil), + access([t1.c11], [t1.c5]), partitions(p0) + +select c11 or c5 from t1; ++-----------+ +| c11 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c6]), filter(nil), + access([t1.c11], [t1.c6]), partitions(p0) + +select c11 and c6 from t1; ++------------+ +| c11 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c6]), filter(nil), + access([t1.c11], [t1.c6]), partitions(p0) + +select c11 or c6 from t1; ++-----------+ +| c11 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c7]), filter(nil), + access([t1.c11], [t1.c7]), partitions(p0) + +select c11 and c7 from t1; ++------------+ +| c11 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c7]), filter(nil), + access([t1.c11], [t1.c7]), partitions(p0) + +select c11 or c7 from t1; ++-----------+ +| c11 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c8]), filter(nil), + access([t1.c11], [t1.c8]), partitions(p0) + +select c11 and c8 from t1; ++------------+ +| c11 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c8]), filter(nil), + access([t1.c11], [t1.c8]), partitions(p0) + +select c11 or c8 from t1; ++-----------+ +| c11 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c9]), filter(nil), + access([t1.c11], [t1.c9]), partitions(p0) + +select c11 and c9 from t1; ++------------+ +| c11 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c11 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c9]), filter(nil), + access([t1.c11], [t1.c9]), partitions(p0) + +select c11 or c9 from t1; ++-----------+ +| c11 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c11 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c10]), filter(nil), + access([t1.c11], [t1.c10]), partitions(p0) + +select c11 and c10 from t1; ++-------------+ +| c11 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c10]), filter(nil), + access([t1.c11], [t1.c10]), partitions(p0) + +select c11 or c10 from t1; ++------------+ +| c11 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c11]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11 and c11 from t1; ++-------------+ +| c11 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c11]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11 or c11 from t1; ++------------+ +| c11 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c12]), filter(nil), + access([t1.c11], [t1.c12]), partitions(p0) + +select c11 and c12 from t1; ++-------------+ +| c11 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c12]), filter(nil), + access([t1.c11], [t1.c12]), partitions(p0) + +select c11 or c12 from t1; ++------------+ +| c11 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c13]), filter(nil), + access([t1.c11], [t1.c13]), partitions(p0) + +select c11 and c13 from t1; ++-------------+ +| c11 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c13]), filter(nil), + access([t1.c11], [t1.c13]), partitions(p0) + +select c11 or c13 from t1; ++------------+ +| c11 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c14]), filter(nil), + access([t1.c11], [t1.c14]), partitions(p0) + +select c11 and c14 from t1; ++-------------+ +| c11 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c14]), filter(nil), + access([t1.c11], [t1.c14]), partitions(p0) + +select c11 or c14 from t1; ++------------+ +| c11 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c15]), filter(nil), + access([t1.c11], [t1.c15]), partitions(p0) + +select c11 and c15 from t1; ++-------------+ +| c11 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c15]), filter(nil), + access([t1.c11], [t1.c15]), partitions(p0) + +select c11 or c15 from t1; ++------------+ +| c11 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c16]), filter(nil), + access([t1.c11], [t1.c16]), partitions(p0) + +select c11 and c16 from t1; ++-------------+ +| c11 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c16]), filter(nil), + access([t1.c11], [t1.c16]), partitions(p0) + +select c11 or c16 from t1; ++------------+ +| c11 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c17]), filter(nil), + access([t1.c11], [t1.c17]), partitions(p0) + +select c11 and c17 from t1; ++-------------+ +| c11 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c17]), filter(nil), + access([t1.c11], [t1.c17]), partitions(p0) + +select c11 or c17 from t1; ++------------+ +| c11 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND t1.c18]), filter(nil), + access([t1.c11], [t1.c18]), partitions(p0) + +select c11 and c18 from t1; ++-------------+ +| c11 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR t1.c18]), filter(nil), + access([t1.c11], [t1.c18]), partitions(p0) + +select c11 or c18 from t1; ++------------+ +| c11 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c19]), partitions(p0) + +select c11 and c19 from t1; ++-------------+ +| c11 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c19]), partitions(p0) + +select c11 or c19 from t1; ++------------+ +| c11 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c20]), partitions(p0) + +select c11 and c20 from t1; ++-------------+ +| c11 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c20]), partitions(p0) + +select c11 or c20 from t1; ++------------+ +| c11 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c21]), partitions(p0) + +select c11 and c21 from t1; ++-------------+ +| c11 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c21]), partitions(p0) + +select c11 or c21 from t1; ++------------+ +| c11 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c22]), partitions(p0) + +select c11 and c22 from t1; ++-------------+ +| c11 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c11 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c22]), partitions(p0) + +select c11 or c22 from t1; ++------------+ +| c11 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c23]), partitions(p0) + +select c11 and c23 from t1; ++-------------+ +| c11 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c11 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c23]), partitions(p0) + +select c11 or c23 from t1; ++------------+ +| c11 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c11 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c24]), partitions(p0) + +select c11 and c24 from t1; ++-------------+ +| c11 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c11 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c11], [t1.c24]), partitions(p0) + +select c11 or c24 from t1; ++------------+ +| c11 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c1]), filter(nil), + access([t1.c12], [t1.c1]), partitions(p0) + +select c12 and c1 from t1; ++------------+ +| c12 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c1]), filter(nil), + access([t1.c12], [t1.c1]), partitions(p0) + +select c12 or c1 from t1; ++-----------+ +| c12 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c2]), filter(nil), + access([t1.c12], [t1.c2]), partitions(p0) + +select c12 and c2 from t1; ++------------+ +| c12 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c2]), filter(nil), + access([t1.c12], [t1.c2]), partitions(p0) + +select c12 or c2 from t1; ++-----------+ +| c12 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c3]), filter(nil), + access([t1.c12], [t1.c3]), partitions(p0) + +select c12 and c3 from t1; ++------------+ +| c12 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c3]), filter(nil), + access([t1.c12], [t1.c3]), partitions(p0) + +select c12 or c3 from t1; ++-----------+ +| c12 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c4]), filter(nil), + access([t1.c12], [t1.c4]), partitions(p0) + +select c12 and c4 from t1; ++------------+ +| c12 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c4]), filter(nil), + access([t1.c12], [t1.c4]), partitions(p0) + +select c12 or c4 from t1; ++-----------+ +| c12 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c5]), filter(nil), + access([t1.c12], [t1.c5]), partitions(p0) + +select c12 and c5 from t1; ++------------+ +| c12 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c5]), filter(nil), + access([t1.c12], [t1.c5]), partitions(p0) + +select c12 or c5 from t1; ++-----------+ +| c12 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c6]), filter(nil), + access([t1.c12], [t1.c6]), partitions(p0) + +select c12 and c6 from t1; ++------------+ +| c12 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c6]), filter(nil), + access([t1.c12], [t1.c6]), partitions(p0) + +select c12 or c6 from t1; ++-----------+ +| c12 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c7]), filter(nil), + access([t1.c12], [t1.c7]), partitions(p0) + +select c12 and c7 from t1; ++------------+ +| c12 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c7]), filter(nil), + access([t1.c12], [t1.c7]), partitions(p0) + +select c12 or c7 from t1; ++-----------+ +| c12 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c8]), filter(nil), + access([t1.c12], [t1.c8]), partitions(p0) + +select c12 and c8 from t1; ++------------+ +| c12 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c8]), filter(nil), + access([t1.c12], [t1.c8]), partitions(p0) + +select c12 or c8 from t1; ++-----------+ +| c12 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c9]), filter(nil), + access([t1.c12], [t1.c9]), partitions(p0) + +select c12 and c9 from t1; ++------------+ +| c12 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c12 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c9]), filter(nil), + access([t1.c12], [t1.c9]), partitions(p0) + +select c12 or c9 from t1; ++-----------+ +| c12 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c12 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c10]), filter(nil), + access([t1.c12], [t1.c10]), partitions(p0) + +select c12 and c10 from t1; ++-------------+ +| c12 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c10]), filter(nil), + access([t1.c12], [t1.c10]), partitions(p0) + +select c12 or c10 from t1; ++------------+ +| c12 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c11]), filter(nil), + access([t1.c12], [t1.c11]), partitions(p0) + +select c12 and c11 from t1; ++-------------+ +| c12 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c11]), filter(nil), + access([t1.c12], [t1.c11]), partitions(p0) + +select c12 or c11 from t1; ++------------+ +| c12 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c12]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12 and c12 from t1; ++-------------+ +| c12 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c12]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12 or c12 from t1; ++------------+ +| c12 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c13]), filter(nil), + access([t1.c12], [t1.c13]), partitions(p0) + +select c12 and c13 from t1; ++-------------+ +| c12 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c13]), filter(nil), + access([t1.c12], [t1.c13]), partitions(p0) + +select c12 or c13 from t1; ++------------+ +| c12 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c14]), filter(nil), + access([t1.c12], [t1.c14]), partitions(p0) + +select c12 and c14 from t1; ++-------------+ +| c12 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c14]), filter(nil), + access([t1.c12], [t1.c14]), partitions(p0) + +select c12 or c14 from t1; ++------------+ +| c12 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c15]), filter(nil), + access([t1.c12], [t1.c15]), partitions(p0) + +select c12 and c15 from t1; ++-------------+ +| c12 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c15]), filter(nil), + access([t1.c12], [t1.c15]), partitions(p0) + +select c12 or c15 from t1; ++------------+ +| c12 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c16]), filter(nil), + access([t1.c12], [t1.c16]), partitions(p0) + +select c12 and c16 from t1; ++-------------+ +| c12 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c16]), filter(nil), + access([t1.c12], [t1.c16]), partitions(p0) + +select c12 or c16 from t1; ++------------+ +| c12 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c17]), filter(nil), + access([t1.c12], [t1.c17]), partitions(p0) + +select c12 and c17 from t1; ++-------------+ +| c12 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c17]), filter(nil), + access([t1.c12], [t1.c17]), partitions(p0) + +select c12 or c17 from t1; ++------------+ +| c12 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND t1.c18]), filter(nil), + access([t1.c12], [t1.c18]), partitions(p0) + +select c12 and c18 from t1; ++-------------+ +| c12 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR t1.c18]), filter(nil), + access([t1.c12], [t1.c18]), partitions(p0) + +select c12 or c18 from t1; ++------------+ +| c12 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c19]), partitions(p0) + +select c12 and c19 from t1; ++-------------+ +| c12 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c19]), partitions(p0) + +select c12 or c19 from t1; ++------------+ +| c12 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c20]), partitions(p0) + +select c12 and c20 from t1; ++-------------+ +| c12 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c20]), partitions(p0) + +select c12 or c20 from t1; ++------------+ +| c12 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c21]), partitions(p0) + +select c12 and c21 from t1; ++-------------+ +| c12 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c21]), partitions(p0) + +select c12 or c21 from t1; ++------------+ +| c12 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c22]), partitions(p0) + +select c12 and c22 from t1; ++-------------+ +| c12 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c12 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c22]), partitions(p0) + +select c12 or c22 from t1; ++------------+ +| c12 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c23]), partitions(p0) + +select c12 and c23 from t1; ++-------------+ +| c12 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c12 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c23]), partitions(p0) + +select c12 or c23 from t1; ++------------+ +| c12 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c12 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c24]), partitions(p0) + +select c12 and c24 from t1; ++-------------+ +| c12 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c12 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c12], [t1.c24]), partitions(p0) + +select c12 or c24 from t1; ++------------+ +| c12 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c1]), filter(nil), + access([t1.c13], [t1.c1]), partitions(p0) + +select c13 and c1 from t1; ++------------+ +| c13 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c1]), filter(nil), + access([t1.c13], [t1.c1]), partitions(p0) + +select c13 or c1 from t1; ++-----------+ +| c13 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c2]), filter(nil), + access([t1.c13], [t1.c2]), partitions(p0) + +select c13 and c2 from t1; ++------------+ +| c13 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c2]), filter(nil), + access([t1.c13], [t1.c2]), partitions(p0) + +select c13 or c2 from t1; ++-----------+ +| c13 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c3]), filter(nil), + access([t1.c13], [t1.c3]), partitions(p0) + +select c13 and c3 from t1; ++------------+ +| c13 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c3]), filter(nil), + access([t1.c13], [t1.c3]), partitions(p0) + +select c13 or c3 from t1; ++-----------+ +| c13 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c4]), filter(nil), + access([t1.c13], [t1.c4]), partitions(p0) + +select c13 and c4 from t1; ++------------+ +| c13 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c4]), filter(nil), + access([t1.c13], [t1.c4]), partitions(p0) + +select c13 or c4 from t1; ++-----------+ +| c13 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c5]), filter(nil), + access([t1.c13], [t1.c5]), partitions(p0) + +select c13 and c5 from t1; ++------------+ +| c13 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c5]), filter(nil), + access([t1.c13], [t1.c5]), partitions(p0) + +select c13 or c5 from t1; ++-----------+ +| c13 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c6]), filter(nil), + access([t1.c13], [t1.c6]), partitions(p0) + +select c13 and c6 from t1; ++------------+ +| c13 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c6]), filter(nil), + access([t1.c13], [t1.c6]), partitions(p0) + +select c13 or c6 from t1; ++-----------+ +| c13 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c7]), filter(nil), + access([t1.c13], [t1.c7]), partitions(p0) + +select c13 and c7 from t1; ++------------+ +| c13 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c7]), filter(nil), + access([t1.c13], [t1.c7]), partitions(p0) + +select c13 or c7 from t1; ++-----------+ +| c13 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c8]), filter(nil), + access([t1.c13], [t1.c8]), partitions(p0) + +select c13 and c8 from t1; ++------------+ +| c13 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c8]), filter(nil), + access([t1.c13], [t1.c8]), partitions(p0) + +select c13 or c8 from t1; ++-----------+ +| c13 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c9]), filter(nil), + access([t1.c13], [t1.c9]), partitions(p0) + +select c13 and c9 from t1; ++------------+ +| c13 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c13 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c9]), filter(nil), + access([t1.c13], [t1.c9]), partitions(p0) + +select c13 or c9 from t1; ++-----------+ +| c13 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c13 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c10]), filter(nil), + access([t1.c13], [t1.c10]), partitions(p0) + +select c13 and c10 from t1; ++-------------+ +| c13 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c10]), filter(nil), + access([t1.c13], [t1.c10]), partitions(p0) + +select c13 or c10 from t1; ++------------+ +| c13 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c11]), filter(nil), + access([t1.c13], [t1.c11]), partitions(p0) + +select c13 and c11 from t1; ++-------------+ +| c13 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c11]), filter(nil), + access([t1.c13], [t1.c11]), partitions(p0) + +select c13 or c11 from t1; ++------------+ +| c13 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c12]), filter(nil), + access([t1.c13], [t1.c12]), partitions(p0) + +select c13 and c12 from t1; ++-------------+ +| c13 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c12]), filter(nil), + access([t1.c13], [t1.c12]), partitions(p0) + +select c13 or c12 from t1; ++------------+ +| c13 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c13]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13 and c13 from t1; ++-------------+ +| c13 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c13]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13 or c13 from t1; ++------------+ +| c13 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c14]), filter(nil), + access([t1.c13], [t1.c14]), partitions(p0) + +select c13 and c14 from t1; ++-------------+ +| c13 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c14]), filter(nil), + access([t1.c13], [t1.c14]), partitions(p0) + +select c13 or c14 from t1; ++------------+ +| c13 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c15]), filter(nil), + access([t1.c13], [t1.c15]), partitions(p0) + +select c13 and c15 from t1; ++-------------+ +| c13 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c15]), filter(nil), + access([t1.c13], [t1.c15]), partitions(p0) + +select c13 or c15 from t1; ++------------+ +| c13 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c16]), filter(nil), + access([t1.c13], [t1.c16]), partitions(p0) + +select c13 and c16 from t1; ++-------------+ +| c13 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c16]), filter(nil), + access([t1.c13], [t1.c16]), partitions(p0) + +select c13 or c16 from t1; ++------------+ +| c13 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c17]), filter(nil), + access([t1.c13], [t1.c17]), partitions(p0) + +select c13 and c17 from t1; ++-------------+ +| c13 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c17]), filter(nil), + access([t1.c13], [t1.c17]), partitions(p0) + +select c13 or c17 from t1; ++------------+ +| c13 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND t1.c18]), filter(nil), + access([t1.c13], [t1.c18]), partitions(p0) + +select c13 and c18 from t1; ++-------------+ +| c13 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR t1.c18]), filter(nil), + access([t1.c13], [t1.c18]), partitions(p0) + +select c13 or c18 from t1; ++------------+ +| c13 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c19]), partitions(p0) + +select c13 and c19 from t1; ++-------------+ +| c13 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c19]), partitions(p0) + +select c13 or c19 from t1; ++------------+ +| c13 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c20]), partitions(p0) + +select c13 and c20 from t1; ++-------------+ +| c13 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c20]), partitions(p0) + +select c13 or c20 from t1; ++------------+ +| c13 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c21]), partitions(p0) + +select c13 and c21 from t1; ++-------------+ +| c13 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c21]), partitions(p0) + +select c13 or c21 from t1; ++------------+ +| c13 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c22]), partitions(p0) + +select c13 and c22 from t1; ++-------------+ +| c13 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c13 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c22]), partitions(p0) + +select c13 or c22 from t1; ++------------+ +| c13 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c23]), partitions(p0) + +select c13 and c23 from t1; ++-------------+ +| c13 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c13 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c23]), partitions(p0) + +select c13 or c23 from t1; ++------------+ +| c13 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c13 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c24]), partitions(p0) + +select c13 and c24 from t1; ++-------------+ +| c13 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c13 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c13], [t1.c24]), partitions(p0) + +select c13 or c24 from t1; ++------------+ +| c13 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c1]), filter(nil), + access([t1.c14], [t1.c1]), partitions(p0) + +select c14 and c1 from t1; ++------------+ +| c14 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c1]), filter(nil), + access([t1.c14], [t1.c1]), partitions(p0) + +select c14 or c1 from t1; ++-----------+ +| c14 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c2]), filter(nil), + access([t1.c14], [t1.c2]), partitions(p0) + +select c14 and c2 from t1; ++------------+ +| c14 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c2]), filter(nil), + access([t1.c14], [t1.c2]), partitions(p0) + +select c14 or c2 from t1; ++-----------+ +| c14 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c3]), filter(nil), + access([t1.c14], [t1.c3]), partitions(p0) + +select c14 and c3 from t1; ++------------+ +| c14 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c3]), filter(nil), + access([t1.c14], [t1.c3]), partitions(p0) + +select c14 or c3 from t1; ++-----------+ +| c14 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c4]), filter(nil), + access([t1.c14], [t1.c4]), partitions(p0) + +select c14 and c4 from t1; ++------------+ +| c14 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c4]), filter(nil), + access([t1.c14], [t1.c4]), partitions(p0) + +select c14 or c4 from t1; ++-----------+ +| c14 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c5]), filter(nil), + access([t1.c14], [t1.c5]), partitions(p0) + +select c14 and c5 from t1; ++------------+ +| c14 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c5]), filter(nil), + access([t1.c14], [t1.c5]), partitions(p0) + +select c14 or c5 from t1; ++-----------+ +| c14 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c6]), filter(nil), + access([t1.c14], [t1.c6]), partitions(p0) + +select c14 and c6 from t1; ++------------+ +| c14 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c6]), filter(nil), + access([t1.c14], [t1.c6]), partitions(p0) + +select c14 or c6 from t1; ++-----------+ +| c14 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c7]), filter(nil), + access([t1.c14], [t1.c7]), partitions(p0) + +select c14 and c7 from t1; ++------------+ +| c14 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c7]), filter(nil), + access([t1.c14], [t1.c7]), partitions(p0) + +select c14 or c7 from t1; ++-----------+ +| c14 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c8]), filter(nil), + access([t1.c14], [t1.c8]), partitions(p0) + +select c14 and c8 from t1; ++------------+ +| c14 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c8]), filter(nil), + access([t1.c14], [t1.c8]), partitions(p0) + +select c14 or c8 from t1; ++-----------+ +| c14 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c9]), filter(nil), + access([t1.c14], [t1.c9]), partitions(p0) + +select c14 and c9 from t1; ++------------+ +| c14 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c14 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c9]), filter(nil), + access([t1.c14], [t1.c9]), partitions(p0) + +select c14 or c9 from t1; ++-----------+ +| c14 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c14 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c10]), filter(nil), + access([t1.c14], [t1.c10]), partitions(p0) + +select c14 and c10 from t1; ++-------------+ +| c14 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c10]), filter(nil), + access([t1.c14], [t1.c10]), partitions(p0) + +select c14 or c10 from t1; ++------------+ +| c14 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c11]), filter(nil), + access([t1.c14], [t1.c11]), partitions(p0) + +select c14 and c11 from t1; ++-------------+ +| c14 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c11]), filter(nil), + access([t1.c14], [t1.c11]), partitions(p0) + +select c14 or c11 from t1; ++------------+ +| c14 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c12]), filter(nil), + access([t1.c14], [t1.c12]), partitions(p0) + +select c14 and c12 from t1; ++-------------+ +| c14 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c12]), filter(nil), + access([t1.c14], [t1.c12]), partitions(p0) + +select c14 or c12 from t1; ++------------+ +| c14 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c13]), filter(nil), + access([t1.c14], [t1.c13]), partitions(p0) + +select c14 and c13 from t1; ++-------------+ +| c14 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c13]), filter(nil), + access([t1.c14], [t1.c13]), partitions(p0) + +select c14 or c13 from t1; ++------------+ +| c14 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c14]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14 and c14 from t1; ++-------------+ +| c14 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c14]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14 or c14 from t1; ++------------+ +| c14 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c15]), filter(nil), + access([t1.c14], [t1.c15]), partitions(p0) + +select c14 and c15 from t1; ++-------------+ +| c14 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c15]), filter(nil), + access([t1.c14], [t1.c15]), partitions(p0) + +select c14 or c15 from t1; ++------------+ +| c14 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c16]), filter(nil), + access([t1.c14], [t1.c16]), partitions(p0) + +select c14 and c16 from t1; ++-------------+ +| c14 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c16]), filter(nil), + access([t1.c14], [t1.c16]), partitions(p0) + +select c14 or c16 from t1; ++------------+ +| c14 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c17]), filter(nil), + access([t1.c14], [t1.c17]), partitions(p0) + +select c14 and c17 from t1; ++-------------+ +| c14 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c17]), filter(nil), + access([t1.c14], [t1.c17]), partitions(p0) + +select c14 or c17 from t1; ++------------+ +| c14 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND t1.c18]), filter(nil), + access([t1.c14], [t1.c18]), partitions(p0) + +select c14 and c18 from t1; ++-------------+ +| c14 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR t1.c18]), filter(nil), + access([t1.c14], [t1.c18]), partitions(p0) + +select c14 or c18 from t1; ++------------+ +| c14 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c19]), partitions(p0) + +select c14 and c19 from t1; ++-------------+ +| c14 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c19]), partitions(p0) + +select c14 or c19 from t1; ++------------+ +| c14 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c20]), partitions(p0) + +select c14 and c20 from t1; ++-------------+ +| c14 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c20]), partitions(p0) + +select c14 or c20 from t1; ++------------+ +| c14 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c21]), partitions(p0) + +select c14 and c21 from t1; ++-------------+ +| c14 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c21]), partitions(p0) + +select c14 or c21 from t1; ++------------+ +| c14 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c22]), partitions(p0) + +select c14 and c22 from t1; ++-------------+ +| c14 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c14 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c22]), partitions(p0) + +select c14 or c22 from t1; ++------------+ +| c14 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c23]), partitions(p0) + +select c14 and c23 from t1; ++-------------+ +| c14 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c14 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c23]), partitions(p0) + +select c14 or c23 from t1; ++------------+ +| c14 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c14 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c24]), partitions(p0) + +select c14 and c24 from t1; ++-------------+ +| c14 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c14 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c14], [t1.c24]), partitions(p0) + +select c14 or c24 from t1; ++------------+ +| c14 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c1]), filter(nil), + access([t1.c15], [t1.c1]), partitions(p0) + +select c15 and c1 from t1; ++------------+ +| c15 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c1]), filter(nil), + access([t1.c15], [t1.c1]), partitions(p0) + +select c15 or c1 from t1; ++-----------+ +| c15 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c2]), filter(nil), + access([t1.c15], [t1.c2]), partitions(p0) + +select c15 and c2 from t1; ++------------+ +| c15 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c2]), filter(nil), + access([t1.c15], [t1.c2]), partitions(p0) + +select c15 or c2 from t1; ++-----------+ +| c15 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c3]), filter(nil), + access([t1.c15], [t1.c3]), partitions(p0) + +select c15 and c3 from t1; ++------------+ +| c15 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c3]), filter(nil), + access([t1.c15], [t1.c3]), partitions(p0) + +select c15 or c3 from t1; ++-----------+ +| c15 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c4]), filter(nil), + access([t1.c15], [t1.c4]), partitions(p0) + +select c15 and c4 from t1; ++------------+ +| c15 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c4]), filter(nil), + access([t1.c15], [t1.c4]), partitions(p0) + +select c15 or c4 from t1; ++-----------+ +| c15 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c5]), filter(nil), + access([t1.c15], [t1.c5]), partitions(p0) + +select c15 and c5 from t1; ++------------+ +| c15 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c5]), filter(nil), + access([t1.c15], [t1.c5]), partitions(p0) + +select c15 or c5 from t1; ++-----------+ +| c15 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c6]), filter(nil), + access([t1.c15], [t1.c6]), partitions(p0) + +select c15 and c6 from t1; ++------------+ +| c15 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c6]), filter(nil), + access([t1.c15], [t1.c6]), partitions(p0) + +select c15 or c6 from t1; ++-----------+ +| c15 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c7]), filter(nil), + access([t1.c15], [t1.c7]), partitions(p0) + +select c15 and c7 from t1; ++------------+ +| c15 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c7]), filter(nil), + access([t1.c15], [t1.c7]), partitions(p0) + +select c15 or c7 from t1; ++-----------+ +| c15 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c8]), filter(nil), + access([t1.c15], [t1.c8]), partitions(p0) + +select c15 and c8 from t1; ++------------+ +| c15 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c8]), filter(nil), + access([t1.c15], [t1.c8]), partitions(p0) + +select c15 or c8 from t1; ++-----------+ +| c15 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c9]), filter(nil), + access([t1.c15], [t1.c9]), partitions(p0) + +select c15 and c9 from t1; ++------------+ +| c15 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c15 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c9]), filter(nil), + access([t1.c15], [t1.c9]), partitions(p0) + +select c15 or c9 from t1; ++-----------+ +| c15 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c15 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c10]), filter(nil), + access([t1.c15], [t1.c10]), partitions(p0) + +select c15 and c10 from t1; ++-------------+ +| c15 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c10]), filter(nil), + access([t1.c15], [t1.c10]), partitions(p0) + +select c15 or c10 from t1; ++------------+ +| c15 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c11]), filter(nil), + access([t1.c15], [t1.c11]), partitions(p0) + +select c15 and c11 from t1; ++-------------+ +| c15 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c11]), filter(nil), + access([t1.c15], [t1.c11]), partitions(p0) + +select c15 or c11 from t1; ++------------+ +| c15 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c12]), filter(nil), + access([t1.c15], [t1.c12]), partitions(p0) + +select c15 and c12 from t1; ++-------------+ +| c15 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c12]), filter(nil), + access([t1.c15], [t1.c12]), partitions(p0) + +select c15 or c12 from t1; ++------------+ +| c15 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c13]), filter(nil), + access([t1.c15], [t1.c13]), partitions(p0) + +select c15 and c13 from t1; ++-------------+ +| c15 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c13]), filter(nil), + access([t1.c15], [t1.c13]), partitions(p0) + +select c15 or c13 from t1; ++------------+ +| c15 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c14]), filter(nil), + access([t1.c15], [t1.c14]), partitions(p0) + +select c15 and c14 from t1; ++-------------+ +| c15 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c14]), filter(nil), + access([t1.c15], [t1.c14]), partitions(p0) + +select c15 or c14 from t1; ++------------+ +| c15 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c15]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15 and c15 from t1; ++-------------+ +| c15 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c15]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15 or c15 from t1; ++------------+ +| c15 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c16]), filter(nil), + access([t1.c15], [t1.c16]), partitions(p0) + +select c15 and c16 from t1; ++-------------+ +| c15 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c16]), filter(nil), + access([t1.c15], [t1.c16]), partitions(p0) + +select c15 or c16 from t1; ++------------+ +| c15 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c17]), filter(nil), + access([t1.c15], [t1.c17]), partitions(p0) + +select c15 and c17 from t1; ++-------------+ +| c15 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c17]), filter(nil), + access([t1.c15], [t1.c17]), partitions(p0) + +select c15 or c17 from t1; ++------------+ +| c15 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND t1.c18]), filter(nil), + access([t1.c15], [t1.c18]), partitions(p0) + +select c15 and c18 from t1; ++-------------+ +| c15 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR t1.c18]), filter(nil), + access([t1.c15], [t1.c18]), partitions(p0) + +select c15 or c18 from t1; ++------------+ +| c15 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c19]), partitions(p0) + +select c15 and c19 from t1; ++-------------+ +| c15 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c19]), partitions(p0) + +select c15 or c19 from t1; ++------------+ +| c15 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c20]), partitions(p0) + +select c15 and c20 from t1; ++-------------+ +| c15 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c20]), partitions(p0) + +select c15 or c20 from t1; ++------------+ +| c15 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c21]), partitions(p0) + +select c15 and c21 from t1; ++-------------+ +| c15 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c21]), partitions(p0) + +select c15 or c21 from t1; ++------------+ +| c15 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c22]), partitions(p0) + +select c15 and c22 from t1; ++-------------+ +| c15 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c15 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c22]), partitions(p0) + +select c15 or c22 from t1; ++------------+ +| c15 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c23]), partitions(p0) + +select c15 and c23 from t1; ++-------------+ +| c15 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c15 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c23]), partitions(p0) + +select c15 or c23 from t1; ++------------+ +| c15 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c15 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c24]), partitions(p0) + +select c15 and c24 from t1; ++-------------+ +| c15 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c15 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c15], [t1.c24]), partitions(p0) + +select c15 or c24 from t1; ++------------+ +| c15 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c1]), filter(nil), + access([t1.c16], [t1.c1]), partitions(p0) + +select c16 and c1 from t1; ++------------+ +| c16 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c1]), filter(nil), + access([t1.c16], [t1.c1]), partitions(p0) + +select c16 or c1 from t1; ++-----------+ +| c16 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c2]), filter(nil), + access([t1.c16], [t1.c2]), partitions(p0) + +select c16 and c2 from t1; ++------------+ +| c16 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c2]), filter(nil), + access([t1.c16], [t1.c2]), partitions(p0) + +select c16 or c2 from t1; ++-----------+ +| c16 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c3]), filter(nil), + access([t1.c16], [t1.c3]), partitions(p0) + +select c16 and c3 from t1; ++------------+ +| c16 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c3]), filter(nil), + access([t1.c16], [t1.c3]), partitions(p0) + +select c16 or c3 from t1; ++-----------+ +| c16 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c4]), filter(nil), + access([t1.c16], [t1.c4]), partitions(p0) + +select c16 and c4 from t1; ++------------+ +| c16 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c4]), filter(nil), + access([t1.c16], [t1.c4]), partitions(p0) + +select c16 or c4 from t1; ++-----------+ +| c16 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c5]), filter(nil), + access([t1.c16], [t1.c5]), partitions(p0) + +select c16 and c5 from t1; ++------------+ +| c16 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c5]), filter(nil), + access([t1.c16], [t1.c5]), partitions(p0) + +select c16 or c5 from t1; ++-----------+ +| c16 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c6]), filter(nil), + access([t1.c16], [t1.c6]), partitions(p0) + +select c16 and c6 from t1; ++------------+ +| c16 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c6]), filter(nil), + access([t1.c16], [t1.c6]), partitions(p0) + +select c16 or c6 from t1; ++-----------+ +| c16 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c7]), filter(nil), + access([t1.c16], [t1.c7]), partitions(p0) + +select c16 and c7 from t1; ++------------+ +| c16 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c7]), filter(nil), + access([t1.c16], [t1.c7]), partitions(p0) + +select c16 or c7 from t1; ++-----------+ +| c16 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c8]), filter(nil), + access([t1.c16], [t1.c8]), partitions(p0) + +select c16 and c8 from t1; ++------------+ +| c16 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c8]), filter(nil), + access([t1.c16], [t1.c8]), partitions(p0) + +select c16 or c8 from t1; ++-----------+ +| c16 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c9]), filter(nil), + access([t1.c16], [t1.c9]), partitions(p0) + +select c16 and c9 from t1; ++------------+ +| c16 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c16 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c9]), filter(nil), + access([t1.c16], [t1.c9]), partitions(p0) + +select c16 or c9 from t1; ++-----------+ +| c16 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c16 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c10]), filter(nil), + access([t1.c16], [t1.c10]), partitions(p0) + +select c16 and c10 from t1; ++-------------+ +| c16 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c10]), filter(nil), + access([t1.c16], [t1.c10]), partitions(p0) + +select c16 or c10 from t1; ++------------+ +| c16 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c11]), filter(nil), + access([t1.c16], [t1.c11]), partitions(p0) + +select c16 and c11 from t1; ++-------------+ +| c16 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c11]), filter(nil), + access([t1.c16], [t1.c11]), partitions(p0) + +select c16 or c11 from t1; ++------------+ +| c16 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c12]), filter(nil), + access([t1.c16], [t1.c12]), partitions(p0) + +select c16 and c12 from t1; ++-------------+ +| c16 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c12]), filter(nil), + access([t1.c16], [t1.c12]), partitions(p0) + +select c16 or c12 from t1; ++------------+ +| c16 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c13]), filter(nil), + access([t1.c16], [t1.c13]), partitions(p0) + +select c16 and c13 from t1; ++-------------+ +| c16 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c13]), filter(nil), + access([t1.c16], [t1.c13]), partitions(p0) + +select c16 or c13 from t1; ++------------+ +| c16 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c14]), filter(nil), + access([t1.c16], [t1.c14]), partitions(p0) + +select c16 and c14 from t1; ++-------------+ +| c16 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c14]), filter(nil), + access([t1.c16], [t1.c14]), partitions(p0) + +select c16 or c14 from t1; ++------------+ +| c16 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c15]), filter(nil), + access([t1.c16], [t1.c15]), partitions(p0) + +select c16 and c15 from t1; ++-------------+ +| c16 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c15]), filter(nil), + access([t1.c16], [t1.c15]), partitions(p0) + +select c16 or c15 from t1; ++------------+ +| c16 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c16]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16 and c16 from t1; ++-------------+ +| c16 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c16]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16 or c16 from t1; ++------------+ +| c16 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c17]), filter(nil), + access([t1.c16], [t1.c17]), partitions(p0) + +select c16 and c17 from t1; ++-------------+ +| c16 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c17]), filter(nil), + access([t1.c16], [t1.c17]), partitions(p0) + +select c16 or c17 from t1; ++------------+ +| c16 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND t1.c18]), filter(nil), + access([t1.c16], [t1.c18]), partitions(p0) + +select c16 and c18 from t1; ++-------------+ +| c16 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR t1.c18]), filter(nil), + access([t1.c16], [t1.c18]), partitions(p0) + +select c16 or c18 from t1; ++------------+ +| c16 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c19]), partitions(p0) + +select c16 and c19 from t1; ++-------------+ +| c16 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c19]), partitions(p0) + +select c16 or c19 from t1; ++------------+ +| c16 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c20]), partitions(p0) + +select c16 and c20 from t1; ++-------------+ +| c16 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c20]), partitions(p0) + +select c16 or c20 from t1; ++------------+ +| c16 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c21]), partitions(p0) + +select c16 and c21 from t1; ++-------------+ +| c16 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c21]), partitions(p0) + +select c16 or c21 from t1; ++------------+ +| c16 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c22]), partitions(p0) + +select c16 and c22 from t1; ++-------------+ +| c16 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c16 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c22]), partitions(p0) + +select c16 or c22 from t1; ++------------+ +| c16 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c23]), partitions(p0) + +select c16 and c23 from t1; ++-------------+ +| c16 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c16 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c23]), partitions(p0) + +select c16 or c23 from t1; ++------------+ +| c16 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c16 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c24]), partitions(p0) + +select c16 and c24 from t1; ++-------------+ +| c16 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c16 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c16], [t1.c24]), partitions(p0) + +select c16 or c24 from t1; ++------------+ +| c16 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c1]), filter(nil), + access([t1.c17], [t1.c1]), partitions(p0) + +select c17 and c1 from t1; ++------------+ +| c17 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c1]), filter(nil), + access([t1.c17], [t1.c1]), partitions(p0) + +select c17 or c1 from t1; ++-----------+ +| c17 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c2]), filter(nil), + access([t1.c17], [t1.c2]), partitions(p0) + +select c17 and c2 from t1; ++------------+ +| c17 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c2]), filter(nil), + access([t1.c17], [t1.c2]), partitions(p0) + +select c17 or c2 from t1; ++-----------+ +| c17 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c3]), filter(nil), + access([t1.c17], [t1.c3]), partitions(p0) + +select c17 and c3 from t1; ++------------+ +| c17 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c3]), filter(nil), + access([t1.c17], [t1.c3]), partitions(p0) + +select c17 or c3 from t1; ++-----------+ +| c17 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c4]), filter(nil), + access([t1.c17], [t1.c4]), partitions(p0) + +select c17 and c4 from t1; ++------------+ +| c17 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c4]), filter(nil), + access([t1.c17], [t1.c4]), partitions(p0) + +select c17 or c4 from t1; ++-----------+ +| c17 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c5]), filter(nil), + access([t1.c17], [t1.c5]), partitions(p0) + +select c17 and c5 from t1; ++------------+ +| c17 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c5]), filter(nil), + access([t1.c17], [t1.c5]), partitions(p0) + +select c17 or c5 from t1; ++-----------+ +| c17 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c6]), filter(nil), + access([t1.c17], [t1.c6]), partitions(p0) + +select c17 and c6 from t1; ++------------+ +| c17 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c6]), filter(nil), + access([t1.c17], [t1.c6]), partitions(p0) + +select c17 or c6 from t1; ++-----------+ +| c17 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c7]), filter(nil), + access([t1.c17], [t1.c7]), partitions(p0) + +select c17 and c7 from t1; ++------------+ +| c17 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c7]), filter(nil), + access([t1.c17], [t1.c7]), partitions(p0) + +select c17 or c7 from t1; ++-----------+ +| c17 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c8]), filter(nil), + access([t1.c17], [t1.c8]), partitions(p0) + +select c17 and c8 from t1; ++------------+ +| c17 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c8]), filter(nil), + access([t1.c17], [t1.c8]), partitions(p0) + +select c17 or c8 from t1; ++-----------+ +| c17 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c9]), filter(nil), + access([t1.c17], [t1.c9]), partitions(p0) + +select c17 and c9 from t1; ++------------+ +| c17 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c17 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c9]), filter(nil), + access([t1.c17], [t1.c9]), partitions(p0) + +select c17 or c9 from t1; ++-----------+ +| c17 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c17 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c10]), filter(nil), + access([t1.c17], [t1.c10]), partitions(p0) + +select c17 and c10 from t1; ++-------------+ +| c17 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c10]), filter(nil), + access([t1.c17], [t1.c10]), partitions(p0) + +select c17 or c10 from t1; ++------------+ +| c17 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c11]), filter(nil), + access([t1.c17], [t1.c11]), partitions(p0) + +select c17 and c11 from t1; ++-------------+ +| c17 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c11]), filter(nil), + access([t1.c17], [t1.c11]), partitions(p0) + +select c17 or c11 from t1; ++------------+ +| c17 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c12]), filter(nil), + access([t1.c17], [t1.c12]), partitions(p0) + +select c17 and c12 from t1; ++-------------+ +| c17 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c12]), filter(nil), + access([t1.c17], [t1.c12]), partitions(p0) + +select c17 or c12 from t1; ++------------+ +| c17 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c13]), filter(nil), + access([t1.c17], [t1.c13]), partitions(p0) + +select c17 and c13 from t1; ++-------------+ +| c17 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c13]), filter(nil), + access([t1.c17], [t1.c13]), partitions(p0) + +select c17 or c13 from t1; ++------------+ +| c17 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c14]), filter(nil), + access([t1.c17], [t1.c14]), partitions(p0) + +select c17 and c14 from t1; ++-------------+ +| c17 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c14]), filter(nil), + access([t1.c17], [t1.c14]), partitions(p0) + +select c17 or c14 from t1; ++------------+ +| c17 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c15]), filter(nil), + access([t1.c17], [t1.c15]), partitions(p0) + +select c17 and c15 from t1; ++-------------+ +| c17 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c15]), filter(nil), + access([t1.c17], [t1.c15]), partitions(p0) + +select c17 or c15 from t1; ++------------+ +| c17 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c16]), filter(nil), + access([t1.c17], [t1.c16]), partitions(p0) + +select c17 and c16 from t1; ++-------------+ +| c17 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c16]), filter(nil), + access([t1.c17], [t1.c16]), partitions(p0) + +select c17 or c16 from t1; ++------------+ +| c17 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c17]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17 and c17 from t1; ++-------------+ +| c17 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c17]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17 or c17 from t1; ++------------+ +| c17 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND t1.c18]), filter(nil), + access([t1.c17], [t1.c18]), partitions(p0) + +select c17 and c18 from t1; ++-------------+ +| c17 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR t1.c18]), filter(nil), + access([t1.c17], [t1.c18]), partitions(p0) + +select c17 or c18 from t1; ++------------+ +| c17 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c19]), partitions(p0) + +select c17 and c19 from t1; ++-------------+ +| c17 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c19]), partitions(p0) + +select c17 or c19 from t1; ++------------+ +| c17 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c20]), partitions(p0) + +select c17 and c20 from t1; ++-------------+ +| c17 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c20]), partitions(p0) + +select c17 or c20 from t1; ++------------+ +| c17 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c21]), partitions(p0) + +select c17 and c21 from t1; ++-------------+ +| c17 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c21]), partitions(p0) + +select c17 or c21 from t1; ++------------+ +| c17 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c22]), partitions(p0) + +select c17 and c22 from t1; ++-------------+ +| c17 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c17 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c22]), partitions(p0) + +select c17 or c22 from t1; ++------------+ +| c17 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c23]), partitions(p0) + +select c17 and c23 from t1; ++-------------+ +| c17 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c17 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c23]), partitions(p0) + +select c17 or c23 from t1; ++------------+ +| c17 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c17 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c24]), partitions(p0) + +select c17 and c24 from t1; ++-------------+ +| c17 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c17 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c17], [t1.c24]), partitions(p0) + +select c17 or c24 from t1; ++------------+ +| c17 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c1]), filter(nil), + access([t1.c18], [t1.c1]), partitions(p0) + +select c18 and c1 from t1; ++------------+ +| c18 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c1]), filter(nil), + access([t1.c18], [t1.c1]), partitions(p0) + +select c18 or c1 from t1; ++-----------+ +| c18 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c2]), filter(nil), + access([t1.c18], [t1.c2]), partitions(p0) + +select c18 and c2 from t1; ++------------+ +| c18 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c2]), filter(nil), + access([t1.c18], [t1.c2]), partitions(p0) + +select c18 or c2 from t1; ++-----------+ +| c18 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c3]), filter(nil), + access([t1.c18], [t1.c3]), partitions(p0) + +select c18 and c3 from t1; ++------------+ +| c18 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c3]), filter(nil), + access([t1.c18], [t1.c3]), partitions(p0) + +select c18 or c3 from t1; ++-----------+ +| c18 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c4]), filter(nil), + access([t1.c18], [t1.c4]), partitions(p0) + +select c18 and c4 from t1; ++------------+ +| c18 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c4]), filter(nil), + access([t1.c18], [t1.c4]), partitions(p0) + +select c18 or c4 from t1; ++-----------+ +| c18 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c5]), filter(nil), + access([t1.c18], [t1.c5]), partitions(p0) + +select c18 and c5 from t1; ++------------+ +| c18 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c5]), filter(nil), + access([t1.c18], [t1.c5]), partitions(p0) + +select c18 or c5 from t1; ++-----------+ +| c18 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c6]), filter(nil), + access([t1.c18], [t1.c6]), partitions(p0) + +select c18 and c6 from t1; ++------------+ +| c18 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c6]), filter(nil), + access([t1.c18], [t1.c6]), partitions(p0) + +select c18 or c6 from t1; ++-----------+ +| c18 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c7]), filter(nil), + access([t1.c18], [t1.c7]), partitions(p0) + +select c18 and c7 from t1; ++------------+ +| c18 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c7]), filter(nil), + access([t1.c18], [t1.c7]), partitions(p0) + +select c18 or c7 from t1; ++-----------+ +| c18 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c8]), filter(nil), + access([t1.c18], [t1.c8]), partitions(p0) + +select c18 and c8 from t1; ++------------+ +| c18 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c8]), filter(nil), + access([t1.c18], [t1.c8]), partitions(p0) + +select c18 or c8 from t1; ++-----------+ +| c18 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c9]), filter(nil), + access([t1.c18], [t1.c9]), partitions(p0) + +select c18 and c9 from t1; ++------------+ +| c18 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c18 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c9]), filter(nil), + access([t1.c18], [t1.c9]), partitions(p0) + +select c18 or c9 from t1; ++-----------+ +| c18 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c18 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c10]), filter(nil), + access([t1.c18], [t1.c10]), partitions(p0) + +select c18 and c10 from t1; ++-------------+ +| c18 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c10]), filter(nil), + access([t1.c18], [t1.c10]), partitions(p0) + +select c18 or c10 from t1; ++------------+ +| c18 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c11]), filter(nil), + access([t1.c18], [t1.c11]), partitions(p0) + +select c18 and c11 from t1; ++-------------+ +| c18 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c11]), filter(nil), + access([t1.c18], [t1.c11]), partitions(p0) + +select c18 or c11 from t1; ++------------+ +| c18 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c12]), filter(nil), + access([t1.c18], [t1.c12]), partitions(p0) + +select c18 and c12 from t1; ++-------------+ +| c18 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c12]), filter(nil), + access([t1.c18], [t1.c12]), partitions(p0) + +select c18 or c12 from t1; ++------------+ +| c18 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c13]), filter(nil), + access([t1.c18], [t1.c13]), partitions(p0) + +select c18 and c13 from t1; ++-------------+ +| c18 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c13]), filter(nil), + access([t1.c18], [t1.c13]), partitions(p0) + +select c18 or c13 from t1; ++------------+ +| c18 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c14]), filter(nil), + access([t1.c18], [t1.c14]), partitions(p0) + +select c18 and c14 from t1; ++-------------+ +| c18 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c14]), filter(nil), + access([t1.c18], [t1.c14]), partitions(p0) + +select c18 or c14 from t1; ++------------+ +| c18 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c15]), filter(nil), + access([t1.c18], [t1.c15]), partitions(p0) + +select c18 and c15 from t1; ++-------------+ +| c18 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c15]), filter(nil), + access([t1.c18], [t1.c15]), partitions(p0) + +select c18 or c15 from t1; ++------------+ +| c18 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c16]), filter(nil), + access([t1.c18], [t1.c16]), partitions(p0) + +select c18 and c16 from t1; ++-------------+ +| c18 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c16]), filter(nil), + access([t1.c18], [t1.c16]), partitions(p0) + +select c18 or c16 from t1; ++------------+ +| c18 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c17]), filter(nil), + access([t1.c18], [t1.c17]), partitions(p0) + +select c18 and c17 from t1; ++-------------+ +| c18 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c17]), filter(nil), + access([t1.c18], [t1.c17]), partitions(p0) + +select c18 or c17 from t1; ++------------+ +| c18 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND t1.c18]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18 and c18 from t1; ++-------------+ +| c18 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR t1.c18]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18 or c18 from t1; ++------------+ +| c18 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c19]), partitions(p0) + +select c18 and c19 from t1; ++-------------+ +| c18 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c19]), partitions(p0) + +select c18 or c19 from t1; ++------------+ +| c18 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c20]), partitions(p0) + +select c18 and c20 from t1; ++-------------+ +| c18 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c20]), partitions(p0) + +select c18 or c20 from t1; ++------------+ +| c18 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c21]), partitions(p0) + +select c18 and c21 from t1; ++-------------+ +| c18 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c21]), partitions(p0) + +select c18 or c21 from t1; ++------------+ +| c18 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c22]), partitions(p0) + +select c18 and c22 from t1; ++-------------+ +| c18 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c18 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c22]), partitions(p0) + +select c18 or c22 from t1; ++------------+ +| c18 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c23]), partitions(p0) + +select c18 and c23 from t1; ++-------------+ +| c18 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c18 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c23]), partitions(p0) + +select c18 or c23 from t1; ++------------+ +| c18 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c18 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c24]), partitions(p0) + +select c18 and c24 from t1; ++-------------+ +| c18 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c18 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18 OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c18], [t1.c24]), partitions(p0) + +select c18 or c24 from t1; ++------------+ +| c18 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c1]), filter(nil), + access([t1.c19], [t1.c1]), partitions(p0) + +select c19 and c1 from t1; ++------------+ +| c19 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c1]), filter(nil), + access([t1.c19], [t1.c1]), partitions(p0) + +select c19 or c1 from t1; ++-----------+ +| c19 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c2]), filter(nil), + access([t1.c19], [t1.c2]), partitions(p0) + +select c19 and c2 from t1; ++------------+ +| c19 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c2]), filter(nil), + access([t1.c19], [t1.c2]), partitions(p0) + +select c19 or c2 from t1; ++-----------+ +| c19 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c3]), filter(nil), + access([t1.c19], [t1.c3]), partitions(p0) + +select c19 and c3 from t1; ++------------+ +| c19 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c3]), filter(nil), + access([t1.c19], [t1.c3]), partitions(p0) + +select c19 or c3 from t1; ++-----------+ +| c19 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c4]), filter(nil), + access([t1.c19], [t1.c4]), partitions(p0) + +select c19 and c4 from t1; ++------------+ +| c19 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c4]), filter(nil), + access([t1.c19], [t1.c4]), partitions(p0) + +select c19 or c4 from t1; ++-----------+ +| c19 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c5]), filter(nil), + access([t1.c19], [t1.c5]), partitions(p0) + +select c19 and c5 from t1; ++------------+ +| c19 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c5]), filter(nil), + access([t1.c19], [t1.c5]), partitions(p0) + +select c19 or c5 from t1; ++-----------+ +| c19 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c6]), filter(nil), + access([t1.c19], [t1.c6]), partitions(p0) + +select c19 and c6 from t1; ++------------+ +| c19 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c6]), filter(nil), + access([t1.c19], [t1.c6]), partitions(p0) + +select c19 or c6 from t1; ++-----------+ +| c19 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c7]), filter(nil), + access([t1.c19], [t1.c7]), partitions(p0) + +select c19 and c7 from t1; ++------------+ +| c19 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c7]), filter(nil), + access([t1.c19], [t1.c7]), partitions(p0) + +select c19 or c7 from t1; ++-----------+ +| c19 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c8]), filter(nil), + access([t1.c19], [t1.c8]), partitions(p0) + +select c19 and c8 from t1; ++------------+ +| c19 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c8]), filter(nil), + access([t1.c19], [t1.c8]), partitions(p0) + +select c19 or c8 from t1; ++-----------+ +| c19 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c9]), filter(nil), + access([t1.c19], [t1.c9]), partitions(p0) + +select c19 and c9 from t1; ++------------+ +| c19 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c19 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c9]), filter(nil), + access([t1.c19], [t1.c9]), partitions(p0) + +select c19 or c9 from t1; ++-----------+ +| c19 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c19 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c10]), filter(nil), + access([t1.c19], [t1.c10]), partitions(p0) + +select c19 and c10 from t1; ++-------------+ +| c19 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c10]), filter(nil), + access([t1.c19], [t1.c10]), partitions(p0) + +select c19 or c10 from t1; ++------------+ +| c19 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c11]), filter(nil), + access([t1.c19], [t1.c11]), partitions(p0) + +select c19 and c11 from t1; ++-------------+ +| c19 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c11]), filter(nil), + access([t1.c19], [t1.c11]), partitions(p0) + +select c19 or c11 from t1; ++------------+ +| c19 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c12]), filter(nil), + access([t1.c19], [t1.c12]), partitions(p0) + +select c19 and c12 from t1; ++-------------+ +| c19 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c12]), filter(nil), + access([t1.c19], [t1.c12]), partitions(p0) + +select c19 or c12 from t1; ++------------+ +| c19 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c13]), filter(nil), + access([t1.c19], [t1.c13]), partitions(p0) + +select c19 and c13 from t1; ++-------------+ +| c19 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c13]), filter(nil), + access([t1.c19], [t1.c13]), partitions(p0) + +select c19 or c13 from t1; ++------------+ +| c19 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c14]), filter(nil), + access([t1.c19], [t1.c14]), partitions(p0) + +select c19 and c14 from t1; ++-------------+ +| c19 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c14]), filter(nil), + access([t1.c19], [t1.c14]), partitions(p0) + +select c19 or c14 from t1; ++------------+ +| c19 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c15]), filter(nil), + access([t1.c19], [t1.c15]), partitions(p0) + +select c19 and c15 from t1; ++-------------+ +| c19 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c15]), filter(nil), + access([t1.c19], [t1.c15]), partitions(p0) + +select c19 or c15 from t1; ++------------+ +| c19 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c16]), filter(nil), + access([t1.c19], [t1.c16]), partitions(p0) + +select c19 and c16 from t1; ++-------------+ +| c19 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c16]), filter(nil), + access([t1.c19], [t1.c16]), partitions(p0) + +select c19 or c16 from t1; ++------------+ +| c19 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c17]), filter(nil), + access([t1.c19], [t1.c17]), partitions(p0) + +select c19 and c17 from t1; ++-------------+ +| c19 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c17]), filter(nil), + access([t1.c19], [t1.c17]), partitions(p0) + +select c19 or c17 from t1; ++------------+ +| c19 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND t1.c18]), filter(nil), + access([t1.c19], [t1.c18]), partitions(p0) + +select c19 and c18 from t1; ++-------------+ +| c19 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR t1.c18]), filter(nil), + access([t1.c19], [t1.c18]), partitions(p0) + +select c19 or c18 from t1; ++------------+ +| c19 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19 and c19 from t1; ++-------------+ +| c19 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19 or c19 from t1; ++------------+ +| c19 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c20]), partitions(p0) + +select c19 and c20 from t1; ++-------------+ +| c19 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c20]), partitions(p0) + +select c19 or c20 from t1; ++------------+ +| c19 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c21]), partitions(p0) + +select c19 and c21 from t1; ++-------------+ +| c19 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c21]), partitions(p0) + +select c19 or c21 from t1; ++------------+ +| c19 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c22]), partitions(p0) + +select c19 and c22 from t1; ++-------------+ +| c19 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c19 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c22]), partitions(p0) + +select c19 or c22 from t1; ++------------+ +| c19 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c23]), partitions(p0) + +select c19 and c23 from t1; ++-------------+ +| c19 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c19 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c23]), partitions(p0) + +select c19 or c23 from t1; ++------------+ +| c19 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c19 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c24]), partitions(p0) + +select c19 and c24 from t1; ++-------------+ +| c19 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c19 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c19, DOUBLE(-1, -1)) OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c19], [t1.c24]), partitions(p0) + +select c19 or c24 from t1; ++------------+ +| c19 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c1]), filter(nil), + access([t1.c20], [t1.c1]), partitions(p0) + +select c20 and c1 from t1; ++------------+ +| c20 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c1]), filter(nil), + access([t1.c20], [t1.c1]), partitions(p0) + +select c20 or c1 from t1; ++-----------+ +| c20 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c2]), filter(nil), + access([t1.c20], [t1.c2]), partitions(p0) + +select c20 and c2 from t1; ++------------+ +| c20 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c2]), filter(nil), + access([t1.c20], [t1.c2]), partitions(p0) + +select c20 or c2 from t1; ++-----------+ +| c20 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c3]), filter(nil), + access([t1.c20], [t1.c3]), partitions(p0) + +select c20 and c3 from t1; ++------------+ +| c20 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c3]), filter(nil), + access([t1.c20], [t1.c3]), partitions(p0) + +select c20 or c3 from t1; ++-----------+ +| c20 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c4]), filter(nil), + access([t1.c20], [t1.c4]), partitions(p0) + +select c20 and c4 from t1; ++------------+ +| c20 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c4]), filter(nil), + access([t1.c20], [t1.c4]), partitions(p0) + +select c20 or c4 from t1; ++-----------+ +| c20 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c5]), filter(nil), + access([t1.c20], [t1.c5]), partitions(p0) + +select c20 and c5 from t1; ++------------+ +| c20 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c5]), filter(nil), + access([t1.c20], [t1.c5]), partitions(p0) + +select c20 or c5 from t1; ++-----------+ +| c20 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c6]), filter(nil), + access([t1.c20], [t1.c6]), partitions(p0) + +select c20 and c6 from t1; ++------------+ +| c20 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c6]), filter(nil), + access([t1.c20], [t1.c6]), partitions(p0) + +select c20 or c6 from t1; ++-----------+ +| c20 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c7]), filter(nil), + access([t1.c20], [t1.c7]), partitions(p0) + +select c20 and c7 from t1; ++------------+ +| c20 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c7]), filter(nil), + access([t1.c20], [t1.c7]), partitions(p0) + +select c20 or c7 from t1; ++-----------+ +| c20 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c8]), filter(nil), + access([t1.c20], [t1.c8]), partitions(p0) + +select c20 and c8 from t1; ++------------+ +| c20 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c8]), filter(nil), + access([t1.c20], [t1.c8]), partitions(p0) + +select c20 or c8 from t1; ++-----------+ +| c20 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c9]), filter(nil), + access([t1.c20], [t1.c9]), partitions(p0) + +select c20 and c9 from t1; ++------------+ +| c20 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c20 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c9]), filter(nil), + access([t1.c20], [t1.c9]), partitions(p0) + +select c20 or c9 from t1; ++-----------+ +| c20 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c20 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c10]), filter(nil), + access([t1.c20], [t1.c10]), partitions(p0) + +select c20 and c10 from t1; ++-------------+ +| c20 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c10]), filter(nil), + access([t1.c20], [t1.c10]), partitions(p0) + +select c20 or c10 from t1; ++------------+ +| c20 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c11]), filter(nil), + access([t1.c20], [t1.c11]), partitions(p0) + +select c20 and c11 from t1; ++-------------+ +| c20 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c11]), filter(nil), + access([t1.c20], [t1.c11]), partitions(p0) + +select c20 or c11 from t1; ++------------+ +| c20 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c12]), filter(nil), + access([t1.c20], [t1.c12]), partitions(p0) + +select c20 and c12 from t1; ++-------------+ +| c20 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c12]), filter(nil), + access([t1.c20], [t1.c12]), partitions(p0) + +select c20 or c12 from t1; ++------------+ +| c20 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c13]), filter(nil), + access([t1.c20], [t1.c13]), partitions(p0) + +select c20 and c13 from t1; ++-------------+ +| c20 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c13]), filter(nil), + access([t1.c20], [t1.c13]), partitions(p0) + +select c20 or c13 from t1; ++------------+ +| c20 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c14]), filter(nil), + access([t1.c20], [t1.c14]), partitions(p0) + +select c20 and c14 from t1; ++-------------+ +| c20 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c14]), filter(nil), + access([t1.c20], [t1.c14]), partitions(p0) + +select c20 or c14 from t1; ++------------+ +| c20 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c15]), filter(nil), + access([t1.c20], [t1.c15]), partitions(p0) + +select c20 and c15 from t1; ++-------------+ +| c20 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c15]), filter(nil), + access([t1.c20], [t1.c15]), partitions(p0) + +select c20 or c15 from t1; ++------------+ +| c20 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c16]), filter(nil), + access([t1.c20], [t1.c16]), partitions(p0) + +select c20 and c16 from t1; ++-------------+ +| c20 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c16]), filter(nil), + access([t1.c20], [t1.c16]), partitions(p0) + +select c20 or c16 from t1; ++------------+ +| c20 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c17]), filter(nil), + access([t1.c20], [t1.c17]), partitions(p0) + +select c20 and c17 from t1; ++-------------+ +| c20 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c17]), filter(nil), + access([t1.c20], [t1.c17]), partitions(p0) + +select c20 or c17 from t1; ++------------+ +| c20 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND t1.c18]), filter(nil), + access([t1.c20], [t1.c18]), partitions(p0) + +select c20 and c18 from t1; ++-------------+ +| c20 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR t1.c18]), filter(nil), + access([t1.c20], [t1.c18]), partitions(p0) + +select c20 or c18 from t1; ++------------+ +| c20 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c19]), partitions(p0) + +select c20 and c19 from t1; ++-------------+ +| c20 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c19]), partitions(p0) + +select c20 or c19 from t1; ++------------+ +| c20 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20 and c20 from t1; ++-------------+ +| c20 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20 or c20 from t1; ++------------+ +| c20 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c21]), partitions(p0) + +select c20 and c21 from t1; ++-------------+ +| c20 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c21]), partitions(p0) + +select c20 or c21 from t1; ++------------+ +| c20 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c22]), partitions(p0) + +select c20 and c22 from t1; ++-------------+ +| c20 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c20 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c22]), partitions(p0) + +select c20 or c22 from t1; ++------------+ +| c20 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c23]), partitions(p0) + +select c20 and c23 from t1; ++-------------+ +| c20 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c20 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c23]), partitions(p0) + +select c20 or c23 from t1; ++------------+ +| c20 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c20 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c24]), partitions(p0) + +select c20 and c24 from t1; ++-------------+ +| c20 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c20 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c20, DOUBLE(-1, -1)) OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c20], [t1.c24]), partitions(p0) + +select c20 or c24 from t1; ++------------+ +| c20 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c1]), filter(nil), + access([t1.c21], [t1.c1]), partitions(p0) + +select c21 and c1 from t1; ++------------+ +| c21 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c1]), filter(nil), + access([t1.c21], [t1.c1]), partitions(p0) + +select c21 or c1 from t1; ++-----------+ +| c21 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c2]), filter(nil), + access([t1.c21], [t1.c2]), partitions(p0) + +select c21 and c2 from t1; ++------------+ +| c21 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c2]), filter(nil), + access([t1.c21], [t1.c2]), partitions(p0) + +select c21 or c2 from t1; ++-----------+ +| c21 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c3]), filter(nil), + access([t1.c21], [t1.c3]), partitions(p0) + +select c21 and c3 from t1; ++------------+ +| c21 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c3]), filter(nil), + access([t1.c21], [t1.c3]), partitions(p0) + +select c21 or c3 from t1; ++-----------+ +| c21 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c4]), filter(nil), + access([t1.c21], [t1.c4]), partitions(p0) + +select c21 and c4 from t1; ++------------+ +| c21 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c4]), filter(nil), + access([t1.c21], [t1.c4]), partitions(p0) + +select c21 or c4 from t1; ++-----------+ +| c21 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c5]), filter(nil), + access([t1.c21], [t1.c5]), partitions(p0) + +select c21 and c5 from t1; ++------------+ +| c21 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c5]), filter(nil), + access([t1.c21], [t1.c5]), partitions(p0) + +select c21 or c5 from t1; ++-----------+ +| c21 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c6]), filter(nil), + access([t1.c21], [t1.c6]), partitions(p0) + +select c21 and c6 from t1; ++------------+ +| c21 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c6]), filter(nil), + access([t1.c21], [t1.c6]), partitions(p0) + +select c21 or c6 from t1; ++-----------+ +| c21 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c7]), filter(nil), + access([t1.c21], [t1.c7]), partitions(p0) + +select c21 and c7 from t1; ++------------+ +| c21 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c7]), filter(nil), + access([t1.c21], [t1.c7]), partitions(p0) + +select c21 or c7 from t1; ++-----------+ +| c21 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c8]), filter(nil), + access([t1.c21], [t1.c8]), partitions(p0) + +select c21 and c8 from t1; ++------------+ +| c21 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c8]), filter(nil), + access([t1.c21], [t1.c8]), partitions(p0) + +select c21 or c8 from t1; ++-----------+ +| c21 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c9]), filter(nil), + access([t1.c21], [t1.c9]), partitions(p0) + +select c21 and c9 from t1; ++------------+ +| c21 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c21 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c9]), filter(nil), + access([t1.c21], [t1.c9]), partitions(p0) + +select c21 or c9 from t1; ++-----------+ +| c21 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c21 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c10]), filter(nil), + access([t1.c21], [t1.c10]), partitions(p0) + +select c21 and c10 from t1; ++-------------+ +| c21 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c10]), filter(nil), + access([t1.c21], [t1.c10]), partitions(p0) + +select c21 or c10 from t1; ++------------+ +| c21 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c11]), filter(nil), + access([t1.c21], [t1.c11]), partitions(p0) + +select c21 and c11 from t1; ++-------------+ +| c21 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c11]), filter(nil), + access([t1.c21], [t1.c11]), partitions(p0) + +select c21 or c11 from t1; ++------------+ +| c21 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c12]), filter(nil), + access([t1.c21], [t1.c12]), partitions(p0) + +select c21 and c12 from t1; ++-------------+ +| c21 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c12]), filter(nil), + access([t1.c21], [t1.c12]), partitions(p0) + +select c21 or c12 from t1; ++------------+ +| c21 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c13]), filter(nil), + access([t1.c21], [t1.c13]), partitions(p0) + +select c21 and c13 from t1; ++-------------+ +| c21 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c13]), filter(nil), + access([t1.c21], [t1.c13]), partitions(p0) + +select c21 or c13 from t1; ++------------+ +| c21 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c14]), filter(nil), + access([t1.c21], [t1.c14]), partitions(p0) + +select c21 and c14 from t1; ++-------------+ +| c21 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c14]), filter(nil), + access([t1.c21], [t1.c14]), partitions(p0) + +select c21 or c14 from t1; ++------------+ +| c21 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c15]), filter(nil), + access([t1.c21], [t1.c15]), partitions(p0) + +select c21 and c15 from t1; ++-------------+ +| c21 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c15]), filter(nil), + access([t1.c21], [t1.c15]), partitions(p0) + +select c21 or c15 from t1; ++------------+ +| c21 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c16]), filter(nil), + access([t1.c21], [t1.c16]), partitions(p0) + +select c21 and c16 from t1; ++-------------+ +| c21 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c16]), filter(nil), + access([t1.c21], [t1.c16]), partitions(p0) + +select c21 or c16 from t1; ++------------+ +| c21 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c17]), filter(nil), + access([t1.c21], [t1.c17]), partitions(p0) + +select c21 and c17 from t1; ++-------------+ +| c21 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c17]), filter(nil), + access([t1.c21], [t1.c17]), partitions(p0) + +select c21 or c17 from t1; ++------------+ +| c21 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND t1.c18]), filter(nil), + access([t1.c21], [t1.c18]), partitions(p0) + +select c21 and c18 from t1; ++-------------+ +| c21 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR t1.c18]), filter(nil), + access([t1.c21], [t1.c18]), partitions(p0) + +select c21 or c18 from t1; ++------------+ +| c21 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c19]), partitions(p0) + +select c21 and c19 from t1; ++-------------+ +| c21 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c19]), partitions(p0) + +select c21 or c19 from t1; ++------------+ +| c21 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c20]), partitions(p0) + +select c21 and c20 from t1; ++-------------+ +| c21 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c20]), partitions(p0) + +select c21 or c20 from t1; ++------------+ +| c21 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21 and c21 from t1; ++-------------+ +| c21 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21 or c21 from t1; ++------------+ +| c21 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c22]), partitions(p0) + +select c21 and c22 from t1; ++-------------+ +| c21 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c21 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c22]), partitions(p0) + +select c21 or c22 from t1; ++------------+ +| c21 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c23]), partitions(p0) + +select c21 and c23 from t1; ++-------------+ +| c21 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c21 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c23]), partitions(p0) + +select c21 or c23 from t1; ++------------+ +| c21 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c21 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c24]), partitions(p0) + +select c21 and c24 from t1; ++-------------+ +| c21 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c21 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c21, DOUBLE(-1, -1)) OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c21], [t1.c24]), partitions(p0) + +select c21 or c24 from t1; ++------------+ +| c21 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c1]), filter(nil), + access([t1.c22], [t1.c1]), partitions(p0) + +select c22 and c1 from t1; ++------------+ +| c22 and c1 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c1]), filter(nil), + access([t1.c22], [t1.c1]), partitions(p0) + +select c22 or c1 from t1; ++-----------+ +| c22 or c1 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c2]), filter(nil), + access([t1.c22], [t1.c2]), partitions(p0) + +select c22 and c2 from t1; ++------------+ +| c22 and c2 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c2]), filter(nil), + access([t1.c22], [t1.c2]), partitions(p0) + +select c22 or c2 from t1; ++-----------+ +| c22 or c2 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c3]), filter(nil), + access([t1.c22], [t1.c3]), partitions(p0) + +select c22 and c3 from t1; ++------------+ +| c22 and c3 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c3]), filter(nil), + access([t1.c22], [t1.c3]), partitions(p0) + +select c22 or c3 from t1; ++-----------+ +| c22 or c3 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c4]), filter(nil), + access([t1.c22], [t1.c4]), partitions(p0) + +select c22 and c4 from t1; ++------------+ +| c22 and c4 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c4]), filter(nil), + access([t1.c22], [t1.c4]), partitions(p0) + +select c22 or c4 from t1; ++-----------+ +| c22 or c4 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c5]), filter(nil), + access([t1.c22], [t1.c5]), partitions(p0) + +select c22 and c5 from t1; ++------------+ +| c22 and c5 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c5]), filter(nil), + access([t1.c22], [t1.c5]), partitions(p0) + +select c22 or c5 from t1; ++-----------+ +| c22 or c5 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c6]), filter(nil), + access([t1.c22], [t1.c6]), partitions(p0) + +select c22 and c6 from t1; ++------------+ +| c22 and c6 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c6]), filter(nil), + access([t1.c22], [t1.c6]), partitions(p0) + +select c22 or c6 from t1; ++-----------+ +| c22 or c6 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c7]), filter(nil), + access([t1.c22], [t1.c7]), partitions(p0) + +select c22 and c7 from t1; ++------------+ +| c22 and c7 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c7]), filter(nil), + access([t1.c22], [t1.c7]), partitions(p0) + +select c22 or c7 from t1; ++-----------+ +| c22 or c7 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c8]), filter(nil), + access([t1.c22], [t1.c8]), partitions(p0) + +select c22 and c8 from t1; ++------------+ +| c22 and c8 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c8]), filter(nil), + access([t1.c22], [t1.c8]), partitions(p0) + +select c22 or c8 from t1; ++-----------+ +| c22 or c8 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c9]), filter(nil), + access([t1.c22], [t1.c9]), partitions(p0) + +select c22 and c9 from t1; ++------------+ +| c22 and c9 | ++------------+ +| 1 | ++------------+ +EXPLAIN select c22 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c9]), filter(nil), + access([t1.c22], [t1.c9]), partitions(p0) + +select c22 or c9 from t1; ++-----------+ +| c22 or c9 | ++-----------+ +| 1 | ++-----------+ + +EXPLAIN select c22 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c10]), filter(nil), + access([t1.c22], [t1.c10]), partitions(p0) + +select c22 and c10 from t1; ++-------------+ +| c22 and c10 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c10]), filter(nil), + access([t1.c22], [t1.c10]), partitions(p0) + +select c22 or c10 from t1; ++------------+ +| c22 or c10 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c11]), filter(nil), + access([t1.c22], [t1.c11]), partitions(p0) + +select c22 and c11 from t1; ++-------------+ +| c22 and c11 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c11]), filter(nil), + access([t1.c22], [t1.c11]), partitions(p0) + +select c22 or c11 from t1; ++------------+ +| c22 or c11 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c12]), filter(nil), + access([t1.c22], [t1.c12]), partitions(p0) + +select c22 and c12 from t1; ++-------------+ +| c22 and c12 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c12]), filter(nil), + access([t1.c22], [t1.c12]), partitions(p0) + +select c22 or c12 from t1; ++------------+ +| c22 or c12 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c13]), filter(nil), + access([t1.c22], [t1.c13]), partitions(p0) + +select c22 and c13 from t1; ++-------------+ +| c22 and c13 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c13]), filter(nil), + access([t1.c22], [t1.c13]), partitions(p0) + +select c22 or c13 from t1; ++------------+ +| c22 or c13 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c14]), filter(nil), + access([t1.c22], [t1.c14]), partitions(p0) + +select c22 and c14 from t1; ++-------------+ +| c22 and c14 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c14]), filter(nil), + access([t1.c22], [t1.c14]), partitions(p0) + +select c22 or c14 from t1; ++------------+ +| c22 or c14 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c15]), filter(nil), + access([t1.c22], [t1.c15]), partitions(p0) + +select c22 and c15 from t1; ++-------------+ +| c22 and c15 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c15]), filter(nil), + access([t1.c22], [t1.c15]), partitions(p0) + +select c22 or c15 from t1; ++------------+ +| c22 or c15 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c16]), filter(nil), + access([t1.c22], [t1.c16]), partitions(p0) + +select c22 and c16 from t1; ++-------------+ +| c22 and c16 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c16]), filter(nil), + access([t1.c22], [t1.c16]), partitions(p0) + +select c22 or c16 from t1; ++------------+ +| c22 or c16 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c17]), filter(nil), + access([t1.c22], [t1.c17]), partitions(p0) + +select c22 and c17 from t1; ++-------------+ +| c22 and c17 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c17]), filter(nil), + access([t1.c22], [t1.c17]), partitions(p0) + +select c22 or c17 from t1; ++------------+ +| c22 or c17 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND t1.c18]), filter(nil), + access([t1.c22], [t1.c18]), partitions(p0) + +select c22 and c18 from t1; ++-------------+ +| c22 and c18 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR t1.c18]), filter(nil), + access([t1.c22], [t1.c18]), partitions(p0) + +select c22 or c18 from t1; ++------------+ +| c22 or c18 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c19]), partitions(p0) + +select c22 and c19 from t1; ++-------------+ +| c22 and c19 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c19]), partitions(p0) + +select c22 or c19 from t1; ++------------+ +| c22 or c19 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c20]), partitions(p0) + +select c22 and c20 from t1; ++-------------+ +| c22 and c20 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c20]), partitions(p0) + +select c22 or c20 from t1; ++------------+ +| c22 or c20 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c21]), partitions(p0) + +select c22 and c21 from t1; ++-------------+ +| c22 and c21 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c21]), partitions(p0) + +select c22 or c21 from t1; ++------------+ +| c22 or c21 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22 and c22 from t1; ++-------------+ +| c22 and c22 | ++-------------+ +| 1 | ++-------------+ +EXPLAIN select c22 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22 or c22 from t1; ++------------+ +| c22 or c22 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c23]), partitions(p0) + +select c22 and c23 from t1; ++-------------+ +| c22 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c22 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c23]), partitions(p0) + +select c22 or c23 from t1; ++------------+ +| c22 or c23 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c22 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c24]), partitions(p0) + +select c22 and c24 from t1; ++-------------+ +| c22 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c22 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c22, DOUBLE(-1, -1)) OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c22], [t1.c24]), partitions(p0) + +select c22 or c24 from t1; ++------------+ +| c22 or c24 | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c23 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c1]), filter(nil), + access([t1.c23], [t1.c1]), partitions(p0) + +select c23 and c1 from t1; ++------------+ +| c23 and c1 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c1]), filter(nil), + access([t1.c23], [t1.c1]), partitions(p0) + +select c23 or c1 from t1; ++-----------+ +| c23 or c1 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c2]), filter(nil), + access([t1.c23], [t1.c2]), partitions(p0) + +select c23 and c2 from t1; ++------------+ +| c23 and c2 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c2]), filter(nil), + access([t1.c23], [t1.c2]), partitions(p0) + +select c23 or c2 from t1; ++-----------+ +| c23 or c2 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c3]), filter(nil), + access([t1.c23], [t1.c3]), partitions(p0) + +select c23 and c3 from t1; ++------------+ +| c23 and c3 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c3]), filter(nil), + access([t1.c23], [t1.c3]), partitions(p0) + +select c23 or c3 from t1; ++-----------+ +| c23 or c3 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c4]), filter(nil), + access([t1.c23], [t1.c4]), partitions(p0) + +select c23 and c4 from t1; ++------------+ +| c23 and c4 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c4]), filter(nil), + access([t1.c23], [t1.c4]), partitions(p0) + +select c23 or c4 from t1; ++-----------+ +| c23 or c4 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c5]), filter(nil), + access([t1.c23], [t1.c5]), partitions(p0) + +select c23 and c5 from t1; ++------------+ +| c23 and c5 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c5]), filter(nil), + access([t1.c23], [t1.c5]), partitions(p0) + +select c23 or c5 from t1; ++-----------+ +| c23 or c5 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c6]), filter(nil), + access([t1.c23], [t1.c6]), partitions(p0) + +select c23 and c6 from t1; ++------------+ +| c23 and c6 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c6]), filter(nil), + access([t1.c23], [t1.c6]), partitions(p0) + +select c23 or c6 from t1; ++-----------+ +| c23 or c6 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c7]), filter(nil), + access([t1.c23], [t1.c7]), partitions(p0) + +select c23 and c7 from t1; ++------------+ +| c23 and c7 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c7]), filter(nil), + access([t1.c23], [t1.c7]), partitions(p0) + +select c23 or c7 from t1; ++-----------+ +| c23 or c7 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c8]), filter(nil), + access([t1.c23], [t1.c8]), partitions(p0) + +select c23 and c8 from t1; ++------------+ +| c23 and c8 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c8]), filter(nil), + access([t1.c23], [t1.c8]), partitions(p0) + +select c23 or c8 from t1; ++-----------+ +| c23 or c8 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c9]), filter(nil), + access([t1.c23], [t1.c9]), partitions(p0) + +select c23 and c9 from t1; ++------------+ +| c23 and c9 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c9]), filter(nil), + access([t1.c23], [t1.c9]), partitions(p0) + +select c23 or c9 from t1; ++-----------+ +| c23 or c9 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c10]), filter(nil), + access([t1.c23], [t1.c10]), partitions(p0) + +select c23 and c10 from t1; ++-------------+ +| c23 and c10 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c10]), filter(nil), + access([t1.c23], [t1.c10]), partitions(p0) + +select c23 or c10 from t1; ++------------+ +| c23 or c10 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c11]), filter(nil), + access([t1.c23], [t1.c11]), partitions(p0) + +select c23 and c11 from t1; ++-------------+ +| c23 and c11 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c11]), filter(nil), + access([t1.c23], [t1.c11]), partitions(p0) + +select c23 or c11 from t1; ++------------+ +| c23 or c11 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c12]), filter(nil), + access([t1.c23], [t1.c12]), partitions(p0) + +select c23 and c12 from t1; ++-------------+ +| c23 and c12 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c12]), filter(nil), + access([t1.c23], [t1.c12]), partitions(p0) + +select c23 or c12 from t1; ++------------+ +| c23 or c12 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c13]), filter(nil), + access([t1.c23], [t1.c13]), partitions(p0) + +select c23 and c13 from t1; ++-------------+ +| c23 and c13 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c13]), filter(nil), + access([t1.c23], [t1.c13]), partitions(p0) + +select c23 or c13 from t1; ++------------+ +| c23 or c13 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c14]), filter(nil), + access([t1.c23], [t1.c14]), partitions(p0) + +select c23 and c14 from t1; ++-------------+ +| c23 and c14 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c14]), filter(nil), + access([t1.c23], [t1.c14]), partitions(p0) + +select c23 or c14 from t1; ++------------+ +| c23 or c14 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c15]), filter(nil), + access([t1.c23], [t1.c15]), partitions(p0) + +select c23 and c15 from t1; ++-------------+ +| c23 and c15 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c15]), filter(nil), + access([t1.c23], [t1.c15]), partitions(p0) + +select c23 or c15 from t1; ++------------+ +| c23 or c15 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c16]), filter(nil), + access([t1.c23], [t1.c16]), partitions(p0) + +select c23 and c16 from t1; ++-------------+ +| c23 and c16 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c16]), filter(nil), + access([t1.c23], [t1.c16]), partitions(p0) + +select c23 or c16 from t1; ++------------+ +| c23 or c16 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c17]), filter(nil), + access([t1.c23], [t1.c17]), partitions(p0) + +select c23 and c17 from t1; ++-------------+ +| c23 and c17 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c17]), filter(nil), + access([t1.c23], [t1.c17]), partitions(p0) + +select c23 or c17 from t1; ++------------+ +| c23 or c17 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND t1.c18]), filter(nil), + access([t1.c23], [t1.c18]), partitions(p0) + +select c23 and c18 from t1; ++-------------+ +| c23 and c18 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR t1.c18]), filter(nil), + access([t1.c23], [t1.c18]), partitions(p0) + +select c23 or c18 from t1; ++------------+ +| c23 or c18 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c19]), partitions(p0) + +select c23 and c19 from t1; ++-------------+ +| c23 and c19 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c19]), partitions(p0) + +select c23 or c19 from t1; ++------------+ +| c23 or c19 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c20]), partitions(p0) + +select c23 and c20 from t1; ++-------------+ +| c23 and c20 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c20]), partitions(p0) + +select c23 or c20 from t1; ++------------+ +| c23 or c20 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c21]), partitions(p0) + +select c23 and c21 from t1; ++-------------+ +| c23 and c21 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c21]), partitions(p0) + +select c23 or c21 from t1; ++------------+ +| c23 or c21 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c22]), partitions(p0) + +select c23 and c22 from t1; ++-------------+ +| c23 and c22 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c22]), partitions(p0) + +select c23 or c22 from t1; ++------------+ +| c23 or c22 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23]), partitions(p0) + +select c23 and c23 from t1; ++-------------+ +| c23 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23]), partitions(p0) + +select c23 or c23 from t1; ++------------+ +| c23 or c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c23 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c24]), partitions(p0) + +select c23 and c24 from t1; ++-------------+ +| c23 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +EXPLAIN select c23 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c23, DOUBLE(-1, -1)) OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c23], [t1.c24]), partitions(p0) + +select c23 or c24 from t1; ++------------+ +| c23 or c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c1]), filter(nil), + access([t1.c24], [t1.c1]), partitions(p0) + +select c24 and c1 from t1; ++------------+ +| c24 and c1 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c1]), filter(nil), + access([t1.c24], [t1.c1]), partitions(p0) + +select c24 or c1 from t1; ++-----------+ +| c24 or c1 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c2]), filter(nil), + access([t1.c24], [t1.c2]), partitions(p0) + +select c24 and c2 from t1; ++------------+ +| c24 and c2 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c2 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c2]), filter(nil), + access([t1.c24], [t1.c2]), partitions(p0) + +select c24 or c2 from t1; ++-----------+ +| c24 or c2 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c3]), filter(nil), + access([t1.c24], [t1.c3]), partitions(p0) + +select c24 and c3 from t1; ++------------+ +| c24 and c3 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c3 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c3]), filter(nil), + access([t1.c24], [t1.c3]), partitions(p0) + +select c24 or c3 from t1; ++-----------+ +| c24 or c3 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c4]), filter(nil), + access([t1.c24], [t1.c4]), partitions(p0) + +select c24 and c4 from t1; ++------------+ +| c24 and c4 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c4 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c4]), filter(nil), + access([t1.c24], [t1.c4]), partitions(p0) + +select c24 or c4 from t1; ++-----------+ +| c24 or c4 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c5]), filter(nil), + access([t1.c24], [t1.c5]), partitions(p0) + +select c24 and c5 from t1; ++------------+ +| c24 and c5 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c5 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c5]), filter(nil), + access([t1.c24], [t1.c5]), partitions(p0) + +select c24 or c5 from t1; ++-----------+ +| c24 or c5 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c6]), filter(nil), + access([t1.c24], [t1.c6]), partitions(p0) + +select c24 and c6 from t1; ++------------+ +| c24 and c6 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c6 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c6]), filter(nil), + access([t1.c24], [t1.c6]), partitions(p0) + +select c24 or c6 from t1; ++-----------+ +| c24 or c6 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c7]), filter(nil), + access([t1.c24], [t1.c7]), partitions(p0) + +select c24 and c7 from t1; ++------------+ +| c24 and c7 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c7 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c7]), filter(nil), + access([t1.c24], [t1.c7]), partitions(p0) + +select c24 or c7 from t1; ++-----------+ +| c24 or c7 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c8]), filter(nil), + access([t1.c24], [t1.c8]), partitions(p0) + +select c24 and c8 from t1; ++------------+ +| c24 and c8 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c8 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c8]), filter(nil), + access([t1.c24], [t1.c8]), partitions(p0) + +select c24 or c8 from t1; ++-----------+ +| c24 or c8 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c9]), filter(nil), + access([t1.c24], [t1.c9]), partitions(p0) + +select c24 and c9 from t1; ++------------+ +| c24 and c9 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c9 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c9]), filter(nil), + access([t1.c24], [t1.c9]), partitions(p0) + +select c24 or c9 from t1; ++-----------+ +| c24 or c9 | ++-----------+ +| 1 | ++-----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c10]), filter(nil), + access([t1.c24], [t1.c10]), partitions(p0) + +select c24 and c10 from t1; ++-------------+ +| c24 and c10 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c10 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c10]), filter(nil), + access([t1.c24], [t1.c10]), partitions(p0) + +select c24 or c10 from t1; ++------------+ +| c24 or c10 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c11]), filter(nil), + access([t1.c24], [t1.c11]), partitions(p0) + +select c24 and c11 from t1; ++-------------+ +| c24 and c11 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c11 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c11]), filter(nil), + access([t1.c24], [t1.c11]), partitions(p0) + +select c24 or c11 from t1; ++------------+ +| c24 or c11 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c12]), filter(nil), + access([t1.c24], [t1.c12]), partitions(p0) + +select c24 and c12 from t1; ++-------------+ +| c24 and c12 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c12 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c12]), filter(nil), + access([t1.c24], [t1.c12]), partitions(p0) + +select c24 or c12 from t1; ++------------+ +| c24 or c12 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c13]), filter(nil), + access([t1.c24], [t1.c13]), partitions(p0) + +select c24 and c13 from t1; ++-------------+ +| c24 and c13 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c13 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c13]), filter(nil), + access([t1.c24], [t1.c13]), partitions(p0) + +select c24 or c13 from t1; ++------------+ +| c24 or c13 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c14]), filter(nil), + access([t1.c24], [t1.c14]), partitions(p0) + +select c24 and c14 from t1; ++-------------+ +| c24 and c14 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c14 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c14]), filter(nil), + access([t1.c24], [t1.c14]), partitions(p0) + +select c24 or c14 from t1; ++------------+ +| c24 or c14 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c15]), filter(nil), + access([t1.c24], [t1.c15]), partitions(p0) + +select c24 and c15 from t1; ++-------------+ +| c24 and c15 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c15 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c15]), filter(nil), + access([t1.c24], [t1.c15]), partitions(p0) + +select c24 or c15 from t1; ++------------+ +| c24 or c15 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c16]), filter(nil), + access([t1.c24], [t1.c16]), partitions(p0) + +select c24 and c16 from t1; ++-------------+ +| c24 and c16 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c16 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c16]), filter(nil), + access([t1.c24], [t1.c16]), partitions(p0) + +select c24 or c16 from t1; ++------------+ +| c24 or c16 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c17]), filter(nil), + access([t1.c24], [t1.c17]), partitions(p0) + +select c24 and c17 from t1; ++-------------+ +| c24 and c17 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c17 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c17]), filter(nil), + access([t1.c24], [t1.c17]), partitions(p0) + +select c24 or c17 from t1; ++------------+ +| c24 or c17 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND t1.c18]), filter(nil), + access([t1.c24], [t1.c18]), partitions(p0) + +select c24 and c18 from t1; ++-------------+ +| c24 and c18 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c18 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR t1.c18]), filter(nil), + access([t1.c24], [t1.c18]), partitions(p0) + +select c24 or c18 from t1; ++------------+ +| c24 or c18 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c19]), partitions(p0) + +select c24 and c19 from t1; ++-------------+ +| c24 and c19 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c19 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR cast(t1.c19, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c19]), partitions(p0) + +select c24 or c19 from t1; ++------------+ +| c24 or c19 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c20]), partitions(p0) + +select c24 and c20 from t1; ++-------------+ +| c24 and c20 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c20 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR cast(t1.c20, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c20]), partitions(p0) + +select c24 or c20 from t1; ++------------+ +| c24 or c20 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c21]), partitions(p0) + +select c24 and c21 from t1; ++-------------+ +| c24 and c21 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c21 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR cast(t1.c21, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c21]), partitions(p0) + +select c24 or c21 from t1; ++------------+ +| c24 or c21 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c22]), partitions(p0) + +select c24 and c22 from t1; ++-------------+ +| c24 and c22 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c22 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR cast(t1.c22, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c22]), partitions(p0) + +select c24 or c22 from t1; ++------------+ +| c24 or c22 | ++------------+ +| 1 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + +EXPLAIN select c24 and c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c23]), partitions(p0) + +select c24 and c23 from t1; ++-------------+ +| c24 and c23 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c23 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR cast(t1.c23, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24], [t1.c23]), partitions(p0) + +select c24 or c23 from t1; ++------------+ +| c24 or c23 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +Warning 1292 Truncated incorrect DOUBLE value: 'blob type' + +EXPLAIN select c24 and c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) AND cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24]), partitions(p0) + +select c24 and c24 from t1; ++-------------+ +| c24 and c24 | ++-------------+ +| 0 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +EXPLAIN select c24 or c24 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c24, DOUBLE(-1, -1)) OR cast(t1.c24, DOUBLE(-1, -1))]), filter(nil), + access([t1.c24]), partitions(p0) + +select c24 or c24 from t1; ++------------+ +| c24 or c24 | ++------------+ +| 0 | ++------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'text type' +Warning 1292 Truncated incorrect DOUBLE value: 'text type' + + +// Case5: case/if表达式测试 +// 结果应该为'branch1',第一个when expr上面不应该有bool expr,其余的应该有bool expr +EXPLAIN select case when 'a' = 'a' then 'branch1' when 'b' then c1 else c2 end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'branch1' WHEN ? THEN cast(t1.c1, VARCHAR(1048576)) ELSE cast(t1.c2, VARCHAR(1048576)) END]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'b' +select case when 'a' = 'a' then 'branch1' when 'b' then c1 else c2 end from t1; ++-----------------------------------------------------------------+ +| case when 'a' = 'a' then 'branch1' when 'b' then c1 else c2 end | ++-----------------------------------------------------------------+ +| branch1 | ++-----------------------------------------------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'b' +// 结果应该为2,且when expr上面都应该 有bool expr +// TODO: 没有出现预期的warning +EXPLAIN select case when 'a' then 'str' when 'b' then c1 else c2 end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'str' WHEN ? THEN cast(t1.c1, VARCHAR(1048576)) ELSE cast(t1.c2, VARCHAR(1048576)) END]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'a' +Warning 1292 Truncated incorrect DOUBLE value: 'b' +select case when 'a' then 'str' when 'b' then c1 else c2 end from t1; ++-------------------------------------------------------+ +| case when 'a' then 'str' when 'b' then c1 else c2 end | ++-------------------------------------------------------+ +| 2 | ++-------------------------------------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'a' +Warning 1292 Truncated incorrect DOUBLE value: 'b' +// 结果应该为'branch2',且if表达式会被转为case表达式,但是不应该有bool expr,因为判断本身就带有布尔语义 +EXPLAIN select if ('a' = 'b', c1, 'branch2') from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN cast(t1.c1, VARCHAR(1048576)) ELSE 'branch2' END]), filter(nil), + access([t1.c1]), partitions(p0) + +select if ('a' = 'b', c1, 'branch2') from t1; ++-------------------------------+ +| if ('a' = 'b', c1, 'branch2') | ++-------------------------------+ +| branch2 | ++-------------------------------+ +// 结果应该为'branch2',且if表达式会被转为case表达式,0上面应该有一个bool expr +EXPLAIN select if (0, c1, 'branch2') from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN 0 THEN cast(t1.c1, VARCHAR(1048576)) ELSE 'branch2' END]), filter(nil), + access([t1.c1]), partitions(p0) + +select if (0, c1, 'branch2') from t1; ++-----------------------+ +| if (0, c1, 'branch2') | ++-----------------------+ +| branch2 | ++-----------------------+ + +// Case6: not表达式测试 +// c1是1,所以结果为0,且c1上面应该有bool expr +EXPLAIN select not c1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(T_OP_NOT, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select not c1 from t1; ++--------+ +| not c1 | ++--------+ +| 0 | ++--------+ +// c1-1是0,所以结果为0,且c1上面应该有bool expr +EXPLAIN select not c1-1 from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(T_OP_NOT, t1.c1 - 1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select not c1-1 from t1; ++----------+ +| not c1-1 | ++----------+ +| 1 | ++----------+ +// 结果为1,且not的子节点上面没有bool expr +EXPLAIN select not (c1 and 0) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(T_OP_NOT, t1.c1 AND 0)]), filter(nil), + access([t1.c1]), partitions(p0) + +select not (c1 and 0) from t1; ++----------------+ +| not (c1 and 0) | ++----------------+ +| 1 | ++----------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_char_length.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_char_length.result new file mode 100644 index 000000000..45d18f3c8 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_char_length.result @@ -0,0 +1,93 @@ +result_format: 4 +alter system flush plan cache global; + +set ob_enable_plan_cache = 0; +select char_length(1234); ++-------------------+ +| char_length(1234) | ++-------------------+ +| 4 | ++-------------------+ +select char_length(1); ++----------------+ +| char_length(1) | ++----------------+ +| 1 | ++----------------+ +select char_length(null); ++-------------------+ +| char_length(null) | ++-------------------+ +| NULL | ++-------------------+ +select char_length(''); ++-----------------+ +| char_length('') | ++-----------------+ +| 0 | ++-----------------+ +select char_length('a'); ++------------------+ +| char_length('a') | ++------------------+ +| 1 | ++------------------+ +select char_length(' a '); ++--------------------+ +| char_length(' a ') | ++--------------------+ +| 3 | ++--------------------+ +select char_length(' a b'); ++---------------------+ +| char_length(' a b') | ++---------------------+ +| 4 | ++---------------------+ + +drop table if exists t1; +create table t1 (c1 int, c2 char(10), c3 varchar(10), c4 timestamp, c5 decimal); +insert into t1 values(1, 'a ', 'a ', '2010-01-01 11:11:11', 10.1); +select char_length(c1) from t1; ++-----------------+ +| char_length(c1) | ++-----------------+ +| 1 | ++-----------------+ +select char_length(c2) from t1; ++-----------------+ +| char_length(c2) | ++-----------------+ +| 1 | ++-----------------+ +select char_length(c3) from t1; ++-----------------+ +| char_length(c3) | ++-----------------+ +| 2 | ++-----------------+ +select char_length(c4) from t1; ++-----------------+ +| char_length(c4) | ++-----------------+ +| 19 | ++-----------------+ +select char_length(c5) from t1; ++-----------------+ +| char_length(c5) | ++-----------------+ +| 2 | ++-----------------+ + + +drop table if exists t1; +create table t1 (a int); +insert into t1 values (1), (2); +select CHAR_LENGTH( + case when 62 <= ( + select a from t1 + ) then '1' else '22' end); +ERROR 21000: Subquery returns more than 1 row + +drop table t1; + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_collation.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_collation.result new file mode 100644 index 000000000..7b7d17d84 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_collation.result @@ -0,0 +1,215 @@ +result_format: 4 +explain_protocol: 0 + + +set @@ob_enable_plan_cache = 0; +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30), + c23 varchar(30) charset utf8); +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5', 'utf8 col'); +insert into t1 values(-1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -3.5, 4.5, + -5.5, 6.5, + -7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '-9.5', '10.5', 'utf8 col'); + +select c1, charset(c1), collation(c1), coercibility(c1) from t1; ++------+-------------+---------------+------------------+ +| c1 | charset(c1) | collation(c1) | coercibility(c1) | ++------+-------------+---------------+------------------+ +| 1 | binary | binary | 5 | +| -1 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c2, charset(c2), collation(c2), coercibility(c2) from t1; ++------+-------------+---------------+------------------+ +| c2 | charset(c2) | collation(c2) | coercibility(c2) | ++------+-------------+---------------+------------------+ +| 2 | binary | binary | 5 | +| 2 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c3, charset(c3), collation(c3), coercibility(c3) from t1; ++------+-------------+---------------+------------------+ +| c3 | charset(c3) | collation(c3) | coercibility(c3) | ++------+-------------+---------------+------------------+ +| 1 | binary | binary | 5 | +| -1 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c4, charset(c4), collation(c4), coercibility(c4) from t1; ++------+-------------+---------------+------------------+ +| c4 | charset(c4) | collation(c4) | coercibility(c4) | ++------+-------------+---------------+------------------+ +| 2 | binary | binary | 5 | +| 2 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c5, charset(c5), collation(c5), coercibility(c5) from t1; ++------+-------------+---------------+------------------+ +| c5 | charset(c5) | collation(c5) | coercibility(c5) | ++------+-------------+---------------+------------------+ +| 1 | binary | binary | 5 | +| -1 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c6, charset(c6), collation(c6), coercibility(c6) from t1; ++------+-------------+---------------+------------------+ +| c6 | charset(c6) | collation(c6) | coercibility(c6) | ++------+-------------+---------------+------------------+ +| 2 | binary | binary | 5 | +| 2 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c7, charset(c7), collation(c7), coercibility(c7) from t1; ++------+-------------+---------------+------------------+ +| c7 | charset(c7) | collation(c7) | coercibility(c7) | ++------+-------------+---------------+------------------+ +| 1 | binary | binary | 5 | +| -1 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c8, charset(c8), collation(c8), coercibility(c8) from t1; ++------+-------------+---------------+------------------+ +| c8 | charset(c8) | collation(c8) | coercibility(c8) | ++------+-------------+---------------+------------------+ +| 2 | binary | binary | 5 | +| 2 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c9, charset(c9), collation(c9), coercibility(c9) from t1; ++------+-------------+---------------+------------------+ +| c9 | charset(c9) | collation(c9) | coercibility(c9) | ++------+-------------+---------------+------------------+ +| 1 | binary | binary | 5 | +| -1 | binary | binary | 5 | ++------+-------------+---------------+------------------+ +select c10, charset(c10), collation(c10), coercibility(c10) from t1; ++------+--------------+----------------+-------------------+ +| c10 | charset(c10) | collation(c10) | coercibility(c10) | ++------+--------------+----------------+-------------------+ +| 2 | binary | binary | 5 | +| 2 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c11, charset(c11), collation(c11), coercibility(c11) from t1; ++------+--------------+----------------+-------------------+ +| c11 | charset(c11) | collation(c11) | coercibility(c11) | ++------+--------------+----------------+-------------------+ +| 1 | binary | binary | 5 | +| -1 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c12, charset(c12), collation(c12), coercibility(c12) from t1; ++------+--------------+----------------+-------------------+ +| c12 | charset(c12) | collation(c12) | coercibility(c12) | ++------+--------------+----------------+-------------------+ +| 2 | binary | binary | 5 | +| 2 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c13, charset(c13), collation(c13), coercibility(c13) from t1; ++------+--------------+----------------+-------------------+ +| c13 | charset(c13) | collation(c13) | coercibility(c13) | ++------+--------------+----------------+-------------------+ +| 3.5 | binary | binary | 5 | +| -3.5 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c14, charset(c14), collation(c14), coercibility(c14) from t1; ++------+--------------+----------------+-------------------+ +| c14 | charset(c14) | collation(c14) | coercibility(c14) | ++------+--------------+----------------+-------------------+ +| 4.5 | binary | binary | 5 | +| 4.5 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c15, charset(c15), collation(c15), coercibility(c15) from t1; ++------+--------------+----------------+-------------------+ +| c15 | charset(c15) | collation(c15) | coercibility(c15) | ++------+--------------+----------------+-------------------+ +| 5.5 | binary | binary | 5 | +| -5.5 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c16, charset(c16), collation(c16), coercibility(c16) from t1; ++------+--------------+----------------+-------------------+ +| c16 | charset(c16) | collation(c16) | coercibility(c16) | ++------+--------------+----------------+-------------------+ +| 6.5 | binary | binary | 5 | +| 6.5 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c17, charset(c17), collation(c17), coercibility(c17) from t1; ++------+--------------+----------------+-------------------+ +| c17 | charset(c17) | collation(c17) | coercibility(c17) | ++------+--------------+----------------+-------------------+ +| 8 | binary | binary | 5 | +| -8 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c18, charset(c18), collation(c18), coercibility(c18) from t1; ++------+--------------+----------------+-------------------+ +| c18 | charset(c18) | collation(c18) | coercibility(c18) | ++------+--------------+----------------+-------------------+ +| 9 | binary | binary | 5 | +| 9 | binary | binary | 5 | ++------+--------------+----------------+-------------------+ +select c19, charset(c19), collation(c19), coercibility(c19) from t1; ++---------------------+--------------+----------------+-------------------+ +| c19 | charset(c19) | collation(c19) | coercibility(c19) | ++---------------------+--------------+----------------+-------------------+ +| 2019-12-01 12:00:00 | binary | binary | 5 | +| 2019-12-01 12:00:00 | binary | binary | 5 | ++---------------------+--------------+----------------+-------------------+ +select c20, charset(c20), collation(c20), coercibility(c20) from t1; ++---------------------+--------------+----------------+-------------------+ +| c20 | charset(c20) | collation(c20) | coercibility(c20) | ++---------------------+--------------+----------------+-------------------+ +| 2019-12-03 06:00:00 | binary | binary | 5 | +| 2019-12-03 06:00:00 | binary | binary | 5 | ++---------------------+--------------+----------------+-------------------+ +select c21, charset(c21), collation(c21), coercibility(c21) from t1; ++------+--------------+--------------------+-------------------+ +| c21 | charset(c21) | collation(c21) | coercibility(c21) | ++------+--------------+--------------------+-------------------+ +| 9.5 | utf8mb4 | utf8mb4_general_ci | 2 | +| -9.5 | utf8mb4 | utf8mb4_general_ci | 2 | ++------+--------------+--------------------+-------------------+ +select c22, charset(c22), collation(c22), coercibility(c22) from t1; ++------+--------------+--------------------+-------------------+ +| c22 | charset(c22) | collation(c22) | coercibility(c22) | ++------+--------------+--------------------+-------------------+ +| 10.5 | utf8mb4 | utf8mb4_general_ci | 2 | +| 10.5 | utf8mb4 | utf8mb4_general_ci | 2 | ++------+--------------+--------------------+-------------------+ + +// test set_collation expr +// set_collation表达式检查charset与collate不匹配,报错 +// 下面的是等号表达式在类型推导时,进行aggregate collation发现collation不一致报错 +select _utf8mb4'a' collate utf8mb4_general_ci = _utf8mb4'A' collate utf8mb4_bin; +ERROR HY000: Illegal mix of collations +select _utf8mb4'a' collate utf8mb4_general_ci = _utf8mb4'A' collate utf8mb4_general_ci; ++---------------------------------------------------------------------------------+ +| _utf8mb4'a' collate utf8mb4_general_ci = _utf8mb4'A' collate utf8mb4_general_ci | ++---------------------------------------------------------------------------------+ +| 1 | ++---------------------------------------------------------------------------------+ +select _utf8mb4'a' collate utf8mb4_bin = _utf8mb4'A' collate utf8mb4_bin; ++-------------------------------------------------------------------+ +| _utf8mb4'a' collate utf8mb4_bin = _utf8mb4'A' collate utf8mb4_bin | ++-------------------------------------------------------------------+ +| 0 | ++-------------------------------------------------------------------+ + +drop table t1; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_concat.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_concat.result new file mode 100644 index 000000000..2bb6691d5 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_concat.result @@ -0,0 +1,129 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 varchar(2000), c2 varchar(2000)); +insert into t1 (c1, c2) values ('a', 'b'); +insert into t1 (c1, c2) values (repeat('a', 50), repeat('b', 50)); +insert into t1 (c1, c2) values (repeat('a', 100), repeat('b', 100)); +insert into t1 (c1, c2) values (repeat('a', 200), repeat('b', 300)); +insert into t1 (c1, c2) values (repeat('a', 1000), repeat('b', 800)); +insert into t1 (c1, c2) values ('a', 'b'); +insert into t1 (c1, c2) values (repeat('a', 50), repeat('b', 50)); +insert into t1 (c1, c2) values (repeat('a', 100), repeat('b', 100)); +insert into t1 (c1, c2) values (repeat('a', 200), repeat('b', 300)); + + +set @@ob_enable_plan_cache = 0; + +select concat('abc') from dual; ++---------------+ +| concat('abc') | ++---------------+ +| abc | ++---------------+ +select concat(NULL) from dual; ++--------------+ +| concat(NULL) | ++--------------+ +| NULL | ++--------------+ +select concat('abc', NULL) from dual; ++---------------------+ +| concat('abc', NULL) | ++---------------------+ +| NULL | ++---------------------+ +select concat(NULL, 'abc') from dual; ++---------------------+ +| concat(NULL, 'abc') | ++---------------------+ +| NULL | ++---------------------+ +select concat('def', 'abc') from dual; ++----------------------+ +| concat('def', 'abc') | ++----------------------+ +| defabc | ++----------------------+ +select concat(NULL, 'def', 'abc') from dual; ++----------------------------+ +| concat(NULL, 'def', 'abc') | ++----------------------------+ +| NULL | ++----------------------------+ +select concat('ABC', 'def', 'abc') from dual; ++-----------------------------+ +| concat('ABC', 'def', 'abc') | ++-----------------------------+ +| ABCdefabc | ++-----------------------------+ + +select concat(c1, c2) from t1; ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| concat(c1, c2) | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ab | +| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | +| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | +| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | +| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | +| ab | +| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | +| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | +| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +set group_concat_max_len=9223372036854775807; +select group_concat('x') UNION ALL select 1; ++-------------------+ +| group_concat('x') | ++-------------------+ +| x | +| 1 | ++-------------------+ + +set group_concat_max_len=20; +select group_concat(c1) from (select 'abcdefg' c1 union select '012345678910123456789' c1)a; ++----------------------+ +| group_concat(c1) | ++----------------------+ +| 01234567891012345678 | ++----------------------+ +select group_concat(c1) from (select 'abcdefg' c1 union select '012345678910123456' c1)a; ++----------------------+ +| group_concat(c1) | ++----------------------+ +| 012345678910123456,a | ++----------------------+ + +drop table if exists t111_var; +create table t111_var(c0 bigint ,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000)); +insert into t111_var values(1,repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000)); +insert into t111_var select c0+1,c1,c2,c3,c4 from t111_var; +insert into t111_var select c0+10,c1,c2,c3,c4 from t111_var; +insert into t111_var select c0+100,c1,c2,c3,c4 from t111_var; +insert into t111_var select c0+1000,c1,c2,c3,c4 from t111_var; +insert into t111_var select c0+10000,c1,c2,c3,c4 from t111_var; +insert into t111_var select c0+100000,c1,c2,c3,c4 from t111_var; +insert into t111_var select c0+1000000,c1,c2,c3,c4 from t111_var; +insert into t111_var select c0+10000000,c1,c2,c3,c4 from t111_var; +insert into t111_var select c0+100000000,c1,c2,c3,c4 from t111_var; +insert into t111_var values(null,null,null,null,null); +insert into t111_var select * from t111_var; +commit; + +set group_concat_max_len=10485; +select length(group_concat(c1)) from t111_var; ++--------------------------+ +| length(group_concat(c1)) | ++--------------------------+ +| 10485 | ++--------------------------+ +select group_concat(c1) from t111_var; ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| group_concat(c1) | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab,abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab,abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababa | ++-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +set group_concat_max_len=1024; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_conv.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_conv.result new file mode 100644 index 000000000..c895d571e --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_conv.result @@ -0,0 +1,47 @@ +result_format: 4 +set @@ob_enable_plan_cache = 0; + +select conv('a',16,2) from dual; ++----------------+ +| conv('a',16,2) | ++----------------+ +| 1010 | ++----------------+ +select conv('6E',18,8) from dual; ++-----------------+ +| conv('6E',18,8) | ++-----------------+ +| 172 | ++-----------------+ +select conv(-17,10,-18) from dual; ++------------------+ +| conv(-17,10,-18) | ++------------------+ +| -H | ++------------------+ +select conv(10+'10'+'10'+X'0a',10,10) from dual; ++--------------------------------+ +| conv(10+'10'+'10'+X'0a',10,10) | ++--------------------------------+ +| 40 | ++--------------------------------+ +select conv(null, 16, 2) from dual; ++-------------------+ +| conv(null, 16, 2) | ++-------------------+ +| NULL | ++-------------------+ +select conv('6E',null,8) from dual; ++-------------------+ +| conv('6E',null,8) | ++-------------------+ +| NULL | ++-------------------+ +select conv('6E',18, null) from dual; ++---------------------+ +| conv('6E',18, null) | ++---------------------+ +| NULL | ++---------------------+ + + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_date.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_date.result new file mode 100644 index 000000000..0306bbb8e --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_date.result @@ -0,0 +1,27 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 varchar(2000)); +insert into t1 values("2019-10-11"); + +set @@ob_enable_plan_cache = 0; +select date(c1) from t1; ++------------+ +| date(c1) | ++------------+ +| 2019-10-11 | ++------------+ +select date("2019-10-10") from dual; ++--------------------+ +| date("2019-10-10") | ++--------------------+ +| 2019-10-10 | ++--------------------+ +select date(null) from dual; ++------------+ +| date(null) | ++------------+ +| NULL | ++------------+ + + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_datediff.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_datediff.result new file mode 100644 index 000000000..f4377f273 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_datediff.result @@ -0,0 +1,55 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 varchar(30), c2 date, c3 date); +insert into t1 values("2019-10-11", "2019-01-10", "2018-01-01"); +insert into t1 values(null, "2019-01-10", null); +insert into t1 values("2019-10-11", "0000-00-00", "2019-10-19"); + +set @@ob_enable_plan_cache = 0; +select datediff(c1, c2), datediff(c2, c3) from t1; ++------------------+------------------+ +| datediff(c1, c2) | datediff(c2, c3) | ++------------------+------------------+ +| 274 | 374 | +| NULL | NULL | +| NULL | NULL | ++------------------+------------------+ +select datediff(20080701, "2008-08-01"); ++----------------------------------+ +| datediff(20080701, "2008-08-01") | ++----------------------------------+ +| -31 | ++----------------------------------+ +select datediff("20080701", "2012-05-25"); ++------------------------------------+ +| datediff("20080701", "2012-05-25") | ++------------------------------------+ +| -1424 | ++------------------------------------+ +select datediff("2012-05-25","20080701"); ++-----------------------------------+ +| datediff("2012-05-25","20080701") | ++-----------------------------------+ +| 1424 | ++-----------------------------------+ +select datediff(null,null); ++---------------------+ +| datediff(null,null) | ++---------------------+ +| NULL | ++---------------------+ +select datediff(null,"2012-05-25"); ++-----------------------------+ +| datediff(null,"2012-05-25") | ++-----------------------------+ +| NULL | ++-----------------------------+ +select datediff("2012-05-25","0000-00-00"); ++-------------------------------------+ +| datediff("2012-05-25","0000-00-00") | ++-------------------------------------+ +| NULL | ++-------------------------------------+ + + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_des_hex_str.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_des_hex_str.result new file mode 100644 index 000000000..d405bfe35 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_des_hex_str.result @@ -0,0 +1,45 @@ +result_format: 4 + + + +set @@ob_enable_plan_cache = 0; + +select des_hex_str("11053FFF80EAB6BADEE6F501"); ++-----------------------------------------+ +| des_hex_str("11053FFF80EAB6BADEE6F501") | ++-----------------------------------------+ +| 2004-04-04 04:04:04.000000 | ++-----------------------------------------+ +select des_hex_str("0C053FFFB8BD94DC9E8A8E8B40"); ++-------------------------------------------+ +| des_hex_str("0C053FFFB8BD94DC9E8A8E8B40") | ++-------------------------------------------+ +| 5.555 | ++-------------------------------------------+ +select des_hex_str("0C053FFFB8BD94DC9E8A8E8B40"); ++-------------------------------------------+ +| des_hex_str("0C053FFFB8BD94DC9E8A8E8B40") | ++-------------------------------------------+ +| 5.555 | ++-------------------------------------------+ +select des_hex_str("04053FFF05"); ++---------------------------+ +| des_hex_str("04053FFF05") | ++---------------------------+ +| 5 | ++---------------------------+ +select des_hex_str("0C053FFFADE4F6FCFED4F1F83F"); ++-------------------------------------------+ +| des_hex_str("0C053FFFADE4F6FCFED4F1F83F") | ++-------------------------------------------+ +| 1.111 | ++-------------------------------------------+ +select des_hex_str("0B053FFF8080C08504"); ++-----------------------------------+ +| des_hex_str("0B053FFF8080C08504") | ++-----------------------------------+ +| 5.5 | ++-----------------------------------+ +select des_hex_str(NULL); +ERROR HY000: Invalid argument + diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_dump.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_dump.result similarity index 54% rename from test/mysql_test/test_suite/static_engine/r/mysql/expr_dump.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_dump.result index ce273d38f..8881401fe 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_dump.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_dump.result @@ -1,13 +1,21 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; +result_format: 4 + + + set @@ob_enable_plan_cache = 0; + select dump(NULL); -dump(NULL) -NULL ++------------+ +| dump(NULL) | ++------------+ +| NULL | ++------------+ select dump(0.2); -dump(0.2) -"sign=1 exp=63 se=0xbf len=1 digits=[200000000,]" ++---------------------------------------------------+ +| dump(0.2) | ++---------------------------------------------------+ +| "sign=1 exp=63 se=0xbf len=1 digits=[200000000,]" | ++---------------------------------------------------+ select dump(2); ERROR 0A000: Not supported feature or function select dump('abcdef'); @@ -18,4 +26,4 @@ select dump(date'2020-01-01'); ERROR 0A000: Not supported feature or function select dump(timestamp'2020-01-01'); ERROR 0A000: Not supported feature or function -connection syscon; + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_empty_arg.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_empty_arg.result new file mode 100644 index 000000000..0375c5fb4 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_empty_arg.result @@ -0,0 +1,194 @@ +result_format: 4 +explain_protocol: 0 + +alter system set enable_async_syslog = false; + +set @@ob_enable_plan_cache = 0; +set @@ob_log_level='debug'; + +drop view if exists v1; +create view v1 as select connection_id() from dual limit 10; +desc v1; ++-----------------+------------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-----------------+------------------+------+-----+---------+-------+ +| connection_id() | int(10) unsigned | NO | | | | ++-----------------+------------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select utc_timestamp() from dual limit 10; +desc v1; ++-----------------+----------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-----------------+----------+------+-----+---------+-------+ +| utc_timestamp() | datetime | NO | | | | ++-----------------+----------+------+-----+---------+-------+ +drop view v1; +create view v1 as select utc_timestamp(3) from dual limit 10; +desc v1; ++------------------+-------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++------------------+-------------+------+-----+---------+-------+ +| utc_timestamp(3) | datetime(3) | NO | | | | ++------------------+-------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select current_timestamp() from dual limit 10; +desc v1; ++---------------------+----------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++---------------------+----------+------+-----+---------+-------+ +| current_timestamp() | datetime | NO | | | | ++---------------------+----------+------+-----+---------+-------+ +drop view v1; +create view v1 as select current_timestamp(3) from dual limit 10; +desc v1; ++----------------------+----------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++----------------------+----------+------+-----+---------+-------+ +| current_timestamp(3) | datetime | NO | | | | ++----------------------+----------+------+-----+---------+-------+ +drop view v1; +create view v1 as select sysdate() from dual limit 10; +desc v1; ++-----------+----------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-----------+----------+------+-----+---------+-------+ +| sysdate() | datetime | NO | | | | ++-----------+----------+------+-----+---------+-------+ +drop view v1; +create view v1 as select sysdate(3) from dual limit 10; +desc v1; ++------------+----------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++------------+----------+------+-----+---------+-------+ +| sysdate(3) | datetime | NO | | | | ++------------+----------+------+-----+---------+-------+ +drop view v1; +create view v1 as select cur_date() from dual limit 10; +desc v1; ++------------+------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++------------+------+------+-----+---------+-------+ +| cur_date() | date | NO | | | | ++------------+------+------+-----+---------+-------+ +drop view v1; +create view v1 as select curtime() from dual limit 10; +desc v1; ++-----------+------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-----------+------+------+-----+---------+-------+ +| curtime() | time | NO | | | | ++-----------+------+------+-----+---------+-------+ +drop view v1; +create view v1 as select current_user() from dual limit 10; +desc v1; ++----------------+--------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++----------------+--------------+------+-----+---------+-------+ +| current_user() | varchar(193) | NO | | | | ++----------------+--------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select database() from dual limit 10; +desc v1; ++------------+--------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++------------+--------------+------+-----+---------+-------+ +| database() | varchar(128) | NO | | | | ++------------+--------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select effective_tenant_id() from dual limit 10; +desc v1; ++-----------------------+---------------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-----------------------+---------------------+------+-----+---------+-------+ +| effective_tenant_id() | bigint(20) unsigned | NO | | | | ++-----------------------+---------------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select effective_tenant() from dual limit 10; +desc v1; ++--------------------+-------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++--------------------+-------------+------+-----+---------+-------+ +| effective_tenant() | varchar(64) | NO | | | | ++--------------------+-------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select found_rows() from dual limit 10; +desc v1; ++--------------+------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++--------------+------------+------+-----+---------+-------+ +| found_rows() | bigint(20) | NO | | | | ++--------------+------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select host_ip() from dual limit 10; +desc v1; ++-----------+-------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-----------+-------------+------+-----+---------+-------+ +| host_ip() | varchar(46) | NO | | | | ++-----------+-------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select last_execution_id() from dual limit 10; +desc v1; ++---------------------+--------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++---------------------+--------+------+-----+---------+-------+ +| last_execution_id() | bigint | NO | | | | ++---------------------+--------+------+-----+---------+-------+ +drop view v1; +create view v1 as select last_trace_id() from dual limit 10; +desc v1; ++-----------------+--------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-----------------+--------------+------+-----+---------+-------+ +| last_trace_id() | varchar(128) | NO | | | | ++-----------------+--------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select mysql_port() from dual limit 10; +desc v1; ++--------------+------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++--------------+------------+------+-----+---------+-------+ +| mysql_port() | bigint(20) | NO | | | | ++--------------+------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select rpc_port() from dual limit 10; +desc v1; ++------------+---------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++------------+---------+------+-----+---------+-------+ +| rpc_port() | int(11) | NO | | | | ++------------+---------+------+-----+---------+-------+ +drop view v1; +create view v1 as select row_count() from dual limit 10; +desc v1; ++-------------+------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-------------+------------+------+-----+---------+-------+ +| row_count() | bigint(20) | NO | | | | ++-------------+------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select uuid() from dual limit 10; +desc v1; ++--------+-------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++--------+-------------+------+-----+---------+-------+ +| uuid() | varchar(36) | NO | | | | ++--------+-------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select user() from dual limit 10; +desc v1; ++--------+--------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++--------+--------------+------+-----+---------+-------+ +| user() | varchar(193) | NO | | | | ++--------+--------------+------+-----+---------+-------+ +drop view v1; +create view v1 as select version() from dual limit 10; +desc v1; ++-----------+-------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++-----------+-------------+------+-----+---------+-------+ +| version() | varchar(18) | NO | | | | ++-----------+-------------+------+-----+---------+-------+ +drop view v1; + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_field.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_field.result new file mode 100644 index 000000000..123dcb43d --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_field.result @@ -0,0 +1,52 @@ +result_format: 4 + + + +set @@ob_enable_plan_cache = 0; + +select field(1, 3, 2, 1, NULL); ++-------------------------+ +| field(1, 3, 2, 1, NULL) | ++-------------------------+ +| 3 | ++-------------------------+ +select field(1, 3, 2, 1, NULL, 1); ++----------------------------+ +| field(1, 3, 2, 1, NULL, 1) | ++----------------------------+ +| 3 | ++----------------------------+ +select field(NULL, 3, 2, 1, NULL); ++----------------------------+ +| field(NULL, 3, 2, 1, NULL) | ++----------------------------+ +| 0 | ++----------------------------+ +select field(2, 3, NULL, 2, 1, NULL); ++-------------------------------+ +| field(2, 3, NULL, 2, 1, NULL) | ++-------------------------------+ +| 3 | ++-------------------------------+ +select field(1, 3, 2, "1", NULL); ++---------------------------+ +| field(1, 3, 2, "1", NULL) | ++---------------------------+ +| 3 | ++---------------------------+ +select field(1, 3, 2.2, "1", NULL); ++-----------------------------+ +| field(1, 3, 2.2, "1", NULL) | ++-----------------------------+ +| 3 | ++-----------------------------+ +select field("abc", 3.2, "def", 'abc'); ++---------------------------------+ +| field("abc", 3.2, "def", 'abc') | ++---------------------------------+ +| 2 | ++---------------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'abc' +Warning 1292 Truncated incorrect DOUBLE value: 'def' + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_get_sys_var.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_get_sys_var.result new file mode 100644 index 000000000..3e3a31db0 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_get_sys_var.result @@ -0,0 +1,54 @@ +result_format: 4 +explain_protocol: 0 + +set @@ob_enable_plan_cache = 0; + +// res type is string +select @@ob_log_level; ++----------------+ +| @@ob_log_level | ++----------------+ +| disabled | ++----------------+ +set @@ob_log_level='debug'; +select @@ob_log_level; ++----------------+ +| @@ob_log_level | ++----------------+ +| debug | ++----------------+ +set @@ob_log_level='info'; + +// res type is bool +set @@ob_enable_plan_cache = 1; +select @@ob_enable_plan_cache = 0; ++----------------------------+ +| @@ob_enable_plan_cache = 0 | ++----------------------------+ +| 0 | ++----------------------------+ +set @@ob_enable_plan_cache = 0; +select @@ob_enable_plan_cache = 0; ++----------------------------+ +| @@ob_enable_plan_cache = 0 | ++----------------------------+ +| 1 | ++----------------------------+ + +// res type is int +select @@ob_plan_cache_percentage; ++----------------------------+ +| @@ob_plan_cache_percentage | ++----------------------------+ +| 5 | ++----------------------------+ + +// test null +set character_set_results=NULL; +select @@character_set_results; ++-------------------------+ +| @@character_set_results | ++-------------------------+ +| NULL | ++-------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_get_user_var.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_get_user_var.result new file mode 100644 index 000000000..356943ede --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_get_user_var.result @@ -0,0 +1,57 @@ +result_format: 4 +alter system flush plan cache global; +set ob_enable_plan_cache = 0; + +set @var1 = NULL; +select @var1 from dual; ++-------+ +| @var1 | ++-------+ +| NULL | ++-------+ + +set @var1 = 1; +select @var1 from dual; ++-------+ +| @var1 | ++-------+ +| 1 | ++-------+ + +drop table if exists t1; +create table t1 (c1 int); +insert into t1 values(@var1); +select * from t1; ++------+ +| c1 | ++------+ +| 1 | ++------+ + +set @a=0,@b=0; +select @a:=10, @b:=1, @a > @b, @a < @b; ++--------+-------+---------+---------+ +| @a:=10 | @b:=1 | @a > @b | @a < @b | ++--------+-------+---------+---------+ +| 10 | 1 | 1 | 0 | ++--------+-------+---------+---------+ +select @a:="10", @b:="1", @a > @b, @a < @b; ++----------+---------+---------+---------+ +| @a:="10" | @b:="1" | @a > @b | @a < @b | ++----------+---------+---------+---------+ +| 10 | 1 | 1 | 0 | ++----------+---------+---------+---------+ +select @a:=10, @b:=2, @a > @b, @a < @b; ++--------+-------+---------+---------+ +| @a:=10 | @b:=2 | @a > @b | @a < @b | ++--------+-------+---------+---------+ +| 10 | 2 | 0 | 1 | ++--------+-------+---------+---------+ +select @a:="10", @b:="2", @a > @b, @a < @b; ++----------+---------+---------+---------+ +| @a:="10" | @b:="2" | @a > @b | @a < @b | ++----------+---------+---------+---------+ +| 10 | 2 | 1 | 0 | ++----------+---------+---------+---------+ + + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_is.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_is.result new file mode 100644 index 000000000..3575c7227 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_is.result @@ -0,0 +1,552 @@ +result_format: 4 +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 date, c20 date not null, + c21 datetime, c22 datetime not null, + c23 timestamp, c24 timestamp not null, + c25 varchar(30), c26 char(30)); + +select * from t1; ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----+------+-----+------+-----+------+------+ +| c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c16 | c17 | c18 | c19 | c20 | c21 | c22 | c23 | c24 | c25 | c26 | ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----+------+-----+------+-----+------+------+ ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+-----+------+-----+------+-----+------+------+ + +insert into t1 values(NULL, NULL, + NULL, NULL, + NULL, NULL, + NULL, NULL, + NULL, NULL, + NULL, NULL, + NULL, NULL, + NULL, NULL, + NULL, NULL, + NULL, '0000-00-00', + NULL, '0000-00-00 00:00:00', + NULL, '0000-00-00 00:00:00', + NULL, NULL); + +insert into t1 values(0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0.0, 0.0, + 0.0, 0.0, + 0.0, 0.0, + '0000-00-00', '0000-00-00', + '0000-00-00 00:00:00', '0000-00-00 00:00:00', + '0000-00-00 00:00:00', '0000-00-00 00:00:00', + '0', '0.0'); + +insert into t1 values(1, 1, + 1, 1, + 1, 1, + 1, 1, + 1, 1, + 1, 1, + -0.1, 0.1, + -0.1, 0.1, + -0.1, 0.1, + '0001-01-01', '0001-01-01', + '0001-01-01 00:00:00', '0001-01-01 00:00:00', + '0001-01-01 00:00:00', '0001-01-01 00:00:00', + '1', '1.0'); + +insert into t1 values(11, 11, + 11, 11, + 11, 11, + 11, 11, + 11, 11, + 11, 11, + 11.0, 11.0, + 11.0, 11.0, + 11.0, 11.0, + '2019-12-01 12:00:00', '2019-12-01 12:00:00', + '2019-12-01 12:00:00', '2019-12-01 12:00:00', + '2019-12-01 12:00:00', '2019-12-01 12:00:00', + '11', '11.0'); + +set @@ob_enable_plan_cache = 0; + + +select c1, c1 is true, c1 is false, c1 is null, c1 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c1 | c1 is true | c1 is false | c1 is null | c1 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c1, c1 is not true, c1 is not false, c1 is not null, c1 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c1 | c1 is not true | c1 is not false | c1 is not null | c1 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c2, c2 is true, c2 is false, c2 is null, c2 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c2 | c2 is true | c2 is false | c2 is null | c2 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c2, c2 is not true, c2 is not false, c2 is not null, c2 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c2 | c2 is not true | c2 is not false | c2 is not null | c2 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c3, c3 is true, c3 is false, c3 is null, c3 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c3 | c3 is true | c3 is false | c3 is null | c3 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c3, c3 is not true, c3 is not false, c3 is not null, c3 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c3 | c3 is not true | c3 is not false | c3 is not null | c3 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c4, c4 is true, c4 is false, c4 is null, c4 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c4 | c4 is true | c4 is false | c4 is null | c4 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c4, c4 is not true, c4 is not false, c4 is not null, c4 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c4 | c4 is not true | c4 is not false | c4 is not null | c4 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c5, c5 is true, c5 is false, c5 is null, c5 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c5 | c5 is true | c5 is false | c5 is null | c5 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c5, c5 is not true, c5 is not false, c5 is not null, c5 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c5 | c5 is not true | c5 is not false | c5 is not null | c5 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c6, c6 is true, c6 is false, c6 is null, c6 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c6 | c6 is true | c6 is false | c6 is null | c6 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c6, c6 is not true, c6 is not false, c6 is not null, c6 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c6 | c6 is not true | c6 is not false | c6 is not null | c6 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c7, c7 is true, c7 is false, c7 is null, c7 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c7 | c7 is true | c7 is false | c7 is null | c7 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c7, c7 is not true, c7 is not false, c7 is not null, c7 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c7 | c7 is not true | c7 is not false | c7 is not null | c7 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c8, c8 is true, c8 is false, c8 is null, c8 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c8 | c8 is true | c8 is false | c8 is null | c8 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c8, c8 is not true, c8 is not false, c8 is not null, c8 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c8 | c8 is not true | c8 is not false | c8 is not null | c8 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c9, c9 is true, c9 is false, c9 is null, c9 is unknown from t1; ++------+------------+-------------+------------+---------------+ +| c9 | c9 is true | c9 is false | c9 is null | c9 is unknown | ++------+------------+-------------+------------+---------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+------------+-------------+------------+---------------+ +select c9, c9 is not true, c9 is not false, c9 is not null, c9 is not unknown from t1; ++------+----------------+-----------------+----------------+-------------------+ +| c9 | c9 is not true | c9 is not false | c9 is not null | c9 is not unknown | ++------+----------------+-----------------+----------------+-------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+----------------+-----------------+----------------+-------------------+ +select c10, c10 is true, c10 is false, c10 is null, c10 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c10 | c10 is true | c10 is false | c10 is null | c10 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c10, c10 is not true, c10 is not false, c10 is not null, c10 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c10 | c10 is not true | c10 is not false | c10 is not null | c10 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c11, c11 is true, c11 is false, c11 is null, c11 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c11 | c11 is true | c11 is false | c11 is null | c11 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c11, c11 is not true, c11 is not false, c11 is not null, c11 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c11 | c11 is not true | c11 is not false | c11 is not null | c11 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c12, c12 is true, c12 is false, c12 is null, c12 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c12 | c12 is true | c12 is false | c12 is null | c12 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c12, c12 is not true, c12 is not false, c12 is not null, c12 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c12 | c12 is not true | c12 is not false | c12 is not null | c12 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c13, c13 is true, c13 is false, c13 is null, c13 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c13 | c13 is true | c13 is false | c13 is null | c13 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| -0.1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c13, c13 is not true, c13 is not false, c13 is not null, c13 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c13 | c13 is not true | c13 is not false | c13 is not null | c13 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| -0.1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c14, c14 is true, c14 is false, c14 is null, c14 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c14 | c14 is true | c14 is false | c14 is null | c14 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 0.1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c14, c14 is not true, c14 is not false, c14 is not null, c14 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c14 | c14 is not true | c14 is not false | c14 is not null | c14 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 0.1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c15, c15 is true, c15 is false, c15 is null, c15 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c15 | c15 is true | c15 is false | c15 is null | c15 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| -0.1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c15, c15 is not true, c15 is not false, c15 is not null, c15 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c15 | c15 is not true | c15 is not false | c15 is not null | c15 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| -0.1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c16, c16 is true, c16 is false, c16 is null, c16 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c16 | c16 is true | c16 is false | c16 is null | c16 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 0.1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c16, c16 is not true, c16 is not false, c16 is not null, c16 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c16 | c16 is not true | c16 is not false | c16 is not null | c16 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 0.1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c17, c17 is true, c17 is false, c17 is null, c17 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c17 | c17 is true | c17 is false | c17 is null | c17 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 0 | 0 | 1 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c17, c17 is not true, c17 is not false, c17 is not null, c17 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c17 | c17 is not true | c17 is not false | c17 is not null | c17 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 0 | 1 | 0 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c18, c18 is true, c18 is false, c18 is null, c18 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c18 | c18 is true | c18 is false | c18 is null | c18 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 0 | 0 | 1 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c18, c18 is not true, c18 is not false, c18 is not null, c18 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c18 | c18 is not true | c18 is not false | c18 is not null | c18 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 0 | 1 | 0 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c19, c19 is true, c19 is false, c19 is null, c19 is unknown from t1; ++------------+-------------+--------------+-------------+----------------+ +| c19 | c19 is true | c19 is false | c19 is null | c19 is unknown | ++------------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0000-00-00 | 0 | 1 | 0 | 0 | +| 0001-01-01 | 1 | 0 | 0 | 0 | +| 2019-12-01 | 1 | 0 | 0 | 0 | ++------------+-------------+--------------+-------------+----------------+ +select c19, c19 is not true, c19 is not false, c19 is not null, c19 is not unknown from t1; ++------------+-----------------+------------------+-----------------+--------------------+ +| c19 | c19 is not true | c19 is not false | c19 is not null | c19 is not unknown | ++------------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0000-00-00 | 1 | 0 | 1 | 1 | +| 0001-01-01 | 0 | 1 | 1 | 1 | +| 2019-12-01 | 0 | 1 | 1 | 1 | ++------------+-----------------+------------------+-----------------+--------------------+ +select c20, c20 is true, c20 is false, c20 is null, c20 is unknown from t1; ++------------+-------------+--------------+-------------+----------------+ +| c20 | c20 is true | c20 is false | c20 is null | c20 is unknown | ++------------+-------------+--------------+-------------+----------------+ +| 0000-00-00 | 0 | 1 | 0 | 0 | +| 0000-00-00 | 0 | 1 | 0 | 0 | +| 0001-01-01 | 1 | 0 | 0 | 0 | +| 2019-12-01 | 1 | 0 | 0 | 0 | ++------------+-------------+--------------+-------------+----------------+ +select c20, c20 is not true, c20 is not false, c20 is not null, c20 is not unknown from t1; ++------------+-----------------+------------------+-----------------+--------------------+ +| c20 | c20 is not true | c20 is not false | c20 is not null | c20 is not unknown | ++------------+-----------------+------------------+-----------------+--------------------+ +| 0000-00-00 | 1 | 0 | 1 | 1 | +| 0000-00-00 | 1 | 0 | 1 | 1 | +| 0001-01-01 | 0 | 1 | 1 | 1 | +| 2019-12-01 | 0 | 1 | 1 | 1 | ++------------+-----------------+------------------+-----------------+--------------------+ +select c21, c21 is true, c21 is false, c21 is null, c21 is unknown from t1; ++---------------------+-------------+--------------+-------------+----------------+ +| c21 | c21 is true | c21 is false | c21 is null | c21 is unknown | ++---------------------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0000-00-00 00:00:00 | 0 | 1 | 0 | 0 | +| 0001-01-01 00:00:00 | 1 | 0 | 0 | 0 | +| 2019-12-01 12:00:00 | 1 | 0 | 0 | 0 | ++---------------------+-------------+--------------+-------------+----------------+ +select c21, c21 is not true, c21 is not false, c21 is not null, c21 is not unknown from t1; ++---------------------+-----------------+------------------+-----------------+--------------------+ +| c21 | c21 is not true | c21 is not false | c21 is not null | c21 is not unknown | ++---------------------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0000-00-00 00:00:00 | 1 | 0 | 1 | 1 | +| 0001-01-01 00:00:00 | 0 | 1 | 1 | 1 | +| 2019-12-01 12:00:00 | 0 | 1 | 1 | 1 | ++---------------------+-----------------+------------------+-----------------+--------------------+ +select c22, c22 is true, c22 is false, c22 is null, c22 is unknown from t1; ++---------------------+-------------+--------------+-------------+----------------+ +| c22 | c22 is true | c22 is false | c22 is null | c22 is unknown | ++---------------------+-------------+--------------+-------------+----------------+ +| 0000-00-00 00:00:00 | 0 | 1 | 0 | 0 | +| 0000-00-00 00:00:00 | 0 | 1 | 0 | 0 | +| 0001-01-01 00:00:00 | 1 | 0 | 0 | 0 | +| 2019-12-01 12:00:00 | 1 | 0 | 0 | 0 | ++---------------------+-------------+--------------+-------------+----------------+ +select c22, c22 is not true, c22 is not false, c22 is not null, c22 is not unknown from t1; ++---------------------+-----------------+------------------+-----------------+--------------------+ +| c22 | c22 is not true | c22 is not false | c22 is not null | c22 is not unknown | ++---------------------+-----------------+------------------+-----------------+--------------------+ +| 0000-00-00 00:00:00 | 1 | 0 | 1 | 1 | +| 0000-00-00 00:00:00 | 1 | 0 | 1 | 1 | +| 0001-01-01 00:00:00 | 0 | 1 | 1 | 1 | +| 2019-12-01 12:00:00 | 0 | 1 | 1 | 1 | ++---------------------+-----------------+------------------+-----------------+--------------------+ +select c23, c23 is true, c23 is false, c23 is null, c23 is unknown from t1; ++---------------------+-------------+--------------+-------------+----------------+ +| c23 | c23 is true | c23 is false | c23 is null | c23 is unknown | ++---------------------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0000-00-00 00:00:00 | 0 | 1 | 0 | 0 | +| 0001-01-01 00:00:00 | 1 | 0 | 0 | 0 | +| 2019-12-01 12:00:00 | 1 | 0 | 0 | 0 | ++---------------------+-------------+--------------+-------------+----------------+ +select c23, c23 is not true, c23 is not false, c23 is not null, c23 is not unknown from t1; ++---------------------+-----------------+------------------+-----------------+--------------------+ +| c23 | c23 is not true | c23 is not false | c23 is not null | c23 is not unknown | ++---------------------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0000-00-00 00:00:00 | 1 | 0 | 1 | 1 | +| 0001-01-01 00:00:00 | 0 | 1 | 1 | 1 | +| 2019-12-01 12:00:00 | 0 | 1 | 1 | 1 | ++---------------------+-----------------+------------------+-----------------+--------------------+ +select c24, c24 is true, c24 is false, c24 is null, c24 is unknown from t1; ++---------------------+-------------+--------------+-------------+----------------+ +| c24 | c24 is true | c24 is false | c24 is null | c24 is unknown | ++---------------------+-------------+--------------+-------------+----------------+ +| 0000-00-00 00:00:00 | 0 | 1 | 0 | 0 | +| 0000-00-00 00:00:00 | 0 | 1 | 0 | 0 | +| 0001-01-01 00:00:00 | 1 | 0 | 0 | 0 | +| 2019-12-01 12:00:00 | 1 | 0 | 0 | 0 | ++---------------------+-------------+--------------+-------------+----------------+ +select c24, c24 is not true, c24 is not false, c24 is not null, c24 is not unknown from t1; ++---------------------+-----------------+------------------+-----------------+--------------------+ +| c24 | c24 is not true | c24 is not false | c24 is not null | c24 is not unknown | ++---------------------+-----------------+------------------+-----------------+--------------------+ +| 0000-00-00 00:00:00 | 1 | 0 | 1 | 1 | +| 0000-00-00 00:00:00 | 1 | 0 | 1 | 1 | +| 0001-01-01 00:00:00 | 0 | 1 | 1 | 1 | +| 2019-12-01 12:00:00 | 0 | 1 | 1 | 1 | ++---------------------+-----------------+------------------+-----------------+--------------------+ +select c25, c25 is true, c25 is false, c25 is null, c25 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c25 | c25 is true | c25 is false | c25 is null | c25 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0 | 0 | 1 | 0 | 0 | +| 1 | 1 | 0 | 0 | 0 | +| 11 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c25, c25 is not true, c25 is not false, c25 is not null, c25 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c25 | c25 is not true | c25 is not false | c25 is not null | c25 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0 | 1 | 0 | 1 | 1 | +| 1 | 0 | 1 | 1 | 1 | +| 11 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +select c26, c26 is true, c26 is false, c26 is null, c26 is unknown from t1; ++------+-------------+--------------+-------------+----------------+ +| c26 | c26 is true | c26 is false | c26 is null | c26 is unknown | ++------+-------------+--------------+-------------+----------------+ +| NULL | 0 | 0 | 1 | 1 | +| 0.0 | 0 | 1 | 0 | 0 | +| 1.0 | 1 | 0 | 0 | 0 | +| 11.0 | 1 | 0 | 0 | 0 | ++------+-------------+--------------+-------------+----------------+ +select c26, c26 is not true, c26 is not false, c26 is not null, c26 is not unknown from t1; ++------+-----------------+------------------+-----------------+--------------------+ +| c26 | c26 is not true | c26 is not false | c26 is not null | c26 is not unknown | ++------+-----------------+------------------+-----------------+--------------------+ +| NULL | 1 | 1 | 0 | 0 | +| 0.0 | 1 | 0 | 1 | 1 | +| 1.0 | 0 | 1 | 1 | 1 | +| 11.0 | 0 | 1 | 1 | 1 | ++------+-----------------+------------------+-----------------+--------------------+ +drop table t1; + + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_is_serving_tenant.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_is_serving_tenant.result new file mode 100644 index 000000000..556b1f2f1 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_is_serving_tenant.result @@ -0,0 +1,43 @@ +result_format: 4 + + + +set @@ob_enable_plan_cache = 0; + +select is_serving_tenant(host_ip(), rpc_port(), effective_tenant_id()); ++-----------------------------------------------------------------+ +| is_serving_tenant(host_ip(), rpc_port(), effective_tenant_id()) | ++-----------------------------------------------------------------+ +| 1 | ++-----------------------------------------------------------------+ +select is_serving_tenant(host_ip(), rpc_port(), 1); ++---------------------------------------------+ +| is_serving_tenant(host_ip(), rpc_port(), 1) | ++---------------------------------------------+ +| 1 | ++---------------------------------------------+ +select is_serving_tenant(host_ip(), rpc_port(), 888); ++-----------------------------------------------+ +| is_serving_tenant(host_ip(), rpc_port(), 888) | ++-----------------------------------------------+ +| 0 | ++-----------------------------------------------+ +select is_serving_tenant('abc', rpc_port(), effective_tenant_id()); ++-------------------------------------------------------------+ +| is_serving_tenant('abc', rpc_port(), effective_tenant_id()) | ++-------------------------------------------------------------+ +| 0 | ++-------------------------------------------------------------+ +select is_serving_tenant('abc', rpc_port(), 1); ++-----------------------------------------+ +| is_serving_tenant('abc', rpc_port(), 1) | ++-----------------------------------------+ +| 1 | ++-----------------------------------------+ +select is_serving_tenant('abc', rpc_port(), 888); ++-------------------------------------------+ +| is_serving_tenant('abc', rpc_port(), 888) | ++-------------------------------------------+ +| 0 | ++-------------------------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_length.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_length.result new file mode 100644 index 000000000..0b720ad86 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_length.result @@ -0,0 +1,195 @@ +result_format: 4 +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 bigint, c6 bigint unsigned, + c7 float, c8 float unsigned, + c9 double, c10 double unsigned, + c11 decimal, c12 decimal unsigned, + c13 date, c14 datetime, c15 timestamp, + c16 varchar(30), c17 char(30)); +select * from t1; ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+ +| c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c16 | c17 | ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+ +insert into t1 values(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); +insert into t1 values(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0000-00-00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', ''); +insert into t1 values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '0013-01-01', '0014-01-01', '0015-01-01', '16', '17'); +insert into t1 values(-1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, '0013-01-01', '0014-01-01 00:00:00', '0015-01-01 00:00:00', '-16', '-17'); +insert into t1 values(1234567, 7654321, -33, 44, 555555555, 666666666, 777.777, 8888.888, 99999.999999, 10000.00000, 1111, 121212121, '0013-01-01', '0014-01-01 00:00:11', '0015-01-01 00:00:11', 'sadfsadfdsafasasdf', 'asdffdsafadsfdsafsad'); + +set @@ob_enable_plan_cache = 0; + +select c1, length(c1) from t1; ++---------+------------+ +| c1 | length(c1) | ++---------+------------+ +| NULL | NULL | +| 0 | 1 | +| 1 | 1 | +| -1 | 2 | +| 1234567 | 7 | ++---------+------------+ +select c2, length(c2) from t1; ++---------+------------+ +| c2 | length(c2) | ++---------+------------+ +| NULL | NULL | +| 0 | 1 | +| 2 | 1 | +| 2 | 1 | +| 7654321 | 7 | ++---------+------------+ +select c3, length(c3) from t1; ++------+------------+ +| c3 | length(c3) | ++------+------------+ +| NULL | NULL | +| 0 | 1 | +| 3 | 1 | +| -3 | 2 | +| -33 | 3 | ++------+------------+ +select c4, length(c4) from t1; ++------+------------+ +| c4 | length(c4) | ++------+------------+ +| NULL | NULL | +| 0 | 1 | +| 4 | 1 | +| 4 | 1 | +| 44 | 2 | ++------+------------+ +select c5, length(c5) from t1; ++-----------+------------+ +| c5 | length(c5) | ++-----------+------------+ +| NULL | NULL | +| 0 | 1 | +| 5 | 1 | +| -5 | 2 | +| 555555555 | 9 | ++-----------+------------+ +select c6, length(c6) from t1; ++-----------+------------+ +| c6 | length(c6) | ++-----------+------------+ +| NULL | NULL | +| 0 | 1 | +| 6 | 1 | +| 6 | 1 | +| 666666666 | 9 | ++-----------+------------+ +select c7, length(c7) from t1; ++---------+------------+ +| c7 | length(c7) | ++---------+------------+ +| NULL | NULL | +| 0 | 1 | +| 7 | 1 | +| -7 | 2 | +| 777.777 | 7 | ++---------+------------+ +select c8, length(c8) from t1; ++---------+------------+ +| c8 | length(c8) | ++---------+------------+ +| NULL | NULL | +| 0 | 1 | +| 8 | 1 | +| 8 | 1 | +| 8888.89 | 7 | ++---------+------------+ +select c9, length(c9) from t1; ++--------------+------------+ +| c9 | length(c9) | ++--------------+------------+ +| NULL | NULL | +| 0 | 1 | +| 9 | 1 | +| -9 | 2 | +| 99999.999999 | 12 | ++--------------+------------+ +select c10, length(c10) from t1; ++-------+-------------+ +| c10 | length(c10) | ++-------+-------------+ +| NULL | NULL | +| 0 | 1 | +| 10 | 2 | +| 10 | 2 | +| 10000 | 5 | ++-------+-------------+ +select c11, length(c11) from t1; ++------+-------------+ +| c11 | length(c11) | ++------+-------------+ +| NULL | NULL | +| 0 | 1 | +| 11 | 2 | +| -11 | 3 | +| 1111 | 4 | ++------+-------------+ +select c12, length(c12) from t1; ++-----------+-------------+ +| c12 | length(c12) | ++-----------+-------------+ +| NULL | NULL | +| 0 | 1 | +| 12 | 2 | +| 12 | 2 | +| 121212121 | 9 | ++-----------+-------------+ +select c13, length(c13) from t1; ++------------+-------------+ +| c13 | length(c13) | ++------------+-------------+ +| NULL | NULL | +| 0000-00-00 | 10 | +| 0013-01-01 | 10 | +| 0013-01-01 | 10 | +| 0013-01-01 | 10 | ++------------+-------------+ +select c14, length(c14) from t1; ++---------------------+-------------+ +| c14 | length(c14) | ++---------------------+-------------+ +| NULL | NULL | +| 0000-00-00 00:00:00 | 19 | +| 0014-01-01 00:00:00 | 19 | +| 0014-01-01 00:00:00 | 19 | +| 0014-01-01 00:00:11 | 19 | ++---------------------+-------------+ +select c15, length(c15) from t1; ++---------------------+-------------+ +| c15 | length(c15) | ++---------------------+-------------+ +| NULL | NULL | +| 0000-00-00 00:00:00 | 19 | +| 0015-01-01 00:00:00 | 19 | +| 0015-01-01 00:00:00 | 19 | +| 0015-01-01 00:00:11 | 19 | ++---------------------+-------------+ +select c16, length(c16) from t1; ++--------------------+-------------+ +| c16 | length(c16) | ++--------------------+-------------+ +| NULL | NULL | +| | 0 | +| 16 | 2 | +| -16 | 3 | +| sadfsadfdsafasasdf | 18 | ++--------------------+-------------+ +select c17, length(c17) from t1; ++----------------------+-------------+ +| c17 | length(c17) | ++----------------------+-------------+ +| NULL | NULL | +| | 0 | +| 17 | 2 | +| -17 | 3 | +| asdffdsafadsfdsafsad | 20 | ++----------------------+-------------+ + +drop table t1; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_lnnvl.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_lnnvl.result new file mode 100644 index 000000000..f72274ae3 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_lnnvl.result @@ -0,0 +1,37 @@ +result_format: 4 + + + +set @@ob_enable_plan_cache = 0; + +select lnnvl(1) from dual; ++----------+ +| lnnvl(1) | ++----------+ +| 0 | ++----------+ +select lnnvl(-1) from dual; ++-----------+ +| lnnvl(-1) | ++-----------+ +| 0 | ++-----------+ +select lnnvl(0) from dual; ++----------+ +| lnnvl(0) | ++----------+ +| 1 | ++----------+ +select lnnvl(NULL) from dual; ++-------------+ +| lnnvl(NULL) | ++-------------+ +| 1 | ++-------------+ +select lnnvl('abc') from dual; ++--------------+ +| lnnvl('abc') | ++--------------+ +| 1 | ++--------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_location.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_location.result new file mode 100644 index 000000000..88553f358 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_location.result @@ -0,0 +1,110 @@ +result_format: 4 +explain_protocol: 0 +set @@ob_enable_plan_cache = 0; +// locate(substr, oristr), instr(oristr, substr) +select locate(null, 'a'), locate('a', null), locate('a', 'a', null); ++-------------------+-------------------+------------------------+ +| locate(null, 'a') | locate('a', null) | locate('a', 'a', null) | ++-------------------+-------------------+------------------------+ +| NULL | NULL | 0 | ++-------------------+-------------------+------------------------+ +select locate('abc', 'a'), instr('abc', 'a'); ++--------------------+-------------------+ +| locate('abc', 'a') | instr('abc', 'a') | ++--------------------+-------------------+ +| 0 | 1 | ++--------------------+-------------------+ +select locate('a', 'aaaa', 1), locate('a', 'aaaa', 0), locate('a', 'aaaa', -1); ++------------------------+------------------------+-------------------------+ +| locate('a', 'aaaa', 1) | locate('a', 'aaaa', 0) | locate('a', 'aaaa', -1) | ++------------------------+------------------------+-------------------------+ +| 1 | 0 | 0 | ++------------------------+------------------------+-------------------------+ +select locate('a', 'aaaa', '1.9'), locate('a', 'aaaa', '0.9'), locate('a', 'aaaa', '-1.9'); ++----------------------------+----------------------------+-----------------------------+ +| locate('a', 'aaaa', '1.9') | locate('a', 'aaaa', '0.9') | locate('a', 'aaaa', '-1.9') | ++----------------------------+----------------------------+-----------------------------+ +| 1 | 0 | 0 | ++----------------------------+----------------------------+-----------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '1.9' +Warning 1292 Truncated incorrect INTEGER value: '0.9' +Warning 1292 Truncated incorrect INTEGER value: '-1.9' +select locate('a', 'aaaa', '1.1'), locate('a', 'aaaa', '0.1'), locate('a', 'aaaa', '-1.1'); ++----------------------------+----------------------------+-----------------------------+ +| locate('a', 'aaaa', '1.1') | locate('a', 'aaaa', '0.1') | locate('a', 'aaaa', '-1.1') | ++----------------------------+----------------------------+-----------------------------+ +| 1 | 0 | 0 | ++----------------------------+----------------------------+-----------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '1.1' +Warning 1292 Truncated incorrect INTEGER value: '0.1' +Warning 1292 Truncated incorrect INTEGER value: '-1.1' +select locate('中', 'a中测试', 1); ++--------------------------------+ +| locate('中', 'a中测试', 1) | ++--------------------------------+ +| 2 | ++--------------------------------+ +select locate('a', 'abcdabcd', '2.a'); ++--------------------------------+ +| locate('a', 'abcdabcd', '2.a') | ++--------------------------------+ +| 5 | ++--------------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '2.a' +select locate('a', 'abcdabcd', 'a'); ++------------------------------+ +| locate('a', 'abcdabcd', 'a') | ++------------------------------+ +| 0 | ++------------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: 'a' +select locate('a', 'abcdabcd', '-2.a'); ++---------------------------------+ +| locate('a', 'abcdabcd', '-2.a') | ++---------------------------------+ +| 0 | ++---------------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-2.a' +select locate('a', 'a', 10000); ++-------------------------+ +| locate('a', 'a', 10000) | ++-------------------------+ +| 0 | ++-------------------------+ +select locate('a', 'a', 1000000000000000000000000000000000000000000000000000000000000000); ++------------------------------------------------------------------------------------+ +| locate('a', 'a', 1000000000000000000000000000000000000000000000000000000000000000) | ++------------------------------------------------------------------------------------+ +| 0 | ++------------------------------------------------------------------------------------+ + +select instr('abc', 'a'), instr('aaaa','a'), instr('a中测试', '中'), instr(null, 'a'), instr('a', null); ++-------------------+-------------------+----------------------------+------------------+------------------+ +| instr('abc', 'a') | instr('aaaa','a') | instr('a中测试', '中') | instr(null, 'a') | instr('a', null) | ++-------------------+-------------------+----------------------------+------------------+------------------+ +| 1 | 1 | 2 | NULL | NULL | ++-------------------+-------------------+----------------------------+------------------+------------------+ + +select reverse(''), reverse(null), reverse('你好abc中文'), reverse(12345.123), reverse(null); ++-------------+---------------+----------------------------+--------------------+---------------+ +| reverse('') | reverse(null) | reverse('你好abc中文') | reverse(12345.123) | reverse(null) | ++-------------+---------------+----------------------------+--------------------+---------------+ +| | NULL | 文中cba好你 | 321.54321 | NULL | ++-------------+---------------+----------------------------+--------------------+---------------+ + +drop table if exists t1; +create table t1(c1 bigint unsigned); +insert into t1 values(locate('a','b',9223372036854775808)); +select * from t1; ++------+ +| c1 | ++------+ +| 0 | ++------+ +drop table t1; + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_lower_upper.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_lower_upper.result new file mode 100644 index 000000000..e37d303ec --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_lower_upper.result @@ -0,0 +1,195 @@ +result_format: 4 +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 bigint, c6 bigint unsigned, + c7 float, c8 float unsigned, + c9 double, c10 double unsigned, + c11 decimal, c12 decimal unsigned, + c13 date, c14 datetime, c15 timestamp, + c16 varchar(60), c17 char(60)); +select * from t1; ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+ +| c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c16 | c17 | ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+ ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+ +insert into t1 values(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); +insert into t1 values(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0000-00-00', '0000-00-00 00:00:00', '0000-00-00 00:00:00', '', ''); +insert into t1 values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '0013-01-01', '0014-01-01', '0015-01-01', '16abcDeFG00', '16abcDeFG00'); +insert into t1 values(-1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, '0013-01-01', '0014-01-01 00:00:00', '0015-01-01 00:00:00', '=[]-+,/;<>?.*~!@#$%^&*()', '=[]-+,/;<>?.*~!@#$%^&*()'); +insert into t1 values(1234567, 7654321, -33, 44, 555555555, 666666666, 777.777, 8888.888, 99999.999999, 10000.00000, 1111, 121212121, '0013-01-01', '0014-01-01 00:00:11', '0015-01-01 00:00:11', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); + +set @@ob_enable_plan_cache = 0; + +select c1, lower(c1), upper(c1) from t1; ++---------+-----------+-----------+ +| c1 | lower(c1) | upper(c1) | ++---------+-----------+-----------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 1 | 1 | 1 | +| -1 | -1 | -1 | +| 1234567 | 1234567 | 1234567 | ++---------+-----------+-----------+ +select c2, lower(c2), upper(c2) from t1; ++---------+-----------+-----------+ +| c2 | lower(c2) | upper(c2) | ++---------+-----------+-----------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| 7654321 | 7654321 | 7654321 | ++---------+-----------+-----------+ +select c3, lower(c3), upper(c3) from t1; ++------+-----------+-----------+ +| c3 | lower(c3) | upper(c3) | ++------+-----------+-----------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 3 | 3 | 3 | +| -3 | -3 | -3 | +| -33 | -33 | -33 | ++------+-----------+-----------+ +select c4, lower(c4), upper(c4) from t1; ++------+-----------+-----------+ +| c4 | lower(c4) | upper(c4) | ++------+-----------+-----------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 4 | 4 | 4 | +| 4 | 4 | 4 | +| 44 | 44 | 44 | ++------+-----------+-----------+ +select c5, lower(c5), upper(c5) from t1; ++-----------+-----------+-----------+ +| c5 | lower(c5) | upper(c5) | ++-----------+-----------+-----------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 5 | 5 | 5 | +| -5 | -5 | -5 | +| 555555555 | 555555555 | 555555555 | ++-----------+-----------+-----------+ +select c6, lower(c6), upper(c6) from t1; ++-----------+-----------+-----------+ +| c6 | lower(c6) | upper(c6) | ++-----------+-----------+-----------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 6 | 6 | 6 | +| 6 | 6 | 6 | +| 666666666 | 666666666 | 666666666 | ++-----------+-----------+-----------+ +select c7, lower(c7), upper(c7) from t1; ++---------+-----------+-----------+ +| c7 | lower(c7) | upper(c7) | ++---------+-----------+-----------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 7 | 7 | 7 | +| -7 | -7 | -7 | +| 777.777 | 777.777 | 777.777 | ++---------+-----------+-----------+ +select c8, lower(c8), upper(c8) from t1; ++---------+-----------+-----------+ +| c8 | lower(c8) | upper(c8) | ++---------+-----------+-----------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 8 | 8 | 8 | +| 8 | 8 | 8 | +| 8888.89 | 8888.89 | 8888.89 | ++---------+-----------+-----------+ +select c9, lower(c9), upper(c9) from t1; ++--------------+--------------+--------------+ +| c9 | lower(c9) | upper(c9) | ++--------------+--------------+--------------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 9 | 9 | 9 | +| -9 | -9 | -9 | +| 99999.999999 | 99999.999999 | 99999.999999 | ++--------------+--------------+--------------+ +select c10, lower(c10), upper(c10) from t1; ++-------+------------+------------+ +| c10 | lower(c10) | upper(c10) | ++-------+------------+------------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 10 | 10 | 10 | +| 10 | 10 | 10 | +| 10000 | 10000 | 10000 | ++-------+------------+------------+ +select c11, lower(c11), upper(c11) from t1; ++------+------------+------------+ +| c11 | lower(c11) | upper(c11) | ++------+------------+------------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 11 | 11 | 11 | +| -11 | -11 | -11 | +| 1111 | 1111 | 1111 | ++------+------------+------------+ +select c12, lower(c12), upper(c12) from t1; ++-----------+------------+------------+ +| c12 | lower(c12) | upper(c12) | ++-----------+------------+------------+ +| NULL | NULL | NULL | +| 0 | 0 | 0 | +| 12 | 12 | 12 | +| 12 | 12 | 12 | +| 121212121 | 121212121 | 121212121 | ++-----------+------------+------------+ +select c13, lower(c13), upper(c13) from t1; ++------------+------------+------------+ +| c13 | lower(c13) | upper(c13) | ++------------+------------+------------+ +| NULL | NULL | NULL | +| 0000-00-00 | 0000-00-00 | 0000-00-00 | +| 0013-01-01 | 0013-01-01 | 0013-01-01 | +| 0013-01-01 | 0013-01-01 | 0013-01-01 | +| 0013-01-01 | 0013-01-01 | 0013-01-01 | ++------------+------------+------------+ +select c14, lower(c14), upper(c14) from t1; ++---------------------+---------------------+---------------------+ +| c14 | lower(c14) | upper(c14) | ++---------------------+---------------------+---------------------+ +| NULL | NULL | NULL | +| 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | +| 0014-01-01 00:00:00 | 0014-01-01 00:00:00 | 0014-01-01 00:00:00 | +| 0014-01-01 00:00:00 | 0014-01-01 00:00:00 | 0014-01-01 00:00:00 | +| 0014-01-01 00:00:11 | 0014-01-01 00:00:11 | 0014-01-01 00:00:11 | ++---------------------+---------------------+---------------------+ +select c15, lower(c15), upper(c15) from t1; ++---------------------+---------------------+---------------------+ +| c15 | lower(c15) | upper(c15) | ++---------------------+---------------------+---------------------+ +| NULL | NULL | NULL | +| 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 | +| 0015-01-01 00:00:00 | 0015-01-01 00:00:00 | 0015-01-01 00:00:00 | +| 0015-01-01 00:00:00 | 0015-01-01 00:00:00 | 0015-01-01 00:00:00 | +| 0015-01-01 00:00:11 | 0015-01-01 00:00:11 | 0015-01-01 00:00:11 | ++---------------------+---------------------+---------------------+ +select c16, lower(c16), upper(c16) from t1; ++------------------------------------------------------+------------------------------------------------------+------------------------------------------------------+ +| c16 | lower(c16) | upper(c16) | ++------------------------------------------------------+------------------------------------------------------+------------------------------------------------------+ +| NULL | NULL | NULL | +| | | | +| 16abcDeFG00 | 16abcdefg00 | 16ABCDEFG00 | +| =[]-+,/;<>?.*~!@#$%^&*() | =[]-+,/;<>?.*~!@#$%^&*() | =[]-+,/;<>?.*~!@#$%^&*() | +| abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ | abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz | ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ | ++------------------------------------------------------+------------------------------------------------------+------------------------------------------------------+ +select c17, lower(c17), upper(c17) from t1; ++------------------------------------------------------+------------------------------------------------------+------------------------------------------------------+ +| c17 | lower(c17) | upper(c17) | ++------------------------------------------------------+------------------------------------------------------+------------------------------------------------------+ +| NULL | NULL | NULL | +| | | | +| 16abcDeFG00 | 16abcdefg00 | 16ABCDEFG00 | +| =[]-+,/;<>?.*~!@#$%^&*() | =[]-+,/;<>?.*~!@#$%^&*() | =[]-+,/;<>?.*~!@#$%^&*() | +| abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ | abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz | ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ | ++------------------------------------------------------+------------------------------------------------------+------------------------------------------------------+ + +drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_nextval.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nextval.result similarity index 70% rename from test/mysql_test/test_suite/static_engine/r/mysql/expr_nextval.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nextval.result index b31f63813..ca528a9e1 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_nextval.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nextval.result @@ -1,5 +1,5 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; +result_format: 4 + drop table if exists t1; create table t1 (c1 int, c2 int); drop table if exists t2; @@ -10,15 +10,20 @@ drop table if exists t4; create table t4 (c1 float auto_increment primary key, c2 int); drop table if exists t5; create table t5 (c1 double auto_increment primary key, c2 int); -connection syscon; -connection default; + + set @@ob_enable_plan_cache = 0; + insert into t1 (c1, c2) values (1, 1); insert into t1 (c1, c2) values (1, 1); select * from t1; -c1 c2 -1 1 -1 1 ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 1 | ++------+------+ + explain insert into t2 (c1, c2) values ('0', '1'); Query Plan ==================================== @@ -35,6 +40,7 @@ Outputs & filters: 1 - output([__values.c1], [__values.c2]), filter(nil) values({'0', '1'}) + insert into t2 (c1, c2) values (NULL, '1'); insert into t2 (c1, c2) values (0, '2'); insert into t2 (c2) values ('3'); @@ -49,18 +55,22 @@ insert into t2 (c1, c2) values ('abc', '11'); ERROR HY000: Incorrect integer value insert into t2 (c1, c2) values (0.0, '12'); select * from t2; -c1 c2 --14 10 --12 9 --10 8 --5 4 -1 1 -2 2 -3 3 -10 5 -1000011 6 -1000012 7 -1000013 12 ++---------+------+ +| c1 | c2 | ++---------+------+ +| -14 | 10 | +| -12 | 9 | +| -10 | 8 | +| -5 | 4 | +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 10 | 5 | +| 1000011 | 6 | +| 1000012 | 7 | +| 1000013 | 12 | ++---------+------+ + insert into t3 (c1, c2) values (NULL, '1'); insert into t3 (c1, c2) values (-1, '2'); ERROR 22003: Out of range value for column @@ -68,11 +78,15 @@ insert into t3 (c1, c2) values (0, '3'); insert into t3 (c1, c2) values (10, '4'); insert into t3 (c1, c2) values (0, '5'); select * from t3; -c1 c2 -1 1 -2 3 -10 4 -1000011 5 ++---------+------+ +| c1 | c2 | ++---------+------+ +| 1 | 1 | +| 2 | 3 | +| 10 | 4 | +| 1000011 | 5 | ++---------+------+ + insert into t4 (c1, c2) values (NULL, '1'); insert into t4 (c1, c2) values (0, '2'); insert into t4 (c1, c2) values ('0', '3'); @@ -82,15 +96,19 @@ insert into t4 (c1, c2) values (0, '6'); insert into t4 (c1, c2) values (10.5, '7'); insert into t4 (c1, c2) values (0, '8'); select * from t4; -c1 c2 --10.12 5 -1 1 -2 2 -3 3 -4 4 -5 6 -10.5 7 -167784 8 ++--------+------+ +| c1 | c2 | ++--------+------+ +| -10.12 | 5 | +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 6 | +| 10.5 | 7 | +| 167784 | 8 | ++--------+------+ + insert into t5 (c1, c2) values (NULL, '1'); insert into t5 (c1, c2) values (0, '2'); insert into t5 (c1, c2) values ('0', '3'); @@ -100,22 +118,29 @@ insert into t5 (c1, c2) values (0, '6'); insert into t5 (c1, c2) values (10.5, '7'); insert into t5 (c1, c2) values (0, '8'); select * from t5; -c1 c2 --10.12 5 -1 1 -2 2 -3 3 -4 4 -5 6 -10.5 7 -1000012 8 ++---------+------+ +| c1 | c2 | ++---------+------+ +| -10.12 | 5 | +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 6 | +| 10.5 | 7 | +| 1000012 | 8 | ++---------+------+ + set sql_mode = ''; insert into t3 (c1, c2) values ("abc", '6'); select * from t3; -c1 c2 -1 1 -2 3 -10 4 -1000011 5 -1000012 6 -connection syscon; ++---------+------+ +| c1 | c2 | ++---------+------+ +| 1 | 1 | +| 2 | 3 | +| 10 | 4 | +| 1000011 | 5 | +| 1000012 | 6 | ++---------+------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_not.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_not.result new file mode 100644 index 000000000..3ebf63ecf --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_not.result @@ -0,0 +1,277 @@ +result_format: 4 + +alter system flush plan cache global; + + +drop table if exists t; +create table t (t1 tinyint, + t2 smallint, + t3 mediumint, + t4 integer, + t5 bigint, + t6 tinyint unsigned, + t7 smallint unsigned, + t8 mediumint unsigned, + t9 integer unsigned, + t10 bigint unsigned, + t11 float, + t12 float unsigned, + t13 double, + t14 double unsigned, + t15 number, + t16 number unsigned, + t17 datetime, + t18 timestamp, + t19 date, + t20 time, + t21 year, + t22 varchar(255), + t23 char(255), + t24 tinytext, + t25 mediumtext, + t26 longtext, + t27 bit, + t28 enum('a', 'b', 'c'), + t29 set('a', 'b', 'c')); + +insert into t values (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, + '1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '0.8', '0.9', '1.0', '1.1', + '1.2', 1, 'b', 'b'); +insert into t(t1) values (null); + + +alter system flush plan cache global; + + +set ob_enable_plan_cache = false; +select not 1 from dual; ++-------+ +| not 1 | ++-------+ +| 0 | ++-------+ +select not 1.0 from dual; ++---------+ +| not 1.0 | ++---------+ +| 0 | ++---------+ +select not null from dual; ++----------+ +| not null | ++----------+ +| NULL | ++----------+ +select not 'hello' from dual; ++-------------+ +| not 'hello' | ++-------------+ +| 1 | ++-------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'hello' + +select not t1 from t; ++--------+ +| not t1 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t2 from t; ++--------+ +| not t2 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t3 from t; ++--------+ +| not t3 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t4 from t; ++--------+ +| not t4 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t5 from t; ++--------+ +| not t5 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t6 from t; ++--------+ +| not t6 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t7 from t; ++--------+ +| not t7 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t8 from t; ++--------+ +| not t8 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t9 from t; ++--------+ +| not t9 | ++--------+ +| 0 | +| NULL | ++--------+ +select not t10 from t; ++---------+ +| not t10 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t11 from t; ++---------+ +| not t11 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t12 from t; ++---------+ +| not t12 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t13 from t; ++---------+ +| not t13 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t14 from t; ++---------+ +| not t14 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t15 from t; ++---------+ +| not t15 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t16 from t; ++---------+ +| not t16 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t17 from t; ++---------+ +| not t17 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t18 from t; ++---------+ +| not t18 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t19 from t; ++---------+ +| not t19 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t20 from t; ++---------+ +| not t20 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t21 from t; ++---------+ +| not t21 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t22 from t; ++---------+ +| not t22 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t23 from t; ++---------+ +| not t23 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t24 from t; ++---------+ +| not t24 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t25 from t; ++---------+ +| not t25 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t26 from t; ++---------+ +| not t26 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t27 from t; ++---------+ +| not t27 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t28 from t; ++---------+ +| not t28 | ++---------+ +| 0 | +| NULL | ++---------+ +select not t29 from t; ++---------+ +| not t29 | ++---------+ +| 0 | +| NULL | ++---------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nullif_ifnull.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nullif_ifnull.result new file mode 100644 index 000000000..993de1868 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nullif_ifnull.result @@ -0,0 +1,7603 @@ +result_format: 4 +explain_protocol: 0 + +set @@ob_enable_plan_cache = 0; +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30), c_null int); + +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5', null); +insert into t1 values(-1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -3.5, 4.5, + -5.5, 6.5, + -7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '-9.5', '10.5', null); + +select nullif(null, null), nullif(1, null), nullif(null, 1); ++--------------------+-----------------+-----------------+ +| nullif(null, null) | nullif(1, null) | nullif(null, 1) | ++--------------------+-----------------+-----------------+ +| NULL | 1 | NULL | ++--------------------+-----------------+-----------------+ +select ifnull(null, null), ifnull(1, null), ifnull(null, 1); ++--------------------+-----------------+-----------------+ +| ifnull(null, null) | ifnull(1, null) | ifnull(null, 1) | ++--------------------+-----------------+-----------------+ +| NULL | 1 | 1 | ++--------------------+-----------------+-----------------+ +select c1, c1, nullif(c1, c1), ifnull(c1, c1) from t1; ++------+------+----------------+----------------+ +| c1 | c1 | nullif(c1, c1) | ifnull(c1, c1) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c2, nullif(c1, c2), ifnull(c1, c2) from t1; ++------+------+----------------+----------------+ +| c1 | c2 | nullif(c1, c2) | ifnull(c1, c2) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c3, nullif(c1, c3), ifnull(c1, c3) from t1; ++------+------+----------------+----------------+ +| c1 | c3 | nullif(c1, c3) | ifnull(c1, c3) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c4, nullif(c1, c4), ifnull(c1, c4) from t1; ++------+------+----------------+----------------+ +| c1 | c4 | nullif(c1, c4) | ifnull(c1, c4) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c5, nullif(c1, c5), ifnull(c1, c5) from t1; ++------+------+----------------+----------------+ +| c1 | c5 | nullif(c1, c5) | ifnull(c1, c5) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c6, nullif(c1, c6), ifnull(c1, c6) from t1; ++------+------+----------------+----------------+ +| c1 | c6 | nullif(c1, c6) | ifnull(c1, c6) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c7, nullif(c1, c7), ifnull(c1, c7) from t1; ++------+------+----------------+----------------+ +| c1 | c7 | nullif(c1, c7) | ifnull(c1, c7) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c8, nullif(c1, c8), ifnull(c1, c8) from t1; ++------+------+----------------+----------------+ +| c1 | c8 | nullif(c1, c8) | ifnull(c1, c8) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c9, nullif(c1, c9), ifnull(c1, c9) from t1; ++------+------+----------------+----------------+ +| c1 | c9 | nullif(c1, c9) | ifnull(c1, c9) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c10, nullif(c1, c10), ifnull(c1, c10) from t1; ++------+------+-----------------+-----------------+ +| c1 | c10 | nullif(c1, c10) | ifnull(c1, c10) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c11, nullif(c1, c11), ifnull(c1, c11) from t1; ++------+------+-----------------+-----------------+ +| c1 | c11 | nullif(c1, c11) | ifnull(c1, c11) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c12, nullif(c1, c12), ifnull(c1, c12) from t1; ++------+------+-----------------+-----------------+ +| c1 | c12 | nullif(c1, c12) | ifnull(c1, c12) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c13, nullif(c1, c13), ifnull(c1, c13) from t1; ++------+------+-----------------+-----------------+ +| c1 | c13 | nullif(c1, c13) | ifnull(c1, c13) | ++------+------+-----------------+-----------------+ +| 1 | 3.5 | 1 | 1 | +| -1 | -3.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c14, nullif(c1, c14), ifnull(c1, c14) from t1; ++------+------+-----------------+-----------------+ +| c1 | c14 | nullif(c1, c14) | ifnull(c1, c14) | ++------+------+-----------------+-----------------+ +| 1 | 4.5 | 1 | 1 | +| -1 | 4.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c15, nullif(c1, c15), ifnull(c1, c15) from t1; ++------+------+-----------------+-----------------+ +| c1 | c15 | nullif(c1, c15) | ifnull(c1, c15) | ++------+------+-----------------+-----------------+ +| 1 | 5.5 | 1 | 1 | +| -1 | -5.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c16, nullif(c1, c16), ifnull(c1, c16) from t1; ++------+------+-----------------+-----------------+ +| c1 | c16 | nullif(c1, c16) | ifnull(c1, c16) | ++------+------+-----------------+-----------------+ +| 1 | 6.5 | 1 | 1 | +| -1 | 6.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c17, nullif(c1, c17), ifnull(c1, c17) from t1; ++------+------+-----------------+-----------------+ +| c1 | c17 | nullif(c1, c17) | ifnull(c1, c17) | ++------+------+-----------------+-----------------+ +| 1 | 8 | 1 | 1 | +| -1 | -8 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c18, nullif(c1, c18), ifnull(c1, c18) from t1; ++------+------+-----------------+-----------------+ +| c1 | c18 | nullif(c1, c18) | ifnull(c1, c18) | ++------+------+-----------------+-----------------+ +| 1 | 9 | 1 | 1 | +| -1 | 9 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c19, nullif(c1, c19), ifnull(c1, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c1 | c19 | nullif(c1, c19) | ifnull(c1, c19) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c20, nullif(c1, c20), ifnull(c1, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c1 | c20 | nullif(c1, c20) | ifnull(c1, c20) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c21, nullif(c1, c21), ifnull(c1, c21) from t1; ++------+------+-----------------+-----------------+ +| c1 | c21 | nullif(c1, c21) | ifnull(c1, c21) | ++------+------+-----------------+-----------------+ +| 1 | 9.5 | 1 | 1 | +| -1 | -9.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c1, c22, nullif(c1, c22), ifnull(c1, c22) from t1; ++------+------+-----------------+-----------------+ +| c1 | c22 | nullif(c1, c22) | ifnull(c1, c22) | ++------+------+-----------------+-----------------+ +| 1 | 10.5 | 1 | 1 | +| -1 | 10.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c1, nullif(c1, c1) from t1; ++------+----------------+ +| c1 | nullif(c1, c1) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c2, c1, nullif(c2, c1), ifnull(c2, c1) from t1; ++------+------+----------------+----------------+ +| c2 | c1 | nullif(c2, c1) | ifnull(c2, c1) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c2, nullif(c2, c2), ifnull(c2, c2) from t1; ++------+------+----------------+----------------+ +| c2 | c2 | nullif(c2, c2) | ifnull(c2, c2) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c3, nullif(c2, c3), ifnull(c2, c3) from t1; ++------+------+----------------+----------------+ +| c2 | c3 | nullif(c2, c3) | ifnull(c2, c3) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c4, nullif(c2, c4), ifnull(c2, c4) from t1; ++------+------+----------------+----------------+ +| c2 | c4 | nullif(c2, c4) | ifnull(c2, c4) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c5, nullif(c2, c5), ifnull(c2, c5) from t1; ++------+------+----------------+----------------+ +| c2 | c5 | nullif(c2, c5) | ifnull(c2, c5) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c6, nullif(c2, c6), ifnull(c2, c6) from t1; ++------+------+----------------+----------------+ +| c2 | c6 | nullif(c2, c6) | ifnull(c2, c6) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c7, nullif(c2, c7), ifnull(c2, c7) from t1; ++------+------+----------------+----------------+ +| c2 | c7 | nullif(c2, c7) | ifnull(c2, c7) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c8, nullif(c2, c8), ifnull(c2, c8) from t1; ++------+------+----------------+----------------+ +| c2 | c8 | nullif(c2, c8) | ifnull(c2, c8) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c9, nullif(c2, c9), ifnull(c2, c9) from t1; ++------+------+----------------+----------------+ +| c2 | c9 | nullif(c2, c9) | ifnull(c2, c9) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c10, nullif(c2, c10), ifnull(c2, c10) from t1; ++------+------+-----------------+-----------------+ +| c2 | c10 | nullif(c2, c10) | ifnull(c2, c10) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c11, nullif(c2, c11), ifnull(c2, c11) from t1; ++------+------+-----------------+-----------------+ +| c2 | c11 | nullif(c2, c11) | ifnull(c2, c11) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c12, nullif(c2, c12), ifnull(c2, c12) from t1; ++------+------+-----------------+-----------------+ +| c2 | c12 | nullif(c2, c12) | ifnull(c2, c12) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c13, nullif(c2, c13), ifnull(c2, c13) from t1; ++------+------+-----------------+-----------------+ +| c2 | c13 | nullif(c2, c13) | ifnull(c2, c13) | ++------+------+-----------------+-----------------+ +| 2 | 3.5 | 2 | 2 | +| 2 | -3.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c14, nullif(c2, c14), ifnull(c2, c14) from t1; ++------+------+-----------------+-----------------+ +| c2 | c14 | nullif(c2, c14) | ifnull(c2, c14) | ++------+------+-----------------+-----------------+ +| 2 | 4.5 | 2 | 2 | +| 2 | 4.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c15, nullif(c2, c15), ifnull(c2, c15) from t1; ++------+------+-----------------+-----------------+ +| c2 | c15 | nullif(c2, c15) | ifnull(c2, c15) | ++------+------+-----------------+-----------------+ +| 2 | 5.5 | 2 | 2 | +| 2 | -5.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c16, nullif(c2, c16), ifnull(c2, c16) from t1; ++------+------+-----------------+-----------------+ +| c2 | c16 | nullif(c2, c16) | ifnull(c2, c16) | ++------+------+-----------------+-----------------+ +| 2 | 6.5 | 2 | 2 | +| 2 | 6.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c17, nullif(c2, c17), ifnull(c2, c17) from t1; ++------+------+-----------------+-----------------+ +| c2 | c17 | nullif(c2, c17) | ifnull(c2, c17) | ++------+------+-----------------+-----------------+ +| 2 | 8 | 2 | 2 | +| 2 | -8 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c18, nullif(c2, c18), ifnull(c2, c18) from t1; ++------+------+-----------------+-----------------+ +| c2 | c18 | nullif(c2, c18) | ifnull(c2, c18) | ++------+------+-----------------+-----------------+ +| 2 | 9 | 2 | 2 | +| 2 | 9 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c19, nullif(c2, c19), ifnull(c2, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c2 | c19 | nullif(c2, c19) | ifnull(c2, c19) | ++------+---------------------+-----------------+-----------------+ +| 2 | 2019-12-01 12:00:00 | 2 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | 2 | ++------+---------------------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c20, nullif(c2, c20), ifnull(c2, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c2 | c20 | nullif(c2, c20) | ifnull(c2, c20) | ++------+---------------------+-----------------+-----------------+ +| 2 | 2019-12-03 06:00:00 | 2 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | 2 | ++------+---------------------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c21, nullif(c2, c21), ifnull(c2, c21) from t1; ++------+------+-----------------+-----------------+ +| c2 | c21 | nullif(c2, c21) | ifnull(c2, c21) | ++------+------+-----------------+-----------------+ +| 2 | 9.5 | 2 | 2 | +| 2 | -9.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c2, c22, nullif(c2, c22), ifnull(c2, c22) from t1; ++------+------+-----------------+-----------------+ +| c2 | c22 | nullif(c2, c22) | ifnull(c2, c22) | ++------+------+-----------------+-----------------+ +| 2 | 10.5 | 2 | 2 | +| 2 | 10.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c2, nullif(c2, c2) from t1; ++------+----------------+ +| c2 | nullif(c2, c2) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c3, c1, nullif(c3, c1), ifnull(c3, c1) from t1; ++------+------+----------------+----------------+ +| c3 | c1 | nullif(c3, c1) | ifnull(c3, c1) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c2, nullif(c3, c2), ifnull(c3, c2) from t1; ++------+------+----------------+----------------+ +| c3 | c2 | nullif(c3, c2) | ifnull(c3, c2) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c3, nullif(c3, c3), ifnull(c3, c3) from t1; ++------+------+----------------+----------------+ +| c3 | c3 | nullif(c3, c3) | ifnull(c3, c3) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c4, nullif(c3, c4), ifnull(c3, c4) from t1; ++------+------+----------------+----------------+ +| c3 | c4 | nullif(c3, c4) | ifnull(c3, c4) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c5, nullif(c3, c5), ifnull(c3, c5) from t1; ++------+------+----------------+----------------+ +| c3 | c5 | nullif(c3, c5) | ifnull(c3, c5) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c6, nullif(c3, c6), ifnull(c3, c6) from t1; ++------+------+----------------+----------------+ +| c3 | c6 | nullif(c3, c6) | ifnull(c3, c6) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c7, nullif(c3, c7), ifnull(c3, c7) from t1; ++------+------+----------------+----------------+ +| c3 | c7 | nullif(c3, c7) | ifnull(c3, c7) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c8, nullif(c3, c8), ifnull(c3, c8) from t1; ++------+------+----------------+----------------+ +| c3 | c8 | nullif(c3, c8) | ifnull(c3, c8) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c9, nullif(c3, c9), ifnull(c3, c9) from t1; ++------+------+----------------+----------------+ +| c3 | c9 | nullif(c3, c9) | ifnull(c3, c9) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c10, nullif(c3, c10), ifnull(c3, c10) from t1; ++------+------+-----------------+-----------------+ +| c3 | c10 | nullif(c3, c10) | ifnull(c3, c10) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c11, nullif(c3, c11), ifnull(c3, c11) from t1; ++------+------+-----------------+-----------------+ +| c3 | c11 | nullif(c3, c11) | ifnull(c3, c11) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c12, nullif(c3, c12), ifnull(c3, c12) from t1; ++------+------+-----------------+-----------------+ +| c3 | c12 | nullif(c3, c12) | ifnull(c3, c12) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c13, nullif(c3, c13), ifnull(c3, c13) from t1; ++------+------+-----------------+-----------------+ +| c3 | c13 | nullif(c3, c13) | ifnull(c3, c13) | ++------+------+-----------------+-----------------+ +| 1 | 3.5 | 1 | 1 | +| -1 | -3.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c14, nullif(c3, c14), ifnull(c3, c14) from t1; ++------+------+-----------------+-----------------+ +| c3 | c14 | nullif(c3, c14) | ifnull(c3, c14) | ++------+------+-----------------+-----------------+ +| 1 | 4.5 | 1 | 1 | +| -1 | 4.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c15, nullif(c3, c15), ifnull(c3, c15) from t1; ++------+------+-----------------+-----------------+ +| c3 | c15 | nullif(c3, c15) | ifnull(c3, c15) | ++------+------+-----------------+-----------------+ +| 1 | 5.5 | 1 | 1 | +| -1 | -5.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c16, nullif(c3, c16), ifnull(c3, c16) from t1; ++------+------+-----------------+-----------------+ +| c3 | c16 | nullif(c3, c16) | ifnull(c3, c16) | ++------+------+-----------------+-----------------+ +| 1 | 6.5 | 1 | 1 | +| -1 | 6.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c17, nullif(c3, c17), ifnull(c3, c17) from t1; ++------+------+-----------------+-----------------+ +| c3 | c17 | nullif(c3, c17) | ifnull(c3, c17) | ++------+------+-----------------+-----------------+ +| 1 | 8 | 1 | 1 | +| -1 | -8 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c18, nullif(c3, c18), ifnull(c3, c18) from t1; ++------+------+-----------------+-----------------+ +| c3 | c18 | nullif(c3, c18) | ifnull(c3, c18) | ++------+------+-----------------+-----------------+ +| 1 | 9 | 1 | 1 | +| -1 | 9 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c19, nullif(c3, c19), ifnull(c3, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c3 | c19 | nullif(c3, c19) | ifnull(c3, c19) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c20, nullif(c3, c20), ifnull(c3, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c3 | c20 | nullif(c3, c20) | ifnull(c3, c20) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c21, nullif(c3, c21), ifnull(c3, c21) from t1; ++------+------+-----------------+-----------------+ +| c3 | c21 | nullif(c3, c21) | ifnull(c3, c21) | ++------+------+-----------------+-----------------+ +| 1 | 9.5 | 1 | 1 | +| -1 | -9.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c3, c22, nullif(c3, c22), ifnull(c3, c22) from t1; ++------+------+-----------------+-----------------+ +| c3 | c22 | nullif(c3, c22) | ifnull(c3, c22) | ++------+------+-----------------+-----------------+ +| 1 | 10.5 | 1 | 1 | +| -1 | 10.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c3, nullif(c3, c3) from t1; ++------+----------------+ +| c3 | nullif(c3, c3) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c4, c1, nullif(c4, c1), ifnull(c4, c1) from t1; ++------+------+----------------+----------------+ +| c4 | c1 | nullif(c4, c1) | ifnull(c4, c1) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c2, nullif(c4, c2), ifnull(c4, c2) from t1; ++------+------+----------------+----------------+ +| c4 | c2 | nullif(c4, c2) | ifnull(c4, c2) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c3, nullif(c4, c3), ifnull(c4, c3) from t1; ++------+------+----------------+----------------+ +| c4 | c3 | nullif(c4, c3) | ifnull(c4, c3) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c4, nullif(c4, c4), ifnull(c4, c4) from t1; ++------+------+----------------+----------------+ +| c4 | c4 | nullif(c4, c4) | ifnull(c4, c4) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c5, nullif(c4, c5), ifnull(c4, c5) from t1; ++------+------+----------------+----------------+ +| c4 | c5 | nullif(c4, c5) | ifnull(c4, c5) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c6, nullif(c4, c6), ifnull(c4, c6) from t1; ++------+------+----------------+----------------+ +| c4 | c6 | nullif(c4, c6) | ifnull(c4, c6) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c7, nullif(c4, c7), ifnull(c4, c7) from t1; ++------+------+----------------+----------------+ +| c4 | c7 | nullif(c4, c7) | ifnull(c4, c7) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c8, nullif(c4, c8), ifnull(c4, c8) from t1; ++------+------+----------------+----------------+ +| c4 | c8 | nullif(c4, c8) | ifnull(c4, c8) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c9, nullif(c4, c9), ifnull(c4, c9) from t1; ++------+------+----------------+----------------+ +| c4 | c9 | nullif(c4, c9) | ifnull(c4, c9) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c10, nullif(c4, c10), ifnull(c4, c10) from t1; ++------+------+-----------------+-----------------+ +| c4 | c10 | nullif(c4, c10) | ifnull(c4, c10) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c11, nullif(c4, c11), ifnull(c4, c11) from t1; ++------+------+-----------------+-----------------+ +| c4 | c11 | nullif(c4, c11) | ifnull(c4, c11) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c12, nullif(c4, c12), ifnull(c4, c12) from t1; ++------+------+-----------------+-----------------+ +| c4 | c12 | nullif(c4, c12) | ifnull(c4, c12) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c13, nullif(c4, c13), ifnull(c4, c13) from t1; ++------+------+-----------------+-----------------+ +| c4 | c13 | nullif(c4, c13) | ifnull(c4, c13) | ++------+------+-----------------+-----------------+ +| 2 | 3.5 | 2 | 2 | +| 2 | -3.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c14, nullif(c4, c14), ifnull(c4, c14) from t1; ++------+------+-----------------+-----------------+ +| c4 | c14 | nullif(c4, c14) | ifnull(c4, c14) | ++------+------+-----------------+-----------------+ +| 2 | 4.5 | 2 | 2 | +| 2 | 4.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c15, nullif(c4, c15), ifnull(c4, c15) from t1; ++------+------+-----------------+-----------------+ +| c4 | c15 | nullif(c4, c15) | ifnull(c4, c15) | ++------+------+-----------------+-----------------+ +| 2 | 5.5 | 2 | 2 | +| 2 | -5.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c16, nullif(c4, c16), ifnull(c4, c16) from t1; ++------+------+-----------------+-----------------+ +| c4 | c16 | nullif(c4, c16) | ifnull(c4, c16) | ++------+------+-----------------+-----------------+ +| 2 | 6.5 | 2 | 2 | +| 2 | 6.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c17, nullif(c4, c17), ifnull(c4, c17) from t1; ++------+------+-----------------+-----------------+ +| c4 | c17 | nullif(c4, c17) | ifnull(c4, c17) | ++------+------+-----------------+-----------------+ +| 2 | 8 | 2 | 2 | +| 2 | -8 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c18, nullif(c4, c18), ifnull(c4, c18) from t1; ++------+------+-----------------+-----------------+ +| c4 | c18 | nullif(c4, c18) | ifnull(c4, c18) | ++------+------+-----------------+-----------------+ +| 2 | 9 | 2 | 2 | +| 2 | 9 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c19, nullif(c4, c19), ifnull(c4, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c4 | c19 | nullif(c4, c19) | ifnull(c4, c19) | ++------+---------------------+-----------------+-----------------+ +| 2 | 2019-12-01 12:00:00 | 2 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | 2 | ++------+---------------------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c20, nullif(c4, c20), ifnull(c4, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c4 | c20 | nullif(c4, c20) | ifnull(c4, c20) | ++------+---------------------+-----------------+-----------------+ +| 2 | 2019-12-03 06:00:00 | 2 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | 2 | ++------+---------------------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c21, nullif(c4, c21), ifnull(c4, c21) from t1; ++------+------+-----------------+-----------------+ +| c4 | c21 | nullif(c4, c21) | ifnull(c4, c21) | ++------+------+-----------------+-----------------+ +| 2 | 9.5 | 2 | 2 | +| 2 | -9.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c4, c22, nullif(c4, c22), ifnull(c4, c22) from t1; ++------+------+-----------------+-----------------+ +| c4 | c22 | nullif(c4, c22) | ifnull(c4, c22) | ++------+------+-----------------+-----------------+ +| 2 | 10.5 | 2 | 2 | +| 2 | 10.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c4, nullif(c4, c4) from t1; ++------+----------------+ +| c4 | nullif(c4, c4) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c5, c1, nullif(c5, c1), ifnull(c5, c1) from t1; ++------+------+----------------+----------------+ +| c5 | c1 | nullif(c5, c1) | ifnull(c5, c1) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c2, nullif(c5, c2), ifnull(c5, c2) from t1; ++------+------+----------------+----------------+ +| c5 | c2 | nullif(c5, c2) | ifnull(c5, c2) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c3, nullif(c5, c3), ifnull(c5, c3) from t1; ++------+------+----------------+----------------+ +| c5 | c3 | nullif(c5, c3) | ifnull(c5, c3) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c4, nullif(c5, c4), ifnull(c5, c4) from t1; ++------+------+----------------+----------------+ +| c5 | c4 | nullif(c5, c4) | ifnull(c5, c4) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c5, nullif(c5, c5), ifnull(c5, c5) from t1; ++------+------+----------------+----------------+ +| c5 | c5 | nullif(c5, c5) | ifnull(c5, c5) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c6, nullif(c5, c6), ifnull(c5, c6) from t1; ++------+------+----------------+----------------+ +| c5 | c6 | nullif(c5, c6) | ifnull(c5, c6) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c7, nullif(c5, c7), ifnull(c5, c7) from t1; ++------+------+----------------+----------------+ +| c5 | c7 | nullif(c5, c7) | ifnull(c5, c7) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c8, nullif(c5, c8), ifnull(c5, c8) from t1; ++------+------+----------------+----------------+ +| c5 | c8 | nullif(c5, c8) | ifnull(c5, c8) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c9, nullif(c5, c9), ifnull(c5, c9) from t1; ++------+------+----------------+----------------+ +| c5 | c9 | nullif(c5, c9) | ifnull(c5, c9) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c10, nullif(c5, c10), ifnull(c5, c10) from t1; ++------+------+-----------------+-----------------+ +| c5 | c10 | nullif(c5, c10) | ifnull(c5, c10) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c11, nullif(c5, c11), ifnull(c5, c11) from t1; ++------+------+-----------------+-----------------+ +| c5 | c11 | nullif(c5, c11) | ifnull(c5, c11) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c12, nullif(c5, c12), ifnull(c5, c12) from t1; ++------+------+-----------------+-----------------+ +| c5 | c12 | nullif(c5, c12) | ifnull(c5, c12) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c13, nullif(c5, c13), ifnull(c5, c13) from t1; ++------+------+-----------------+-----------------+ +| c5 | c13 | nullif(c5, c13) | ifnull(c5, c13) | ++------+------+-----------------+-----------------+ +| 1 | 3.5 | 1 | 1 | +| -1 | -3.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c14, nullif(c5, c14), ifnull(c5, c14) from t1; ++------+------+-----------------+-----------------+ +| c5 | c14 | nullif(c5, c14) | ifnull(c5, c14) | ++------+------+-----------------+-----------------+ +| 1 | 4.5 | 1 | 1 | +| -1 | 4.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c15, nullif(c5, c15), ifnull(c5, c15) from t1; ++------+------+-----------------+-----------------+ +| c5 | c15 | nullif(c5, c15) | ifnull(c5, c15) | ++------+------+-----------------+-----------------+ +| 1 | 5.5 | 1 | 1 | +| -1 | -5.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c16, nullif(c5, c16), ifnull(c5, c16) from t1; ++------+------+-----------------+-----------------+ +| c5 | c16 | nullif(c5, c16) | ifnull(c5, c16) | ++------+------+-----------------+-----------------+ +| 1 | 6.5 | 1 | 1 | +| -1 | 6.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c17, nullif(c5, c17), ifnull(c5, c17) from t1; ++------+------+-----------------+-----------------+ +| c5 | c17 | nullif(c5, c17) | ifnull(c5, c17) | ++------+------+-----------------+-----------------+ +| 1 | 8 | 1 | 1 | +| -1 | -8 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c18, nullif(c5, c18), ifnull(c5, c18) from t1; ++------+------+-----------------+-----------------+ +| c5 | c18 | nullif(c5, c18) | ifnull(c5, c18) | ++------+------+-----------------+-----------------+ +| 1 | 9 | 1 | 1 | +| -1 | 9 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c19, nullif(c5, c19), ifnull(c5, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c5 | c19 | nullif(c5, c19) | ifnull(c5, c19) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c20, nullif(c5, c20), ifnull(c5, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c5 | c20 | nullif(c5, c20) | ifnull(c5, c20) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c21, nullif(c5, c21), ifnull(c5, c21) from t1; ++------+------+-----------------+-----------------+ +| c5 | c21 | nullif(c5, c21) | ifnull(c5, c21) | ++------+------+-----------------+-----------------+ +| 1 | 9.5 | 1 | 1 | +| -1 | -9.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c5, c22, nullif(c5, c22), ifnull(c5, c22) from t1; ++------+------+-----------------+-----------------+ +| c5 | c22 | nullif(c5, c22) | ifnull(c5, c22) | ++------+------+-----------------+-----------------+ +| 1 | 10.5 | 1 | 1 | +| -1 | 10.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c5, nullif(c5, c5) from t1; ++------+----------------+ +| c5 | nullif(c5, c5) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c6, c1, nullif(c6, c1), ifnull(c6, c1) from t1; ++------+------+----------------+----------------+ +| c6 | c1 | nullif(c6, c1) | ifnull(c6, c1) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c2, nullif(c6, c2), ifnull(c6, c2) from t1; ++------+------+----------------+----------------+ +| c6 | c2 | nullif(c6, c2) | ifnull(c6, c2) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c3, nullif(c6, c3), ifnull(c6, c3) from t1; ++------+------+----------------+----------------+ +| c6 | c3 | nullif(c6, c3) | ifnull(c6, c3) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c4, nullif(c6, c4), ifnull(c6, c4) from t1; ++------+------+----------------+----------------+ +| c6 | c4 | nullif(c6, c4) | ifnull(c6, c4) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c5, nullif(c6, c5), ifnull(c6, c5) from t1; ++------+------+----------------+----------------+ +| c6 | c5 | nullif(c6, c5) | ifnull(c6, c5) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c6, nullif(c6, c6), ifnull(c6, c6) from t1; ++------+------+----------------+----------------+ +| c6 | c6 | nullif(c6, c6) | ifnull(c6, c6) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c7, nullif(c6, c7), ifnull(c6, c7) from t1; ++------+------+----------------+----------------+ +| c6 | c7 | nullif(c6, c7) | ifnull(c6, c7) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c8, nullif(c6, c8), ifnull(c6, c8) from t1; ++------+------+----------------+----------------+ +| c6 | c8 | nullif(c6, c8) | ifnull(c6, c8) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c9, nullif(c6, c9), ifnull(c6, c9) from t1; ++------+------+----------------+----------------+ +| c6 | c9 | nullif(c6, c9) | ifnull(c6, c9) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c10, nullif(c6, c10), ifnull(c6, c10) from t1; ++------+------+-----------------+-----------------+ +| c6 | c10 | nullif(c6, c10) | ifnull(c6, c10) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c11, nullif(c6, c11), ifnull(c6, c11) from t1; ++------+------+-----------------+-----------------+ +| c6 | c11 | nullif(c6, c11) | ifnull(c6, c11) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c12, nullif(c6, c12), ifnull(c6, c12) from t1; ++------+------+-----------------+-----------------+ +| c6 | c12 | nullif(c6, c12) | ifnull(c6, c12) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c13, nullif(c6, c13), ifnull(c6, c13) from t1; ++------+------+-----------------+-----------------+ +| c6 | c13 | nullif(c6, c13) | ifnull(c6, c13) | ++------+------+-----------------+-----------------+ +| 2 | 3.5 | 2 | 2 | +| 2 | -3.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c14, nullif(c6, c14), ifnull(c6, c14) from t1; ++------+------+-----------------+-----------------+ +| c6 | c14 | nullif(c6, c14) | ifnull(c6, c14) | ++------+------+-----------------+-----------------+ +| 2 | 4.5 | 2 | 2 | +| 2 | 4.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c15, nullif(c6, c15), ifnull(c6, c15) from t1; ++------+------+-----------------+-----------------+ +| c6 | c15 | nullif(c6, c15) | ifnull(c6, c15) | ++------+------+-----------------+-----------------+ +| 2 | 5.5 | 2 | 2 | +| 2 | -5.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c16, nullif(c6, c16), ifnull(c6, c16) from t1; ++------+------+-----------------+-----------------+ +| c6 | c16 | nullif(c6, c16) | ifnull(c6, c16) | ++------+------+-----------------+-----------------+ +| 2 | 6.5 | 2 | 2 | +| 2 | 6.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c17, nullif(c6, c17), ifnull(c6, c17) from t1; ++------+------+-----------------+-----------------+ +| c6 | c17 | nullif(c6, c17) | ifnull(c6, c17) | ++------+------+-----------------+-----------------+ +| 2 | 8 | 2 | 2 | +| 2 | -8 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c18, nullif(c6, c18), ifnull(c6, c18) from t1; ++------+------+-----------------+-----------------+ +| c6 | c18 | nullif(c6, c18) | ifnull(c6, c18) | ++------+------+-----------------+-----------------+ +| 2 | 9 | 2 | 2 | +| 2 | 9 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c19, nullif(c6, c19), ifnull(c6, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c6 | c19 | nullif(c6, c19) | ifnull(c6, c19) | ++------+---------------------+-----------------+-----------------+ +| 2 | 2019-12-01 12:00:00 | 2 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | 2 | ++------+---------------------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c20, nullif(c6, c20), ifnull(c6, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c6 | c20 | nullif(c6, c20) | ifnull(c6, c20) | ++------+---------------------+-----------------+-----------------+ +| 2 | 2019-12-03 06:00:00 | 2 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | 2 | ++------+---------------------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c21, nullif(c6, c21), ifnull(c6, c21) from t1; ++------+------+-----------------+-----------------+ +| c6 | c21 | nullif(c6, c21) | ifnull(c6, c21) | ++------+------+-----------------+-----------------+ +| 2 | 9.5 | 2 | 2 | +| 2 | -9.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c6, c22, nullif(c6, c22), ifnull(c6, c22) from t1; ++------+------+-----------------+-----------------+ +| c6 | c22 | nullif(c6, c22) | ifnull(c6, c22) | ++------+------+-----------------+-----------------+ +| 2 | 10.5 | 2 | 2 | +| 2 | 10.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c6, nullif(c6, c6) from t1; ++------+----------------+ +| c6 | nullif(c6, c6) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c7, c1, nullif(c7, c1), ifnull(c7, c1) from t1; ++------+------+----------------+----------------+ +| c7 | c1 | nullif(c7, c1) | ifnull(c7, c1) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c2, nullif(c7, c2), ifnull(c7, c2) from t1; ++------+------+----------------+----------------+ +| c7 | c2 | nullif(c7, c2) | ifnull(c7, c2) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c3, nullif(c7, c3), ifnull(c7, c3) from t1; ++------+------+----------------+----------------+ +| c7 | c3 | nullif(c7, c3) | ifnull(c7, c3) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c4, nullif(c7, c4), ifnull(c7, c4) from t1; ++------+------+----------------+----------------+ +| c7 | c4 | nullif(c7, c4) | ifnull(c7, c4) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c5, nullif(c7, c5), ifnull(c7, c5) from t1; ++------+------+----------------+----------------+ +| c7 | c5 | nullif(c7, c5) | ifnull(c7, c5) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c6, nullif(c7, c6), ifnull(c7, c6) from t1; ++------+------+----------------+----------------+ +| c7 | c6 | nullif(c7, c6) | ifnull(c7, c6) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c7, nullif(c7, c7), ifnull(c7, c7) from t1; ++------+------+----------------+----------------+ +| c7 | c7 | nullif(c7, c7) | ifnull(c7, c7) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c8, nullif(c7, c8), ifnull(c7, c8) from t1; ++------+------+----------------+----------------+ +| c7 | c8 | nullif(c7, c8) | ifnull(c7, c8) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c9, nullif(c7, c9), ifnull(c7, c9) from t1; ++------+------+----------------+----------------+ +| c7 | c9 | nullif(c7, c9) | ifnull(c7, c9) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c10, nullif(c7, c10), ifnull(c7, c10) from t1; ++------+------+-----------------+-----------------+ +| c7 | c10 | nullif(c7, c10) | ifnull(c7, c10) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c11, nullif(c7, c11), ifnull(c7, c11) from t1; ++------+------+-----------------+-----------------+ +| c7 | c11 | nullif(c7, c11) | ifnull(c7, c11) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c12, nullif(c7, c12), ifnull(c7, c12) from t1; ++------+------+-----------------+-----------------+ +| c7 | c12 | nullif(c7, c12) | ifnull(c7, c12) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c13, nullif(c7, c13), ifnull(c7, c13) from t1; ++------+------+-----------------+-----------------+ +| c7 | c13 | nullif(c7, c13) | ifnull(c7, c13) | ++------+------+-----------------+-----------------+ +| 1 | 3.5 | 1 | 1 | +| -1 | -3.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c14, nullif(c7, c14), ifnull(c7, c14) from t1; ++------+------+-----------------+-----------------+ +| c7 | c14 | nullif(c7, c14) | ifnull(c7, c14) | ++------+------+-----------------+-----------------+ +| 1 | 4.5 | 1 | 1 | +| -1 | 4.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c15, nullif(c7, c15), ifnull(c7, c15) from t1; ++------+------+-----------------+-----------------+ +| c7 | c15 | nullif(c7, c15) | ifnull(c7, c15) | ++------+------+-----------------+-----------------+ +| 1 | 5.5 | 1 | 1 | +| -1 | -5.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c16, nullif(c7, c16), ifnull(c7, c16) from t1; ++------+------+-----------------+-----------------+ +| c7 | c16 | nullif(c7, c16) | ifnull(c7, c16) | ++------+------+-----------------+-----------------+ +| 1 | 6.5 | 1 | 1 | +| -1 | 6.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c17, nullif(c7, c17), ifnull(c7, c17) from t1; ++------+------+-----------------+-----------------+ +| c7 | c17 | nullif(c7, c17) | ifnull(c7, c17) | ++------+------+-----------------+-----------------+ +| 1 | 8 | 1 | 1 | +| -1 | -8 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c18, nullif(c7, c18), ifnull(c7, c18) from t1; ++------+------+-----------------+-----------------+ +| c7 | c18 | nullif(c7, c18) | ifnull(c7, c18) | ++------+------+-----------------+-----------------+ +| 1 | 9 | 1 | 1 | +| -1 | 9 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c19, nullif(c7, c19), ifnull(c7, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c7 | c19 | nullif(c7, c19) | ifnull(c7, c19) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c20, nullif(c7, c20), ifnull(c7, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c7 | c20 | nullif(c7, c20) | ifnull(c7, c20) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c21, nullif(c7, c21), ifnull(c7, c21) from t1; ++------+------+-----------------+-----------------+ +| c7 | c21 | nullif(c7, c21) | ifnull(c7, c21) | ++------+------+-----------------+-----------------+ +| 1 | 9.5 | 1 | 1 | +| -1 | -9.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c7, c22, nullif(c7, c22), ifnull(c7, c22) from t1; ++------+------+-----------------+-----------------+ +| c7 | c22 | nullif(c7, c22) | ifnull(c7, c22) | ++------+------+-----------------+-----------------+ +| 1 | 10.5 | 1 | 1 | +| -1 | 10.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c7, nullif(c7, c7) from t1; ++------+----------------+ +| c7 | nullif(c7, c7) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c8, c1, nullif(c8, c1), ifnull(c8, c1) from t1; ++------+------+----------------+----------------+ +| c8 | c1 | nullif(c8, c1) | ifnull(c8, c1) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c2, nullif(c8, c2), ifnull(c8, c2) from t1; ++------+------+----------------+----------------+ +| c8 | c2 | nullif(c8, c2) | ifnull(c8, c2) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c3, nullif(c8, c3), ifnull(c8, c3) from t1; ++------+------+----------------+----------------+ +| c8 | c3 | nullif(c8, c3) | ifnull(c8, c3) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c4, nullif(c8, c4), ifnull(c8, c4) from t1; ++------+------+----------------+----------------+ +| c8 | c4 | nullif(c8, c4) | ifnull(c8, c4) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c5, nullif(c8, c5), ifnull(c8, c5) from t1; ++------+------+----------------+----------------+ +| c8 | c5 | nullif(c8, c5) | ifnull(c8, c5) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c6, nullif(c8, c6), ifnull(c8, c6) from t1; ++------+------+----------------+----------------+ +| c8 | c6 | nullif(c8, c6) | ifnull(c8, c6) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c7, nullif(c8, c7), ifnull(c8, c7) from t1; ++------+------+----------------+----------------+ +| c8 | c7 | nullif(c8, c7) | ifnull(c8, c7) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c8, nullif(c8, c8), ifnull(c8, c8) from t1; ++------+------+----------------+----------------+ +| c8 | c8 | nullif(c8, c8) | ifnull(c8, c8) | ++------+------+----------------+----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c9, nullif(c8, c9), ifnull(c8, c9) from t1; ++------+------+----------------+----------------+ +| c8 | c9 | nullif(c8, c9) | ifnull(c8, c9) | ++------+------+----------------+----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+----------------+----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c10, nullif(c8, c10), ifnull(c8, c10) from t1; ++------+------+-----------------+-----------------+ +| c8 | c10 | nullif(c8, c10) | ifnull(c8, c10) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c11, nullif(c8, c11), ifnull(c8, c11) from t1; ++------+------+-----------------+-----------------+ +| c8 | c11 | nullif(c8, c11) | ifnull(c8, c11) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c12, nullif(c8, c12), ifnull(c8, c12) from t1; ++------+------+-----------------+-----------------+ +| c8 | c12 | nullif(c8, c12) | ifnull(c8, c12) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c13, nullif(c8, c13), ifnull(c8, c13) from t1; ++------+------+-----------------+-----------------+ +| c8 | c13 | nullif(c8, c13) | ifnull(c8, c13) | ++------+------+-----------------+-----------------+ +| 2 | 3.5 | 2 | 2 | +| 2 | -3.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c14, nullif(c8, c14), ifnull(c8, c14) from t1; ++------+------+-----------------+-----------------+ +| c8 | c14 | nullif(c8, c14) | ifnull(c8, c14) | ++------+------+-----------------+-----------------+ +| 2 | 4.5 | 2 | 2 | +| 2 | 4.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c15, nullif(c8, c15), ifnull(c8, c15) from t1; ++------+------+-----------------+-----------------+ +| c8 | c15 | nullif(c8, c15) | ifnull(c8, c15) | ++------+------+-----------------+-----------------+ +| 2 | 5.5 | 2 | 2 | +| 2 | -5.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c16, nullif(c8, c16), ifnull(c8, c16) from t1; ++------+------+-----------------+-----------------+ +| c8 | c16 | nullif(c8, c16) | ifnull(c8, c16) | ++------+------+-----------------+-----------------+ +| 2 | 6.5 | 2 | 2 | +| 2 | 6.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c17, nullif(c8, c17), ifnull(c8, c17) from t1; ++------+------+-----------------+-----------------+ +| c8 | c17 | nullif(c8, c17) | ifnull(c8, c17) | ++------+------+-----------------+-----------------+ +| 2 | 8 | 2 | 2 | +| 2 | -8 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c18, nullif(c8, c18), ifnull(c8, c18) from t1; ++------+------+-----------------+-----------------+ +| c8 | c18 | nullif(c8, c18) | ifnull(c8, c18) | ++------+------+-----------------+-----------------+ +| 2 | 9 | 2 | 2 | +| 2 | 9 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c19, nullif(c8, c19), ifnull(c8, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c8 | c19 | nullif(c8, c19) | ifnull(c8, c19) | ++------+---------------------+-----------------+-----------------+ +| 2 | 2019-12-01 12:00:00 | 2 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | 2 | ++------+---------------------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c20, nullif(c8, c20), ifnull(c8, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c8 | c20 | nullif(c8, c20) | ifnull(c8, c20) | ++------+---------------------+-----------------+-----------------+ +| 2 | 2019-12-03 06:00:00 | 2 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | 2 | ++------+---------------------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c21, nullif(c8, c21), ifnull(c8, c21) from t1; ++------+------+-----------------+-----------------+ +| c8 | c21 | nullif(c8, c21) | ifnull(c8, c21) | ++------+------+-----------------+-----------------+ +| 2 | 9.5 | 2 | 2 | +| 2 | -9.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c8, c22, nullif(c8, c22), ifnull(c8, c22) from t1; ++------+------+-----------------+-----------------+ +| c8 | c22 | nullif(c8, c22) | ifnull(c8, c22) | ++------+------+-----------------+-----------------+ +| 2 | 10.5 | 2 | 2 | +| 2 | 10.5 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c8, nullif(c8, c8) from t1; ++------+----------------+ +| c8 | nullif(c8, c8) | ++------+----------------+ +| 2 | NULL | +| 2 | NULL | ++------+----------------+ + +select c9, c1, nullif(c9, c1), ifnull(c9, c1) from t1; ++------+------+----------------+----------------+ +| c9 | c1 | nullif(c9, c1) | ifnull(c9, c1) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c2, nullif(c9, c2), ifnull(c9, c2) from t1; ++------+------+----------------+----------------+ +| c9 | c2 | nullif(c9, c2) | ifnull(c9, c2) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c3, nullif(c9, c3), ifnull(c9, c3) from t1; ++------+------+----------------+----------------+ +| c9 | c3 | nullif(c9, c3) | ifnull(c9, c3) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c4, nullif(c9, c4), ifnull(c9, c4) from t1; ++------+------+----------------+----------------+ +| c9 | c4 | nullif(c9, c4) | ifnull(c9, c4) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c5, nullif(c9, c5), ifnull(c9, c5) from t1; ++------+------+----------------+----------------+ +| c9 | c5 | nullif(c9, c5) | ifnull(c9, c5) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c6, nullif(c9, c6), ifnull(c9, c6) from t1; ++------+------+----------------+----------------+ +| c9 | c6 | nullif(c9, c6) | ifnull(c9, c6) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c7, nullif(c9, c7), ifnull(c9, c7) from t1; ++------+------+----------------+----------------+ +| c9 | c7 | nullif(c9, c7) | ifnull(c9, c7) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c8, nullif(c9, c8), ifnull(c9, c8) from t1; ++------+------+----------------+----------------+ +| c9 | c8 | nullif(c9, c8) | ifnull(c9, c8) | ++------+------+----------------+----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c9, nullif(c9, c9), ifnull(c9, c9) from t1; ++------+------+----------------+----------------+ +| c9 | c9 | nullif(c9, c9) | ifnull(c9, c9) | ++------+------+----------------+----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+----------------+----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c10, nullif(c9, c10), ifnull(c9, c10) from t1; ++------+------+-----------------+-----------------+ +| c9 | c10 | nullif(c9, c10) | ifnull(c9, c10) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c11, nullif(c9, c11), ifnull(c9, c11) from t1; ++------+------+-----------------+-----------------+ +| c9 | c11 | nullif(c9, c11) | ifnull(c9, c11) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c12, nullif(c9, c12), ifnull(c9, c12) from t1; ++------+------+-----------------+-----------------+ +| c9 | c12 | nullif(c9, c12) | ifnull(c9, c12) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c13, nullif(c9, c13), ifnull(c9, c13) from t1; ++------+------+-----------------+-----------------+ +| c9 | c13 | nullif(c9, c13) | ifnull(c9, c13) | ++------+------+-----------------+-----------------+ +| 1 | 3.5 | 1 | 1 | +| -1 | -3.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c14, nullif(c9, c14), ifnull(c9, c14) from t1; ++------+------+-----------------+-----------------+ +| c9 | c14 | nullif(c9, c14) | ifnull(c9, c14) | ++------+------+-----------------+-----------------+ +| 1 | 4.5 | 1 | 1 | +| -1 | 4.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c15, nullif(c9, c15), ifnull(c9, c15) from t1; ++------+------+-----------------+-----------------+ +| c9 | c15 | nullif(c9, c15) | ifnull(c9, c15) | ++------+------+-----------------+-----------------+ +| 1 | 5.5 | 1 | 1 | +| -1 | -5.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c16, nullif(c9, c16), ifnull(c9, c16) from t1; ++------+------+-----------------+-----------------+ +| c9 | c16 | nullif(c9, c16) | ifnull(c9, c16) | ++------+------+-----------------+-----------------+ +| 1 | 6.5 | 1 | 1 | +| -1 | 6.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c17, nullif(c9, c17), ifnull(c9, c17) from t1; ++------+------+-----------------+-----------------+ +| c9 | c17 | nullif(c9, c17) | ifnull(c9, c17) | ++------+------+-----------------+-----------------+ +| 1 | 8 | 1 | 1 | +| -1 | -8 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c18, nullif(c9, c18), ifnull(c9, c18) from t1; ++------+------+-----------------+-----------------+ +| c9 | c18 | nullif(c9, c18) | ifnull(c9, c18) | ++------+------+-----------------+-----------------+ +| 1 | 9 | 1 | 1 | +| -1 | 9 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c19, nullif(c9, c19), ifnull(c9, c19) from t1; ++------+---------------------+-----------------+-----------------+ +| c9 | c19 | nullif(c9, c19) | ifnull(c9, c19) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c20, nullif(c9, c20), ifnull(c9, c20) from t1; ++------+---------------------+-----------------+-----------------+ +| c9 | c20 | nullif(c9, c20) | ifnull(c9, c20) | ++------+---------------------+-----------------+-----------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | -1 | ++------+---------------------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c21, nullif(c9, c21), ifnull(c9, c21) from t1; ++------+------+-----------------+-----------------+ +| c9 | c21 | nullif(c9, c21) | ifnull(c9, c21) | ++------+------+-----------------+-----------------+ +| 1 | 9.5 | 1 | 1 | +| -1 | -9.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c9, c22, nullif(c9, c22), ifnull(c9, c22) from t1; ++------+------+-----------------+-----------------+ +| c9 | c22 | nullif(c9, c22) | ifnull(c9, c22) | ++------+------+-----------------+-----------------+ +| 1 | 10.5 | 1 | 1 | +| -1 | 10.5 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c9, nullif(c9, c9) from t1; ++------+----------------+ +| c9 | nullif(c9, c9) | ++------+----------------+ +| 1 | NULL | +| -1 | NULL | ++------+----------------+ + +select c10, c1, nullif(c10, c1), ifnull(c10, c1) from t1; ++------+------+-----------------+-----------------+ +| c10 | c1 | nullif(c10, c1) | ifnull(c10, c1) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c2, nullif(c10, c2), ifnull(c10, c2) from t1; ++------+------+-----------------+-----------------+ +| c10 | c2 | nullif(c10, c2) | ifnull(c10, c2) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c3, nullif(c10, c3), ifnull(c10, c3) from t1; ++------+------+-----------------+-----------------+ +| c10 | c3 | nullif(c10, c3) | ifnull(c10, c3) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c4, nullif(c10, c4), ifnull(c10, c4) from t1; ++------+------+-----------------+-----------------+ +| c10 | c4 | nullif(c10, c4) | ifnull(c10, c4) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c5, nullif(c10, c5), ifnull(c10, c5) from t1; ++------+------+-----------------+-----------------+ +| c10 | c5 | nullif(c10, c5) | ifnull(c10, c5) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c6, nullif(c10, c6), ifnull(c10, c6) from t1; ++------+------+-----------------+-----------------+ +| c10 | c6 | nullif(c10, c6) | ifnull(c10, c6) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c7, nullif(c10, c7), ifnull(c10, c7) from t1; ++------+------+-----------------+-----------------+ +| c10 | c7 | nullif(c10, c7) | ifnull(c10, c7) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c8, nullif(c10, c8), ifnull(c10, c8) from t1; ++------+------+-----------------+-----------------+ +| c10 | c8 | nullif(c10, c8) | ifnull(c10, c8) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c9, nullif(c10, c9), ifnull(c10, c9) from t1; ++------+------+-----------------+-----------------+ +| c10 | c9 | nullif(c10, c9) | ifnull(c10, c9) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c10, nullif(c10, c10), ifnull(c10, c10) from t1; ++------+------+------------------+------------------+ +| c10 | c10 | nullif(c10, c10) | ifnull(c10, c10) | ++------+------+------------------+------------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c11, nullif(c10, c11), ifnull(c10, c11) from t1; ++------+------+------------------+------------------+ +| c10 | c11 | nullif(c10, c11) | ifnull(c10, c11) | ++------+------+------------------+------------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c12, nullif(c10, c12), ifnull(c10, c12) from t1; ++------+------+------------------+------------------+ +| c10 | c12 | nullif(c10, c12) | ifnull(c10, c12) | ++------+------+------------------+------------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c13, nullif(c10, c13), ifnull(c10, c13) from t1; ++------+------+------------------+------------------+ +| c10 | c13 | nullif(c10, c13) | ifnull(c10, c13) | ++------+------+------------------+------------------+ +| 2 | 3.5 | 2 | 2 | +| 2 | -3.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c14, nullif(c10, c14), ifnull(c10, c14) from t1; ++------+------+------------------+------------------+ +| c10 | c14 | nullif(c10, c14) | ifnull(c10, c14) | ++------+------+------------------+------------------+ +| 2 | 4.5 | 2 | 2 | +| 2 | 4.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c15, nullif(c10, c15), ifnull(c10, c15) from t1; ++------+------+------------------+------------------+ +| c10 | c15 | nullif(c10, c15) | ifnull(c10, c15) | ++------+------+------------------+------------------+ +| 2 | 5.5 | 2 | 2 | +| 2 | -5.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c16, nullif(c10, c16), ifnull(c10, c16) from t1; ++------+------+------------------+------------------+ +| c10 | c16 | nullif(c10, c16) | ifnull(c10, c16) | ++------+------+------------------+------------------+ +| 2 | 6.5 | 2 | 2 | +| 2 | 6.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c17, nullif(c10, c17), ifnull(c10, c17) from t1; ++------+------+------------------+------------------+ +| c10 | c17 | nullif(c10, c17) | ifnull(c10, c17) | ++------+------+------------------+------------------+ +| 2 | 8 | 2 | 2 | +| 2 | -8 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c18, nullif(c10, c18), ifnull(c10, c18) from t1; ++------+------+------------------+------------------+ +| c10 | c18 | nullif(c10, c18) | ifnull(c10, c18) | ++------+------+------------------+------------------+ +| 2 | 9 | 2 | 2 | +| 2 | 9 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c19, nullif(c10, c19), ifnull(c10, c19) from t1; ++------+---------------------+------------------+------------------+ +| c10 | c19 | nullif(c10, c19) | ifnull(c10, c19) | ++------+---------------------+------------------+------------------+ +| 2 | 2019-12-01 12:00:00 | 2 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | 2 | ++------+---------------------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c20, nullif(c10, c20), ifnull(c10, c20) from t1; ++------+---------------------+------------------+------------------+ +| c10 | c20 | nullif(c10, c20) | ifnull(c10, c20) | ++------+---------------------+------------------+------------------+ +| 2 | 2019-12-03 06:00:00 | 2 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | 2 | ++------+---------------------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c21, nullif(c10, c21), ifnull(c10, c21) from t1; ++------+------+------------------+------------------+ +| c10 | c21 | nullif(c10, c21) | ifnull(c10, c21) | ++------+------+------------------+------------------+ +| 2 | 9.5 | 2 | 2 | +| 2 | -9.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c10, c22, nullif(c10, c22), ifnull(c10, c22) from t1; ++------+------+------------------+------------------+ +| c10 | c22 | nullif(c10, c22) | ifnull(c10, c22) | ++------+------+------------------+------------------+ +| 2 | 10.5 | 2 | 2 | +| 2 | 10.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c10, nullif(c10, c10) from t1; ++------+------------------+ +| c10 | nullif(c10, c10) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c11, c1, nullif(c11, c1), ifnull(c11, c1) from t1; ++------+------+-----------------+-----------------+ +| c11 | c1 | nullif(c11, c1) | ifnull(c11, c1) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c2, nullif(c11, c2), ifnull(c11, c2) from t1; ++------+------+-----------------+-----------------+ +| c11 | c2 | nullif(c11, c2) | ifnull(c11, c2) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c3, nullif(c11, c3), ifnull(c11, c3) from t1; ++------+------+-----------------+-----------------+ +| c11 | c3 | nullif(c11, c3) | ifnull(c11, c3) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c4, nullif(c11, c4), ifnull(c11, c4) from t1; ++------+------+-----------------+-----------------+ +| c11 | c4 | nullif(c11, c4) | ifnull(c11, c4) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c5, nullif(c11, c5), ifnull(c11, c5) from t1; ++------+------+-----------------+-----------------+ +| c11 | c5 | nullif(c11, c5) | ifnull(c11, c5) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c6, nullif(c11, c6), ifnull(c11, c6) from t1; ++------+------+-----------------+-----------------+ +| c11 | c6 | nullif(c11, c6) | ifnull(c11, c6) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c7, nullif(c11, c7), ifnull(c11, c7) from t1; ++------+------+-----------------+-----------------+ +| c11 | c7 | nullif(c11, c7) | ifnull(c11, c7) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c8, nullif(c11, c8), ifnull(c11, c8) from t1; ++------+------+-----------------+-----------------+ +| c11 | c8 | nullif(c11, c8) | ifnull(c11, c8) | ++------+------+-----------------+-----------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c9, nullif(c11, c9), ifnull(c11, c9) from t1; ++------+------+-----------------+-----------------+ +| c11 | c9 | nullif(c11, c9) | ifnull(c11, c9) | ++------+------+-----------------+-----------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+-----------------+-----------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c10, nullif(c11, c10), ifnull(c11, c10) from t1; ++------+------+------------------+------------------+ +| c11 | c10 | nullif(c11, c10) | ifnull(c11, c10) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c11, nullif(c11, c11), ifnull(c11, c11) from t1; ++------+------+------------------+------------------+ +| c11 | c11 | nullif(c11, c11) | ifnull(c11, c11) | ++------+------+------------------+------------------+ +| 1 | 1 | NULL | 1 | +| -1 | -1 | NULL | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c12, nullif(c11, c12), ifnull(c11, c12) from t1; ++------+------+------------------+------------------+ +| c11 | c12 | nullif(c11, c12) | ifnull(c11, c12) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | +| -1 | 2 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c13, nullif(c11, c13), ifnull(c11, c13) from t1; ++------+------+------------------+------------------+ +| c11 | c13 | nullif(c11, c13) | ifnull(c11, c13) | ++------+------+------------------+------------------+ +| 1 | 3.5 | 1 | 1 | +| -1 | -3.5 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c14, nullif(c11, c14), ifnull(c11, c14) from t1; ++------+------+------------------+------------------+ +| c11 | c14 | nullif(c11, c14) | ifnull(c11, c14) | ++------+------+------------------+------------------+ +| 1 | 4.5 | 1 | 1 | +| -1 | 4.5 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c15, nullif(c11, c15), ifnull(c11, c15) from t1; ++------+------+------------------+------------------+ +| c11 | c15 | nullif(c11, c15) | ifnull(c11, c15) | ++------+------+------------------+------------------+ +| 1 | 5.5 | 1 | 1 | +| -1 | -5.5 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c16, nullif(c11, c16), ifnull(c11, c16) from t1; ++------+------+------------------+------------------+ +| c11 | c16 | nullif(c11, c16) | ifnull(c11, c16) | ++------+------+------------------+------------------+ +| 1 | 6.5 | 1 | 1 | +| -1 | 6.5 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c17, nullif(c11, c17), ifnull(c11, c17) from t1; ++------+------+------------------+------------------+ +| c11 | c17 | nullif(c11, c17) | ifnull(c11, c17) | ++------+------+------------------+------------------+ +| 1 | 8 | 1 | 1 | +| -1 | -8 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c18, nullif(c11, c18), ifnull(c11, c18) from t1; ++------+------+------------------+------------------+ +| c11 | c18 | nullif(c11, c18) | ifnull(c11, c18) | ++------+------+------------------+------------------+ +| 1 | 9 | 1 | 1 | +| -1 | 9 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c19, nullif(c11, c19), ifnull(c11, c19) from t1; ++------+---------------------+------------------+------------------+ +| c11 | c19 | nullif(c11, c19) | ifnull(c11, c19) | ++------+---------------------+------------------+------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | -1 | ++------+---------------------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c20, nullif(c11, c20), ifnull(c11, c20) from t1; ++------+---------------------+------------------+------------------+ +| c11 | c20 | nullif(c11, c20) | ifnull(c11, c20) | ++------+---------------------+------------------+------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | -1 | ++------+---------------------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c21, nullif(c11, c21), ifnull(c11, c21) from t1; ++------+------+------------------+------------------+ +| c11 | c21 | nullif(c11, c21) | ifnull(c11, c21) | ++------+------+------------------+------------------+ +| 1 | 9.5 | 1 | 1 | +| -1 | -9.5 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c11, c22, nullif(c11, c22), ifnull(c11, c22) from t1; ++------+------+------------------+------------------+ +| c11 | c22 | nullif(c11, c22) | ifnull(c11, c22) | ++------+------+------------------+------------------+ +| 1 | 10.5 | 1 | 1 | +| -1 | 10.5 | -1 | -1 | ++------+------+------------------+------------------+ +select c11, nullif(c11, c11) from t1; ++------+------------------+ +| c11 | nullif(c11, c11) | ++------+------------------+ +| 1 | NULL | +| -1 | NULL | ++------+------------------+ + +select c12, c1, nullif(c12, c1), ifnull(c12, c1) from t1; ++------+------+-----------------+-----------------+ +| c12 | c1 | nullif(c12, c1) | ifnull(c12, c1) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c2, nullif(c12, c2), ifnull(c12, c2) from t1; ++------+------+-----------------+-----------------+ +| c12 | c2 | nullif(c12, c2) | ifnull(c12, c2) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c3, nullif(c12, c3), ifnull(c12, c3) from t1; ++------+------+-----------------+-----------------+ +| c12 | c3 | nullif(c12, c3) | ifnull(c12, c3) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c4, nullif(c12, c4), ifnull(c12, c4) from t1; ++------+------+-----------------+-----------------+ +| c12 | c4 | nullif(c12, c4) | ifnull(c12, c4) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c5, nullif(c12, c5), ifnull(c12, c5) from t1; ++------+------+-----------------+-----------------+ +| c12 | c5 | nullif(c12, c5) | ifnull(c12, c5) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c6, nullif(c12, c6), ifnull(c12, c6) from t1; ++------+------+-----------------+-----------------+ +| c12 | c6 | nullif(c12, c6) | ifnull(c12, c6) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c7, nullif(c12, c7), ifnull(c12, c7) from t1; ++------+------+-----------------+-----------------+ +| c12 | c7 | nullif(c12, c7) | ifnull(c12, c7) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c8, nullif(c12, c8), ifnull(c12, c8) from t1; ++------+------+-----------------+-----------------+ +| c12 | c8 | nullif(c12, c8) | ifnull(c12, c8) | ++------+------+-----------------+-----------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c9, nullif(c12, c9), ifnull(c12, c9) from t1; ++------+------+-----------------+-----------------+ +| c12 | c9 | nullif(c12, c9) | ifnull(c12, c9) | ++------+------+-----------------+-----------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+-----------------+-----------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c10, nullif(c12, c10), ifnull(c12, c10) from t1; ++------+------+------------------+------------------+ +| c12 | c10 | nullif(c12, c10) | ifnull(c12, c10) | ++------+------+------------------+------------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c11, nullif(c12, c11), ifnull(c12, c11) from t1; ++------+------+------------------+------------------+ +| c12 | c11 | nullif(c12, c11) | ifnull(c12, c11) | ++------+------+------------------+------------------+ +| 2 | 1 | 2 | 2 | +| 2 | -1 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c12, nullif(c12, c12), ifnull(c12, c12) from t1; ++------+------+------------------+------------------+ +| c12 | c12 | nullif(c12, c12) | ifnull(c12, c12) | ++------+------+------------------+------------------+ +| 2 | 2 | NULL | 2 | +| 2 | 2 | NULL | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c13, nullif(c12, c13), ifnull(c12, c13) from t1; ++------+------+------------------+------------------+ +| c12 | c13 | nullif(c12, c13) | ifnull(c12, c13) | ++------+------+------------------+------------------+ +| 2 | 3.5 | 2 | 2 | +| 2 | -3.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c14, nullif(c12, c14), ifnull(c12, c14) from t1; ++------+------+------------------+------------------+ +| c12 | c14 | nullif(c12, c14) | ifnull(c12, c14) | ++------+------+------------------+------------------+ +| 2 | 4.5 | 2 | 2 | +| 2 | 4.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c15, nullif(c12, c15), ifnull(c12, c15) from t1; ++------+------+------------------+------------------+ +| c12 | c15 | nullif(c12, c15) | ifnull(c12, c15) | ++------+------+------------------+------------------+ +| 2 | 5.5 | 2 | 2 | +| 2 | -5.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c16, nullif(c12, c16), ifnull(c12, c16) from t1; ++------+------+------------------+------------------+ +| c12 | c16 | nullif(c12, c16) | ifnull(c12, c16) | ++------+------+------------------+------------------+ +| 2 | 6.5 | 2 | 2 | +| 2 | 6.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c17, nullif(c12, c17), ifnull(c12, c17) from t1; ++------+------+------------------+------------------+ +| c12 | c17 | nullif(c12, c17) | ifnull(c12, c17) | ++------+------+------------------+------------------+ +| 2 | 8 | 2 | 2 | +| 2 | -8 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c18, nullif(c12, c18), ifnull(c12, c18) from t1; ++------+------+------------------+------------------+ +| c12 | c18 | nullif(c12, c18) | ifnull(c12, c18) | ++------+------+------------------+------------------+ +| 2 | 9 | 2 | 2 | +| 2 | 9 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c19, nullif(c12, c19), ifnull(c12, c19) from t1; ++------+---------------------+------------------+------------------+ +| c12 | c19 | nullif(c12, c19) | ifnull(c12, c19) | ++------+---------------------+------------------+------------------+ +| 2 | 2019-12-01 12:00:00 | 2 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | 2 | ++------+---------------------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c20, nullif(c12, c20), ifnull(c12, c20) from t1; ++------+---------------------+------------------+------------------+ +| c12 | c20 | nullif(c12, c20) | ifnull(c12, c20) | ++------+---------------------+------------------+------------------+ +| 2 | 2019-12-03 06:00:00 | 2 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | 2 | ++------+---------------------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c21, nullif(c12, c21), ifnull(c12, c21) from t1; ++------+------+------------------+------------------+ +| c12 | c21 | nullif(c12, c21) | ifnull(c12, c21) | ++------+------+------------------+------------------+ +| 2 | 9.5 | 2 | 2 | +| 2 | -9.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c12, c22, nullif(c12, c22), ifnull(c12, c22) from t1; ++------+------+------------------+------------------+ +| c12 | c22 | nullif(c12, c22) | ifnull(c12, c22) | ++------+------+------------------+------------------+ +| 2 | 10.5 | 2 | 2 | +| 2 | 10.5 | 2 | 2 | ++------+------+------------------+------------------+ +select c12, nullif(c12, c12) from t1; ++------+------------------+ +| c12 | nullif(c12, c12) | ++------+------------------+ +| 2 | NULL | +| 2 | NULL | ++------+------------------+ + +select c13, c1, nullif(c13, c1), ifnull(c13, c1) from t1; ++------+------+-----------------+-----------------+ +| c13 | c1 | nullif(c13, c1) | ifnull(c13, c1) | ++------+------+-----------------+-----------------+ +| 3.5 | 1 | 3.5 | 3.5 | +| -3.5 | -1 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c2, nullif(c13, c2), ifnull(c13, c2) from t1; ++------+------+-----------------+-----------------+ +| c13 | c2 | nullif(c13, c2) | ifnull(c13, c2) | ++------+------+-----------------+-----------------+ +| 3.5 | 2 | 3.5 | 3.5 | +| -3.5 | 2 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c3, nullif(c13, c3), ifnull(c13, c3) from t1; ++------+------+-----------------+-----------------+ +| c13 | c3 | nullif(c13, c3) | ifnull(c13, c3) | ++------+------+-----------------+-----------------+ +| 3.5 | 1 | 3.5 | 3.5 | +| -3.5 | -1 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c4, nullif(c13, c4), ifnull(c13, c4) from t1; ++------+------+-----------------+-----------------+ +| c13 | c4 | nullif(c13, c4) | ifnull(c13, c4) | ++------+------+-----------------+-----------------+ +| 3.5 | 2 | 3.5 | 3.5 | +| -3.5 | 2 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c5, nullif(c13, c5), ifnull(c13, c5) from t1; ++------+------+-----------------+-----------------+ +| c13 | c5 | nullif(c13, c5) | ifnull(c13, c5) | ++------+------+-----------------+-----------------+ +| 3.5 | 1 | 3.5 | 3.5 | +| -3.5 | -1 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c6, nullif(c13, c6), ifnull(c13, c6) from t1; ++------+------+-----------------+-----------------+ +| c13 | c6 | nullif(c13, c6) | ifnull(c13, c6) | ++------+------+-----------------+-----------------+ +| 3.5 | 2 | 3.5 | 3.5 | +| -3.5 | 2 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c7, nullif(c13, c7), ifnull(c13, c7) from t1; ++------+------+-----------------+-----------------+ +| c13 | c7 | nullif(c13, c7) | ifnull(c13, c7) | ++------+------+-----------------+-----------------+ +| 3.5 | 1 | 3.5 | 3.5 | +| -3.5 | -1 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c8, nullif(c13, c8), ifnull(c13, c8) from t1; ++------+------+-----------------+-----------------+ +| c13 | c8 | nullif(c13, c8) | ifnull(c13, c8) | ++------+------+-----------------+-----------------+ +| 3.5 | 2 | 3.5 | 3.5 | +| -3.5 | 2 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c9, nullif(c13, c9), ifnull(c13, c9) from t1; ++------+------+-----------------+-----------------+ +| c13 | c9 | nullif(c13, c9) | ifnull(c13, c9) | ++------+------+-----------------+-----------------+ +| 3.5 | 1 | 3.5 | 3.5 | +| -3.5 | -1 | -3.5 | -3.5 | ++------+------+-----------------+-----------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c10, nullif(c13, c10), ifnull(c13, c10) from t1; ++------+------+------------------+------------------+ +| c13 | c10 | nullif(c13, c10) | ifnull(c13, c10) | ++------+------+------------------+------------------+ +| 3.5 | 2 | 3.5 | 3.5 | +| -3.5 | 2 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c11, nullif(c13, c11), ifnull(c13, c11) from t1; ++------+------+------------------+------------------+ +| c13 | c11 | nullif(c13, c11) | ifnull(c13, c11) | ++------+------+------------------+------------------+ +| 3.5 | 1 | 3.5 | 3.5 | +| -3.5 | -1 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c12, nullif(c13, c12), ifnull(c13, c12) from t1; ++------+------+------------------+------------------+ +| c13 | c12 | nullif(c13, c12) | ifnull(c13, c12) | ++------+------+------------------+------------------+ +| 3.5 | 2 | 3.5 | 3.5 | +| -3.5 | 2 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c13, nullif(c13, c13), ifnull(c13, c13) from t1; ++------+------+------------------+------------------+ +| c13 | c13 | nullif(c13, c13) | ifnull(c13, c13) | ++------+------+------------------+------------------+ +| 3.5 | 3.5 | NULL | 3.5 | +| -3.5 | -3.5 | NULL | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c14, nullif(c13, c14), ifnull(c13, c14) from t1; ++------+------+------------------+------------------+ +| c13 | c14 | nullif(c13, c14) | ifnull(c13, c14) | ++------+------+------------------+------------------+ +| 3.5 | 4.5 | 3.5 | 3.5 | +| -3.5 | 4.5 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c15, nullif(c13, c15), ifnull(c13, c15) from t1; ++------+------+------------------+------------------+ +| c13 | c15 | nullif(c13, c15) | ifnull(c13, c15) | ++------+------+------------------+------------------+ +| 3.5 | 5.5 | 3.5 | 3.5 | +| -3.5 | -5.5 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c16, nullif(c13, c16), ifnull(c13, c16) from t1; ++------+------+------------------+------------------+ +| c13 | c16 | nullif(c13, c16) | ifnull(c13, c16) | ++------+------+------------------+------------------+ +| 3.5 | 6.5 | 3.5 | 3.5 | +| -3.5 | 6.5 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c17, nullif(c13, c17), ifnull(c13, c17) from t1; ++------+------+------------------+------------------+ +| c13 | c17 | nullif(c13, c17) | ifnull(c13, c17) | ++------+------+------------------+------------------+ +| 3.5 | 8 | 3.5 | 3.5 | +| -3.5 | -8 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c18, nullif(c13, c18), ifnull(c13, c18) from t1; ++------+------+------------------+------------------+ +| c13 | c18 | nullif(c13, c18) | ifnull(c13, c18) | ++------+------+------------------+------------------+ +| 3.5 | 9 | 3.5 | 3.5 | +| -3.5 | 9 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c19, nullif(c13, c19), ifnull(c13, c19) from t1; ++------+---------------------+------------------+------------------+ +| c13 | c19 | nullif(c13, c19) | ifnull(c13, c19) | ++------+---------------------+------------------+------------------+ +| 3.5 | 2019-12-01 12:00:00 | 3.5 | 3.5 | +| -3.5 | 2019-12-01 12:00:00 | -3.5 | -3.5 | ++------+---------------------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c20, nullif(c13, c20), ifnull(c13, c20) from t1; ++------+---------------------+------------------+------------------+ +| c13 | c20 | nullif(c13, c20) | ifnull(c13, c20) | ++------+---------------------+------------------+------------------+ +| 3.5 | 2019-12-03 06:00:00 | 3.5 | 3.5 | +| -3.5 | 2019-12-03 06:00:00 | -3.5 | -3.5 | ++------+---------------------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c21, nullif(c13, c21), ifnull(c13, c21) from t1; ++------+------+------------------+------------------+ +| c13 | c21 | nullif(c13, c21) | ifnull(c13, c21) | ++------+------+------------------+------------------+ +| 3.5 | 9.5 | 3.5 | 3.5 | +| -3.5 | -9.5 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c13, c22, nullif(c13, c22), ifnull(c13, c22) from t1; ++------+------+------------------+------------------+ +| c13 | c22 | nullif(c13, c22) | ifnull(c13, c22) | ++------+------+------------------+------------------+ +| 3.5 | 10.5 | 3.5 | 3.5 | +| -3.5 | 10.5 | -3.5 | -3.5 | ++------+------+------------------+------------------+ +select c13, nullif(c13, c13) from t1; ++------+------------------+ +| c13 | nullif(c13, c13) | ++------+------------------+ +| 3.5 | NULL | +| -3.5 | NULL | ++------+------------------+ + +select c14, c1, nullif(c14, c1), ifnull(c14, c1) from t1; ++------+------+-----------------+-----------------+ +| c14 | c1 | nullif(c14, c1) | ifnull(c14, c1) | ++------+------+-----------------+-----------------+ +| 4.5 | 1 | 4.5 | 4.5 | +| 4.5 | -1 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c2, nullif(c14, c2), ifnull(c14, c2) from t1; ++------+------+-----------------+-----------------+ +| c14 | c2 | nullif(c14, c2) | ifnull(c14, c2) | ++------+------+-----------------+-----------------+ +| 4.5 | 2 | 4.5 | 4.5 | +| 4.5 | 2 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c3, nullif(c14, c3), ifnull(c14, c3) from t1; ++------+------+-----------------+-----------------+ +| c14 | c3 | nullif(c14, c3) | ifnull(c14, c3) | ++------+------+-----------------+-----------------+ +| 4.5 | 1 | 4.5 | 4.5 | +| 4.5 | -1 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c4, nullif(c14, c4), ifnull(c14, c4) from t1; ++------+------+-----------------+-----------------+ +| c14 | c4 | nullif(c14, c4) | ifnull(c14, c4) | ++------+------+-----------------+-----------------+ +| 4.5 | 2 | 4.5 | 4.5 | +| 4.5 | 2 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c5, nullif(c14, c5), ifnull(c14, c5) from t1; ++------+------+-----------------+-----------------+ +| c14 | c5 | nullif(c14, c5) | ifnull(c14, c5) | ++------+------+-----------------+-----------------+ +| 4.5 | 1 | 4.5 | 4.5 | +| 4.5 | -1 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c6, nullif(c14, c6), ifnull(c14, c6) from t1; ++------+------+-----------------+-----------------+ +| c14 | c6 | nullif(c14, c6) | ifnull(c14, c6) | ++------+------+-----------------+-----------------+ +| 4.5 | 2 | 4.5 | 4.5 | +| 4.5 | 2 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c7, nullif(c14, c7), ifnull(c14, c7) from t1; ++------+------+-----------------+-----------------+ +| c14 | c7 | nullif(c14, c7) | ifnull(c14, c7) | ++------+------+-----------------+-----------------+ +| 4.5 | 1 | 4.5 | 4.5 | +| 4.5 | -1 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c8, nullif(c14, c8), ifnull(c14, c8) from t1; ++------+------+-----------------+-----------------+ +| c14 | c8 | nullif(c14, c8) | ifnull(c14, c8) | ++------+------+-----------------+-----------------+ +| 4.5 | 2 | 4.5 | 4.5 | +| 4.5 | 2 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c9, nullif(c14, c9), ifnull(c14, c9) from t1; ++------+------+-----------------+-----------------+ +| c14 | c9 | nullif(c14, c9) | ifnull(c14, c9) | ++------+------+-----------------+-----------------+ +| 4.5 | 1 | 4.5 | 4.5 | +| 4.5 | -1 | 4.5 | 4.5 | ++------+------+-----------------+-----------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c10, nullif(c14, c10), ifnull(c14, c10) from t1; ++------+------+------------------+------------------+ +| c14 | c10 | nullif(c14, c10) | ifnull(c14, c10) | ++------+------+------------------+------------------+ +| 4.5 | 2 | 4.5 | 4.5 | +| 4.5 | 2 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c11, nullif(c14, c11), ifnull(c14, c11) from t1; ++------+------+------------------+------------------+ +| c14 | c11 | nullif(c14, c11) | ifnull(c14, c11) | ++------+------+------------------+------------------+ +| 4.5 | 1 | 4.5 | 4.5 | +| 4.5 | -1 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c12, nullif(c14, c12), ifnull(c14, c12) from t1; ++------+------+------------------+------------------+ +| c14 | c12 | nullif(c14, c12) | ifnull(c14, c12) | ++------+------+------------------+------------------+ +| 4.5 | 2 | 4.5 | 4.5 | +| 4.5 | 2 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c13, nullif(c14, c13), ifnull(c14, c13) from t1; ++------+------+------------------+------------------+ +| c14 | c13 | nullif(c14, c13) | ifnull(c14, c13) | ++------+------+------------------+------------------+ +| 4.5 | 3.5 | 4.5 | 4.5 | +| 4.5 | -3.5 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c14, nullif(c14, c14), ifnull(c14, c14) from t1; ++------+------+------------------+------------------+ +| c14 | c14 | nullif(c14, c14) | ifnull(c14, c14) | ++------+------+------------------+------------------+ +| 4.5 | 4.5 | NULL | 4.5 | +| 4.5 | 4.5 | NULL | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c15, nullif(c14, c15), ifnull(c14, c15) from t1; ++------+------+------------------+------------------+ +| c14 | c15 | nullif(c14, c15) | ifnull(c14, c15) | ++------+------+------------------+------------------+ +| 4.5 | 5.5 | 4.5 | 4.5 | +| 4.5 | -5.5 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c16, nullif(c14, c16), ifnull(c14, c16) from t1; ++------+------+------------------+------------------+ +| c14 | c16 | nullif(c14, c16) | ifnull(c14, c16) | ++------+------+------------------+------------------+ +| 4.5 | 6.5 | 4.5 | 4.5 | +| 4.5 | 6.5 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c17, nullif(c14, c17), ifnull(c14, c17) from t1; ++------+------+------------------+------------------+ +| c14 | c17 | nullif(c14, c17) | ifnull(c14, c17) | ++------+------+------------------+------------------+ +| 4.5 | 8 | 4.5 | 4.5 | +| 4.5 | -8 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c18, nullif(c14, c18), ifnull(c14, c18) from t1; ++------+------+------------------+------------------+ +| c14 | c18 | nullif(c14, c18) | ifnull(c14, c18) | ++------+------+------------------+------------------+ +| 4.5 | 9 | 4.5 | 4.5 | +| 4.5 | 9 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c19, nullif(c14, c19), ifnull(c14, c19) from t1; ++------+---------------------+------------------+------------------+ +| c14 | c19 | nullif(c14, c19) | ifnull(c14, c19) | ++------+---------------------+------------------+------------------+ +| 4.5 | 2019-12-01 12:00:00 | 4.5 | 4.5 | +| 4.5 | 2019-12-01 12:00:00 | 4.5 | 4.5 | ++------+---------------------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c20, nullif(c14, c20), ifnull(c14, c20) from t1; ++------+---------------------+------------------+------------------+ +| c14 | c20 | nullif(c14, c20) | ifnull(c14, c20) | ++------+---------------------+------------------+------------------+ +| 4.5 | 2019-12-03 06:00:00 | 4.5 | 4.5 | +| 4.5 | 2019-12-03 06:00:00 | 4.5 | 4.5 | ++------+---------------------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c21, nullif(c14, c21), ifnull(c14, c21) from t1; ++------+------+------------------+------------------+ +| c14 | c21 | nullif(c14, c21) | ifnull(c14, c21) | ++------+------+------------------+------------------+ +| 4.5 | 9.5 | 4.5 | 4.5 | +| 4.5 | -9.5 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c14, c22, nullif(c14, c22), ifnull(c14, c22) from t1; ++------+------+------------------+------------------+ +| c14 | c22 | nullif(c14, c22) | ifnull(c14, c22) | ++------+------+------------------+------------------+ +| 4.5 | 10.5 | 4.5 | 4.5 | +| 4.5 | 10.5 | 4.5 | 4.5 | ++------+------+------------------+------------------+ +select c14, nullif(c14, c14) from t1; ++------+------------------+ +| c14 | nullif(c14, c14) | ++------+------------------+ +| 4.5 | NULL | +| 4.5 | NULL | ++------+------------------+ + +select c15, c1, nullif(c15, c1), ifnull(c15, c1) from t1; ++------+------+-----------------+-----------------+ +| c15 | c1 | nullif(c15, c1) | ifnull(c15, c1) | ++------+------+-----------------+-----------------+ +| 5.5 | 1 | 5.5 | 5.5 | +| -5.5 | -1 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c2, nullif(c15, c2), ifnull(c15, c2) from t1; ++------+------+-----------------+-----------------+ +| c15 | c2 | nullif(c15, c2) | ifnull(c15, c2) | ++------+------+-----------------+-----------------+ +| 5.5 | 2 | 5.5 | 5.5 | +| -5.5 | 2 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c3, nullif(c15, c3), ifnull(c15, c3) from t1; ++------+------+-----------------+-----------------+ +| c15 | c3 | nullif(c15, c3) | ifnull(c15, c3) | ++------+------+-----------------+-----------------+ +| 5.5 | 1 | 5.5 | 5.5 | +| -5.5 | -1 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c4, nullif(c15, c4), ifnull(c15, c4) from t1; ++------+------+-----------------+-----------------+ +| c15 | c4 | nullif(c15, c4) | ifnull(c15, c4) | ++------+------+-----------------+-----------------+ +| 5.5 | 2 | 5.5 | 5.5 | +| -5.5 | 2 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c5, nullif(c15, c5), ifnull(c15, c5) from t1; ++------+------+-----------------+-----------------+ +| c15 | c5 | nullif(c15, c5) | ifnull(c15, c5) | ++------+------+-----------------+-----------------+ +| 5.5 | 1 | 5.5 | 5.5 | +| -5.5 | -1 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c6, nullif(c15, c6), ifnull(c15, c6) from t1; ++------+------+-----------------+-----------------+ +| c15 | c6 | nullif(c15, c6) | ifnull(c15, c6) | ++------+------+-----------------+-----------------+ +| 5.5 | 2 | 5.5 | 5.5 | +| -5.5 | 2 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c7, nullif(c15, c7), ifnull(c15, c7) from t1; ++------+------+-----------------+-----------------+ +| c15 | c7 | nullif(c15, c7) | ifnull(c15, c7) | ++------+------+-----------------+-----------------+ +| 5.5 | 1 | 5.5 | 5.5 | +| -5.5 | -1 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c8, nullif(c15, c8), ifnull(c15, c8) from t1; ++------+------+-----------------+-----------------+ +| c15 | c8 | nullif(c15, c8) | ifnull(c15, c8) | ++------+------+-----------------+-----------------+ +| 5.5 | 2 | 5.5 | 5.5 | +| -5.5 | 2 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c9, nullif(c15, c9), ifnull(c15, c9) from t1; ++------+------+-----------------+-----------------+ +| c15 | c9 | nullif(c15, c9) | ifnull(c15, c9) | ++------+------+-----------------+-----------------+ +| 5.5 | 1 | 5.5 | 5.5 | +| -5.5 | -1 | -5.5 | -5.5 | ++------+------+-----------------+-----------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c10, nullif(c15, c10), ifnull(c15, c10) from t1; ++------+------+------------------+------------------+ +| c15 | c10 | nullif(c15, c10) | ifnull(c15, c10) | ++------+------+------------------+------------------+ +| 5.5 | 2 | 5.5 | 5.5 | +| -5.5 | 2 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c11, nullif(c15, c11), ifnull(c15, c11) from t1; ++------+------+------------------+------------------+ +| c15 | c11 | nullif(c15, c11) | ifnull(c15, c11) | ++------+------+------------------+------------------+ +| 5.5 | 1 | 5.5 | 5.5 | +| -5.5 | -1 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c12, nullif(c15, c12), ifnull(c15, c12) from t1; ++------+------+------------------+------------------+ +| c15 | c12 | nullif(c15, c12) | ifnull(c15, c12) | ++------+------+------------------+------------------+ +| 5.5 | 2 | 5.5 | 5.5 | +| -5.5 | 2 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c13, nullif(c15, c13), ifnull(c15, c13) from t1; ++------+------+------------------+------------------+ +| c15 | c13 | nullif(c15, c13) | ifnull(c15, c13) | ++------+------+------------------+------------------+ +| 5.5 | 3.5 | 5.5 | 5.5 | +| -5.5 | -3.5 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c14, nullif(c15, c14), ifnull(c15, c14) from t1; ++------+------+------------------+------------------+ +| c15 | c14 | nullif(c15, c14) | ifnull(c15, c14) | ++------+------+------------------+------------------+ +| 5.5 | 4.5 | 5.5 | 5.5 | +| -5.5 | 4.5 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c15, nullif(c15, c15), ifnull(c15, c15) from t1; ++------+------+------------------+------------------+ +| c15 | c15 | nullif(c15, c15) | ifnull(c15, c15) | ++------+------+------------------+------------------+ +| 5.5 | 5.5 | NULL | 5.5 | +| -5.5 | -5.5 | NULL | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c16, nullif(c15, c16), ifnull(c15, c16) from t1; ++------+------+------------------+------------------+ +| c15 | c16 | nullif(c15, c16) | ifnull(c15, c16) | ++------+------+------------------+------------------+ +| 5.5 | 6.5 | 5.5 | 5.5 | +| -5.5 | 6.5 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c17, nullif(c15, c17), ifnull(c15, c17) from t1; ++------+------+------------------+------------------+ +| c15 | c17 | nullif(c15, c17) | ifnull(c15, c17) | ++------+------+------------------+------------------+ +| 5.5 | 8 | 5.5 | 5.5 | +| -5.5 | -8 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c18, nullif(c15, c18), ifnull(c15, c18) from t1; ++------+------+------------------+------------------+ +| c15 | c18 | nullif(c15, c18) | ifnull(c15, c18) | ++------+------+------------------+------------------+ +| 5.5 | 9 | 5.5 | 5.5 | +| -5.5 | 9 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c19, nullif(c15, c19), ifnull(c15, c19) from t1; ++------+---------------------+------------------+------------------+ +| c15 | c19 | nullif(c15, c19) | ifnull(c15, c19) | ++------+---------------------+------------------+------------------+ +| 5.5 | 2019-12-01 12:00:00 | 5.5 | 5.5 | +| -5.5 | 2019-12-01 12:00:00 | -5.5 | -5.5 | ++------+---------------------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c20, nullif(c15, c20), ifnull(c15, c20) from t1; ++------+---------------------+------------------+------------------+ +| c15 | c20 | nullif(c15, c20) | ifnull(c15, c20) | ++------+---------------------+------------------+------------------+ +| 5.5 | 2019-12-03 06:00:00 | 5.5 | 5.5 | +| -5.5 | 2019-12-03 06:00:00 | -5.5 | -5.5 | ++------+---------------------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c21, nullif(c15, c21), ifnull(c15, c21) from t1; ++------+------+------------------+------------------+ +| c15 | c21 | nullif(c15, c21) | ifnull(c15, c21) | ++------+------+------------------+------------------+ +| 5.5 | 9.5 | 5.5 | 5.5 | +| -5.5 | -9.5 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c15, c22, nullif(c15, c22), ifnull(c15, c22) from t1; ++------+------+------------------+------------------+ +| c15 | c22 | nullif(c15, c22) | ifnull(c15, c22) | ++------+------+------------------+------------------+ +| 5.5 | 10.5 | 5.5 | 5.5 | +| -5.5 | 10.5 | -5.5 | -5.5 | ++------+------+------------------+------------------+ +select c15, nullif(c15, c15) from t1; ++------+------------------+ +| c15 | nullif(c15, c15) | ++------+------------------+ +| 5.5 | NULL | +| -5.5 | NULL | ++------+------------------+ + +select c16, c1, nullif(c16, c1), ifnull(c16, c1) from t1; ++------+------+-----------------+-----------------+ +| c16 | c1 | nullif(c16, c1) | ifnull(c16, c1) | ++------+------+-----------------+-----------------+ +| 6.5 | 1 | 6.5 | 6.5 | +| 6.5 | -1 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c2, nullif(c16, c2), ifnull(c16, c2) from t1; ++------+------+-----------------+-----------------+ +| c16 | c2 | nullif(c16, c2) | ifnull(c16, c2) | ++------+------+-----------------+-----------------+ +| 6.5 | 2 | 6.5 | 6.5 | +| 6.5 | 2 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c3, nullif(c16, c3), ifnull(c16, c3) from t1; ++------+------+-----------------+-----------------+ +| c16 | c3 | nullif(c16, c3) | ifnull(c16, c3) | ++------+------+-----------------+-----------------+ +| 6.5 | 1 | 6.5 | 6.5 | +| 6.5 | -1 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c4, nullif(c16, c4), ifnull(c16, c4) from t1; ++------+------+-----------------+-----------------+ +| c16 | c4 | nullif(c16, c4) | ifnull(c16, c4) | ++------+------+-----------------+-----------------+ +| 6.5 | 2 | 6.5 | 6.5 | +| 6.5 | 2 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c5, nullif(c16, c5), ifnull(c16, c5) from t1; ++------+------+-----------------+-----------------+ +| c16 | c5 | nullif(c16, c5) | ifnull(c16, c5) | ++------+------+-----------------+-----------------+ +| 6.5 | 1 | 6.5 | 6.5 | +| 6.5 | -1 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c6, nullif(c16, c6), ifnull(c16, c6) from t1; ++------+------+-----------------+-----------------+ +| c16 | c6 | nullif(c16, c6) | ifnull(c16, c6) | ++------+------+-----------------+-----------------+ +| 6.5 | 2 | 6.5 | 6.5 | +| 6.5 | 2 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c7, nullif(c16, c7), ifnull(c16, c7) from t1; ++------+------+-----------------+-----------------+ +| c16 | c7 | nullif(c16, c7) | ifnull(c16, c7) | ++------+------+-----------------+-----------------+ +| 6.5 | 1 | 6.5 | 6.5 | +| 6.5 | -1 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c8, nullif(c16, c8), ifnull(c16, c8) from t1; ++------+------+-----------------+-----------------+ +| c16 | c8 | nullif(c16, c8) | ifnull(c16, c8) | ++------+------+-----------------+-----------------+ +| 6.5 | 2 | 6.5 | 6.5 | +| 6.5 | 2 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c9, nullif(c16, c9), ifnull(c16, c9) from t1; ++------+------+-----------------+-----------------+ +| c16 | c9 | nullif(c16, c9) | ifnull(c16, c9) | ++------+------+-----------------+-----------------+ +| 6.5 | 1 | 6.5 | 6.5 | +| 6.5 | -1 | 6.5 | 6.5 | ++------+------+-----------------+-----------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c10, nullif(c16, c10), ifnull(c16, c10) from t1; ++------+------+------------------+------------------+ +| c16 | c10 | nullif(c16, c10) | ifnull(c16, c10) | ++------+------+------------------+------------------+ +| 6.5 | 2 | 6.5 | 6.5 | +| 6.5 | 2 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c11, nullif(c16, c11), ifnull(c16, c11) from t1; ++------+------+------------------+------------------+ +| c16 | c11 | nullif(c16, c11) | ifnull(c16, c11) | ++------+------+------------------+------------------+ +| 6.5 | 1 | 6.5 | 6.5 | +| 6.5 | -1 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c12, nullif(c16, c12), ifnull(c16, c12) from t1; ++------+------+------------------+------------------+ +| c16 | c12 | nullif(c16, c12) | ifnull(c16, c12) | ++------+------+------------------+------------------+ +| 6.5 | 2 | 6.5 | 6.5 | +| 6.5 | 2 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c13, nullif(c16, c13), ifnull(c16, c13) from t1; ++------+------+------------------+------------------+ +| c16 | c13 | nullif(c16, c13) | ifnull(c16, c13) | ++------+------+------------------+------------------+ +| 6.5 | 3.5 | 6.5 | 6.5 | +| 6.5 | -3.5 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c14, nullif(c16, c14), ifnull(c16, c14) from t1; ++------+------+------------------+------------------+ +| c16 | c14 | nullif(c16, c14) | ifnull(c16, c14) | ++------+------+------------------+------------------+ +| 6.5 | 4.5 | 6.5 | 6.5 | +| 6.5 | 4.5 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c15, nullif(c16, c15), ifnull(c16, c15) from t1; ++------+------+------------------+------------------+ +| c16 | c15 | nullif(c16, c15) | ifnull(c16, c15) | ++------+------+------------------+------------------+ +| 6.5 | 5.5 | 6.5 | 6.5 | +| 6.5 | -5.5 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c16, nullif(c16, c16), ifnull(c16, c16) from t1; ++------+------+------------------+------------------+ +| c16 | c16 | nullif(c16, c16) | ifnull(c16, c16) | ++------+------+------------------+------------------+ +| 6.5 | 6.5 | NULL | 6.5 | +| 6.5 | 6.5 | NULL | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c17, nullif(c16, c17), ifnull(c16, c17) from t1; ++------+------+------------------+------------------+ +| c16 | c17 | nullif(c16, c17) | ifnull(c16, c17) | ++------+------+------------------+------------------+ +| 6.5 | 8 | 6.5 | 6.5 | +| 6.5 | -8 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c18, nullif(c16, c18), ifnull(c16, c18) from t1; ++------+------+------------------+------------------+ +| c16 | c18 | nullif(c16, c18) | ifnull(c16, c18) | ++------+------+------------------+------------------+ +| 6.5 | 9 | 6.5 | 6.5 | +| 6.5 | 9 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c19, nullif(c16, c19), ifnull(c16, c19) from t1; ++------+---------------------+------------------+------------------+ +| c16 | c19 | nullif(c16, c19) | ifnull(c16, c19) | ++------+---------------------+------------------+------------------+ +| 6.5 | 2019-12-01 12:00:00 | 6.5 | 6.5 | +| 6.5 | 2019-12-01 12:00:00 | 6.5 | 6.5 | ++------+---------------------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c20, nullif(c16, c20), ifnull(c16, c20) from t1; ++------+---------------------+------------------+------------------+ +| c16 | c20 | nullif(c16, c20) | ifnull(c16, c20) | ++------+---------------------+------------------+------------------+ +| 6.5 | 2019-12-03 06:00:00 | 6.5 | 6.5 | +| 6.5 | 2019-12-03 06:00:00 | 6.5 | 6.5 | ++------+---------------------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c21, nullif(c16, c21), ifnull(c16, c21) from t1; ++------+------+------------------+------------------+ +| c16 | c21 | nullif(c16, c21) | ifnull(c16, c21) | ++------+------+------------------+------------------+ +| 6.5 | 9.5 | 6.5 | 6.5 | +| 6.5 | -9.5 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c16, c22, nullif(c16, c22), ifnull(c16, c22) from t1; ++------+------+------------------+------------------+ +| c16 | c22 | nullif(c16, c22) | ifnull(c16, c22) | ++------+------+------------------+------------------+ +| 6.5 | 10.5 | 6.5 | 6.5 | +| 6.5 | 10.5 | 6.5 | 6.5 | ++------+------+------------------+------------------+ +select c16, nullif(c16, c16) from t1; ++------+------------------+ +| c16 | nullif(c16, c16) | ++------+------------------+ +| 6.5 | NULL | +| 6.5 | NULL | ++------+------------------+ + +select c17, c1, nullif(c17, c1), ifnull(c17, c1) from t1; ++------+------+-----------------+-----------------+ +| c17 | c1 | nullif(c17, c1) | ifnull(c17, c1) | ++------+------+-----------------+-----------------+ +| 8 | 1 | 8 | 8 | +| -8 | -1 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c2, nullif(c17, c2), ifnull(c17, c2) from t1; ++------+------+-----------------+-----------------+ +| c17 | c2 | nullif(c17, c2) | ifnull(c17, c2) | ++------+------+-----------------+-----------------+ +| 8 | 2 | 8 | 8 | +| -8 | 2 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c3, nullif(c17, c3), ifnull(c17, c3) from t1; ++------+------+-----------------+-----------------+ +| c17 | c3 | nullif(c17, c3) | ifnull(c17, c3) | ++------+------+-----------------+-----------------+ +| 8 | 1 | 8 | 8 | +| -8 | -1 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c4, nullif(c17, c4), ifnull(c17, c4) from t1; ++------+------+-----------------+-----------------+ +| c17 | c4 | nullif(c17, c4) | ifnull(c17, c4) | ++------+------+-----------------+-----------------+ +| 8 | 2 | 8 | 8 | +| -8 | 2 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c5, nullif(c17, c5), ifnull(c17, c5) from t1; ++------+------+-----------------+-----------------+ +| c17 | c5 | nullif(c17, c5) | ifnull(c17, c5) | ++------+------+-----------------+-----------------+ +| 8 | 1 | 8 | 8 | +| -8 | -1 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c6, nullif(c17, c6), ifnull(c17, c6) from t1; ++------+------+-----------------+-----------------+ +| c17 | c6 | nullif(c17, c6) | ifnull(c17, c6) | ++------+------+-----------------+-----------------+ +| 8 | 2 | 8 | 8 | +| -8 | 2 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c7, nullif(c17, c7), ifnull(c17, c7) from t1; ++------+------+-----------------+-----------------+ +| c17 | c7 | nullif(c17, c7) | ifnull(c17, c7) | ++------+------+-----------------+-----------------+ +| 8 | 1 | 8 | 8 | +| -8 | -1 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c8, nullif(c17, c8), ifnull(c17, c8) from t1; ++------+------+-----------------+-----------------+ +| c17 | c8 | nullif(c17, c8) | ifnull(c17, c8) | ++------+------+-----------------+-----------------+ +| 8 | 2 | 8 | 8 | +| -8 | 2 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c9, nullif(c17, c9), ifnull(c17, c9) from t1; ++------+------+-----------------+-----------------+ +| c17 | c9 | nullif(c17, c9) | ifnull(c17, c9) | ++------+------+-----------------+-----------------+ +| 8 | 1 | 8 | 8 | +| -8 | -1 | -8 | -8 | ++------+------+-----------------+-----------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c10, nullif(c17, c10), ifnull(c17, c10) from t1; ++------+------+------------------+------------------+ +| c17 | c10 | nullif(c17, c10) | ifnull(c17, c10) | ++------+------+------------------+------------------+ +| 8 | 2 | 8 | 8 | +| -8 | 2 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c11, nullif(c17, c11), ifnull(c17, c11) from t1; ++------+------+------------------+------------------+ +| c17 | c11 | nullif(c17, c11) | ifnull(c17, c11) | ++------+------+------------------+------------------+ +| 8 | 1 | 8 | 8 | +| -8 | -1 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c12, nullif(c17, c12), ifnull(c17, c12) from t1; ++------+------+------------------+------------------+ +| c17 | c12 | nullif(c17, c12) | ifnull(c17, c12) | ++------+------+------------------+------------------+ +| 8 | 2 | 8 | 8 | +| -8 | 2 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c13, nullif(c17, c13), ifnull(c17, c13) from t1; ++------+------+------------------+------------------+ +| c17 | c13 | nullif(c17, c13) | ifnull(c17, c13) | ++------+------+------------------+------------------+ +| 8 | 3.5 | 8 | 8 | +| -8 | -3.5 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c14, nullif(c17, c14), ifnull(c17, c14) from t1; ++------+------+------------------+------------------+ +| c17 | c14 | nullif(c17, c14) | ifnull(c17, c14) | ++------+------+------------------+------------------+ +| 8 | 4.5 | 8 | 8 | +| -8 | 4.5 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c15, nullif(c17, c15), ifnull(c17, c15) from t1; ++------+------+------------------+------------------+ +| c17 | c15 | nullif(c17, c15) | ifnull(c17, c15) | ++------+------+------------------+------------------+ +| 8 | 5.5 | 8 | 8 | +| -8 | -5.5 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c16, nullif(c17, c16), ifnull(c17, c16) from t1; ++------+------+------------------+------------------+ +| c17 | c16 | nullif(c17, c16) | ifnull(c17, c16) | ++------+------+------------------+------------------+ +| 8 | 6.5 | 8 | 8 | +| -8 | 6.5 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c17, nullif(c17, c17), ifnull(c17, c17) from t1; ++------+------+------------------+------------------+ +| c17 | c17 | nullif(c17, c17) | ifnull(c17, c17) | ++------+------+------------------+------------------+ +| 8 | 8 | NULL | 8 | +| -8 | -8 | NULL | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c18, nullif(c17, c18), ifnull(c17, c18) from t1; ++------+------+------------------+------------------+ +| c17 | c18 | nullif(c17, c18) | ifnull(c17, c18) | ++------+------+------------------+------------------+ +| 8 | 9 | 8 | 8 | +| -8 | 9 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c19, nullif(c17, c19), ifnull(c17, c19) from t1; ++------+---------------------+------------------+------------------+ +| c17 | c19 | nullif(c17, c19) | ifnull(c17, c19) | ++------+---------------------+------------------+------------------+ +| 8 | 2019-12-01 12:00:00 | 8 | 8 | +| -8 | 2019-12-01 12:00:00 | -8 | -8 | ++------+---------------------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c20, nullif(c17, c20), ifnull(c17, c20) from t1; ++------+---------------------+------------------+------------------+ +| c17 | c20 | nullif(c17, c20) | ifnull(c17, c20) | ++------+---------------------+------------------+------------------+ +| 8 | 2019-12-03 06:00:00 | 8 | 8 | +| -8 | 2019-12-03 06:00:00 | -8 | -8 | ++------+---------------------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c21, nullif(c17, c21), ifnull(c17, c21) from t1; ++------+------+------------------+------------------+ +| c17 | c21 | nullif(c17, c21) | ifnull(c17, c21) | ++------+------+------------------+------------------+ +| 8 | 9.5 | 8 | 8 | +| -8 | -9.5 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c17, c22, nullif(c17, c22), ifnull(c17, c22) from t1; ++------+------+------------------+------------------+ +| c17 | c22 | nullif(c17, c22) | ifnull(c17, c22) | ++------+------+------------------+------------------+ +| 8 | 10.5 | 8 | 8 | +| -8 | 10.5 | -8 | -8 | ++------+------+------------------+------------------+ +select c17, nullif(c17, c17) from t1; ++------+------------------+ +| c17 | nullif(c17, c17) | ++------+------------------+ +| 8 | NULL | +| -8 | NULL | ++------+------------------+ + +select c18, c1, nullif(c18, c1), ifnull(c18, c1) from t1; ++------+------+-----------------+-----------------+ +| c18 | c1 | nullif(c18, c1) | ifnull(c18, c1) | ++------+------+-----------------+-----------------+ +| 9 | 1 | 9 | 9 | +| 9 | -1 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c2, nullif(c18, c2), ifnull(c18, c2) from t1; ++------+------+-----------------+-----------------+ +| c18 | c2 | nullif(c18, c2) | ifnull(c18, c2) | ++------+------+-----------------+-----------------+ +| 9 | 2 | 9 | 9 | +| 9 | 2 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c3, nullif(c18, c3), ifnull(c18, c3) from t1; ++------+------+-----------------+-----------------+ +| c18 | c3 | nullif(c18, c3) | ifnull(c18, c3) | ++------+------+-----------------+-----------------+ +| 9 | 1 | 9 | 9 | +| 9 | -1 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c4, nullif(c18, c4), ifnull(c18, c4) from t1; ++------+------+-----------------+-----------------+ +| c18 | c4 | nullif(c18, c4) | ifnull(c18, c4) | ++------+------+-----------------+-----------------+ +| 9 | 2 | 9 | 9 | +| 9 | 2 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c5, nullif(c18, c5), ifnull(c18, c5) from t1; ++------+------+-----------------+-----------------+ +| c18 | c5 | nullif(c18, c5) | ifnull(c18, c5) | ++------+------+-----------------+-----------------+ +| 9 | 1 | 9 | 9 | +| 9 | -1 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c6, nullif(c18, c6), ifnull(c18, c6) from t1; ++------+------+-----------------+-----------------+ +| c18 | c6 | nullif(c18, c6) | ifnull(c18, c6) | ++------+------+-----------------+-----------------+ +| 9 | 2 | 9 | 9 | +| 9 | 2 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c7, nullif(c18, c7), ifnull(c18, c7) from t1; ++------+------+-----------------+-----------------+ +| c18 | c7 | nullif(c18, c7) | ifnull(c18, c7) | ++------+------+-----------------+-----------------+ +| 9 | 1 | 9 | 9 | +| 9 | -1 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c8, nullif(c18, c8), ifnull(c18, c8) from t1; ++------+------+-----------------+-----------------+ +| c18 | c8 | nullif(c18, c8) | ifnull(c18, c8) | ++------+------+-----------------+-----------------+ +| 9 | 2 | 9 | 9 | +| 9 | 2 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c9, nullif(c18, c9), ifnull(c18, c9) from t1; ++------+------+-----------------+-----------------+ +| c18 | c9 | nullif(c18, c9) | ifnull(c18, c9) | ++------+------+-----------------+-----------------+ +| 9 | 1 | 9 | 9 | +| 9 | -1 | 9 | 9 | ++------+------+-----------------+-----------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c10, nullif(c18, c10), ifnull(c18, c10) from t1; ++------+------+------------------+------------------+ +| c18 | c10 | nullif(c18, c10) | ifnull(c18, c10) | ++------+------+------------------+------------------+ +| 9 | 2 | 9 | 9 | +| 9 | 2 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c11, nullif(c18, c11), ifnull(c18, c11) from t1; ++------+------+------------------+------------------+ +| c18 | c11 | nullif(c18, c11) | ifnull(c18, c11) | ++------+------+------------------+------------------+ +| 9 | 1 | 9 | 9 | +| 9 | -1 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c12, nullif(c18, c12), ifnull(c18, c12) from t1; ++------+------+------------------+------------------+ +| c18 | c12 | nullif(c18, c12) | ifnull(c18, c12) | ++------+------+------------------+------------------+ +| 9 | 2 | 9 | 9 | +| 9 | 2 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c13, nullif(c18, c13), ifnull(c18, c13) from t1; ++------+------+------------------+------------------+ +| c18 | c13 | nullif(c18, c13) | ifnull(c18, c13) | ++------+------+------------------+------------------+ +| 9 | 3.5 | 9 | 9 | +| 9 | -3.5 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c14, nullif(c18, c14), ifnull(c18, c14) from t1; ++------+------+------------------+------------------+ +| c18 | c14 | nullif(c18, c14) | ifnull(c18, c14) | ++------+------+------------------+------------------+ +| 9 | 4.5 | 9 | 9 | +| 9 | 4.5 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c15, nullif(c18, c15), ifnull(c18, c15) from t1; ++------+------+------------------+------------------+ +| c18 | c15 | nullif(c18, c15) | ifnull(c18, c15) | ++------+------+------------------+------------------+ +| 9 | 5.5 | 9 | 9 | +| 9 | -5.5 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c16, nullif(c18, c16), ifnull(c18, c16) from t1; ++------+------+------------------+------------------+ +| c18 | c16 | nullif(c18, c16) | ifnull(c18, c16) | ++------+------+------------------+------------------+ +| 9 | 6.5 | 9 | 9 | +| 9 | 6.5 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c17, nullif(c18, c17), ifnull(c18, c17) from t1; ++------+------+------------------+------------------+ +| c18 | c17 | nullif(c18, c17) | ifnull(c18, c17) | ++------+------+------------------+------------------+ +| 9 | 8 | 9 | 9 | +| 9 | -8 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c18, nullif(c18, c18), ifnull(c18, c18) from t1; ++------+------+------------------+------------------+ +| c18 | c18 | nullif(c18, c18) | ifnull(c18, c18) | ++------+------+------------------+------------------+ +| 9 | 9 | NULL | 9 | +| 9 | 9 | NULL | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c19, nullif(c18, c19), ifnull(c18, c19) from t1; ++------+---------------------+------------------+------------------+ +| c18 | c19 | nullif(c18, c19) | ifnull(c18, c19) | ++------+---------------------+------------------+------------------+ +| 9 | 2019-12-01 12:00:00 | 9 | 9 | +| 9 | 2019-12-01 12:00:00 | 9 | 9 | ++------+---------------------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c20, nullif(c18, c20), ifnull(c18, c20) from t1; ++------+---------------------+------------------+------------------+ +| c18 | c20 | nullif(c18, c20) | ifnull(c18, c20) | ++------+---------------------+------------------+------------------+ +| 9 | 2019-12-03 06:00:00 | 9 | 9 | +| 9 | 2019-12-03 06:00:00 | 9 | 9 | ++------+---------------------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c21, nullif(c18, c21), ifnull(c18, c21) from t1; ++------+------+------------------+------------------+ +| c18 | c21 | nullif(c18, c21) | ifnull(c18, c21) | ++------+------+------------------+------------------+ +| 9 | 9.5 | 9 | 9 | +| 9 | -9.5 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c18, c22, nullif(c18, c22), ifnull(c18, c22) from t1; ++------+------+------------------+------------------+ +| c18 | c22 | nullif(c18, c22) | ifnull(c18, c22) | ++------+------+------------------+------------------+ +| 9 | 10.5 | 9 | 9 | +| 9 | 10.5 | 9 | 9 | ++------+------+------------------+------------------+ +select c18, nullif(c18, c18) from t1; ++------+------------------+ +| c18 | nullif(c18, c18) | ++------+------------------+ +| 9 | NULL | +| 9 | NULL | ++------+------------------+ + +select c19, c1, nullif(c19, c1), ifnull(c19, c1) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c1 | nullif(c19, c1) | ifnull(c19, c1) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c2, nullif(c19, c2), ifnull(c19, c2) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c2 | nullif(c19, c2) | ifnull(c19, c2) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c3, nullif(c19, c3), ifnull(c19, c3) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c3 | nullif(c19, c3) | ifnull(c19, c3) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c4, nullif(c19, c4), ifnull(c19, c4) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c4 | nullif(c19, c4) | ifnull(c19, c4) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c5, nullif(c19, c5), ifnull(c19, c5) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c5 | nullif(c19, c5) | ifnull(c19, c5) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c6, nullif(c19, c6), ifnull(c19, c6) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c6 | nullif(c19, c6) | ifnull(c19, c6) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c7, nullif(c19, c7), ifnull(c19, c7) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c7 | nullif(c19, c7) | ifnull(c19, c7) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c8, nullif(c19, c8), ifnull(c19, c8) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c8 | nullif(c19, c8) | ifnull(c19, c8) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c9, nullif(c19, c9), ifnull(c19, c9) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c9 | nullif(c19, c9) | ifnull(c19, c9) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c10, nullif(c19, c10), ifnull(c19, c10) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c10 | nullif(c19, c10) | ifnull(c19, c10) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c11, nullif(c19, c11), ifnull(c19, c11) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c11 | nullif(c19, c11) | ifnull(c19, c11) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c12, nullif(c19, c12), ifnull(c19, c12) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c12 | nullif(c19, c12) | ifnull(c19, c12) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c13, nullif(c19, c13), ifnull(c19, c13) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c13 | nullif(c19, c13) | ifnull(c19, c13) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 3.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -3.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c14, nullif(c19, c14), ifnull(c19, c14) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c14 | nullif(c19, c14) | ifnull(c19, c14) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 4.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 4.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c15, nullif(c19, c15), ifnull(c19, c15) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c15 | nullif(c19, c15) | ifnull(c19, c15) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 5.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -5.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c16, nullif(c19, c16), ifnull(c19, c16) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c16 | nullif(c19, c16) | ifnull(c19, c16) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 6.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 6.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c17, nullif(c19, c17), ifnull(c19, c17) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c17 | nullif(c19, c17) | ifnull(c19, c17) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 8 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -8 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c18, nullif(c19, c18), ifnull(c19, c18) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c18 | nullif(c19, c18) | ifnull(c19, c18) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 9 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 9 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c19, nullif(c19, c19), ifnull(c19, c19) from t1; ++---------------------+---------------------+------------------+---------------------+ +| c19 | c19 | nullif(c19, c19) | ifnull(c19, c19) | ++---------------------+---------------------+------------------+---------------------+ +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | NULL | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | NULL | 2019-12-01 12:00:00 | ++---------------------+---------------------+------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c20, nullif(c19, c20), ifnull(c19, c20) from t1; ++---------------------+---------------------+---------------------+---------------------+ +| c19 | c20 | nullif(c19, c20) | ifnull(c19, c20) | ++---------------------+---------------------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+---------------------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c21, nullif(c19, c21), ifnull(c19, c21) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c21 | nullif(c19, c21) | ifnull(c19, c21) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 9.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | -9.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c19, c22, nullif(c19, c22), ifnull(c19, c22) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c22 | nullif(c19, c22) | ifnull(c19, c22) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 10.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 10.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+---------------------+ +select c19, nullif(c19, c19) from t1; ++---------------------+------------------+ +| c19 | nullif(c19, c19) | ++---------------------+------------------+ +| 2019-12-01 12:00:00 | NULL | +| 2019-12-01 12:00:00 | NULL | ++---------------------+------------------+ + +select c20, c1, nullif(c20, c1), ifnull(c20, c1) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c1 | nullif(c20, c1) | ifnull(c20, c1) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c2, nullif(c20, c2), ifnull(c20, c2) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c2 | nullif(c20, c2) | ifnull(c20, c2) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c3, nullif(c20, c3), ifnull(c20, c3) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c3 | nullif(c20, c3) | ifnull(c20, c3) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c4, nullif(c20, c4), ifnull(c20, c4) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c4 | nullif(c20, c4) | ifnull(c20, c4) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c5, nullif(c20, c5), ifnull(c20, c5) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c5 | nullif(c20, c5) | ifnull(c20, c5) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c6, nullif(c20, c6), ifnull(c20, c6) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c6 | nullif(c20, c6) | ifnull(c20, c6) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c7, nullif(c20, c7), ifnull(c20, c7) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c7 | nullif(c20, c7) | ifnull(c20, c7) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c8, nullif(c20, c8), ifnull(c20, c8) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c8 | nullif(c20, c8) | ifnull(c20, c8) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c9, nullif(c20, c9), ifnull(c20, c9) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c9 | nullif(c20, c9) | ifnull(c20, c9) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c10, nullif(c20, c10), ifnull(c20, c10) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c10 | nullif(c20, c10) | ifnull(c20, c10) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c11, nullif(c20, c11), ifnull(c20, c11) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c11 | nullif(c20, c11) | ifnull(c20, c11) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c12, nullif(c20, c12), ifnull(c20, c12) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c12 | nullif(c20, c12) | ifnull(c20, c12) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c13, nullif(c20, c13), ifnull(c20, c13) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c13 | nullif(c20, c13) | ifnull(c20, c13) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 3.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -3.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c14, nullif(c20, c14), ifnull(c20, c14) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c14 | nullif(c20, c14) | ifnull(c20, c14) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 4.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 4.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c15, nullif(c20, c15), ifnull(c20, c15) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c15 | nullif(c20, c15) | ifnull(c20, c15) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 5.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -5.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c16, nullif(c20, c16), ifnull(c20, c16) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c16 | nullif(c20, c16) | ifnull(c20, c16) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 6.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 6.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c17, nullif(c20, c17), ifnull(c20, c17) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c17 | nullif(c20, c17) | ifnull(c20, c17) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 8 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -8 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c18, nullif(c20, c18), ifnull(c20, c18) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c18 | nullif(c20, c18) | ifnull(c20, c18) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 9 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 9 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c19, nullif(c20, c19), ifnull(c20, c19) from t1; ++---------------------+---------------------+---------------------+---------------------+ +| c20 | c19 | nullif(c20, c19) | ifnull(c20, c19) | ++---------------------+---------------------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+---------------------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c20, nullif(c20, c20), ifnull(c20, c20) from t1; ++---------------------+---------------------+------------------+---------------------+ +| c20 | c20 | nullif(c20, c20) | ifnull(c20, c20) | ++---------------------+---------------------+------------------+---------------------+ +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | NULL | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | NULL | 2019-12-03 06:00:00 | ++---------------------+---------------------+------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c21, nullif(c20, c21), ifnull(c20, c21) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c21 | nullif(c20, c21) | ifnull(c20, c21) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 9.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | -9.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c20, c22, nullif(c20, c22), ifnull(c20, c22) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c22 | nullif(c20, c22) | ifnull(c20, c22) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 10.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 10.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+---------------------+ +select c20, nullif(c20, c20) from t1; ++---------------------+------------------+ +| c20 | nullif(c20, c20) | ++---------------------+------------------+ +| 2019-12-03 06:00:00 | NULL | +| 2019-12-03 06:00:00 | NULL | ++---------------------+------------------+ + +select c21, c1, nullif(c21, c1), ifnull(c21, c1) from t1; ++------+------+-----------------+-----------------+ +| c21 | c1 | nullif(c21, c1) | ifnull(c21, c1) | ++------+------+-----------------+-----------------+ +| 9.5 | 1 | 9.5 | 9.5 | +| -9.5 | -1 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c2, nullif(c21, c2), ifnull(c21, c2) from t1; ++------+------+-----------------+-----------------+ +| c21 | c2 | nullif(c21, c2) | ifnull(c21, c2) | ++------+------+-----------------+-----------------+ +| 9.5 | 2 | 9.5 | 9.5 | +| -9.5 | 2 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c3, nullif(c21, c3), ifnull(c21, c3) from t1; ++------+------+-----------------+-----------------+ +| c21 | c3 | nullif(c21, c3) | ifnull(c21, c3) | ++------+------+-----------------+-----------------+ +| 9.5 | 1 | 9.5 | 9.5 | +| -9.5 | -1 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c4, nullif(c21, c4), ifnull(c21, c4) from t1; ++------+------+-----------------+-----------------+ +| c21 | c4 | nullif(c21, c4) | ifnull(c21, c4) | ++------+------+-----------------+-----------------+ +| 9.5 | 2 | 9.5 | 9.5 | +| -9.5 | 2 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c5, nullif(c21, c5), ifnull(c21, c5) from t1; ++------+------+-----------------+-----------------+ +| c21 | c5 | nullif(c21, c5) | ifnull(c21, c5) | ++------+------+-----------------+-----------------+ +| 9.5 | 1 | 9.5 | 9.5 | +| -9.5 | -1 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c6, nullif(c21, c6), ifnull(c21, c6) from t1; ++------+------+-----------------+-----------------+ +| c21 | c6 | nullif(c21, c6) | ifnull(c21, c6) | ++------+------+-----------------+-----------------+ +| 9.5 | 2 | 9.5 | 9.5 | +| -9.5 | 2 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c7, nullif(c21, c7), ifnull(c21, c7) from t1; ++------+------+-----------------+-----------------+ +| c21 | c7 | nullif(c21, c7) | ifnull(c21, c7) | ++------+------+-----------------+-----------------+ +| 9.5 | 1 | 9.5 | 9.5 | +| -9.5 | -1 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c8, nullif(c21, c8), ifnull(c21, c8) from t1; ++------+------+-----------------+-----------------+ +| c21 | c8 | nullif(c21, c8) | ifnull(c21, c8) | ++------+------+-----------------+-----------------+ +| 9.5 | 2 | 9.5 | 9.5 | +| -9.5 | 2 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c9, nullif(c21, c9), ifnull(c21, c9) from t1; ++------+------+-----------------+-----------------+ +| c21 | c9 | nullif(c21, c9) | ifnull(c21, c9) | ++------+------+-----------------+-----------------+ +| 9.5 | 1 | 9.5 | 9.5 | +| -9.5 | -1 | -9.5 | -9.5 | ++------+------+-----------------+-----------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c10, nullif(c21, c10), ifnull(c21, c10) from t1; ++------+------+------------------+------------------+ +| c21 | c10 | nullif(c21, c10) | ifnull(c21, c10) | ++------+------+------------------+------------------+ +| 9.5 | 2 | 9.5 | 9.5 | +| -9.5 | 2 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c11, nullif(c21, c11), ifnull(c21, c11) from t1; ++------+------+------------------+------------------+ +| c21 | c11 | nullif(c21, c11) | ifnull(c21, c11) | ++------+------+------------------+------------------+ +| 9.5 | 1 | 9.5 | 9.5 | +| -9.5 | -1 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c12, nullif(c21, c12), ifnull(c21, c12) from t1; ++------+------+------------------+------------------+ +| c21 | c12 | nullif(c21, c12) | ifnull(c21, c12) | ++------+------+------------------+------------------+ +| 9.5 | 2 | 9.5 | 9.5 | +| -9.5 | 2 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c13, nullif(c21, c13), ifnull(c21, c13) from t1; ++------+------+------------------+------------------+ +| c21 | c13 | nullif(c21, c13) | ifnull(c21, c13) | ++------+------+------------------+------------------+ +| 9.5 | 3.5 | 9.5 | 9.5 | +| -9.5 | -3.5 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c14, nullif(c21, c14), ifnull(c21, c14) from t1; ++------+------+------------------+------------------+ +| c21 | c14 | nullif(c21, c14) | ifnull(c21, c14) | ++------+------+------------------+------------------+ +| 9.5 | 4.5 | 9.5 | 9.5 | +| -9.5 | 4.5 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c15, nullif(c21, c15), ifnull(c21, c15) from t1; ++------+------+------------------+------------------+ +| c21 | c15 | nullif(c21, c15) | ifnull(c21, c15) | ++------+------+------------------+------------------+ +| 9.5 | 5.5 | 9.5 | 9.5 | +| -9.5 | -5.5 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c16, nullif(c21, c16), ifnull(c21, c16) from t1; ++------+------+------------------+------------------+ +| c21 | c16 | nullif(c21, c16) | ifnull(c21, c16) | ++------+------+------------------+------------------+ +| 9.5 | 6.5 | 9.5 | 9.5 | +| -9.5 | 6.5 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c17, nullif(c21, c17), ifnull(c21, c17) from t1; ++------+------+------------------+------------------+ +| c21 | c17 | nullif(c21, c17) | ifnull(c21, c17) | ++------+------+------------------+------------------+ +| 9.5 | 8 | 9.5 | 9.5 | +| -9.5 | -8 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c18, nullif(c21, c18), ifnull(c21, c18) from t1; ++------+------+------------------+------------------+ +| c21 | c18 | nullif(c21, c18) | ifnull(c21, c18) | ++------+------+------------------+------------------+ +| 9.5 | 9 | 9.5 | 9.5 | +| -9.5 | 9 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c19, nullif(c21, c19), ifnull(c21, c19) from t1; ++------+---------------------+------------------+------------------+ +| c21 | c19 | nullif(c21, c19) | ifnull(c21, c19) | ++------+---------------------+------------------+------------------+ +| 9.5 | 2019-12-01 12:00:00 | 9.5 | 9.5 | +| -9.5 | 2019-12-01 12:00:00 | -9.5 | -9.5 | ++------+---------------------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c20, nullif(c21, c20), ifnull(c21, c20) from t1; ++------+---------------------+------------------+------------------+ +| c21 | c20 | nullif(c21, c20) | ifnull(c21, c20) | ++------+---------------------+------------------+------------------+ +| 9.5 | 2019-12-03 06:00:00 | 9.5 | 9.5 | +| -9.5 | 2019-12-03 06:00:00 | -9.5 | -9.5 | ++------+---------------------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c21, nullif(c21, c21), ifnull(c21, c21) from t1; ++------+------+------------------+------------------+ +| c21 | c21 | nullif(c21, c21) | ifnull(c21, c21) | ++------+------+------------------+------------------+ +| 9.5 | 9.5 | NULL | 9.5 | +| -9.5 | -9.5 | NULL | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c21, c22, nullif(c21, c22), ifnull(c21, c22) from t1; ++------+------+------------------+------------------+ +| c21 | c22 | nullif(c21, c22) | ifnull(c21, c22) | ++------+------+------------------+------------------+ +| 9.5 | 10.5 | 9.5 | 9.5 | +| -9.5 | 10.5 | -9.5 | -9.5 | ++------+------+------------------+------------------+ +select c21, nullif(c21, c21) from t1; ++------+------------------+ +| c21 | nullif(c21, c21) | ++------+------------------+ +| 9.5 | NULL | +| -9.5 | NULL | ++------+------------------+ + +select c22, c1, nullif(c22, c1), ifnull(c22, c1) from t1; ++------+------+-----------------+-----------------+ +| c22 | c1 | nullif(c22, c1) | ifnull(c22, c1) | ++------+------+-----------------+-----------------+ +| 10.5 | 1 | 10.5 | 10.5 | +| 10.5 | -1 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c2, nullif(c22, c2), ifnull(c22, c2) from t1; ++------+------+-----------------+-----------------+ +| c22 | c2 | nullif(c22, c2) | ifnull(c22, c2) | ++------+------+-----------------+-----------------+ +| 10.5 | 2 | 10.5 | 10.5 | +| 10.5 | 2 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c3, nullif(c22, c3), ifnull(c22, c3) from t1; ++------+------+-----------------+-----------------+ +| c22 | c3 | nullif(c22, c3) | ifnull(c22, c3) | ++------+------+-----------------+-----------------+ +| 10.5 | 1 | 10.5 | 10.5 | +| 10.5 | -1 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c4, nullif(c22, c4), ifnull(c22, c4) from t1; ++------+------+-----------------+-----------------+ +| c22 | c4 | nullif(c22, c4) | ifnull(c22, c4) | ++------+------+-----------------+-----------------+ +| 10.5 | 2 | 10.5 | 10.5 | +| 10.5 | 2 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c5, nullif(c22, c5), ifnull(c22, c5) from t1; ++------+------+-----------------+-----------------+ +| c22 | c5 | nullif(c22, c5) | ifnull(c22, c5) | ++------+------+-----------------+-----------------+ +| 10.5 | 1 | 10.5 | 10.5 | +| 10.5 | -1 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c6, nullif(c22, c6), ifnull(c22, c6) from t1; ++------+------+-----------------+-----------------+ +| c22 | c6 | nullif(c22, c6) | ifnull(c22, c6) | ++------+------+-----------------+-----------------+ +| 10.5 | 2 | 10.5 | 10.5 | +| 10.5 | 2 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c7, nullif(c22, c7), ifnull(c22, c7) from t1; ++------+------+-----------------+-----------------+ +| c22 | c7 | nullif(c22, c7) | ifnull(c22, c7) | ++------+------+-----------------+-----------------+ +| 10.5 | 1 | 10.5 | 10.5 | +| 10.5 | -1 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c8, nullif(c22, c8), ifnull(c22, c8) from t1; ++------+------+-----------------+-----------------+ +| c22 | c8 | nullif(c22, c8) | ifnull(c22, c8) | ++------+------+-----------------+-----------------+ +| 10.5 | 2 | 10.5 | 10.5 | +| 10.5 | 2 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c9, nullif(c22, c9), ifnull(c22, c9) from t1; ++------+------+-----------------+-----------------+ +| c22 | c9 | nullif(c22, c9) | ifnull(c22, c9) | ++------+------+-----------------+-----------------+ +| 10.5 | 1 | 10.5 | 10.5 | +| 10.5 | -1 | 10.5 | 10.5 | ++------+------+-----------------+-----------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c10, nullif(c22, c10), ifnull(c22, c10) from t1; ++------+------+------------------+------------------+ +| c22 | c10 | nullif(c22, c10) | ifnull(c22, c10) | ++------+------+------------------+------------------+ +| 10.5 | 2 | 10.5 | 10.5 | +| 10.5 | 2 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c11, nullif(c22, c11), ifnull(c22, c11) from t1; ++------+------+------------------+------------------+ +| c22 | c11 | nullif(c22, c11) | ifnull(c22, c11) | ++------+------+------------------+------------------+ +| 10.5 | 1 | 10.5 | 10.5 | +| 10.5 | -1 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c12, nullif(c22, c12), ifnull(c22, c12) from t1; ++------+------+------------------+------------------+ +| c22 | c12 | nullif(c22, c12) | ifnull(c22, c12) | ++------+------+------------------+------------------+ +| 10.5 | 2 | 10.5 | 10.5 | +| 10.5 | 2 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c13, nullif(c22, c13), ifnull(c22, c13) from t1; ++------+------+------------------+------------------+ +| c22 | c13 | nullif(c22, c13) | ifnull(c22, c13) | ++------+------+------------------+------------------+ +| 10.5 | 3.5 | 10.5 | 10.5 | +| 10.5 | -3.5 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c14, nullif(c22, c14), ifnull(c22, c14) from t1; ++------+------+------------------+------------------+ +| c22 | c14 | nullif(c22, c14) | ifnull(c22, c14) | ++------+------+------------------+------------------+ +| 10.5 | 4.5 | 10.5 | 10.5 | +| 10.5 | 4.5 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c15, nullif(c22, c15), ifnull(c22, c15) from t1; ++------+------+------------------+------------------+ +| c22 | c15 | nullif(c22, c15) | ifnull(c22, c15) | ++------+------+------------------+------------------+ +| 10.5 | 5.5 | 10.5 | 10.5 | +| 10.5 | -5.5 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c16, nullif(c22, c16), ifnull(c22, c16) from t1; ++------+------+------------------+------------------+ +| c22 | c16 | nullif(c22, c16) | ifnull(c22, c16) | ++------+------+------------------+------------------+ +| 10.5 | 6.5 | 10.5 | 10.5 | +| 10.5 | 6.5 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c17, nullif(c22, c17), ifnull(c22, c17) from t1; ++------+------+------------------+------------------+ +| c22 | c17 | nullif(c22, c17) | ifnull(c22, c17) | ++------+------+------------------+------------------+ +| 10.5 | 8 | 10.5 | 10.5 | +| 10.5 | -8 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c18, nullif(c22, c18), ifnull(c22, c18) from t1; ++------+------+------------------+------------------+ +| c22 | c18 | nullif(c22, c18) | ifnull(c22, c18) | ++------+------+------------------+------------------+ +| 10.5 | 9 | 10.5 | 10.5 | +| 10.5 | 9 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c19, nullif(c22, c19), ifnull(c22, c19) from t1; ++------+---------------------+------------------+------------------+ +| c22 | c19 | nullif(c22, c19) | ifnull(c22, c19) | ++------+---------------------+------------------+------------------+ +| 10.5 | 2019-12-01 12:00:00 | 10.5 | 10.5 | +| 10.5 | 2019-12-01 12:00:00 | 10.5 | 10.5 | ++------+---------------------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c20, nullif(c22, c20), ifnull(c22, c20) from t1; ++------+---------------------+------------------+------------------+ +| c22 | c20 | nullif(c22, c20) | ifnull(c22, c20) | ++------+---------------------+------------------+------------------+ +| 10.5 | 2019-12-03 06:00:00 | 10.5 | 10.5 | +| 10.5 | 2019-12-03 06:00:00 | 10.5 | 10.5 | ++------+---------------------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c21, nullif(c22, c21), ifnull(c22, c21) from t1; ++------+------+------------------+------------------+ +| c22 | c21 | nullif(c22, c21) | ifnull(c22, c21) | ++------+------+------------------+------------------+ +| 10.5 | 9.5 | 10.5 | 10.5 | +| 10.5 | -9.5 | 10.5 | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + +select c22, c22, nullif(c22, c22), ifnull(c22, c22) from t1; ++------+------+------------------+------------------+ +| c22 | c22 | nullif(c22, c22) | ifnull(c22, c22) | ++------+------+------------------+------------------+ +| 10.5 | 10.5 | NULL | 10.5 | +| 10.5 | 10.5 | NULL | 10.5 | ++------+------+------------------+------------------+ +select c22, nullif(c22, c22) from t1; ++------+------------------+ +| c22 | nullif(c22, c22) | ++------+------------------+ +| 10.5 | NULL | +| 10.5 | NULL | ++------+------------------+ + + +drop table if exists t1; +drop view if exists v1; +create table t1 (c1 datetime(5), c2 year); +insert into t1 values('1901-01-01', 1901); +// transformed to case when expr +explain_protocol: 2 +EXPLAIN select nullif(c1, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nullif(t1.c1, t1.c2)]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select nullif(c1, c2) from t1; ++---------------------------+ +| nullif(c1, c2) | ++---------------------------+ +| 1901-01-01 00:00:00.00000 | ++---------------------------+ +EXPLAIN select nullif(c2, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nullif(t1.c2, t1.c1)]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select nullif(c2, c1) from t1; ++----------------+ +| nullif(c2, c1) | ++----------------+ +| 1901 | ++----------------+ +EXPLAIN select nullif(c1, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nullif(t1.c1, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select nullif(c1, c1) from t1; ++----------------+ +| nullif(c1, c1) | ++----------------+ +| NULL | ++----------------+ +EXPLAIN select nullif(c2, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nullif(t1.c2, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select nullif(c2, c2) from t1; ++----------------+ +| nullif(c2, c2) | ++----------------+ +| NULL | ++----------------+ +explain_protocol: 0 +// nullif改写不应该影响show create view,所以show create view还应该是nullif,而非case expr +create view v1 as select nullif(c1, c2) from t1; +show create view v1; +View Create View character_set_client collation_connection +v1 CREATE VIEW `v1` AS select nullif(`oceanbase`.`t1`.`c1`,`oceanbase`.`t1`.`c2`) AS `nullif(c1, c2)` from `oceanbase`.`t1` utf8mb4 utf8mb4_general_ci +// 类型应该是c1的类型(datetime) +desc v1; ++----------------+-------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++----------------+-------------+------+-----+---------+-------+ +| nullif(c1, c2) | datetime(5) | YES | | NULL | | ++----------------+-------------+------+-----+---------+-------+ +select * from v1; ++---------------------------+ +| nullif(c1, c2) | ++---------------------------+ +| 1901-01-01 00:00:00.00000 | ++---------------------------+ + +drop view v1; +create view v1 as select nullif(c2, c1) from t1; +show create view v1; +View Create View character_set_client collation_connection +v1 CREATE VIEW `v1` AS select nullif(`oceanbase`.`t1`.`c2`,`oceanbase`.`t1`.`c1`) AS `nullif(c2, c1)` from `oceanbase`.`t1` utf8mb4 utf8mb4_general_ci +// 类型应该是c1的类型(year) +desc v1; ++----------------+---------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++----------------+---------+------+-----+---------+-------+ +| nullif(c2, c1) | year(4) | YES | | NULL | | ++----------------+---------+------+-----+---------+-------+ +select * from v1; ++----------------+ +| nullif(c2, c1) | ++----------------+ +| 1901 | ++----------------+ + +drop view v1; +create view v1 as select nullif(c1, c1) from t1; +show create view v1; +View Create View character_set_client collation_connection +v1 CREATE VIEW `v1` AS select nullif(`oceanbase`.`t1`.`c1`,`oceanbase`.`t1`.`c1`) AS `nullif(c1, c1)` from `oceanbase`.`t1` utf8mb4 utf8mb4_general_ci +// 类型应该是c1的类型(datetime) +desc v1; ++----------------+-------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++----------------+-------------+------+-----+---------+-------+ +| nullif(c1, c1) | datetime(5) | YES | | NULL | | ++----------------+-------------+------+-----+---------+-------+ +select * from v1; ++----------------+ +| nullif(c1, c1) | ++----------------+ +| NULL | ++----------------+ + +drop view v1; +create view v1 as select nullif(c2, c2) from t1; +show create view v1; +View Create View character_set_client collation_connection +v1 CREATE VIEW `v1` AS select nullif(`oceanbase`.`t1`.`c2`,`oceanbase`.`t1`.`c2`) AS `nullif(c2, c2)` from `oceanbase`.`t1` utf8mb4 utf8mb4_general_ci +// 类型应该是c1的类型(datetime) +desc v1; ++----------------+---------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++----------------+---------+------+-----+---------+-------+ +| nullif(c2, c2) | year(4) | YES | | NULL | | ++----------------+---------+------+-----+---------+-------+ +select * from v1; ++----------------+ +| nullif(c2, c2) | ++----------------+ +| NULL | ++----------------+ + +select collation(nullif('a', binary'b')); ++-----------------------------------+ +| collation(nullif('a', binary'b')) | ++-----------------------------------+ +| binary | ++-----------------------------------+ +select NULLIF(14152561829011783680, 1); ++---------------------------------+ +| NULLIF(14152561829011783680, 1) | ++---------------------------------+ +| 14152561829011783680 | ++---------------------------------+ + +drop table t1; +create table t1 ( + col_decimal_20_0_unsigned decimal(20,0) unsigned, + col_decimal_30_5_signed decimal(30,5) signed, + col_tinyint_unsigned tinyint unsigned); +select mod( nullif( col_decimal_20_0_unsigned, col_decimal_30_5_signed ), col_tinyint_unsigned ) from t1; ++-------------------------------------------------------------------------------------------+ +| mod( nullif( col_decimal_20_0_unsigned, col_decimal_30_5_signed ), col_tinyint_unsigned ) | ++-------------------------------------------------------------------------------------------+ ++-------------------------------------------------------------------------------------------+ + +// check param num +select nullif(1) from dual; +ERROR 42000: Incorrect parameter count in the call to native function 'nullif' +select nullif(1, 2) from dual; ++--------------+ +| nullif(1, 2) | ++--------------+ +| 1 | ++--------------+ +select nullif(1, 2, 3) from dual; +ERROR 42000: Incorrect parameter count in the call to native function 'nullif' +select nullif(1, 2, 3, 4) from dual; +ERROR 42000: Incorrect parameter count in the call to native function 'nullif' +select nullif(1, 2, 3, 4, 5) from dual; +ERROR 42000: Incorrect parameter count in the call to native function 'nullif' +select nullif(1, 2, 3, 4, 5, 6) from dual; +ERROR 42000: Incorrect parameter count in the call to native function 'nullif' +select nullif(1, 2, 3, 4, 5, 6, 7) from dual; +ERROR 42000: Incorrect parameter count in the call to native function 'nullif' + +drop table t1; +select 1 from dual where null <= nullif(null,null); ++---+ +| 1 | ++---+ ++---+ + +select ifnull(null, 15531789214893998080); ++------------------------------------+ +| ifnull(null, 15531789214893998080) | ++------------------------------------+ +| 15531789214893998080 | ++------------------------------------+ +select ifnull(15531789214893998080, 0); ++---------------------------------+ +| ifnull(15531789214893998080, 0) | ++---------------------------------+ +| 15531789214893998080 | ++---------------------------------+ +SELECT trim(Ifnull(15531789214893998080, 0)) as X from dual; ++----------------------+ +| X | ++----------------------+ +| 15531789214893998080 | ++----------------------+ +create table t1 as select ifnull(15531789214893998080, 0) ; +desc t1; ++---------------------------------+---------------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++---------------------------------+---------------+------+-----+---------+-------+ +| ifnull(15531789214893998080, 0) | decimal(20,0) | YES | | NULL | | ++---------------------------------+---------------+------+-----+---------+-------+ + +drop table t1; + +create table t1(z0_test0 enum('中文字符','123456','ABCabc','!@#$%^&*','2020-10-10','2020-10-10 10:10:10','10:10:10') not NULL); + +insert into t1 values('中文字符'); +insert into t1 values('123456'); +insert into t1 values('ABCabc'); +insert into t1 values('!@#$%^&*'); +insert into t1 values('2020-10-10'); +insert into t1 values('2020-10-10 10:10:10'); +insert into t1 values('10:10:10'); + +select nullif(z0_test0,'中文字符') from t1; ++---------------------------------+ +| nullif(z0_test0,'中文字符') | ++---------------------------------+ +| NULL | +| 123456 | +| ABCabc | +| !@#$%^&* | +| 2020-10-10 | +| 2020-10-10 10:10:10 | +| 10:10:10 | ++---------------------------------+ +drop table t1; + +##bugfix: https://work.aone.alibaba-inc.com/issue/37798920 +create table t1 (pk double) PARTITION BY key (pk) partitions 1; +insert into t1 values( NULLIF( 100.2345, 1 )); +select * from t1; ++----------+ +| pk | ++----------+ +| 100.2345 | ++----------+ +drop table t1; + +select + subq_0.c3, + nullif(subq_0.c3, cast(32 as decimal)) as c14 +from + ( + select + cast( + ( + select + help_keyword_id + from + mysql.help_keyword + limit + 1 offset 4 + ) as DECIMAL + ) as c3 + ) as subq_0; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nvl.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nvl.result new file mode 100644 index 000000000..27ddc0d9e --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_nvl.result @@ -0,0 +1,19935 @@ +result_format: 4 +explain_protocol: 0 +set @@ob_enable_plan_cache = 0; +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30), c_null int); +select * from t1; ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+--------+ +| c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c16 | c17 | c18 | c19 | c20 | c21 | c22 | c_null | ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+--------+ ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+--------+ +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5', null); +insert into t1 values(-1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -3.5, 4.5, + -5.5, 6.5, + -7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '-9.5', '10.5', null); + +explain_protocol: 2 +EXPLAIN select nvl(c_null, c_null) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c_null, BIGINT(11, 0)), cast(t1.c_null, BIGINT(11, 0)))]), filter(nil), + access([t1.c_null]), partitions(p0) + +select nvl(c_null, c_null) from t1; ++---------------------+ +| nvl(c_null, c_null) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +EXPLAIN select nvl2(c_null, c_null, c_null) from t1; +ERROR 42000: FUNCTION nvl2 does not exist +select nvl2(c_null, c_null, c_null) from t1; +ERROR 42000: FUNCTION nvl2 does not exist +EXPLAIN select nvl(c1, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(c1, c1) from t1; ++-------------+ +| nvl(c1, c1) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(10, 0)), cast(t1.c2, BIGINT(10, 0)))]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select nvl(c1, c2) from t1; ++-------------+ +| nvl(c1, c2) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select nvl(c1, c3) from t1; ++-------------+ +| nvl(c1, c3) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(3, 0)), cast(t1.c4, BIGINT(3, 0)))]), filter(nil), + access([t1.c1], [t1.c4]), partitions(p0) + +select nvl(c1, c4) from t1; ++-------------+ +| nvl(c1, c4) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c1], [t1.c5]), partitions(p0) + +select nvl(c1, c5) from t1; ++-------------+ +| nvl(c1, c5) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(5, 0)), cast(t1.c6, BIGINT(5, 0)))]), filter(nil), + access([t1.c1], [t1.c6]), partitions(p0) + +select nvl(c1, c6) from t1; ++-------------+ +| nvl(c1, c6) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c1], [t1.c7]), partitions(p0) + +select nvl(c1, c7) from t1; ++-------------+ +| nvl(c1, c7) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(8, 0)), cast(t1.c8, BIGINT(8, 0)))]), filter(nil), + access([t1.c1], [t1.c8]), partitions(p0) + +select nvl(c1, c8) from t1; ++-------------+ +| nvl(c1, c8) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c1], [t1.c9]), partitions(p0) + +select nvl(c1, c9) from t1; ++-------------+ +| nvl(c1, c9) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(10, 0)), cast(t1.c10, BIGINT(10, 0)))]), filter(nil), + access([t1.c1], [t1.c10]), partitions(p0) + +select nvl(c1, c10) from t1; ++--------------+ +| nvl(c1, c10) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c1], [t1.c11]), partitions(p0) + +select nvl(c1, c11) from t1; ++--------------+ +| nvl(c1, c11) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, DECIMAL(20, 0)), cast(t1.c12, DECIMAL(20, 0)))]), filter(nil), + access([t1.c1], [t1.c12]), partitions(p0) + +select nvl(c1, c12) from t1; ++--------------+ +| nvl(c1, c12) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c1], [t1.c13]), partitions(p0) + +select nvl(c1, c13) from t1; ++--------------+ +| nvl(c1, c13) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c1], [t1.c14]), partitions(p0) + +select nvl(c1, c14) from t1; ++--------------+ +| nvl(c1, c14) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c1], [t1.c15]), partitions(p0) + +select nvl(c1, c15) from t1; ++--------------+ +| nvl(c1, c15) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c1], [t1.c16]), partitions(p0) + +select nvl(c1, c16) from t1; ++--------------+ +| nvl(c1, c16) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c1], [t1.c17]), partitions(p0) + +select nvl(c1, c17) from t1; ++--------------+ +| nvl(c1, c17) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c1], [t1.c18]), partitions(p0) + +select nvl(c1, c18) from t1; ++--------------+ +| nvl(c1, c18) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c1], [t1.c19]), partitions(p0) + +select nvl(c1, c19) from t1; ++--------------+ +| nvl(c1, c19) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c1], [t1.c20]), partitions(p0) + +select nvl(c1, c20) from t1; ++--------------+ +| nvl(c1, c20) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c1], [t1.c21]), partitions(p0) + +select nvl(c1, c21) from t1; ++--------------+ +| nvl(c1, c21) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c1, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c1, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c1], [t1.c22]), partitions(p0) + +select nvl(c1, c22) from t1; ++--------------+ +| nvl(c1, c22) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select nvl(null, c1) from t1; ++---------------+ +| nvl(null, c1) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c2, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select nvl(c2, c1) from t1; ++-------------+ +| nvl(c2, c1) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT UNSIGNED(10, 0)), cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(c2, c2) from t1; ++-------------+ +| nvl(c2, c2) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c2], [t1.c3]), partitions(p0) + +select nvl(c2, c3) from t1; ++-------------+ +| nvl(c2, c3) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT UNSIGNED(3, 0)), cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c2], [t1.c4]), partitions(p0) + +select nvl(c2, c4) from t1; ++-------------+ +| nvl(c2, c4) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c2], [t1.c5]), partitions(p0) + +select nvl(c2, c5) from t1; ++-------------+ +| nvl(c2, c5) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT UNSIGNED(5, 0)), cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c2], [t1.c6]), partitions(p0) + +select nvl(c2, c6) from t1; ++-------------+ +| nvl(c2, c6) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c2], [t1.c7]), partitions(p0) + +select nvl(c2, c7) from t1; ++-------------+ +| nvl(c2, c7) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT UNSIGNED(8, 0)), cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c2], [t1.c8]), partitions(p0) + +select nvl(c2, c8) from t1; ++-------------+ +| nvl(c2, c8) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c2], [t1.c9]), partitions(p0) + +select nvl(c2, c9) from t1; ++-------------+ +| nvl(c2, c9) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT UNSIGNED(10, 0)), cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2], [t1.c10]), partitions(p0) + +select nvl(c2, c10) from t1; ++--------------+ +| nvl(c2, c10) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c2], [t1.c11]), partitions(p0) + +select nvl(c2, c11) from t1; ++--------------+ +| nvl(c2, c11) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, BIGINT UNSIGNED(20, 0)), t1.c12)]), filter(nil), + access([t1.c2], [t1.c12]), partitions(p0) + +select nvl(c2, c12) from t1; ++--------------+ +| nvl(c2, c12) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c2], [t1.c13]), partitions(p0) + +select nvl(c2, c13) from t1; ++--------------+ +| nvl(c2, c13) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c2], [t1.c14]), partitions(p0) + +select nvl(c2, c14) from t1; ++--------------+ +| nvl(c2, c14) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c2], [t1.c15]), partitions(p0) + +select nvl(c2, c15) from t1; ++--------------+ +| nvl(c2, c15) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c2], [t1.c16]), partitions(p0) + +select nvl(c2, c16) from t1; ++--------------+ +| nvl(c2, c16) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c2], [t1.c17]), partitions(p0) + +select nvl(c2, c17) from t1; ++--------------+ +| nvl(c2, c17) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c2], [t1.c18]), partitions(p0) + +select nvl(c2, c18) from t1; ++--------------+ +| nvl(c2, c18) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c2], [t1.c19]), partitions(p0) + +select nvl(c2, c19) from t1; ++--------------+ +| nvl(c2, c19) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c2], [t1.c20]), partitions(p0) + +select nvl(c2, c20) from t1; ++--------------+ +| nvl(c2, c20) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c2], [t1.c21]), partitions(p0) + +select nvl(c2, c21) from t1; ++--------------+ +| nvl(c2, c21) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c2, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c2, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c2], [t1.c22]), partitions(p0) + +select nvl(c2, c22) from t1; ++--------------+ +| nvl(c2, c22) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select nvl(null, c2) from t1; ++---------------+ +| nvl(null, c2) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c3, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + +select nvl(c3, c1) from t1; ++-------------+ +| nvl(c3, c1) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(10, 0)), cast(t1.c2, BIGINT(10, 0)))]), filter(nil), + access([t1.c3], [t1.c2]), partitions(p0) + +select nvl(c3, c2) from t1; ++-------------+ +| nvl(c3, c2) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(c3, c3) from t1; ++-------------+ +| nvl(c3, c3) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(3, 0)), cast(t1.c4, BIGINT(3, 0)))]), filter(nil), + access([t1.c3], [t1.c4]), partitions(p0) + +select nvl(c3, c4) from t1; ++-------------+ +| nvl(c3, c4) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c3], [t1.c5]), partitions(p0) + +select nvl(c3, c5) from t1; ++-------------+ +| nvl(c3, c5) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(5, 0)), cast(t1.c6, BIGINT(5, 0)))]), filter(nil), + access([t1.c3], [t1.c6]), partitions(p0) + +select nvl(c3, c6) from t1; ++-------------+ +| nvl(c3, c6) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c3], [t1.c7]), partitions(p0) + +select nvl(c3, c7) from t1; ++-------------+ +| nvl(c3, c7) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(8, 0)), cast(t1.c8, BIGINT(8, 0)))]), filter(nil), + access([t1.c3], [t1.c8]), partitions(p0) + +select nvl(c3, c8) from t1; ++-------------+ +| nvl(c3, c8) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c3], [t1.c9]), partitions(p0) + +select nvl(c3, c9) from t1; ++-------------+ +| nvl(c3, c9) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(10, 0)), cast(t1.c10, BIGINT(10, 0)))]), filter(nil), + access([t1.c3], [t1.c10]), partitions(p0) + +select nvl(c3, c10) from t1; ++--------------+ +| nvl(c3, c10) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c3], [t1.c11]), partitions(p0) + +select nvl(c3, c11) from t1; ++--------------+ +| nvl(c3, c11) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, DECIMAL(20, 0)), cast(t1.c12, DECIMAL(20, 0)))]), filter(nil), + access([t1.c3], [t1.c12]), partitions(p0) + +select nvl(c3, c12) from t1; ++--------------+ +| nvl(c3, c12) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c3], [t1.c13]), partitions(p0) + +select nvl(c3, c13) from t1; ++--------------+ +| nvl(c3, c13) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c3], [t1.c14]), partitions(p0) + +select nvl(c3, c14) from t1; ++--------------+ +| nvl(c3, c14) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c3], [t1.c15]), partitions(p0) + +select nvl(c3, c15) from t1; ++--------------+ +| nvl(c3, c15) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c3], [t1.c16]), partitions(p0) + +select nvl(c3, c16) from t1; ++--------------+ +| nvl(c3, c16) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c3], [t1.c17]), partitions(p0) + +select nvl(c3, c17) from t1; ++--------------+ +| nvl(c3, c17) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c3], [t1.c18]), partitions(p0) + +select nvl(c3, c18) from t1; ++--------------+ +| nvl(c3, c18) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c3], [t1.c19]), partitions(p0) + +select nvl(c3, c19) from t1; ++--------------+ +| nvl(c3, c19) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c3], [t1.c20]), partitions(p0) + +select nvl(c3, c20) from t1; ++--------------+ +| nvl(c3, c20) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c3], [t1.c21]), partitions(p0) + +select nvl(c3, c21) from t1; ++--------------+ +| nvl(c3, c21) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c3, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c3, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c3], [t1.c22]), partitions(p0) + +select nvl(c3, c22) from t1; ++--------------+ +| nvl(c3, c22) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select nvl(null, c3) from t1; ++---------------+ +| nvl(null, c3) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c4, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c4], [t1.c1]), partitions(p0) + +select nvl(c4, c1) from t1; ++-------------+ +| nvl(c4, c1) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT UNSIGNED(10, 0)), cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c4], [t1.c2]), partitions(p0) + +select nvl(c4, c2) from t1; ++-------------+ +| nvl(c4, c2) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c4], [t1.c3]), partitions(p0) + +select nvl(c4, c3) from t1; ++-------------+ +| nvl(c4, c3) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT UNSIGNED(3, 0)), cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(c4, c4) from t1; ++-------------+ +| nvl(c4, c4) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c4], [t1.c5]), partitions(p0) + +select nvl(c4, c5) from t1; ++-------------+ +| nvl(c4, c5) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT UNSIGNED(5, 0)), cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c4], [t1.c6]), partitions(p0) + +select nvl(c4, c6) from t1; ++-------------+ +| nvl(c4, c6) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c4], [t1.c7]), partitions(p0) + +select nvl(c4, c7) from t1; ++-------------+ +| nvl(c4, c7) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT UNSIGNED(8, 0)), cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c4], [t1.c8]), partitions(p0) + +select nvl(c4, c8) from t1; ++-------------+ +| nvl(c4, c8) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c4], [t1.c9]), partitions(p0) + +select nvl(c4, c9) from t1; ++-------------+ +| nvl(c4, c9) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT UNSIGNED(10, 0)), cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c4], [t1.c10]), partitions(p0) + +select nvl(c4, c10) from t1; ++--------------+ +| nvl(c4, c10) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c4], [t1.c11]), partitions(p0) + +select nvl(c4, c11) from t1; ++--------------+ +| nvl(c4, c11) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, BIGINT UNSIGNED(20, 0)), t1.c12)]), filter(nil), + access([t1.c4], [t1.c12]), partitions(p0) + +select nvl(c4, c12) from t1; ++--------------+ +| nvl(c4, c12) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c4], [t1.c13]), partitions(p0) + +select nvl(c4, c13) from t1; ++--------------+ +| nvl(c4, c13) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c4], [t1.c14]), partitions(p0) + +select nvl(c4, c14) from t1; ++--------------+ +| nvl(c4, c14) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c4], [t1.c15]), partitions(p0) + +select nvl(c4, c15) from t1; ++--------------+ +| nvl(c4, c15) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c4], [t1.c16]), partitions(p0) + +select nvl(c4, c16) from t1; ++--------------+ +| nvl(c4, c16) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c4], [t1.c17]), partitions(p0) + +select nvl(c4, c17) from t1; ++--------------+ +| nvl(c4, c17) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c4], [t1.c18]), partitions(p0) + +select nvl(c4, c18) from t1; ++--------------+ +| nvl(c4, c18) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c4], [t1.c19]), partitions(p0) + +select nvl(c4, c19) from t1; ++--------------+ +| nvl(c4, c19) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c4], [t1.c20]), partitions(p0) + +select nvl(c4, c20) from t1; ++--------------+ +| nvl(c4, c20) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c4], [t1.c21]), partitions(p0) + +select nvl(c4, c21) from t1; ++--------------+ +| nvl(c4, c21) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c4, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c4, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c4], [t1.c22]), partitions(p0) + +select nvl(c4, c22) from t1; ++--------------+ +| nvl(c4, c22) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select nvl(null, c4) from t1; ++---------------+ +| nvl(null, c4) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c5, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c5], [t1.c1]), partitions(p0) + +select nvl(c5, c1) from t1; ++-------------+ +| nvl(c5, c1) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(10, 0)), cast(t1.c2, BIGINT(10, 0)))]), filter(nil), + access([t1.c5], [t1.c2]), partitions(p0) + +select nvl(c5, c2) from t1; ++-------------+ +| nvl(c5, c2) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c5], [t1.c3]), partitions(p0) + +select nvl(c5, c3) from t1; ++-------------+ +| nvl(c5, c3) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(3, 0)), cast(t1.c4, BIGINT(3, 0)))]), filter(nil), + access([t1.c5], [t1.c4]), partitions(p0) + +select nvl(c5, c4) from t1; ++-------------+ +| nvl(c5, c4) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(c5, c5) from t1; ++-------------+ +| nvl(c5, c5) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(5, 0)), cast(t1.c6, BIGINT(5, 0)))]), filter(nil), + access([t1.c5], [t1.c6]), partitions(p0) + +select nvl(c5, c6) from t1; ++-------------+ +| nvl(c5, c6) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c5], [t1.c7]), partitions(p0) + +select nvl(c5, c7) from t1; ++-------------+ +| nvl(c5, c7) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(8, 0)), cast(t1.c8, BIGINT(8, 0)))]), filter(nil), + access([t1.c5], [t1.c8]), partitions(p0) + +select nvl(c5, c8) from t1; ++-------------+ +| nvl(c5, c8) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c5], [t1.c9]), partitions(p0) + +select nvl(c5, c9) from t1; ++-------------+ +| nvl(c5, c9) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(10, 0)), cast(t1.c10, BIGINT(10, 0)))]), filter(nil), + access([t1.c5], [t1.c10]), partitions(p0) + +select nvl(c5, c10) from t1; ++--------------+ +| nvl(c5, c10) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c5], [t1.c11]), partitions(p0) + +select nvl(c5, c11) from t1; ++--------------+ +| nvl(c5, c11) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, DECIMAL(20, 0)), cast(t1.c12, DECIMAL(20, 0)))]), filter(nil), + access([t1.c5], [t1.c12]), partitions(p0) + +select nvl(c5, c12) from t1; ++--------------+ +| nvl(c5, c12) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c5], [t1.c13]), partitions(p0) + +select nvl(c5, c13) from t1; ++--------------+ +| nvl(c5, c13) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c5], [t1.c14]), partitions(p0) + +select nvl(c5, c14) from t1; ++--------------+ +| nvl(c5, c14) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c5], [t1.c15]), partitions(p0) + +select nvl(c5, c15) from t1; ++--------------+ +| nvl(c5, c15) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c5], [t1.c16]), partitions(p0) + +select nvl(c5, c16) from t1; ++--------------+ +| nvl(c5, c16) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c5], [t1.c17]), partitions(p0) + +select nvl(c5, c17) from t1; ++--------------+ +| nvl(c5, c17) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c5], [t1.c18]), partitions(p0) + +select nvl(c5, c18) from t1; ++--------------+ +| nvl(c5, c18) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c5], [t1.c19]), partitions(p0) + +select nvl(c5, c19) from t1; ++--------------+ +| nvl(c5, c19) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c5], [t1.c20]), partitions(p0) + +select nvl(c5, c20) from t1; ++--------------+ +| nvl(c5, c20) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c5], [t1.c21]), partitions(p0) + +select nvl(c5, c21) from t1; ++--------------+ +| nvl(c5, c21) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c5, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c5, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c5], [t1.c22]), partitions(p0) + +select nvl(c5, c22) from t1; ++--------------+ +| nvl(c5, c22) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select nvl(null, c5) from t1; ++---------------+ +| nvl(null, c5) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c6, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c6], [t1.c1]), partitions(p0) + +select nvl(c6, c1) from t1; ++-------------+ +| nvl(c6, c1) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT UNSIGNED(10, 0)), cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c6], [t1.c2]), partitions(p0) + +select nvl(c6, c2) from t1; ++-------------+ +| nvl(c6, c2) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c6], [t1.c3]), partitions(p0) + +select nvl(c6, c3) from t1; ++-------------+ +| nvl(c6, c3) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT UNSIGNED(3, 0)), cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c6], [t1.c4]), partitions(p0) + +select nvl(c6, c4) from t1; ++-------------+ +| nvl(c6, c4) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c6], [t1.c5]), partitions(p0) + +select nvl(c6, c5) from t1; ++-------------+ +| nvl(c6, c5) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT UNSIGNED(5, 0)), cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(c6, c6) from t1; ++-------------+ +| nvl(c6, c6) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c6], [t1.c7]), partitions(p0) + +select nvl(c6, c7) from t1; ++-------------+ +| nvl(c6, c7) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT UNSIGNED(8, 0)), cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c6], [t1.c8]), partitions(p0) + +select nvl(c6, c8) from t1; ++-------------+ +| nvl(c6, c8) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c6], [t1.c9]), partitions(p0) + +select nvl(c6, c9) from t1; ++-------------+ +| nvl(c6, c9) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT UNSIGNED(10, 0)), cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c6], [t1.c10]), partitions(p0) + +select nvl(c6, c10) from t1; ++--------------+ +| nvl(c6, c10) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c6], [t1.c11]), partitions(p0) + +select nvl(c6, c11) from t1; ++--------------+ +| nvl(c6, c11) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, BIGINT UNSIGNED(20, 0)), t1.c12)]), filter(nil), + access([t1.c6], [t1.c12]), partitions(p0) + +select nvl(c6, c12) from t1; ++--------------+ +| nvl(c6, c12) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c6], [t1.c13]), partitions(p0) + +select nvl(c6, c13) from t1; ++--------------+ +| nvl(c6, c13) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c6], [t1.c14]), partitions(p0) + +select nvl(c6, c14) from t1; ++--------------+ +| nvl(c6, c14) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c6], [t1.c15]), partitions(p0) + +select nvl(c6, c15) from t1; ++--------------+ +| nvl(c6, c15) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c6], [t1.c16]), partitions(p0) + +select nvl(c6, c16) from t1; ++--------------+ +| nvl(c6, c16) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c6], [t1.c17]), partitions(p0) + +select nvl(c6, c17) from t1; ++--------------+ +| nvl(c6, c17) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c6], [t1.c18]), partitions(p0) + +select nvl(c6, c18) from t1; ++--------------+ +| nvl(c6, c18) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c6], [t1.c19]), partitions(p0) + +select nvl(c6, c19) from t1; ++--------------+ +| nvl(c6, c19) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c6], [t1.c20]), partitions(p0) + +select nvl(c6, c20) from t1; ++--------------+ +| nvl(c6, c20) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c6], [t1.c21]), partitions(p0) + +select nvl(c6, c21) from t1; ++--------------+ +| nvl(c6, c21) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c6, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c6, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c6], [t1.c22]), partitions(p0) + +select nvl(c6, c22) from t1; ++--------------+ +| nvl(c6, c22) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select nvl(null, c6) from t1; ++---------------+ +| nvl(null, c6) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c7, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c7], [t1.c1]), partitions(p0) + +select nvl(c7, c1) from t1; ++-------------+ +| nvl(c7, c1) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(10, 0)), cast(t1.c2, BIGINT(10, 0)))]), filter(nil), + access([t1.c7], [t1.c2]), partitions(p0) + +select nvl(c7, c2) from t1; ++-------------+ +| nvl(c7, c2) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c7], [t1.c3]), partitions(p0) + +select nvl(c7, c3) from t1; ++-------------+ +| nvl(c7, c3) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(3, 0)), cast(t1.c4, BIGINT(3, 0)))]), filter(nil), + access([t1.c7], [t1.c4]), partitions(p0) + +select nvl(c7, c4) from t1; ++-------------+ +| nvl(c7, c4) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c7], [t1.c5]), partitions(p0) + +select nvl(c7, c5) from t1; ++-------------+ +| nvl(c7, c5) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(5, 0)), cast(t1.c6, BIGINT(5, 0)))]), filter(nil), + access([t1.c7], [t1.c6]), partitions(p0) + +select nvl(c7, c6) from t1; ++-------------+ +| nvl(c7, c6) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(c7, c7) from t1; ++-------------+ +| nvl(c7, c7) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(8, 0)), cast(t1.c8, BIGINT(8, 0)))]), filter(nil), + access([t1.c7], [t1.c8]), partitions(p0) + +select nvl(c7, c8) from t1; ++-------------+ +| nvl(c7, c8) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c7], [t1.c9]), partitions(p0) + +select nvl(c7, c9) from t1; ++-------------+ +| nvl(c7, c9) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(10, 0)), cast(t1.c10, BIGINT(10, 0)))]), filter(nil), + access([t1.c7], [t1.c10]), partitions(p0) + +select nvl(c7, c10) from t1; ++--------------+ +| nvl(c7, c10) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c7], [t1.c11]), partitions(p0) + +select nvl(c7, c11) from t1; ++--------------+ +| nvl(c7, c11) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, DECIMAL(20, 0)), cast(t1.c12, DECIMAL(20, 0)))]), filter(nil), + access([t1.c7], [t1.c12]), partitions(p0) + +select nvl(c7, c12) from t1; ++--------------+ +| nvl(c7, c12) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c7], [t1.c13]), partitions(p0) + +select nvl(c7, c13) from t1; ++--------------+ +| nvl(c7, c13) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c7], [t1.c14]), partitions(p0) + +select nvl(c7, c14) from t1; ++--------------+ +| nvl(c7, c14) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c7], [t1.c15]), partitions(p0) + +select nvl(c7, c15) from t1; ++--------------+ +| nvl(c7, c15) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c7], [t1.c16]), partitions(p0) + +select nvl(c7, c16) from t1; ++--------------+ +| nvl(c7, c16) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c7], [t1.c17]), partitions(p0) + +select nvl(c7, c17) from t1; ++--------------+ +| nvl(c7, c17) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c7], [t1.c18]), partitions(p0) + +select nvl(c7, c18) from t1; ++--------------+ +| nvl(c7, c18) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c7], [t1.c19]), partitions(p0) + +select nvl(c7, c19) from t1; ++--------------+ +| nvl(c7, c19) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c7], [t1.c20]), partitions(p0) + +select nvl(c7, c20) from t1; ++--------------+ +| nvl(c7, c20) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c7], [t1.c21]), partitions(p0) + +select nvl(c7, c21) from t1; ++--------------+ +| nvl(c7, c21) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c7, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c7, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c7], [t1.c22]), partitions(p0) + +select nvl(c7, c22) from t1; ++--------------+ +| nvl(c7, c22) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select nvl(null, c7) from t1; ++---------------+ +| nvl(null, c7) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c8, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c8], [t1.c1]), partitions(p0) + +select nvl(c8, c1) from t1; ++-------------+ +| nvl(c8, c1) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT UNSIGNED(10, 0)), cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c8], [t1.c2]), partitions(p0) + +select nvl(c8, c2) from t1; ++-------------+ +| nvl(c8, c2) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c8], [t1.c3]), partitions(p0) + +select nvl(c8, c3) from t1; ++-------------+ +| nvl(c8, c3) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT UNSIGNED(3, 0)), cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c8], [t1.c4]), partitions(p0) + +select nvl(c8, c4) from t1; ++-------------+ +| nvl(c8, c4) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c8], [t1.c5]), partitions(p0) + +select nvl(c8, c5) from t1; ++-------------+ +| nvl(c8, c5) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT UNSIGNED(5, 0)), cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c8], [t1.c6]), partitions(p0) + +select nvl(c8, c6) from t1; ++-------------+ +| nvl(c8, c6) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c8], [t1.c7]), partitions(p0) + +select nvl(c8, c7) from t1; ++-------------+ +| nvl(c8, c7) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT UNSIGNED(8, 0)), cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(c8, c8) from t1; ++-------------+ +| nvl(c8, c8) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c8], [t1.c9]), partitions(p0) + +select nvl(c8, c9) from t1; ++-------------+ +| nvl(c8, c9) | ++-------------+ +| 2 | +| 2 | ++-------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT UNSIGNED(10, 0)), cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c8], [t1.c10]), partitions(p0) + +select nvl(c8, c10) from t1; ++--------------+ +| nvl(c8, c10) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c8], [t1.c11]), partitions(p0) + +select nvl(c8, c11) from t1; ++--------------+ +| nvl(c8, c11) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, BIGINT UNSIGNED(20, 0)), t1.c12)]), filter(nil), + access([t1.c8], [t1.c12]), partitions(p0) + +select nvl(c8, c12) from t1; ++--------------+ +| nvl(c8, c12) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c8], [t1.c13]), partitions(p0) + +select nvl(c8, c13) from t1; ++--------------+ +| nvl(c8, c13) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c8], [t1.c14]), partitions(p0) + +select nvl(c8, c14) from t1; ++--------------+ +| nvl(c8, c14) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c8], [t1.c15]), partitions(p0) + +select nvl(c8, c15) from t1; ++--------------+ +| nvl(c8, c15) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c8], [t1.c16]), partitions(p0) + +select nvl(c8, c16) from t1; ++--------------+ +| nvl(c8, c16) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c8], [t1.c17]), partitions(p0) + +select nvl(c8, c17) from t1; ++--------------+ +| nvl(c8, c17) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c8], [t1.c18]), partitions(p0) + +select nvl(c8, c18) from t1; ++--------------+ +| nvl(c8, c18) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c8], [t1.c19]), partitions(p0) + +select nvl(c8, c19) from t1; ++--------------+ +| nvl(c8, c19) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c8], [t1.c20]), partitions(p0) + +select nvl(c8, c20) from t1; ++--------------+ +| nvl(c8, c20) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c8], [t1.c21]), partitions(p0) + +select nvl(c8, c21) from t1; ++--------------+ +| nvl(c8, c21) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c8, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c8, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c8], [t1.c22]), partitions(p0) + +select nvl(c8, c22) from t1; ++--------------+ +| nvl(c8, c22) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select nvl(null, c8) from t1; ++---------------+ +| nvl(null, c8) | ++---------------+ +| 2 | +| 2 | ++---------------+ + +EXPLAIN select nvl(c9, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c9], [t1.c1]), partitions(p0) + +select nvl(c9, c1) from t1; ++-------------+ +| nvl(c9, c1) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(10, 0)), cast(t1.c2, BIGINT(10, 0)))]), filter(nil), + access([t1.c9], [t1.c2]), partitions(p0) + +select nvl(c9, c2) from t1; ++-------------+ +| nvl(c9, c2) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c9], [t1.c3]), partitions(p0) + +select nvl(c9, c3) from t1; ++-------------+ +| nvl(c9, c3) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(3, 0)), cast(t1.c4, BIGINT(3, 0)))]), filter(nil), + access([t1.c9], [t1.c4]), partitions(p0) + +select nvl(c9, c4) from t1; ++-------------+ +| nvl(c9, c4) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c9], [t1.c5]), partitions(p0) + +select nvl(c9, c5) from t1; ++-------------+ +| nvl(c9, c5) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(5, 0)), cast(t1.c6, BIGINT(5, 0)))]), filter(nil), + access([t1.c9], [t1.c6]), partitions(p0) + +select nvl(c9, c6) from t1; ++-------------+ +| nvl(c9, c6) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c9], [t1.c7]), partitions(p0) + +select nvl(c9, c7) from t1; ++-------------+ +| nvl(c9, c7) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(8, 0)), cast(t1.c8, BIGINT(8, 0)))]), filter(nil), + access([t1.c9], [t1.c8]), partitions(p0) + +select nvl(c9, c8) from t1; ++-------------+ +| nvl(c9, c8) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(c9, c9) from t1; ++-------------+ +| nvl(c9, c9) | ++-------------+ +| 1 | +| -1 | ++-------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(10, 0)), cast(t1.c10, BIGINT(10, 0)))]), filter(nil), + access([t1.c9], [t1.c10]), partitions(p0) + +select nvl(c9, c10) from t1; ++--------------+ +| nvl(c9, c10) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c9], [t1.c11]), partitions(p0) + +select nvl(c9, c11) from t1; ++--------------+ +| nvl(c9, c11) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, DECIMAL(20, 0)), cast(t1.c12, DECIMAL(20, 0)))]), filter(nil), + access([t1.c9], [t1.c12]), partitions(p0) + +select nvl(c9, c12) from t1; ++--------------+ +| nvl(c9, c12) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c9], [t1.c13]), partitions(p0) + +select nvl(c9, c13) from t1; ++--------------+ +| nvl(c9, c13) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c9], [t1.c14]), partitions(p0) + +select nvl(c9, c14) from t1; ++--------------+ +| nvl(c9, c14) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c9], [t1.c15]), partitions(p0) + +select nvl(c9, c15) from t1; ++--------------+ +| nvl(c9, c15) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c9], [t1.c16]), partitions(p0) + +select nvl(c9, c16) from t1; ++--------------+ +| nvl(c9, c16) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c9], [t1.c17]), partitions(p0) + +select nvl(c9, c17) from t1; ++--------------+ +| nvl(c9, c17) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c9], [t1.c18]), partitions(p0) + +select nvl(c9, c18) from t1; ++--------------+ +| nvl(c9, c18) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c9], [t1.c19]), partitions(p0) + +select nvl(c9, c19) from t1; ++--------------+ +| nvl(c9, c19) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c9], [t1.c20]), partitions(p0) + +select nvl(c9, c20) from t1; ++--------------+ +| nvl(c9, c20) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c9], [t1.c21]), partitions(p0) + +select nvl(c9, c21) from t1; ++--------------+ +| nvl(c9, c21) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c9, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c9, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c9], [t1.c22]), partitions(p0) + +select nvl(c9, c22) from t1; ++--------------+ +| nvl(c9, c22) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select nvl(null, c9) from t1; ++---------------+ +| nvl(null, c9) | ++---------------+ +| 1 | +| -1 | ++---------------+ + +EXPLAIN select nvl(c10, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT(11, 0)), cast(t1.c1, BIGINT(11, 0)))]), filter(nil), + access([t1.c10], [t1.c1]), partitions(p0) + +select nvl(c10, c1) from t1; ++--------------+ +| nvl(c10, c1) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT UNSIGNED(10, 0)), cast(t1.c2, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10], [t1.c2]), partitions(p0) + +select nvl(c10, c2) from t1; ++--------------+ +| nvl(c10, c2) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT(4, 0)), cast(t1.c3, BIGINT(4, 0)))]), filter(nil), + access([t1.c10], [t1.c3]), partitions(p0) + +select nvl(c10, c3) from t1; ++--------------+ +| nvl(c10, c3) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT UNSIGNED(3, 0)), cast(t1.c4, BIGINT UNSIGNED(3, 0)))]), filter(nil), + access([t1.c10], [t1.c4]), partitions(p0) + +select nvl(c10, c4) from t1; ++--------------+ +| nvl(c10, c4) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT(6, 0)), cast(t1.c5, BIGINT(6, 0)))]), filter(nil), + access([t1.c10], [t1.c5]), partitions(p0) + +select nvl(c10, c5) from t1; ++--------------+ +| nvl(c10, c5) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT UNSIGNED(5, 0)), cast(t1.c6, BIGINT UNSIGNED(5, 0)))]), filter(nil), + access([t1.c10], [t1.c6]), partitions(p0) + +select nvl(c10, c6) from t1; ++--------------+ +| nvl(c10, c6) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT(9, 0)), cast(t1.c7, BIGINT(9, 0)))]), filter(nil), + access([t1.c10], [t1.c7]), partitions(p0) + +select nvl(c10, c7) from t1; ++--------------+ +| nvl(c10, c7) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT UNSIGNED(8, 0)), cast(t1.c8, BIGINT UNSIGNED(8, 0)))]), filter(nil), + access([t1.c10], [t1.c8]), partitions(p0) + +select nvl(c10, c8) from t1; ++--------------+ +| nvl(c10, c8) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT(11, 0)), cast(t1.c9, BIGINT(11, 0)))]), filter(nil), + access([t1.c10], [t1.c9]), partitions(p0) + +select nvl(c10, c9) from t1; ++--------------+ +| nvl(c10, c9) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT UNSIGNED(10, 0)), cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(c10, c10) from t1; ++---------------+ +| nvl(c10, c10) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT(20, 0)), t1.c11)]), filter(nil), + access([t1.c10], [t1.c11]), partitions(p0) + +select nvl(c10, c11) from t1; ++---------------+ +| nvl(c10, c11) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, BIGINT UNSIGNED(20, 0)), t1.c12)]), filter(nil), + access([t1.c10], [t1.c12]), partitions(p0) + +select nvl(c10, c12) from t1; ++---------------+ +| nvl(c10, c12) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c10], [t1.c13]), partitions(p0) + +select nvl(c10, c13) from t1; ++---------------+ +| nvl(c10, c13) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c10], [t1.c14]), partitions(p0) + +select nvl(c10, c14) from t1; ++---------------+ +| nvl(c10, c14) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c10], [t1.c15]), partitions(p0) + +select nvl(c10, c15) from t1; ++---------------+ +| nvl(c10, c15) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c10], [t1.c16]), partitions(p0) + +select nvl(c10, c16) from t1; ++---------------+ +| nvl(c10, c16) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c10], [t1.c17]), partitions(p0) + +select nvl(c10, c17) from t1; ++---------------+ +| nvl(c10, c17) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c10], [t1.c18]), partitions(p0) + +select nvl(c10, c18) from t1; ++---------------+ +| nvl(c10, c18) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c10], [t1.c19]), partitions(p0) + +select nvl(c10, c19) from t1; ++---------------+ +| nvl(c10, c19) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c10], [t1.c20]), partitions(p0) + +select nvl(c10, c20) from t1; ++---------------+ +| nvl(c10, c20) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c10], [t1.c21]), partitions(p0) + +select nvl(c10, c21) from t1; ++---------------+ +| nvl(c10, c21) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c10, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c10, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c10], [t1.c22]), partitions(p0) + +select nvl(c10, c22) from t1; ++---------------+ +| nvl(c10, c22) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c10, BIGINT UNSIGNED(10, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select nvl(null, c10) from t1; ++----------------+ +| nvl(null, c10) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c11, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c1, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c1]), partitions(p0) + +select nvl(c11, c1) from t1; ++--------------+ +| nvl(c11, c1) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c2, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c2]), partitions(p0) + +select nvl(c11, c2) from t1; ++--------------+ +| nvl(c11, c2) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c3, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c3]), partitions(p0) + +select nvl(c11, c3) from t1; ++--------------+ +| nvl(c11, c3) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c4, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c4]), partitions(p0) + +select nvl(c11, c4) from t1; ++--------------+ +| nvl(c11, c4) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c5, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c5]), partitions(p0) + +select nvl(c11, c5) from t1; ++--------------+ +| nvl(c11, c5) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c6, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c6]), partitions(p0) + +select nvl(c11, c6) from t1; ++--------------+ +| nvl(c11, c6) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c7, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c7]), partitions(p0) + +select nvl(c11, c7) from t1; ++--------------+ +| nvl(c11, c7) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c8, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c8]), partitions(p0) + +select nvl(c11, c8) from t1; ++--------------+ +| nvl(c11, c8) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c9, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c9]), partitions(p0) + +select nvl(c11, c9) from t1; ++--------------+ +| nvl(c11, c9) | ++--------------+ +| 1 | +| -1 | ++--------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, cast(t1.c10, BIGINT(20, 0)))]), filter(nil), + access([t1.c11], [t1.c10]), partitions(p0) + +select nvl(c11, c10) from t1; ++---------------+ +| nvl(c11, c10) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c11, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(c11, c11) from t1; ++---------------+ +| nvl(c11, c11) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, DECIMAL(20, 0)), cast(t1.c12, DECIMAL(20, 0)))]), filter(nil), + access([t1.c11], [t1.c12]), partitions(p0) + +select nvl(c11, c12) from t1; ++---------------+ +| nvl(c11, c12) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c11], [t1.c13]), partitions(p0) + +select nvl(c11, c13) from t1; ++---------------+ +| nvl(c11, c13) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c11], [t1.c14]), partitions(p0) + +select nvl(c11, c14) from t1; ++---------------+ +| nvl(c11, c14) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c11], [t1.c15]), partitions(p0) + +select nvl(c11, c15) from t1; ++---------------+ +| nvl(c11, c15) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c11], [t1.c16]), partitions(p0) + +select nvl(c11, c16) from t1; ++---------------+ +| nvl(c11, c16) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c11], [t1.c17]), partitions(p0) + +select nvl(c11, c17) from t1; ++---------------+ +| nvl(c11, c17) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c11], [t1.c18]), partitions(p0) + +select nvl(c11, c18) from t1; ++---------------+ +| nvl(c11, c18) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c11], [t1.c19]), partitions(p0) + +select nvl(c11, c19) from t1; ++---------------+ +| nvl(c11, c19) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c11], [t1.c20]), partitions(p0) + +select nvl(c11, c20) from t1; ++---------------+ +| nvl(c11, c20) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c11], [t1.c21]), partitions(p0) + +select nvl(c11, c21) from t1; ++---------------+ +| nvl(c11, c21) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c11, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c11, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c11], [t1.c22]), partitions(p0) + +select nvl(c11, c22) from t1; ++---------------+ +| nvl(c11, c22) | ++---------------+ +| 1 | +| -1 | ++---------------+ +EXPLAIN select nvl(null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select nvl(null, c11) from t1; ++----------------+ +| nvl(null, c11) | ++----------------+ +| 1 | +| -1 | ++----------------+ + +EXPLAIN select nvl(c12, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DECIMAL(20, 0)), cast(t1.c1, DECIMAL(20, 0)))]), filter(nil), + access([t1.c12], [t1.c1]), partitions(p0) + +select nvl(c12, c1) from t1; ++--------------+ +| nvl(c12, c1) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c12, cast(t1.c2, BIGINT UNSIGNED(20, 0)))]), filter(nil), + access([t1.c12], [t1.c2]), partitions(p0) + +select nvl(c12, c2) from t1; ++--------------+ +| nvl(c12, c2) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DECIMAL(20, 0)), cast(t1.c3, DECIMAL(20, 0)))]), filter(nil), + access([t1.c12], [t1.c3]), partitions(p0) + +select nvl(c12, c3) from t1; ++--------------+ +| nvl(c12, c3) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c12, cast(t1.c4, BIGINT UNSIGNED(20, 0)))]), filter(nil), + access([t1.c12], [t1.c4]), partitions(p0) + +select nvl(c12, c4) from t1; ++--------------+ +| nvl(c12, c4) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DECIMAL(20, 0)), cast(t1.c5, DECIMAL(20, 0)))]), filter(nil), + access([t1.c12], [t1.c5]), partitions(p0) + +select nvl(c12, c5) from t1; ++--------------+ +| nvl(c12, c5) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c12, cast(t1.c6, BIGINT UNSIGNED(20, 0)))]), filter(nil), + access([t1.c12], [t1.c6]), partitions(p0) + +select nvl(c12, c6) from t1; ++--------------+ +| nvl(c12, c6) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DECIMAL(20, 0)), cast(t1.c7, DECIMAL(20, 0)))]), filter(nil), + access([t1.c12], [t1.c7]), partitions(p0) + +select nvl(c12, c7) from t1; ++--------------+ +| nvl(c12, c7) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c12, cast(t1.c8, BIGINT UNSIGNED(20, 0)))]), filter(nil), + access([t1.c12], [t1.c8]), partitions(p0) + +select nvl(c12, c8) from t1; ++--------------+ +| nvl(c12, c8) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DECIMAL(20, 0)), cast(t1.c9, DECIMAL(20, 0)))]), filter(nil), + access([t1.c12], [t1.c9]), partitions(p0) + +select nvl(c12, c9) from t1; ++--------------+ +| nvl(c12, c9) | ++--------------+ +| 2 | +| 2 | ++--------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c12, cast(t1.c10, BIGINT UNSIGNED(20, 0)))]), filter(nil), + access([t1.c12], [t1.c10]), partitions(p0) + +select nvl(c12, c10) from t1; ++---------------+ +| nvl(c12, c10) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DECIMAL(20, 0)), cast(t1.c11, DECIMAL(20, 0)))]), filter(nil), + access([t1.c12], [t1.c11]), partitions(p0) + +select nvl(c12, c11) from t1; ++---------------+ +| nvl(c12, c11) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c12, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(c12, c12) from t1; ++---------------+ +| nvl(c12, c12) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c12], [t1.c13]), partitions(p0) + +select nvl(c12, c13) from t1; ++---------------+ +| nvl(c12, c13) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c12], [t1.c14]), partitions(p0) + +select nvl(c12, c14) from t1; ++---------------+ +| nvl(c12, c14) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c12], [t1.c15]), partitions(p0) + +select nvl(c12, c15) from t1; ++---------------+ +| nvl(c12, c15) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c12], [t1.c16]), partitions(p0) + +select nvl(c12, c16) from t1; ++---------------+ +| nvl(c12, c16) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c12], [t1.c17]), partitions(p0) + +select nvl(c12, c17) from t1; ++---------------+ +| nvl(c12, c17) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c12], [t1.c18]), partitions(p0) + +select nvl(c12, c18) from t1; ++---------------+ +| nvl(c12, c18) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c12], [t1.c19]), partitions(p0) + +select nvl(c12, c19) from t1; ++---------------+ +| nvl(c12, c19) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c12], [t1.c20]), partitions(p0) + +select nvl(c12, c20) from t1; ++---------------+ +| nvl(c12, c20) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c12], [t1.c21]), partitions(p0) + +select nvl(c12, c21) from t1; ++---------------+ +| nvl(c12, c21) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c12, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c12, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c12], [t1.c22]), partitions(p0) + +select nvl(c12, c22) from t1; ++---------------+ +| nvl(c12, c22) | ++---------------+ +| 2 | +| 2 | ++---------------+ +EXPLAIN select nvl(null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select nvl(null, c12) from t1; ++----------------+ +| nvl(null, c12) | ++----------------+ +| 2 | +| 2 | ++----------------+ + +EXPLAIN select nvl(c13, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(11, -1)), cast(t1.c1, DOUBLE(11, -1)))]), filter(nil), + access([t1.c13], [t1.c1]), partitions(p0) + +select nvl(c13, c1) from t1; ++--------------+ +| nvl(c13, c1) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(10, -1)), cast(t1.c2, DOUBLE(10, -1)))]), filter(nil), + access([t1.c13], [t1.c2]), partitions(p0) + +select nvl(c13, c2) from t1; ++--------------+ +| nvl(c13, c2) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(4, -1)), cast(t1.c3, DOUBLE(4, -1)))]), filter(nil), + access([t1.c13], [t1.c3]), partitions(p0) + +select nvl(c13, c3) from t1; ++--------------+ +| nvl(c13, c3) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(3, -1)), cast(t1.c4, DOUBLE(3, -1)))]), filter(nil), + access([t1.c13], [t1.c4]), partitions(p0) + +select nvl(c13, c4) from t1; ++--------------+ +| nvl(c13, c4) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(6, -1)), cast(t1.c5, DOUBLE(6, -1)))]), filter(nil), + access([t1.c13], [t1.c5]), partitions(p0) + +select nvl(c13, c5) from t1; ++--------------+ +| nvl(c13, c5) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(5, -1)), cast(t1.c6, DOUBLE(5, -1)))]), filter(nil), + access([t1.c13], [t1.c6]), partitions(p0) + +select nvl(c13, c6) from t1; ++--------------+ +| nvl(c13, c6) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(9, -1)), cast(t1.c7, DOUBLE(9, -1)))]), filter(nil), + access([t1.c13], [t1.c7]), partitions(p0) + +select nvl(c13, c7) from t1; ++--------------+ +| nvl(c13, c7) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(8, -1)), cast(t1.c8, DOUBLE(8, -1)))]), filter(nil), + access([t1.c13], [t1.c8]), partitions(p0) + +select nvl(c13, c8) from t1; ++--------------+ +| nvl(c13, c8) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(11, -1)), cast(t1.c9, DOUBLE(11, -1)))]), filter(nil), + access([t1.c13], [t1.c9]), partitions(p0) + +select nvl(c13, c9) from t1; ++--------------+ +| nvl(c13, c9) | ++--------------+ +| 3.5 | +| -3.5 | ++--------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(10, -1)), cast(t1.c10, DOUBLE(10, -1)))]), filter(nil), + access([t1.c13], [t1.c10]), partitions(p0) + +select nvl(c13, c10) from t1; ++---------------+ +| nvl(c13, c10) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(20, -1)), cast(t1.c11, DOUBLE(20, -1)))]), filter(nil), + access([t1.c13], [t1.c11]), partitions(p0) + +select nvl(c13, c11) from t1; ++---------------+ +| nvl(c13, c11) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(20, -1)), cast(t1.c12, DOUBLE(20, -1)))]), filter(nil), + access([t1.c13], [t1.c12]), partitions(p0) + +select nvl(c13, c12) from t1; ++---------------+ +| nvl(c13, c12) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c13, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(c13, c13) from t1; ++---------------+ +| nvl(c13, c13) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c13, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c13], [t1.c14]), partitions(p0) + +select nvl(c13, c14) from t1; ++---------------+ +| nvl(c13, c14) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c13], [t1.c15]), partitions(p0) + +select nvl(c13, c15) from t1; ++---------------+ +| nvl(c13, c15) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c13], [t1.c16]), partitions(p0) + +select nvl(c13, c16) from t1; ++---------------+ +| nvl(c13, c16) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DECIMAL(-1, -1)), t1.c17)]), filter(nil), + access([t1.c13], [t1.c17]), partitions(p0) + +select nvl(c13, c17) from t1; ++---------------+ +| nvl(c13, c17) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, DECIMAL(-1, -1)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c13], [t1.c18]), partitions(p0) + +select nvl(c13, c18) from t1; ++---------------+ +| nvl(c13, c18) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c13], [t1.c19]), partitions(p0) + +select nvl(c13, c19) from t1; ++---------------+ +| nvl(c13, c19) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c13], [t1.c20]), partitions(p0) + +select nvl(c13, c20) from t1; ++---------------+ +| nvl(c13, c20) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c13], [t1.c21]), partitions(p0) + +select nvl(c13, c21) from t1; ++---------------+ +| nvl(c13, c21) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c13, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c13, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c13], [t1.c22]), partitions(p0) + +select nvl(c13, c22) from t1; ++---------------+ +| nvl(c13, c22) | ++---------------+ +| 3.5 | +| -3.5 | ++---------------+ +EXPLAIN select nvl(null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select nvl(null, c13) from t1; ++----------------+ +| nvl(null, c13) | ++----------------+ +| 3.5 | +| -3.5 | ++----------------+ + +EXPLAIN select nvl(c14, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(11, -1)), cast(t1.c1, DOUBLE(11, -1)))]), filter(nil), + access([t1.c14], [t1.c1]), partitions(p0) + +select nvl(c14, c1) from t1; ++--------------+ +| nvl(c14, c1) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(10, -1)), cast(t1.c2, DOUBLE(10, -1)))]), filter(nil), + access([t1.c14], [t1.c2]), partitions(p0) + +select nvl(c14, c2) from t1; ++--------------+ +| nvl(c14, c2) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(4, -1)), cast(t1.c3, DOUBLE(4, -1)))]), filter(nil), + access([t1.c14], [t1.c3]), partitions(p0) + +select nvl(c14, c3) from t1; ++--------------+ +| nvl(c14, c3) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(3, -1)), cast(t1.c4, DOUBLE(3, -1)))]), filter(nil), + access([t1.c14], [t1.c4]), partitions(p0) + +select nvl(c14, c4) from t1; ++--------------+ +| nvl(c14, c4) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(6, -1)), cast(t1.c5, DOUBLE(6, -1)))]), filter(nil), + access([t1.c14], [t1.c5]), partitions(p0) + +select nvl(c14, c5) from t1; ++--------------+ +| nvl(c14, c5) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(5, -1)), cast(t1.c6, DOUBLE(5, -1)))]), filter(nil), + access([t1.c14], [t1.c6]), partitions(p0) + +select nvl(c14, c6) from t1; ++--------------+ +| nvl(c14, c6) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(9, -1)), cast(t1.c7, DOUBLE(9, -1)))]), filter(nil), + access([t1.c14], [t1.c7]), partitions(p0) + +select nvl(c14, c7) from t1; ++--------------+ +| nvl(c14, c7) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(8, -1)), cast(t1.c8, DOUBLE(8, -1)))]), filter(nil), + access([t1.c14], [t1.c8]), partitions(p0) + +select nvl(c14, c8) from t1; ++--------------+ +| nvl(c14, c8) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(11, -1)), cast(t1.c9, DOUBLE(11, -1)))]), filter(nil), + access([t1.c14], [t1.c9]), partitions(p0) + +select nvl(c14, c9) from t1; ++--------------+ +| nvl(c14, c9) | ++--------------+ +| 4.5 | +| 4.5 | ++--------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(10, -1)), cast(t1.c10, DOUBLE(10, -1)))]), filter(nil), + access([t1.c14], [t1.c10]), partitions(p0) + +select nvl(c14, c10) from t1; ++---------------+ +| nvl(c14, c10) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(20, -1)), cast(t1.c11, DOUBLE(20, -1)))]), filter(nil), + access([t1.c14], [t1.c11]), partitions(p0) + +select nvl(c14, c11) from t1; ++---------------+ +| nvl(c14, c11) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(20, -1)), cast(t1.c12, DOUBLE(20, -1)))]), filter(nil), + access([t1.c14], [t1.c12]), partitions(p0) + +select nvl(c14, c12) from t1; ++---------------+ +| nvl(c14, c12) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, FLOAT(-1, -1)), t1.c13)]), filter(nil), + access([t1.c14], [t1.c13]), partitions(p0) + +select nvl(c14, c13) from t1; ++---------------+ +| nvl(c14, c13) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, FLOAT(-1, -1)), cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(c14, c14) from t1; ++---------------+ +| nvl(c14, c14) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c14], [t1.c15]), partitions(p0) + +select nvl(c14, c15) from t1; ++---------------+ +| nvl(c14, c15) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c14], [t1.c16]), partitions(p0) + +select nvl(c14, c16) from t1; ++---------------+ +| nvl(c14, c16) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DECIMAL(-1, -1)), t1.c17)]), filter(nil), + access([t1.c14], [t1.c17]), partitions(p0) + +select nvl(c14, c17) from t1; ++---------------+ +| nvl(c14, c17) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, DECIMAL(-1, -1)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c14], [t1.c18]), partitions(p0) + +select nvl(c14, c18) from t1; ++---------------+ +| nvl(c14, c18) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c14], [t1.c19]), partitions(p0) + +select nvl(c14, c19) from t1; ++---------------+ +| nvl(c14, c19) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c14], [t1.c20]), partitions(p0) + +select nvl(c14, c20) from t1; ++---------------+ +| nvl(c14, c20) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c14], [t1.c21]), partitions(p0) + +select nvl(c14, c21) from t1; ++---------------+ +| nvl(c14, c21) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c14, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c14, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c14], [t1.c22]), partitions(p0) + +select nvl(c14, c22) from t1; ++---------------+ +| nvl(c14, c22) | ++---------------+ +| 4.5 | +| 4.5 | ++---------------+ +EXPLAIN select nvl(null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c14, FLOAT(-1, -1)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select nvl(null, c14) from t1; ++----------------+ +| nvl(null, c14) | ++----------------+ +| 4.5 | +| 4.5 | ++----------------+ + +EXPLAIN select nvl(c15, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c1, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c1]), partitions(p0) + +select nvl(c15, c1) from t1; ++--------------+ +| nvl(c15, c1) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c2, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c2]), partitions(p0) + +select nvl(c15, c2) from t1; ++--------------+ +| nvl(c15, c2) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c3, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c3]), partitions(p0) + +select nvl(c15, c3) from t1; ++--------------+ +| nvl(c15, c3) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c4, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c4]), partitions(p0) + +select nvl(c15, c4) from t1; ++--------------+ +| nvl(c15, c4) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c5, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c5]), partitions(p0) + +select nvl(c15, c5) from t1; ++--------------+ +| nvl(c15, c5) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c6, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c6]), partitions(p0) + +select nvl(c15, c6) from t1; ++--------------+ +| nvl(c15, c6) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c7, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c7]), partitions(p0) + +select nvl(c15, c7) from t1; ++--------------+ +| nvl(c15, c7) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c8, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c8]), partitions(p0) + +select nvl(c15, c8) from t1; ++--------------+ +| nvl(c15, c8) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c9, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c9]), partitions(p0) + +select nvl(c15, c9) from t1; ++--------------+ +| nvl(c15, c9) | ++--------------+ +| 5.5 | +| -5.5 | ++--------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c10, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c10]), partitions(p0) + +select nvl(c15, c10) from t1; ++---------------+ +| nvl(c15, c10) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c11, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c11]), partitions(p0) + +select nvl(c15, c11) from t1; ++---------------+ +| nvl(c15, c11) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c12, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c12]), partitions(p0) + +select nvl(c15, c12) from t1; ++---------------+ +| nvl(c15, c12) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c13]), partitions(p0) + +select nvl(c15, c13) from t1; ++---------------+ +| nvl(c15, c13) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c14]), partitions(p0) + +select nvl(c15, c14) from t1; ++---------------+ +| nvl(c15, c14) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(c15, c15) from t1; ++---------------+ +| nvl(c15, c15) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c16]), partitions(p0) + +select nvl(c15, c16) from t1; ++---------------+ +| nvl(c15, c16) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c17, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c17]), partitions(p0) + +select nvl(c15, c17) from t1; ++---------------+ +| nvl(c15, c17) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c15, cast(t1.c18, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c15], [t1.c18]), partitions(p0) + +select nvl(c15, c18) from t1; ++---------------+ +| nvl(c15, c18) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c15, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c15], [t1.c19]), partitions(p0) + +select nvl(c15, c19) from t1; ++---------------+ +| nvl(c15, c19) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c15, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c15], [t1.c20]), partitions(p0) + +select nvl(c15, c20) from t1; ++---------------+ +| nvl(c15, c20) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c15, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c15], [t1.c21]), partitions(p0) + +select nvl(c15, c21) from t1; ++---------------+ +| nvl(c15, c21) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c15, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c15, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c15], [t1.c22]), partitions(p0) + +select nvl(c15, c22) from t1; ++---------------+ +| nvl(c15, c22) | ++---------------+ +| 5.5 | +| -5.5 | ++---------------+ +EXPLAIN select nvl(null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select nvl(null, c15) from t1; ++----------------+ +| nvl(null, c15) | ++----------------+ +| 5.5 | +| -5.5 | ++----------------+ + +EXPLAIN select nvl(c16, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(11, -1)), cast(t1.c1, DOUBLE(11, -1)))]), filter(nil), + access([t1.c16], [t1.c1]), partitions(p0) + +select nvl(c16, c1) from t1; ++--------------+ +| nvl(c16, c1) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(10, -1)), cast(t1.c2, DOUBLE(10, -1)))]), filter(nil), + access([t1.c16], [t1.c2]), partitions(p0) + +select nvl(c16, c2) from t1; ++--------------+ +| nvl(c16, c2) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(4, -1)), cast(t1.c3, DOUBLE(4, -1)))]), filter(nil), + access([t1.c16], [t1.c3]), partitions(p0) + +select nvl(c16, c3) from t1; ++--------------+ +| nvl(c16, c3) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(3, -1)), cast(t1.c4, DOUBLE(3, -1)))]), filter(nil), + access([t1.c16], [t1.c4]), partitions(p0) + +select nvl(c16, c4) from t1; ++--------------+ +| nvl(c16, c4) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(6, -1)), cast(t1.c5, DOUBLE(6, -1)))]), filter(nil), + access([t1.c16], [t1.c5]), partitions(p0) + +select nvl(c16, c5) from t1; ++--------------+ +| nvl(c16, c5) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(5, -1)), cast(t1.c6, DOUBLE(5, -1)))]), filter(nil), + access([t1.c16], [t1.c6]), partitions(p0) + +select nvl(c16, c6) from t1; ++--------------+ +| nvl(c16, c6) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(9, -1)), cast(t1.c7, DOUBLE(9, -1)))]), filter(nil), + access([t1.c16], [t1.c7]), partitions(p0) + +select nvl(c16, c7) from t1; ++--------------+ +| nvl(c16, c7) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(8, -1)), cast(t1.c8, DOUBLE(8, -1)))]), filter(nil), + access([t1.c16], [t1.c8]), partitions(p0) + +select nvl(c16, c8) from t1; ++--------------+ +| nvl(c16, c8) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(11, -1)), cast(t1.c9, DOUBLE(11, -1)))]), filter(nil), + access([t1.c16], [t1.c9]), partitions(p0) + +select nvl(c16, c9) from t1; ++--------------+ +| nvl(c16, c9) | ++--------------+ +| 6.5 | +| 6.5 | ++--------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(10, -1)), cast(t1.c10, DOUBLE(10, -1)))]), filter(nil), + access([t1.c16], [t1.c10]), partitions(p0) + +select nvl(c16, c10) from t1; ++---------------+ +| nvl(c16, c10) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(20, -1)), cast(t1.c11, DOUBLE(20, -1)))]), filter(nil), + access([t1.c16], [t1.c11]), partitions(p0) + +select nvl(c16, c11) from t1; ++---------------+ +| nvl(c16, c11) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(20, -1)), cast(t1.c12, DOUBLE(20, -1)))]), filter(nil), + access([t1.c16], [t1.c12]), partitions(p0) + +select nvl(c16, c12) from t1; ++---------------+ +| nvl(c16, c12) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16], [t1.c13]), partitions(p0) + +select nvl(c16, c13) from t1; ++---------------+ +| nvl(c16, c13) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16], [t1.c14]), partitions(p0) + +select nvl(c16, c14) from t1; ++---------------+ +| nvl(c16, c14) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c16], [t1.c15]), partitions(p0) + +select nvl(c16, c15) from t1; ++---------------+ +| nvl(c16, c15) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(c16, c16) from t1; ++---------------+ +| nvl(c16, c16) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(10, -1)), cast(t1.c17, DOUBLE(10, -1)))]), filter(nil), + access([t1.c16], [t1.c17]), partitions(p0) + +select nvl(c16, c17) from t1; ++---------------+ +| nvl(c16, c17) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, DOUBLE(10, -1)), cast(t1.c18, DOUBLE(10, -1)))]), filter(nil), + access([t1.c16], [t1.c18]), partitions(p0) + +select nvl(c16, c18) from t1; ++---------------+ +| nvl(c16, c18) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c16], [t1.c19]), partitions(p0) + +select nvl(c16, c19) from t1; ++---------------+ +| nvl(c16, c19) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c16], [t1.c20]), partitions(p0) + +select nvl(c16, c20) from t1; ++---------------+ +| nvl(c16, c20) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c16], [t1.c21]), partitions(p0) + +select nvl(c16, c21) from t1; ++---------------+ +| nvl(c16, c21) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c16, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c16, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c16], [t1.c22]), partitions(p0) + +select nvl(c16, c22) from t1; ++---------------+ +| nvl(c16, c22) | ++---------------+ +| 6.5 | +| 6.5 | ++---------------+ +EXPLAIN select nvl(null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select nvl(null, c16) from t1; ++----------------+ +| nvl(null, c16) | ++----------------+ +| 6.5 | +| 6.5 | ++----------------+ + +EXPLAIN select nvl(c17, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c1, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c1]), partitions(p0) + +select nvl(c17, c1) from t1; ++--------------+ +| nvl(c17, c1) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c2, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c2]), partitions(p0) + +select nvl(c17, c2) from t1; ++--------------+ +| nvl(c17, c2) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c3, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c3]), partitions(p0) + +select nvl(c17, c3) from t1; ++--------------+ +| nvl(c17, c3) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c4, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c4]), partitions(p0) + +select nvl(c17, c4) from t1; ++--------------+ +| nvl(c17, c4) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c5, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c5]), partitions(p0) + +select nvl(c17, c5) from t1; ++--------------+ +| nvl(c17, c5) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c6, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c6]), partitions(p0) + +select nvl(c17, c6) from t1; ++--------------+ +| nvl(c17, c6) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c7, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c7]), partitions(p0) + +select nvl(c17, c7) from t1; ++--------------+ +| nvl(c17, c7) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c8, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c8]), partitions(p0) + +select nvl(c17, c8) from t1; ++--------------+ +| nvl(c17, c8) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c9, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c9]), partitions(p0) + +select nvl(c17, c9) from t1; ++--------------+ +| nvl(c17, c9) | ++--------------+ +| 8 | +| -8 | ++--------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c10, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c10]), partitions(p0) + +select nvl(c17, c10) from t1; ++---------------+ +| nvl(c17, c10) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c11, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c11]), partitions(p0) + +select nvl(c17, c11) from t1; ++---------------+ +| nvl(c17, c11) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c12, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c12]), partitions(p0) + +select nvl(c17, c12) from t1; ++---------------+ +| nvl(c17, c12) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c17, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c17], [t1.c13]), partitions(p0) + +select nvl(c17, c13) from t1; ++---------------+ +| nvl(c17, c13) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c17, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c17], [t1.c14]), partitions(p0) + +select nvl(c17, c14) from t1; ++---------------+ +| nvl(c17, c14) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c17, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c17], [t1.c15]), partitions(p0) + +select nvl(c17, c15) from t1; ++---------------+ +| nvl(c17, c15) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c17, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c17], [t1.c16]), partitions(p0) + +select nvl(c17, c16) from t1; ++---------------+ +| nvl(c17, c16) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(c17, c17) from t1; ++---------------+ +| nvl(c17, c17) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c17, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c17], [t1.c18]), partitions(p0) + +select nvl(c17, c18) from t1; ++---------------+ +| nvl(c17, c18) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c17, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c17], [t1.c19]), partitions(p0) + +select nvl(c17, c19) from t1; ++---------------+ +| nvl(c17, c19) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c17, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c17], [t1.c20]), partitions(p0) + +select nvl(c17, c20) from t1; ++---------------+ +| nvl(c17, c20) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c17, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c17], [t1.c21]), partitions(p0) + +select nvl(c17, c21) from t1; ++---------------+ +| nvl(c17, c21) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c17, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c17, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c17], [t1.c22]), partitions(p0) + +select nvl(c17, c22) from t1; ++---------------+ +| nvl(c17, c22) | ++---------------+ +| 8 | +| -8 | ++---------------+ +EXPLAIN select nvl(null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select nvl(null, c17) from t1; ++----------------+ +| nvl(null, c17) | ++----------------+ +| 8 | +| -8 | ++----------------+ + +EXPLAIN select nvl(c18, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(11, 0)), cast(t1.c1, DECIMAL(11, 0)))]), filter(nil), + access([t1.c18], [t1.c1]), partitions(p0) + +select nvl(c18, c1) from t1; ++--------------+ +| nvl(c18, c1) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(10, 0)), cast(t1.c2, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18], [t1.c2]), partitions(p0) + +select nvl(c18, c2) from t1; ++--------------+ +| nvl(c18, c2) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(4, 0)), cast(t1.c3, DECIMAL(4, 0)))]), filter(nil), + access([t1.c18], [t1.c3]), partitions(p0) + +select nvl(c18, c3) from t1; ++--------------+ +| nvl(c18, c3) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(3, 0)), cast(t1.c4, DECIMAL(3, 0)))]), filter(nil), + access([t1.c18], [t1.c4]), partitions(p0) + +select nvl(c18, c4) from t1; ++--------------+ +| nvl(c18, c4) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(6, 0)), cast(t1.c5, DECIMAL(6, 0)))]), filter(nil), + access([t1.c18], [t1.c5]), partitions(p0) + +select nvl(c18, c5) from t1; ++--------------+ +| nvl(c18, c5) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(5, 0)), cast(t1.c6, DECIMAL(5, 0)))]), filter(nil), + access([t1.c18], [t1.c6]), partitions(p0) + +select nvl(c18, c6) from t1; ++--------------+ +| nvl(c18, c6) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(9, 0)), cast(t1.c7, DECIMAL(9, 0)))]), filter(nil), + access([t1.c18], [t1.c7]), partitions(p0) + +select nvl(c18, c7) from t1; ++--------------+ +| nvl(c18, c7) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(8, 0)), cast(t1.c8, DECIMAL(8, 0)))]), filter(nil), + access([t1.c18], [t1.c8]), partitions(p0) + +select nvl(c18, c8) from t1; ++--------------+ +| nvl(c18, c8) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(11, 0)), cast(t1.c9, DECIMAL(11, 0)))]), filter(nil), + access([t1.c18], [t1.c9]), partitions(p0) + +select nvl(c18, c9) from t1; ++--------------+ +| nvl(c18, c9) | ++--------------+ +| 9 | +| 9 | ++--------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(10, 0)), cast(t1.c10, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18], [t1.c10]), partitions(p0) + +select nvl(c18, c10) from t1; ++---------------+ +| nvl(c18, c10) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(20, 0)), cast(t1.c11, DECIMAL(20, 0)))]), filter(nil), + access([t1.c18], [t1.c11]), partitions(p0) + +select nvl(c18, c11) from t1; ++---------------+ +| nvl(c18, c11) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(20, 0)), cast(t1.c12, DECIMAL(20, 0)))]), filter(nil), + access([t1.c18], [t1.c12]), partitions(p0) + +select nvl(c18, c12) from t1; ++---------------+ +| nvl(c18, c12) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DOUBLE(-1, -1)), cast(t1.c13, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c18], [t1.c13]), partitions(p0) + +select nvl(c18, c13) from t1; ++---------------+ +| nvl(c18, c13) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DOUBLE(-1, -1)), cast(t1.c14, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c18], [t1.c14]), partitions(p0) + +select nvl(c18, c14) from t1; ++---------------+ +| nvl(c18, c14) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DOUBLE(-1, -1)), t1.c15)]), filter(nil), + access([t1.c18], [t1.c15]), partitions(p0) + +select nvl(c18, c15) from t1; ++---------------+ +| nvl(c18, c15) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DOUBLE(-1, -1)), cast(t1.c16, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c18], [t1.c16]), partitions(p0) + +select nvl(c18, c16) from t1; ++---------------+ +| nvl(c18, c16) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(10, 0)), t1.c17)]), filter(nil), + access([t1.c18], [t1.c17]), partitions(p0) + +select nvl(c18, c17) from t1; ++---------------+ +| nvl(c18, c17) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, DECIMAL(10, 0)), cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(c18, c18) from t1; ++---------------+ +| nvl(c18, c18) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c18], [t1.c19]), partitions(p0) + +select nvl(c18, c19) from t1; ++---------------+ +| nvl(c18, c19) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c18], [t1.c20]), partitions(p0) + +select nvl(c18, c20) from t1; ++---------------+ +| nvl(c18, c20) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c18], [t1.c21]), partitions(p0) + +select nvl(c18, c21) from t1; ++---------------+ +| nvl(c18, c21) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c18, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c18, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c18], [t1.c22]), partitions(p0) + +select nvl(c18, c22) from t1; ++---------------+ +| nvl(c18, c22) | ++---------------+ +| 9 | +| 9 | ++---------------+ +EXPLAIN select nvl(null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c18, DECIMAL(10, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select nvl(null, c18) from t1; ++----------------+ +| nvl(null, c18) | ++----------------+ +| 9 | +| 9 | ++----------------+ + +EXPLAIN select nvl(c19, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c1, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c1]), partitions(p0) + +select nvl(c19, c1) from t1; ++---------------------+ +| nvl(c19, c1) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c2, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c2]), partitions(p0) + +select nvl(c19, c2) from t1; ++---------------------+ +| nvl(c19, c2) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c3, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c3]), partitions(p0) + +select nvl(c19, c3) from t1; ++---------------------+ +| nvl(c19, c3) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c4, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c4]), partitions(p0) + +select nvl(c19, c4) from t1; ++---------------------+ +| nvl(c19, c4) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c5, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c5]), partitions(p0) + +select nvl(c19, c5) from t1; ++---------------------+ +| nvl(c19, c5) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c6, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c6]), partitions(p0) + +select nvl(c19, c6) from t1; ++---------------------+ +| nvl(c19, c6) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c7, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c7]), partitions(p0) + +select nvl(c19, c7) from t1; ++---------------------+ +| nvl(c19, c7) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c8, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c8]), partitions(p0) + +select nvl(c19, c8) from t1; ++---------------------+ +| nvl(c19, c8) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c9, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c9]), partitions(p0) + +select nvl(c19, c9) from t1; ++---------------------+ +| nvl(c19, c9) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c10, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c10]), partitions(p0) + +select nvl(c19, c10) from t1; ++---------------------+ +| nvl(c19, c10) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c11, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c11]), partitions(p0) + +select nvl(c19, c11) from t1; ++---------------------+ +| nvl(c19, c11) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c12, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c12]), partitions(p0) + +select nvl(c19, c12) from t1; ++---------------------+ +| nvl(c19, c12) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c13, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c13]), partitions(p0) + +select nvl(c19, c13) from t1; ++---------------------+ +| nvl(c19, c13) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c14, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c14]), partitions(p0) + +select nvl(c19, c14) from t1; ++---------------------+ +| nvl(c19, c14) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c15, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c15]), partitions(p0) + +select nvl(c19, c15) from t1; ++---------------------+ +| nvl(c19, c15) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c16, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c16]), partitions(p0) + +select nvl(c19, c16) from t1; ++---------------------+ +| nvl(c19, c16) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c17, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c17]), partitions(p0) + +select nvl(c19, c17) from t1; ++---------------------+ +| nvl(c19, c17) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(1048576)), cast(t1.c18, VARCHAR(1048576)))]), filter(nil), + access([t1.c19], [t1.c18]), partitions(p0) + +select nvl(c19, c18) from t1; ++---------------------+ +| nvl(c19, c18) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c19, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(c19, c19) from t1; ++---------------------+ +| nvl(c19, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c19, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c19], [t1.c20]), partitions(p0) + +select nvl(c19, c20) from t1; ++---------------------+ +| nvl(c19, c20) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c19], [t1.c21]), partitions(p0) + +select nvl(c19, c21) from t1; ++---------------------+ +| nvl(c19, c21) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c19, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c19, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c19], [t1.c22]), partitions(p0) + +select nvl(c19, c22) from t1; ++---------------------+ +| nvl(c19, c22) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select nvl(null, c19) from t1; ++---------------------+ +| nvl(null, c19) | ++---------------------+ +| 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c1, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c1]), partitions(p0) + +select nvl(c20, c1) from t1; ++---------------------+ +| nvl(c20, c1) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c2, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c2]), partitions(p0) + +select nvl(c20, c2) from t1; ++---------------------+ +| nvl(c20, c2) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c3, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c3]), partitions(p0) + +select nvl(c20, c3) from t1; ++---------------------+ +| nvl(c20, c3) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c4, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c4]), partitions(p0) + +select nvl(c20, c4) from t1; ++---------------------+ +| nvl(c20, c4) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c5, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c5]), partitions(p0) + +select nvl(c20, c5) from t1; ++---------------------+ +| nvl(c20, c5) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c6, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c6]), partitions(p0) + +select nvl(c20, c6) from t1; ++---------------------+ +| nvl(c20, c6) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c7, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c7]), partitions(p0) + +select nvl(c20, c7) from t1; ++---------------------+ +| nvl(c20, c7) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c8, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c8]), partitions(p0) + +select nvl(c20, c8) from t1; ++---------------------+ +| nvl(c20, c8) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c9, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c9]), partitions(p0) + +select nvl(c20, c9) from t1; ++---------------------+ +| nvl(c20, c9) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c10, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c10]), partitions(p0) + +select nvl(c20, c10) from t1; ++---------------------+ +| nvl(c20, c10) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c11, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c11]), partitions(p0) + +select nvl(c20, c11) from t1; ++---------------------+ +| nvl(c20, c11) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c12, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c12]), partitions(p0) + +select nvl(c20, c12) from t1; ++---------------------+ +| nvl(c20, c12) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c13, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c13]), partitions(p0) + +select nvl(c20, c13) from t1; ++---------------------+ +| nvl(c20, c13) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c14, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c14]), partitions(p0) + +select nvl(c20, c14) from t1; ++---------------------+ +| nvl(c20, c14) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c15, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c15]), partitions(p0) + +select nvl(c20, c15) from t1; ++---------------------+ +| nvl(c20, c15) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c16, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c16]), partitions(p0) + +select nvl(c20, c16) from t1; ++---------------------+ +| nvl(c20, c16) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c17, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c17]), partitions(p0) + +select nvl(c20, c17) from t1; ++---------------------+ +| nvl(c20, c17) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(1048576)), cast(t1.c18, VARCHAR(1048576)))]), filter(nil), + access([t1.c20], [t1.c18]), partitions(p0) + +select nvl(c20, c18) from t1; ++---------------------+ +| nvl(c20, c18) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, DATETIME(19, 0)), t1.c19)]), filter(nil), + access([t1.c20], [t1.c19]), partitions(p0) + +select nvl(c20, c19) from t1; ++---------------------+ +| nvl(c20, c19) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, DATETIME(19, 0)), cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(c20, c20) from t1; ++---------------------+ +| nvl(c20, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c20], [t1.c21]), partitions(p0) + +select nvl(c20, c21) from t1; ++---------------------+ +| nvl(c20, c21) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c20, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c20, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c20], [t1.c22]), partitions(p0) + +select nvl(c20, c22) from t1; ++---------------------+ +| nvl(c20, c22) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ +EXPLAIN select nvl(null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c20, DATETIME(19, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select nvl(null, c20) from t1; ++---------------------+ +| nvl(null, c20) | ++---------------------+ +| 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | ++---------------------+ + +EXPLAIN select nvl(c21, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c1, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c1]), partitions(p0) + +select nvl(c21, c1) from t1; ++--------------+ +| nvl(c21, c1) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c2, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c2]), partitions(p0) + +select nvl(c21, c2) from t1; ++--------------+ +| nvl(c21, c2) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c3, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c3]), partitions(p0) + +select nvl(c21, c3) from t1; ++--------------+ +| nvl(c21, c3) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c4, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c4]), partitions(p0) + +select nvl(c21, c4) from t1; ++--------------+ +| nvl(c21, c4) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c5, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c5]), partitions(p0) + +select nvl(c21, c5) from t1; ++--------------+ +| nvl(c21, c5) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c6, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c6]), partitions(p0) + +select nvl(c21, c6) from t1; ++--------------+ +| nvl(c21, c6) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c7, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c7]), partitions(p0) + +select nvl(c21, c7) from t1; ++--------------+ +| nvl(c21, c7) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c8, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c8]), partitions(p0) + +select nvl(c21, c8) from t1; ++--------------+ +| nvl(c21, c8) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c9, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c9]), partitions(p0) + +select nvl(c21, c9) from t1; ++--------------+ +| nvl(c21, c9) | ++--------------+ +| 9.5 | +| -9.5 | ++--------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c10, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c10]), partitions(p0) + +select nvl(c21, c10) from t1; ++---------------+ +| nvl(c21, c10) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c11, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c11]), partitions(p0) + +select nvl(c21, c11) from t1; ++---------------+ +| nvl(c21, c11) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c12, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c12]), partitions(p0) + +select nvl(c21, c12) from t1; ++---------------+ +| nvl(c21, c12) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c13, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c13]), partitions(p0) + +select nvl(c21, c13) from t1; ++---------------+ +| nvl(c21, c13) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c14, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c14]), partitions(p0) + +select nvl(c21, c14) from t1; ++---------------+ +| nvl(c21, c14) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c15, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c15]), partitions(p0) + +select nvl(c21, c15) from t1; ++---------------+ +| nvl(c21, c15) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c16, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c16]), partitions(p0) + +select nvl(c21, c16) from t1; ++---------------+ +| nvl(c21, c16) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c17, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c17]), partitions(p0) + +select nvl(c21, c17) from t1; ++---------------+ +| nvl(c21, c17) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c18, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c18]), partitions(p0) + +select nvl(c21, c18) from t1; ++---------------+ +| nvl(c21, c18) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c19, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c19]), partitions(p0) + +select nvl(c21, c19) from t1; ++---------------+ +| nvl(c21, c19) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c20, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c20]), partitions(p0) + +select nvl(c21, c20) from t1; ++---------------+ +| nvl(c21, c20) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(c21, c21) from t1; ++---------------+ +| nvl(c21, c21) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c21, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(t1.c21, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c21], [t1.c22]), partitions(p0) + +select nvl(c21, c22) from t1; ++---------------+ +| nvl(c21, c22) | ++---------------+ +| 9.5 | +| -9.5 | ++---------------+ +EXPLAIN select nvl(null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select nvl(null, c21) from t1; ++----------------+ +| nvl(null, c21) | ++----------------+ +| 9.5 | +| -9.5 | ++----------------+ + +EXPLAIN select nvl(c22, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c1, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c1]), partitions(p0) + +select nvl(c22, c1) from t1; ++--------------+ +| nvl(c22, c1) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c2, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c2]), partitions(p0) + +select nvl(c22, c2) from t1; ++--------------+ +| nvl(c22, c2) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c3, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c3]), partitions(p0) + +select nvl(c22, c3) from t1; ++--------------+ +| nvl(c22, c3) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c4, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c4]), partitions(p0) + +select nvl(c22, c4) from t1; ++--------------+ +| nvl(c22, c4) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c5, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c5]), partitions(p0) + +select nvl(c22, c5) from t1; ++--------------+ +| nvl(c22, c5) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c6, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c6]), partitions(p0) + +select nvl(c22, c6) from t1; ++--------------+ +| nvl(c22, c6) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c7, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c7]), partitions(p0) + +select nvl(c22, c7) from t1; ++--------------+ +| nvl(c22, c7) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c8, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c8]), partitions(p0) + +select nvl(c22, c8) from t1; ++--------------+ +| nvl(c22, c8) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c9, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c9]), partitions(p0) + +select nvl(c22, c9) from t1; ++--------------+ +| nvl(c22, c9) | ++--------------+ +| 10.5 | +| 10.5 | ++--------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c10, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c10]), partitions(p0) + +select nvl(c22, c10) from t1; ++---------------+ +| nvl(c22, c10) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c11, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c11]), partitions(p0) + +select nvl(c22, c11) from t1; ++---------------+ +| nvl(c22, c11) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c12, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c12]), partitions(p0) + +select nvl(c22, c12) from t1; ++---------------+ +| nvl(c22, c12) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c13, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c13]), partitions(p0) + +select nvl(c22, c13) from t1; ++---------------+ +| nvl(c22, c13) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c14, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c14]), partitions(p0) + +select nvl(c22, c14) from t1; ++---------------+ +| nvl(c22, c14) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c15, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c15]), partitions(p0) + +select nvl(c22, c15) from t1; ++---------------+ +| nvl(c22, c15) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c16, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c16]), partitions(p0) + +select nvl(c22, c16) from t1; ++---------------+ +| nvl(c22, c16) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c17, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c17]), partitions(p0) + +select nvl(c22, c17) from t1; ++---------------+ +| nvl(c22, c17) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c18, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c18]), partitions(p0) + +select nvl(c22, c18) from t1; ++---------------+ +| nvl(c22, c18) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c19, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c19]), partitions(p0) + +select nvl(c22, c19) from t1; ++---------------+ +| nvl(c22, c19) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(1048576)), cast(t1.c20, VARCHAR(1048576)))]), filter(nil), + access([t1.c22], [t1.c20]), partitions(p0) + +select nvl(c22, c20) from t1; ++---------------+ +| nvl(c22, c20) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(30)), t1.c21)]), filter(nil), + access([t1.c22], [t1.c21]), partitions(p0) + +select nvl(c22, c21) from t1; ++---------------+ +| nvl(c22, c21) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + +EXPLAIN select nvl(c22, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(cast(t1.c22, VARCHAR(30)), cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(c22, c22) from t1; ++---------------+ +| nvl(c22, c22) | ++---------------+ +| 10.5 | +| 10.5 | ++---------------+ +EXPLAIN select nvl(null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([nvl(?, cast(t1.c22, VARCHAR(30)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select nvl(null, c22) from t1; ++----------------+ +| nvl(null, c22) | ++----------------+ +| 10.5 | +| 10.5 | ++----------------+ + + +explain_protocol: 0 +set timestamp = 1600000000; +##bugfix: https://work.aone.alibaba-inc.com/issue/37931049 +select ifnull(null, utc_time(4)); ++---------------------------+ +| ifnull(null, utc_time(4)) | ++---------------------------+ +| 12:26:40.0000 | ++---------------------------+ + +drop table if exists t1; +create table t1 (a bigint primary key, b datetime(3)); +insert into t1 values(1, now()); +insert into t1 values(2, now(6)); +select nvl(null,b) from t1; ++-------------------------+ +| nvl(null,b) | ++-------------------------+ +| 2020-09-13 20:26:40.000 | +| 2020-09-13 20:26:40.000 | ++-------------------------+ +drop table t1; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_pad.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_pad.result new file mode 100644 index 000000000..681d42385 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_pad.result @@ -0,0 +1,6285 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30)); +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5'); + +// Case1: normal test.测试各种类型组合, 跟不开新引擎开关进行对比 +alter system flush plan cache global; +set @@ob_enable_plan_cache = 0; +select rpad(null, null, null), rpad('a', 1, null), rpad(null, 1, 'a') from dual; ++------------------------+--------------------+--------------------+ +| rpad(null, null, null) | rpad('a', 1, null) | rpad(null, 1, 'a') | ++------------------------+--------------------+--------------------+ +| NULL | NULL | NULL | ++------------------------+--------------------+--------------------+ +select lpad(null, null, null), lpad('a', 1, null), lpad(null, 1, 'a') from dual; ++------------------------+--------------------+--------------------+ +| lpad(null, null, null) | lpad('a', 1, null) | lpad(null, 1, 'a') | ++------------------------+--------------------+--------------------+ +| NULL | NULL | NULL | ++------------------------+--------------------+--------------------+ + +select c1, c1, rpad(c1, c1, c1), lpad(c1, c1, c1) from t1; ++------+------+------------------+------------------+ +| c1 | c1 | rpad(c1, c1, c1) | lpad(c1, c1, c1) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c1, pad(c1, c1, c1) from t1; ++------+------+-----------------+ +| c1 | c1 | pad(c1, c1, c1) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c1, c2, rpad(c1, c1, c2), lpad(c1, c1, c2) from t1; ++------+------+------------------+------------------+ +| c1 | c2 | rpad(c1, c1, c2) | lpad(c1, c1, c2) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c2, pad(c1, c1, c2) from t1; ++------+------+-----------------+ +| c1 | c2 | pad(c1, c1, c2) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c1, c3, rpad(c1, c1, c3), lpad(c1, c1, c3) from t1; ++------+------+------------------+------------------+ +| c1 | c3 | rpad(c1, c1, c3) | lpad(c1, c1, c3) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c3, pad(c1, c1, c3) from t1; ++------+------+-----------------+ +| c1 | c3 | pad(c1, c1, c3) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c1, c4, rpad(c1, c1, c4), lpad(c1, c1, c4) from t1; ++------+------+------------------+------------------+ +| c1 | c4 | rpad(c1, c1, c4) | lpad(c1, c1, c4) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c4, pad(c1, c1, c4) from t1; ++------+------+-----------------+ +| c1 | c4 | pad(c1, c1, c4) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c1, c5, rpad(c1, c1, c5), lpad(c1, c1, c5) from t1; ++------+------+------------------+------------------+ +| c1 | c5 | rpad(c1, c1, c5) | lpad(c1, c1, c5) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c5, pad(c1, c1, c5) from t1; ++------+------+-----------------+ +| c1 | c5 | pad(c1, c1, c5) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c1, c6, rpad(c1, c1, c6), lpad(c1, c1, c6) from t1; ++------+------+------------------+------------------+ +| c1 | c6 | rpad(c1, c1, c6) | lpad(c1, c1, c6) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c6, pad(c1, c1, c6) from t1; ++------+------+-----------------+ +| c1 | c6 | pad(c1, c1, c6) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c1, c7, rpad(c1, c1, c7), lpad(c1, c1, c7) from t1; ++------+------+------------------+------------------+ +| c1 | c7 | rpad(c1, c1, c7) | lpad(c1, c1, c7) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c7, pad(c1, c1, c7) from t1; ++------+------+-----------------+ +| c1 | c7 | pad(c1, c1, c7) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c1, c8, rpad(c1, c1, c8), lpad(c1, c1, c8) from t1; ++------+------+------------------+------------------+ +| c1 | c8 | rpad(c1, c1, c8) | lpad(c1, c1, c8) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c8, pad(c1, c1, c8) from t1; ++------+------+-----------------+ +| c1 | c8 | pad(c1, c1, c8) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c1, c9, rpad(c1, c1, c9), lpad(c1, c1, c9) from t1; ++------+------+------------------+------------------+ +| c1 | c9 | rpad(c1, c1, c9) | lpad(c1, c1, c9) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c1, c9, pad(c1, c1, c9) from t1; ++------+------+-----------------+ +| c1 | c9 | pad(c1, c1, c9) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c1, c10, rpad(c1, c1, c10), lpad(c1, c1, c10) from t1; ++------+------+-------------------+-------------------+ +| c1 | c10 | rpad(c1, c1, c10) | lpad(c1, c1, c10) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c10, pad(c1, c1, c10) from t1; ++------+------+------------------+ +| c1 | c10 | pad(c1, c1, c10) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c1, c11, rpad(c1, c1, c11), lpad(c1, c1, c11) from t1; ++------+------+-------------------+-------------------+ +| c1 | c11 | rpad(c1, c1, c11) | lpad(c1, c1, c11) | ++------+------+-------------------+-------------------+ +| 1 | 1 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c11, pad(c1, c1, c11) from t1; ++------+------+------------------+ +| c1 | c11 | pad(c1, c1, c11) | ++------+------+------------------+ +| 1 | 1 | 1 | ++------+------+------------------+ +select c1, c12, rpad(c1, c1, c12), lpad(c1, c1, c12) from t1; ++------+------+-------------------+-------------------+ +| c1 | c12 | rpad(c1, c1, c12) | lpad(c1, c1, c12) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c12, pad(c1, c1, c12) from t1; ++------+------+------------------+ +| c1 | c12 | pad(c1, c1, c12) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c1, c13, rpad(c1, c1, c13), lpad(c1, c1, c13) from t1; ++------+------+-------------------+-------------------+ +| c1 | c13 | rpad(c1, c1, c13) | lpad(c1, c1, c13) | ++------+------+-------------------+-------------------+ +| 1 | 3.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c13, pad(c1, c1, c13) from t1; ++------+------+------------------+ +| c1 | c13 | pad(c1, c1, c13) | ++------+------+------------------+ +| 1 | 3.5 | 1111 | ++------+------+------------------+ +select c1, c14, rpad(c1, c1, c14), lpad(c1, c1, c14) from t1; ++------+------+-------------------+-------------------+ +| c1 | c14 | rpad(c1, c1, c14) | lpad(c1, c1, c14) | ++------+------+-------------------+-------------------+ +| 1 | 4.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c14, pad(c1, c1, c14) from t1; ++------+------+------------------+ +| c1 | c14 | pad(c1, c1, c14) | ++------+------+------------------+ +| 1 | 4.5 | 1111 | ++------+------+------------------+ +select c1, c15, rpad(c1, c1, c15), lpad(c1, c1, c15) from t1; ++------+------+-------------------+-------------------+ +| c1 | c15 | rpad(c1, c1, c15) | lpad(c1, c1, c15) | ++------+------+-------------------+-------------------+ +| 1 | 5.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c15, pad(c1, c1, c15) from t1; ++------+------+------------------+ +| c1 | c15 | pad(c1, c1, c15) | ++------+------+------------------+ +| 1 | 5.5 | 111111 | ++------+------+------------------+ +select c1, c16, rpad(c1, c1, c16), lpad(c1, c1, c16) from t1; ++------+------+-------------------+-------------------+ +| c1 | c16 | rpad(c1, c1, c16) | lpad(c1, c1, c16) | ++------+------+-------------------+-------------------+ +| 1 | 6.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c16, pad(c1, c1, c16) from t1; ++------+------+------------------+ +| c1 | c16 | pad(c1, c1, c16) | ++------+------+------------------+ +| 1 | 6.5 | 111111 | ++------+------+------------------+ +select c1, c17, rpad(c1, c1, c17), lpad(c1, c1, c17) from t1; ++------+------+-------------------+-------------------+ +| c1 | c17 | rpad(c1, c1, c17) | lpad(c1, c1, c17) | ++------+------+-------------------+-------------------+ +| 1 | 8 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c17, pad(c1, c1, c17) from t1; ++------+------+------------------+ +| c1 | c17 | pad(c1, c1, c17) | ++------+------+------------------+ +| 1 | 8 | 11111111 | ++------+------+------------------+ +select c1, c18, rpad(c1, c1, c18), lpad(c1, c1, c18) from t1; ++------+------+-------------------+-------------------+ +| c1 | c18 | rpad(c1, c1, c18) | lpad(c1, c1, c18) | ++------+------+-------------------+-------------------+ +| 1 | 9 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c18, pad(c1, c1, c18) from t1; ++------+------+------------------+ +| c1 | c18 | pad(c1, c1, c18) | ++------+------+------------------+ +| 1 | 9 | 111111111 | ++------+------+------------------+ +select c1, c19, rpad(c1, c1, c19), lpad(c1, c1, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c1 | c19 | rpad(c1, c1, c19) | lpad(c1, c1, c19) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c1, c19, pad(c1, c1, c19) from t1; ++------+---------------------+------------------+ +| c1 | c19 | pad(c1, c1, c19) | ++------+---------------------+------------------+ +| 1 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c1, c20, rpad(c1, c1, c20), lpad(c1, c1, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c1 | c20 | rpad(c1, c1, c20) | lpad(c1, c1, c20) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c1, c20, pad(c1, c1, c20) from t1; ++------+---------------------+------------------+ +| c1 | c20 | pad(c1, c1, c20) | ++------+---------------------+------------------+ +| 1 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c1, c21, rpad(c1, c1, c21), lpad(c1, c1, c21) from t1; ++------+------+-------------------+-------------------+ +| c1 | c21 | rpad(c1, c1, c21) | lpad(c1, c1, c21) | ++------+------+-------------------+-------------------+ +| 1 | 9.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c21, pad(c1, c1, c21) from t1; ++------+------+------------------+ +| c1 | c21 | pad(c1, c1, c21) | ++------+------+------------------+ +| 1 | 9.5 | 1111111111 | ++------+------+------------------+ +select c1, c22, rpad(c1, c1, c22), lpad(c1, c1, c22) from t1; ++------+------+-------------------+-------------------+ +| c1 | c22 | rpad(c1, c1, c22) | lpad(c1, c1, c22) | ++------+------+-------------------+-------------------+ +| 1 | 10.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c1, c22, pad(c1, c1, c22) from t1; ++------+------+------------------+ +| c1 | c22 | pad(c1, c1, c22) | ++------+------+------------------+ +| 1 | 10.5 | 11111111111 | ++------+------+------------------+ +select c2, c1, rpad(c2, c2, c1), lpad(c2, c2, c1) from t1; ++------+------+------------------+------------------+ +| c2 | c1 | rpad(c2, c2, c1) | lpad(c2, c2, c1) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c2, c1, pad(c2, c2, c1) from t1; ++------+------+-----------------+ +| c2 | c1 | pad(c2, c2, c1) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c2, c2, rpad(c2, c2, c2), lpad(c2, c2, c2) from t1; ++------+------+------------------+------------------+ +| c2 | c2 | rpad(c2, c2, c2) | lpad(c2, c2, c2) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c2, c2, pad(c2, c2, c2) from t1; ++------+------+-----------------+ +| c2 | c2 | pad(c2, c2, c2) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c2, c3, rpad(c2, c2, c3), lpad(c2, c2, c3) from t1; ++------+------+------------------+------------------+ +| c2 | c3 | rpad(c2, c2, c3) | lpad(c2, c2, c3) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c2, c3, pad(c2, c2, c3) from t1; ++------+------+-----------------+ +| c2 | c3 | pad(c2, c2, c3) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c2, c4, rpad(c2, c2, c4), lpad(c2, c2, c4) from t1; ++------+------+------------------+------------------+ +| c2 | c4 | rpad(c2, c2, c4) | lpad(c2, c2, c4) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c2, c4, pad(c2, c2, c4) from t1; ++------+------+-----------------+ +| c2 | c4 | pad(c2, c2, c4) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c2, c5, rpad(c2, c2, c5), lpad(c2, c2, c5) from t1; ++------+------+------------------+------------------+ +| c2 | c5 | rpad(c2, c2, c5) | lpad(c2, c2, c5) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c2, c5, pad(c2, c2, c5) from t1; ++------+------+-----------------+ +| c2 | c5 | pad(c2, c2, c5) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c2, c6, rpad(c2, c2, c6), lpad(c2, c2, c6) from t1; ++------+------+------------------+------------------+ +| c2 | c6 | rpad(c2, c2, c6) | lpad(c2, c2, c6) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c2, c6, pad(c2, c2, c6) from t1; ++------+------+-----------------+ +| c2 | c6 | pad(c2, c2, c6) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c2, c7, rpad(c2, c2, c7), lpad(c2, c2, c7) from t1; ++------+------+------------------+------------------+ +| c2 | c7 | rpad(c2, c2, c7) | lpad(c2, c2, c7) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c2, c7, pad(c2, c2, c7) from t1; ++------+------+-----------------+ +| c2 | c7 | pad(c2, c2, c7) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c2, c8, rpad(c2, c2, c8), lpad(c2, c2, c8) from t1; ++------+------+------------------+------------------+ +| c2 | c8 | rpad(c2, c2, c8) | lpad(c2, c2, c8) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c2, c8, pad(c2, c2, c8) from t1; ++------+------+-----------------+ +| c2 | c8 | pad(c2, c2, c8) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c2, c9, rpad(c2, c2, c9), lpad(c2, c2, c9) from t1; ++------+------+------------------+------------------+ +| c2 | c9 | rpad(c2, c2, c9) | lpad(c2, c2, c9) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c2, c9, pad(c2, c2, c9) from t1; ++------+------+-----------------+ +| c2 | c9 | pad(c2, c2, c9) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c2, c10, rpad(c2, c2, c10), lpad(c2, c2, c10) from t1; ++------+------+-------------------+-------------------+ +| c2 | c10 | rpad(c2, c2, c10) | lpad(c2, c2, c10) | ++------+------+-------------------+-------------------+ +| 2 | 2 | 22 | 22 | ++------+------+-------------------+-------------------+ +select c2, c10, pad(c2, c2, c10) from t1; ++------+------+------------------+ +| c2 | c10 | pad(c2, c2, c10) | ++------+------+------------------+ +| 2 | 2 | 22 | ++------+------+------------------+ +select c2, c11, rpad(c2, c2, c11), lpad(c2, c2, c11) from t1; ++------+------+-------------------+-------------------+ +| c2 | c11 | rpad(c2, c2, c11) | lpad(c2, c2, c11) | ++------+------+-------------------+-------------------+ +| 2 | 1 | 21 | 12 | ++------+------+-------------------+-------------------+ +select c2, c11, pad(c2, c2, c11) from t1; ++------+------+------------------+ +| c2 | c11 | pad(c2, c2, c11) | ++------+------+------------------+ +| 2 | 1 | 2 | ++------+------+------------------+ +select c2, c12, rpad(c2, c2, c12), lpad(c2, c2, c12) from t1; ++------+------+-------------------+-------------------+ +| c2 | c12 | rpad(c2, c2, c12) | lpad(c2, c2, c12) | ++------+------+-------------------+-------------------+ +| 2 | 2 | 22 | 22 | ++------+------+-------------------+-------------------+ +select c2, c12, pad(c2, c2, c12) from t1; ++------+------+------------------+ +| c2 | c12 | pad(c2, c2, c12) | ++------+------+------------------+ +| 2 | 2 | 22 | ++------+------+------------------+ +select c2, c13, rpad(c2, c2, c13), lpad(c2, c2, c13) from t1; ++------+------+-------------------+-------------------+ +| c2 | c13 | rpad(c2, c2, c13) | lpad(c2, c2, c13) | ++------+------+-------------------+-------------------+ +| 2 | 3.5 | 23 | 32 | ++------+------+-------------------+-------------------+ +select c2, c13, pad(c2, c2, c13) from t1; ++------+------+------------------+ +| c2 | c13 | pad(c2, c2, c13) | ++------+------+------------------+ +| 2 | 3.5 | 2222 | ++------+------+------------------+ +select c2, c14, rpad(c2, c2, c14), lpad(c2, c2, c14) from t1; ++------+------+-------------------+-------------------+ +| c2 | c14 | rpad(c2, c2, c14) | lpad(c2, c2, c14) | ++------+------+-------------------+-------------------+ +| 2 | 4.5 | 24 | 42 | ++------+------+-------------------+-------------------+ +select c2, c14, pad(c2, c2, c14) from t1; ++------+------+------------------+ +| c2 | c14 | pad(c2, c2, c14) | ++------+------+------------------+ +| 2 | 4.5 | 2222 | ++------+------+------------------+ +select c2, c15, rpad(c2, c2, c15), lpad(c2, c2, c15) from t1; ++------+------+-------------------+-------------------+ +| c2 | c15 | rpad(c2, c2, c15) | lpad(c2, c2, c15) | ++------+------+-------------------+-------------------+ +| 2 | 5.5 | 25 | 52 | ++------+------+-------------------+-------------------+ +select c2, c15, pad(c2, c2, c15) from t1; ++------+------+------------------+ +| c2 | c15 | pad(c2, c2, c15) | ++------+------+------------------+ +| 2 | 5.5 | 222222 | ++------+------+------------------+ +select c2, c16, rpad(c2, c2, c16), lpad(c2, c2, c16) from t1; ++------+------+-------------------+-------------------+ +| c2 | c16 | rpad(c2, c2, c16) | lpad(c2, c2, c16) | ++------+------+-------------------+-------------------+ +| 2 | 6.5 | 26 | 62 | ++------+------+-------------------+-------------------+ +select c2, c16, pad(c2, c2, c16) from t1; ++------+------+------------------+ +| c2 | c16 | pad(c2, c2, c16) | ++------+------+------------------+ +| 2 | 6.5 | 222222 | ++------+------+------------------+ +select c2, c17, rpad(c2, c2, c17), lpad(c2, c2, c17) from t1; ++------+------+-------------------+-------------------+ +| c2 | c17 | rpad(c2, c2, c17) | lpad(c2, c2, c17) | ++------+------+-------------------+-------------------+ +| 2 | 8 | 28 | 82 | ++------+------+-------------------+-------------------+ +select c2, c17, pad(c2, c2, c17) from t1; ++------+------+------------------+ +| c2 | c17 | pad(c2, c2, c17) | ++------+------+------------------+ +| 2 | 8 | 22222222 | ++------+------+------------------+ +select c2, c18, rpad(c2, c2, c18), lpad(c2, c2, c18) from t1; ++------+------+-------------------+-------------------+ +| c2 | c18 | rpad(c2, c2, c18) | lpad(c2, c2, c18) | ++------+------+-------------------+-------------------+ +| 2 | 9 | 29 | 92 | ++------+------+-------------------+-------------------+ +select c2, c18, pad(c2, c2, c18) from t1; ++------+------+------------------+ +| c2 | c18 | pad(c2, c2, c18) | ++------+------+------------------+ +| 2 | 9 | 222222222 | ++------+------+------------------+ +select c2, c19, rpad(c2, c2, c19), lpad(c2, c2, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c2 | c19 | rpad(c2, c2, c19) | lpad(c2, c2, c19) | ++------+---------------------+-------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 22 | 22 | ++------+---------------------+-------------------+-------------------+ +select c2, c19, pad(c2, c2, c19) from t1; ++------+---------------------+------------------+ +| c2 | c19 | pad(c2, c2, c19) | ++------+---------------------+------------------+ +| 2 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c2, c20, rpad(c2, c2, c20), lpad(c2, c2, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c2 | c20 | rpad(c2, c2, c20) | lpad(c2, c2, c20) | ++------+---------------------+-------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 22 | 22 | ++------+---------------------+-------------------+-------------------+ +select c2, c20, pad(c2, c2, c20) from t1; ++------+---------------------+------------------+ +| c2 | c20 | pad(c2, c2, c20) | ++------+---------------------+------------------+ +| 2 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c2, c21, rpad(c2, c2, c21), lpad(c2, c2, c21) from t1; ++------+------+-------------------+-------------------+ +| c2 | c21 | rpad(c2, c2, c21) | lpad(c2, c2, c21) | ++------+------+-------------------+-------------------+ +| 2 | 9.5 | 29 | 92 | ++------+------+-------------------+-------------------+ +select c2, c21, pad(c2, c2, c21) from t1; ++------+------+------------------+ +| c2 | c21 | pad(c2, c2, c21) | ++------+------+------------------+ +| 2 | 9.5 | 2222222222 | ++------+------+------------------+ +select c2, c22, rpad(c2, c2, c22), lpad(c2, c2, c22) from t1; ++------+------+-------------------+-------------------+ +| c2 | c22 | rpad(c2, c2, c22) | lpad(c2, c2, c22) | ++------+------+-------------------+-------------------+ +| 2 | 10.5 | 21 | 12 | ++------+------+-------------------+-------------------+ +select c2, c22, pad(c2, c2, c22) from t1; ++------+------+------------------+ +| c2 | c22 | pad(c2, c2, c22) | ++------+------+------------------+ +| 2 | 10.5 | 22222222222 | ++------+------+------------------+ +select c3, c1, rpad(c3, c3, c1), lpad(c3, c3, c1) from t1; ++------+------+------------------+------------------+ +| c3 | c1 | rpad(c3, c3, c1) | lpad(c3, c3, c1) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c1, pad(c3, c3, c1) from t1; ++------+------+-----------------+ +| c3 | c1 | pad(c3, c3, c1) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c3, c2, rpad(c3, c3, c2), lpad(c3, c3, c2) from t1; ++------+------+------------------+------------------+ +| c3 | c2 | rpad(c3, c3, c2) | lpad(c3, c3, c2) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c2, pad(c3, c3, c2) from t1; ++------+------+-----------------+ +| c3 | c2 | pad(c3, c3, c2) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c3, c3, rpad(c3, c3, c3), lpad(c3, c3, c3) from t1; ++------+------+------------------+------------------+ +| c3 | c3 | rpad(c3, c3, c3) | lpad(c3, c3, c3) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c3, pad(c3, c3, c3) from t1; ++------+------+-----------------+ +| c3 | c3 | pad(c3, c3, c3) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c3, c4, rpad(c3, c3, c4), lpad(c3, c3, c4) from t1; ++------+------+------------------+------------------+ +| c3 | c4 | rpad(c3, c3, c4) | lpad(c3, c3, c4) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c4, pad(c3, c3, c4) from t1; ++------+------+-----------------+ +| c3 | c4 | pad(c3, c3, c4) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c3, c5, rpad(c3, c3, c5), lpad(c3, c3, c5) from t1; ++------+------+------------------+------------------+ +| c3 | c5 | rpad(c3, c3, c5) | lpad(c3, c3, c5) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c5, pad(c3, c3, c5) from t1; ++------+------+-----------------+ +| c3 | c5 | pad(c3, c3, c5) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c3, c6, rpad(c3, c3, c6), lpad(c3, c3, c6) from t1; ++------+------+------------------+------------------+ +| c3 | c6 | rpad(c3, c3, c6) | lpad(c3, c3, c6) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c6, pad(c3, c3, c6) from t1; ++------+------+-----------------+ +| c3 | c6 | pad(c3, c3, c6) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c3, c7, rpad(c3, c3, c7), lpad(c3, c3, c7) from t1; ++------+------+------------------+------------------+ +| c3 | c7 | rpad(c3, c3, c7) | lpad(c3, c3, c7) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c7, pad(c3, c3, c7) from t1; ++------+------+-----------------+ +| c3 | c7 | pad(c3, c3, c7) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c3, c8, rpad(c3, c3, c8), lpad(c3, c3, c8) from t1; ++------+------+------------------+------------------+ +| c3 | c8 | rpad(c3, c3, c8) | lpad(c3, c3, c8) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c8, pad(c3, c3, c8) from t1; ++------+------+-----------------+ +| c3 | c8 | pad(c3, c3, c8) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c3, c9, rpad(c3, c3, c9), lpad(c3, c3, c9) from t1; ++------+------+------------------+------------------+ +| c3 | c9 | rpad(c3, c3, c9) | lpad(c3, c3, c9) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c3, c9, pad(c3, c3, c9) from t1; ++------+------+-----------------+ +| c3 | c9 | pad(c3, c3, c9) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c3, c10, rpad(c3, c3, c10), lpad(c3, c3, c10) from t1; ++------+------+-------------------+-------------------+ +| c3 | c10 | rpad(c3, c3, c10) | lpad(c3, c3, c10) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c10, pad(c3, c3, c10) from t1; ++------+------+------------------+ +| c3 | c10 | pad(c3, c3, c10) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c3, c11, rpad(c3, c3, c11), lpad(c3, c3, c11) from t1; ++------+------+-------------------+-------------------+ +| c3 | c11 | rpad(c3, c3, c11) | lpad(c3, c3, c11) | ++------+------+-------------------+-------------------+ +| 1 | 1 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c11, pad(c3, c3, c11) from t1; ++------+------+------------------+ +| c3 | c11 | pad(c3, c3, c11) | ++------+------+------------------+ +| 1 | 1 | 1 | ++------+------+------------------+ +select c3, c12, rpad(c3, c3, c12), lpad(c3, c3, c12) from t1; ++------+------+-------------------+-------------------+ +| c3 | c12 | rpad(c3, c3, c12) | lpad(c3, c3, c12) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c12, pad(c3, c3, c12) from t1; ++------+------+------------------+ +| c3 | c12 | pad(c3, c3, c12) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c3, c13, rpad(c3, c3, c13), lpad(c3, c3, c13) from t1; ++------+------+-------------------+-------------------+ +| c3 | c13 | rpad(c3, c3, c13) | lpad(c3, c3, c13) | ++------+------+-------------------+-------------------+ +| 1 | 3.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c13, pad(c3, c3, c13) from t1; ++------+------+------------------+ +| c3 | c13 | pad(c3, c3, c13) | ++------+------+------------------+ +| 1 | 3.5 | 1111 | ++------+------+------------------+ +select c3, c14, rpad(c3, c3, c14), lpad(c3, c3, c14) from t1; ++------+------+-------------------+-------------------+ +| c3 | c14 | rpad(c3, c3, c14) | lpad(c3, c3, c14) | ++------+------+-------------------+-------------------+ +| 1 | 4.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c14, pad(c3, c3, c14) from t1; ++------+------+------------------+ +| c3 | c14 | pad(c3, c3, c14) | ++------+------+------------------+ +| 1 | 4.5 | 1111 | ++------+------+------------------+ +select c3, c15, rpad(c3, c3, c15), lpad(c3, c3, c15) from t1; ++------+------+-------------------+-------------------+ +| c3 | c15 | rpad(c3, c3, c15) | lpad(c3, c3, c15) | ++------+------+-------------------+-------------------+ +| 1 | 5.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c15, pad(c3, c3, c15) from t1; ++------+------+------------------+ +| c3 | c15 | pad(c3, c3, c15) | ++------+------+------------------+ +| 1 | 5.5 | 111111 | ++------+------+------------------+ +select c3, c16, rpad(c3, c3, c16), lpad(c3, c3, c16) from t1; ++------+------+-------------------+-------------------+ +| c3 | c16 | rpad(c3, c3, c16) | lpad(c3, c3, c16) | ++------+------+-------------------+-------------------+ +| 1 | 6.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c16, pad(c3, c3, c16) from t1; ++------+------+------------------+ +| c3 | c16 | pad(c3, c3, c16) | ++------+------+------------------+ +| 1 | 6.5 | 111111 | ++------+------+------------------+ +select c3, c17, rpad(c3, c3, c17), lpad(c3, c3, c17) from t1; ++------+------+-------------------+-------------------+ +| c3 | c17 | rpad(c3, c3, c17) | lpad(c3, c3, c17) | ++------+------+-------------------+-------------------+ +| 1 | 8 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c17, pad(c3, c3, c17) from t1; ++------+------+------------------+ +| c3 | c17 | pad(c3, c3, c17) | ++------+------+------------------+ +| 1 | 8 | 11111111 | ++------+------+------------------+ +select c3, c18, rpad(c3, c3, c18), lpad(c3, c3, c18) from t1; ++------+------+-------------------+-------------------+ +| c3 | c18 | rpad(c3, c3, c18) | lpad(c3, c3, c18) | ++------+------+-------------------+-------------------+ +| 1 | 9 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c18, pad(c3, c3, c18) from t1; ++------+------+------------------+ +| c3 | c18 | pad(c3, c3, c18) | ++------+------+------------------+ +| 1 | 9 | 111111111 | ++------+------+------------------+ +select c3, c19, rpad(c3, c3, c19), lpad(c3, c3, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c3 | c19 | rpad(c3, c3, c19) | lpad(c3, c3, c19) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c3, c19, pad(c3, c3, c19) from t1; ++------+---------------------+------------------+ +| c3 | c19 | pad(c3, c3, c19) | ++------+---------------------+------------------+ +| 1 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c3, c20, rpad(c3, c3, c20), lpad(c3, c3, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c3 | c20 | rpad(c3, c3, c20) | lpad(c3, c3, c20) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c3, c20, pad(c3, c3, c20) from t1; ++------+---------------------+------------------+ +| c3 | c20 | pad(c3, c3, c20) | ++------+---------------------+------------------+ +| 1 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c3, c21, rpad(c3, c3, c21), lpad(c3, c3, c21) from t1; ++------+------+-------------------+-------------------+ +| c3 | c21 | rpad(c3, c3, c21) | lpad(c3, c3, c21) | ++------+------+-------------------+-------------------+ +| 1 | 9.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c21, pad(c3, c3, c21) from t1; ++------+------+------------------+ +| c3 | c21 | pad(c3, c3, c21) | ++------+------+------------------+ +| 1 | 9.5 | 1111111111 | ++------+------+------------------+ +select c3, c22, rpad(c3, c3, c22), lpad(c3, c3, c22) from t1; ++------+------+-------------------+-------------------+ +| c3 | c22 | rpad(c3, c3, c22) | lpad(c3, c3, c22) | ++------+------+-------------------+-------------------+ +| 1 | 10.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c3, c22, pad(c3, c3, c22) from t1; ++------+------+------------------+ +| c3 | c22 | pad(c3, c3, c22) | ++------+------+------------------+ +| 1 | 10.5 | 11111111111 | ++------+------+------------------+ +select c4, c1, rpad(c4, c4, c1), lpad(c4, c4, c1) from t1; ++------+------+------------------+------------------+ +| c4 | c1 | rpad(c4, c4, c1) | lpad(c4, c4, c1) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c4, c1, pad(c4, c4, c1) from t1; ++------+------+-----------------+ +| c4 | c1 | pad(c4, c4, c1) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c4, c2, rpad(c4, c4, c2), lpad(c4, c4, c2) from t1; ++------+------+------------------+------------------+ +| c4 | c2 | rpad(c4, c4, c2) | lpad(c4, c4, c2) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c4, c2, pad(c4, c4, c2) from t1; ++------+------+-----------------+ +| c4 | c2 | pad(c4, c4, c2) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c4, c3, rpad(c4, c4, c3), lpad(c4, c4, c3) from t1; ++------+------+------------------+------------------+ +| c4 | c3 | rpad(c4, c4, c3) | lpad(c4, c4, c3) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c4, c3, pad(c4, c4, c3) from t1; ++------+------+-----------------+ +| c4 | c3 | pad(c4, c4, c3) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c4, c4, rpad(c4, c4, c4), lpad(c4, c4, c4) from t1; ++------+------+------------------+------------------+ +| c4 | c4 | rpad(c4, c4, c4) | lpad(c4, c4, c4) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c4, c4, pad(c4, c4, c4) from t1; ++------+------+-----------------+ +| c4 | c4 | pad(c4, c4, c4) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c4, c5, rpad(c4, c4, c5), lpad(c4, c4, c5) from t1; ++------+------+------------------+------------------+ +| c4 | c5 | rpad(c4, c4, c5) | lpad(c4, c4, c5) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c4, c5, pad(c4, c4, c5) from t1; ++------+------+-----------------+ +| c4 | c5 | pad(c4, c4, c5) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c4, c6, rpad(c4, c4, c6), lpad(c4, c4, c6) from t1; ++------+------+------------------+------------------+ +| c4 | c6 | rpad(c4, c4, c6) | lpad(c4, c4, c6) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c4, c6, pad(c4, c4, c6) from t1; ++------+------+-----------------+ +| c4 | c6 | pad(c4, c4, c6) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c4, c7, rpad(c4, c4, c7), lpad(c4, c4, c7) from t1; ++------+------+------------------+------------------+ +| c4 | c7 | rpad(c4, c4, c7) | lpad(c4, c4, c7) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c4, c7, pad(c4, c4, c7) from t1; ++------+------+-----------------+ +| c4 | c7 | pad(c4, c4, c7) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c4, c8, rpad(c4, c4, c8), lpad(c4, c4, c8) from t1; ++------+------+------------------+------------------+ +| c4 | c8 | rpad(c4, c4, c8) | lpad(c4, c4, c8) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c4, c8, pad(c4, c4, c8) from t1; ++------+------+-----------------+ +| c4 | c8 | pad(c4, c4, c8) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c4, c9, rpad(c4, c4, c9), lpad(c4, c4, c9) from t1; ++------+------+------------------+------------------+ +| c4 | c9 | rpad(c4, c4, c9) | lpad(c4, c4, c9) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c4, c9, pad(c4, c4, c9) from t1; ++------+------+-----------------+ +| c4 | c9 | pad(c4, c4, c9) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c4, c10, rpad(c4, c4, c10), lpad(c4, c4, c10) from t1; ++------+------+-------------------+-------------------+ +| c4 | c10 | rpad(c4, c4, c10) | lpad(c4, c4, c10) | ++------+------+-------------------+-------------------+ +| 2 | 2 | 22 | 22 | ++------+------+-------------------+-------------------+ +select c4, c10, pad(c4, c4, c10) from t1; ++------+------+------------------+ +| c4 | c10 | pad(c4, c4, c10) | ++------+------+------------------+ +| 2 | 2 | 22 | ++------+------+------------------+ +select c4, c11, rpad(c4, c4, c11), lpad(c4, c4, c11) from t1; ++------+------+-------------------+-------------------+ +| c4 | c11 | rpad(c4, c4, c11) | lpad(c4, c4, c11) | ++------+------+-------------------+-------------------+ +| 2 | 1 | 21 | 12 | ++------+------+-------------------+-------------------+ +select c4, c11, pad(c4, c4, c11) from t1; ++------+------+------------------+ +| c4 | c11 | pad(c4, c4, c11) | ++------+------+------------------+ +| 2 | 1 | 2 | ++------+------+------------------+ +select c4, c12, rpad(c4, c4, c12), lpad(c4, c4, c12) from t1; ++------+------+-------------------+-------------------+ +| c4 | c12 | rpad(c4, c4, c12) | lpad(c4, c4, c12) | ++------+------+-------------------+-------------------+ +| 2 | 2 | 22 | 22 | ++------+------+-------------------+-------------------+ +select c4, c12, pad(c4, c4, c12) from t1; ++------+------+------------------+ +| c4 | c12 | pad(c4, c4, c12) | ++------+------+------------------+ +| 2 | 2 | 22 | ++------+------+------------------+ +select c4, c13, rpad(c4, c4, c13), lpad(c4, c4, c13) from t1; ++------+------+-------------------+-------------------+ +| c4 | c13 | rpad(c4, c4, c13) | lpad(c4, c4, c13) | ++------+------+-------------------+-------------------+ +| 2 | 3.5 | 23 | 32 | ++------+------+-------------------+-------------------+ +select c4, c13, pad(c4, c4, c13) from t1; ++------+------+------------------+ +| c4 | c13 | pad(c4, c4, c13) | ++------+------+------------------+ +| 2 | 3.5 | 2222 | ++------+------+------------------+ +select c4, c14, rpad(c4, c4, c14), lpad(c4, c4, c14) from t1; ++------+------+-------------------+-------------------+ +| c4 | c14 | rpad(c4, c4, c14) | lpad(c4, c4, c14) | ++------+------+-------------------+-------------------+ +| 2 | 4.5 | 24 | 42 | ++------+------+-------------------+-------------------+ +select c4, c14, pad(c4, c4, c14) from t1; ++------+------+------------------+ +| c4 | c14 | pad(c4, c4, c14) | ++------+------+------------------+ +| 2 | 4.5 | 2222 | ++------+------+------------------+ +select c4, c15, rpad(c4, c4, c15), lpad(c4, c4, c15) from t1; ++------+------+-------------------+-------------------+ +| c4 | c15 | rpad(c4, c4, c15) | lpad(c4, c4, c15) | ++------+------+-------------------+-------------------+ +| 2 | 5.5 | 25 | 52 | ++------+------+-------------------+-------------------+ +select c4, c15, pad(c4, c4, c15) from t1; ++------+------+------------------+ +| c4 | c15 | pad(c4, c4, c15) | ++------+------+------------------+ +| 2 | 5.5 | 222222 | ++------+------+------------------+ +select c4, c16, rpad(c4, c4, c16), lpad(c4, c4, c16) from t1; ++------+------+-------------------+-------------------+ +| c4 | c16 | rpad(c4, c4, c16) | lpad(c4, c4, c16) | ++------+------+-------------------+-------------------+ +| 2 | 6.5 | 26 | 62 | ++------+------+-------------------+-------------------+ +select c4, c16, pad(c4, c4, c16) from t1; ++------+------+------------------+ +| c4 | c16 | pad(c4, c4, c16) | ++------+------+------------------+ +| 2 | 6.5 | 222222 | ++------+------+------------------+ +select c4, c17, rpad(c4, c4, c17), lpad(c4, c4, c17) from t1; ++------+------+-------------------+-------------------+ +| c4 | c17 | rpad(c4, c4, c17) | lpad(c4, c4, c17) | ++------+------+-------------------+-------------------+ +| 2 | 8 | 28 | 82 | ++------+------+-------------------+-------------------+ +select c4, c17, pad(c4, c4, c17) from t1; ++------+------+------------------+ +| c4 | c17 | pad(c4, c4, c17) | ++------+------+------------------+ +| 2 | 8 | 22222222 | ++------+------+------------------+ +select c4, c18, rpad(c4, c4, c18), lpad(c4, c4, c18) from t1; ++------+------+-------------------+-------------------+ +| c4 | c18 | rpad(c4, c4, c18) | lpad(c4, c4, c18) | ++------+------+-------------------+-------------------+ +| 2 | 9 | 29 | 92 | ++------+------+-------------------+-------------------+ +select c4, c18, pad(c4, c4, c18) from t1; ++------+------+------------------+ +| c4 | c18 | pad(c4, c4, c18) | ++------+------+------------------+ +| 2 | 9 | 222222222 | ++------+------+------------------+ +select c4, c19, rpad(c4, c4, c19), lpad(c4, c4, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c4 | c19 | rpad(c4, c4, c19) | lpad(c4, c4, c19) | ++------+---------------------+-------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 22 | 22 | ++------+---------------------+-------------------+-------------------+ +select c4, c19, pad(c4, c4, c19) from t1; ++------+---------------------+------------------+ +| c4 | c19 | pad(c4, c4, c19) | ++------+---------------------+------------------+ +| 2 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c4, c20, rpad(c4, c4, c20), lpad(c4, c4, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c4 | c20 | rpad(c4, c4, c20) | lpad(c4, c4, c20) | ++------+---------------------+-------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 22 | 22 | ++------+---------------------+-------------------+-------------------+ +select c4, c20, pad(c4, c4, c20) from t1; ++------+---------------------+------------------+ +| c4 | c20 | pad(c4, c4, c20) | ++------+---------------------+------------------+ +| 2 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c4, c21, rpad(c4, c4, c21), lpad(c4, c4, c21) from t1; ++------+------+-------------------+-------------------+ +| c4 | c21 | rpad(c4, c4, c21) | lpad(c4, c4, c21) | ++------+------+-------------------+-------------------+ +| 2 | 9.5 | 29 | 92 | ++------+------+-------------------+-------------------+ +select c4, c21, pad(c4, c4, c21) from t1; ++------+------+------------------+ +| c4 | c21 | pad(c4, c4, c21) | ++------+------+------------------+ +| 2 | 9.5 | 2222222222 | ++------+------+------------------+ +select c4, c22, rpad(c4, c4, c22), lpad(c4, c4, c22) from t1; ++------+------+-------------------+-------------------+ +| c4 | c22 | rpad(c4, c4, c22) | lpad(c4, c4, c22) | ++------+------+-------------------+-------------------+ +| 2 | 10.5 | 21 | 12 | ++------+------+-------------------+-------------------+ +select c4, c22, pad(c4, c4, c22) from t1; ++------+------+------------------+ +| c4 | c22 | pad(c4, c4, c22) | ++------+------+------------------+ +| 2 | 10.5 | 22222222222 | ++------+------+------------------+ +select c5, c1, rpad(c5, c5, c1), lpad(c5, c5, c1) from t1; ++------+------+------------------+------------------+ +| c5 | c1 | rpad(c5, c5, c1) | lpad(c5, c5, c1) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c1, pad(c5, c5, c1) from t1; ++------+------+-----------------+ +| c5 | c1 | pad(c5, c5, c1) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c5, c2, rpad(c5, c5, c2), lpad(c5, c5, c2) from t1; ++------+------+------------------+------------------+ +| c5 | c2 | rpad(c5, c5, c2) | lpad(c5, c5, c2) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c2, pad(c5, c5, c2) from t1; ++------+------+-----------------+ +| c5 | c2 | pad(c5, c5, c2) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c5, c3, rpad(c5, c5, c3), lpad(c5, c5, c3) from t1; ++------+------+------------------+------------------+ +| c5 | c3 | rpad(c5, c5, c3) | lpad(c5, c5, c3) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c3, pad(c5, c5, c3) from t1; ++------+------+-----------------+ +| c5 | c3 | pad(c5, c5, c3) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c5, c4, rpad(c5, c5, c4), lpad(c5, c5, c4) from t1; ++------+------+------------------+------------------+ +| c5 | c4 | rpad(c5, c5, c4) | lpad(c5, c5, c4) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c4, pad(c5, c5, c4) from t1; ++------+------+-----------------+ +| c5 | c4 | pad(c5, c5, c4) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c5, c5, rpad(c5, c5, c5), lpad(c5, c5, c5) from t1; ++------+------+------------------+------------------+ +| c5 | c5 | rpad(c5, c5, c5) | lpad(c5, c5, c5) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c5, pad(c5, c5, c5) from t1; ++------+------+-----------------+ +| c5 | c5 | pad(c5, c5, c5) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c5, c6, rpad(c5, c5, c6), lpad(c5, c5, c6) from t1; ++------+------+------------------+------------------+ +| c5 | c6 | rpad(c5, c5, c6) | lpad(c5, c5, c6) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c6, pad(c5, c5, c6) from t1; ++------+------+-----------------+ +| c5 | c6 | pad(c5, c5, c6) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c5, c7, rpad(c5, c5, c7), lpad(c5, c5, c7) from t1; ++------+------+------------------+------------------+ +| c5 | c7 | rpad(c5, c5, c7) | lpad(c5, c5, c7) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c7, pad(c5, c5, c7) from t1; ++------+------+-----------------+ +| c5 | c7 | pad(c5, c5, c7) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c5, c8, rpad(c5, c5, c8), lpad(c5, c5, c8) from t1; ++------+------+------------------+------------------+ +| c5 | c8 | rpad(c5, c5, c8) | lpad(c5, c5, c8) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c8, pad(c5, c5, c8) from t1; ++------+------+-----------------+ +| c5 | c8 | pad(c5, c5, c8) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c5, c9, rpad(c5, c5, c9), lpad(c5, c5, c9) from t1; ++------+------+------------------+------------------+ +| c5 | c9 | rpad(c5, c5, c9) | lpad(c5, c5, c9) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c5, c9, pad(c5, c5, c9) from t1; ++------+------+-----------------+ +| c5 | c9 | pad(c5, c5, c9) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c5, c10, rpad(c5, c5, c10), lpad(c5, c5, c10) from t1; ++------+------+-------------------+-------------------+ +| c5 | c10 | rpad(c5, c5, c10) | lpad(c5, c5, c10) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c10, pad(c5, c5, c10) from t1; ++------+------+------------------+ +| c5 | c10 | pad(c5, c5, c10) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c5, c11, rpad(c5, c5, c11), lpad(c5, c5, c11) from t1; ++------+------+-------------------+-------------------+ +| c5 | c11 | rpad(c5, c5, c11) | lpad(c5, c5, c11) | ++------+------+-------------------+-------------------+ +| 1 | 1 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c11, pad(c5, c5, c11) from t1; ++------+------+------------------+ +| c5 | c11 | pad(c5, c5, c11) | ++------+------+------------------+ +| 1 | 1 | 1 | ++------+------+------------------+ +select c5, c12, rpad(c5, c5, c12), lpad(c5, c5, c12) from t1; ++------+------+-------------------+-------------------+ +| c5 | c12 | rpad(c5, c5, c12) | lpad(c5, c5, c12) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c12, pad(c5, c5, c12) from t1; ++------+------+------------------+ +| c5 | c12 | pad(c5, c5, c12) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c5, c13, rpad(c5, c5, c13), lpad(c5, c5, c13) from t1; ++------+------+-------------------+-------------------+ +| c5 | c13 | rpad(c5, c5, c13) | lpad(c5, c5, c13) | ++------+------+-------------------+-------------------+ +| 1 | 3.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c13, pad(c5, c5, c13) from t1; ++------+------+------------------+ +| c5 | c13 | pad(c5, c5, c13) | ++------+------+------------------+ +| 1 | 3.5 | 1111 | ++------+------+------------------+ +select c5, c14, rpad(c5, c5, c14), lpad(c5, c5, c14) from t1; ++------+------+-------------------+-------------------+ +| c5 | c14 | rpad(c5, c5, c14) | lpad(c5, c5, c14) | ++------+------+-------------------+-------------------+ +| 1 | 4.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c14, pad(c5, c5, c14) from t1; ++------+------+------------------+ +| c5 | c14 | pad(c5, c5, c14) | ++------+------+------------------+ +| 1 | 4.5 | 1111 | ++------+------+------------------+ +select c5, c15, rpad(c5, c5, c15), lpad(c5, c5, c15) from t1; ++------+------+-------------------+-------------------+ +| c5 | c15 | rpad(c5, c5, c15) | lpad(c5, c5, c15) | ++------+------+-------------------+-------------------+ +| 1 | 5.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c15, pad(c5, c5, c15) from t1; ++------+------+------------------+ +| c5 | c15 | pad(c5, c5, c15) | ++------+------+------------------+ +| 1 | 5.5 | 111111 | ++------+------+------------------+ +select c5, c16, rpad(c5, c5, c16), lpad(c5, c5, c16) from t1; ++------+------+-------------------+-------------------+ +| c5 | c16 | rpad(c5, c5, c16) | lpad(c5, c5, c16) | ++------+------+-------------------+-------------------+ +| 1 | 6.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c16, pad(c5, c5, c16) from t1; ++------+------+------------------+ +| c5 | c16 | pad(c5, c5, c16) | ++------+------+------------------+ +| 1 | 6.5 | 111111 | ++------+------+------------------+ +select c5, c17, rpad(c5, c5, c17), lpad(c5, c5, c17) from t1; ++------+------+-------------------+-------------------+ +| c5 | c17 | rpad(c5, c5, c17) | lpad(c5, c5, c17) | ++------+------+-------------------+-------------------+ +| 1 | 8 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c17, pad(c5, c5, c17) from t1; ++------+------+------------------+ +| c5 | c17 | pad(c5, c5, c17) | ++------+------+------------------+ +| 1 | 8 | 11111111 | ++------+------+------------------+ +select c5, c18, rpad(c5, c5, c18), lpad(c5, c5, c18) from t1; ++------+------+-------------------+-------------------+ +| c5 | c18 | rpad(c5, c5, c18) | lpad(c5, c5, c18) | ++------+------+-------------------+-------------------+ +| 1 | 9 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c18, pad(c5, c5, c18) from t1; ++------+------+------------------+ +| c5 | c18 | pad(c5, c5, c18) | ++------+------+------------------+ +| 1 | 9 | 111111111 | ++------+------+------------------+ +select c5, c19, rpad(c5, c5, c19), lpad(c5, c5, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c5 | c19 | rpad(c5, c5, c19) | lpad(c5, c5, c19) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c5, c19, pad(c5, c5, c19) from t1; ++------+---------------------+------------------+ +| c5 | c19 | pad(c5, c5, c19) | ++------+---------------------+------------------+ +| 1 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c5, c20, rpad(c5, c5, c20), lpad(c5, c5, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c5 | c20 | rpad(c5, c5, c20) | lpad(c5, c5, c20) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c5, c20, pad(c5, c5, c20) from t1; ++------+---------------------+------------------+ +| c5 | c20 | pad(c5, c5, c20) | ++------+---------------------+------------------+ +| 1 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c5, c21, rpad(c5, c5, c21), lpad(c5, c5, c21) from t1; ++------+------+-------------------+-------------------+ +| c5 | c21 | rpad(c5, c5, c21) | lpad(c5, c5, c21) | ++------+------+-------------------+-------------------+ +| 1 | 9.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c21, pad(c5, c5, c21) from t1; ++------+------+------------------+ +| c5 | c21 | pad(c5, c5, c21) | ++------+------+------------------+ +| 1 | 9.5 | 1111111111 | ++------+------+------------------+ +select c5, c22, rpad(c5, c5, c22), lpad(c5, c5, c22) from t1; ++------+------+-------------------+-------------------+ +| c5 | c22 | rpad(c5, c5, c22) | lpad(c5, c5, c22) | ++------+------+-------------------+-------------------+ +| 1 | 10.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c5, c22, pad(c5, c5, c22) from t1; ++------+------+------------------+ +| c5 | c22 | pad(c5, c5, c22) | ++------+------+------------------+ +| 1 | 10.5 | 11111111111 | ++------+------+------------------+ +select c6, c1, rpad(c6, c6, c1), lpad(c6, c6, c1) from t1; ++------+------+------------------+------------------+ +| c6 | c1 | rpad(c6, c6, c1) | lpad(c6, c6, c1) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c6, c1, pad(c6, c6, c1) from t1; ++------+------+-----------------+ +| c6 | c1 | pad(c6, c6, c1) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c6, c2, rpad(c6, c6, c2), lpad(c6, c6, c2) from t1; ++------+------+------------------+------------------+ +| c6 | c2 | rpad(c6, c6, c2) | lpad(c6, c6, c2) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c6, c2, pad(c6, c6, c2) from t1; ++------+------+-----------------+ +| c6 | c2 | pad(c6, c6, c2) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c6, c3, rpad(c6, c6, c3), lpad(c6, c6, c3) from t1; ++------+------+------------------+------------------+ +| c6 | c3 | rpad(c6, c6, c3) | lpad(c6, c6, c3) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c6, c3, pad(c6, c6, c3) from t1; ++------+------+-----------------+ +| c6 | c3 | pad(c6, c6, c3) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c6, c4, rpad(c6, c6, c4), lpad(c6, c6, c4) from t1; ++------+------+------------------+------------------+ +| c6 | c4 | rpad(c6, c6, c4) | lpad(c6, c6, c4) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c6, c4, pad(c6, c6, c4) from t1; ++------+------+-----------------+ +| c6 | c4 | pad(c6, c6, c4) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c6, c5, rpad(c6, c6, c5), lpad(c6, c6, c5) from t1; ++------+------+------------------+------------------+ +| c6 | c5 | rpad(c6, c6, c5) | lpad(c6, c6, c5) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c6, c5, pad(c6, c6, c5) from t1; ++------+------+-----------------+ +| c6 | c5 | pad(c6, c6, c5) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c6, c6, rpad(c6, c6, c6), lpad(c6, c6, c6) from t1; ++------+------+------------------+------------------+ +| c6 | c6 | rpad(c6, c6, c6) | lpad(c6, c6, c6) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c6, c6, pad(c6, c6, c6) from t1; ++------+------+-----------------+ +| c6 | c6 | pad(c6, c6, c6) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c6, c7, rpad(c6, c6, c7), lpad(c6, c6, c7) from t1; ++------+------+------------------+------------------+ +| c6 | c7 | rpad(c6, c6, c7) | lpad(c6, c6, c7) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c6, c7, pad(c6, c6, c7) from t1; ++------+------+-----------------+ +| c6 | c7 | pad(c6, c6, c7) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c6, c8, rpad(c6, c6, c8), lpad(c6, c6, c8) from t1; ++------+------+------------------+------------------+ +| c6 | c8 | rpad(c6, c6, c8) | lpad(c6, c6, c8) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c6, c8, pad(c6, c6, c8) from t1; ++------+------+-----------------+ +| c6 | c8 | pad(c6, c6, c8) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c6, c9, rpad(c6, c6, c9), lpad(c6, c6, c9) from t1; ++------+------+------------------+------------------+ +| c6 | c9 | rpad(c6, c6, c9) | lpad(c6, c6, c9) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c6, c9, pad(c6, c6, c9) from t1; ++------+------+-----------------+ +| c6 | c9 | pad(c6, c6, c9) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c6, c10, rpad(c6, c6, c10), lpad(c6, c6, c10) from t1; ++------+------+-------------------+-------------------+ +| c6 | c10 | rpad(c6, c6, c10) | lpad(c6, c6, c10) | ++------+------+-------------------+-------------------+ +| 2 | 2 | 22 | 22 | ++------+------+-------------------+-------------------+ +select c6, c10, pad(c6, c6, c10) from t1; ++------+------+------------------+ +| c6 | c10 | pad(c6, c6, c10) | ++------+------+------------------+ +| 2 | 2 | 22 | ++------+------+------------------+ +select c6, c11, rpad(c6, c6, c11), lpad(c6, c6, c11) from t1; ++------+------+-------------------+-------------------+ +| c6 | c11 | rpad(c6, c6, c11) | lpad(c6, c6, c11) | ++------+------+-------------------+-------------------+ +| 2 | 1 | 21 | 12 | ++------+------+-------------------+-------------------+ +select c6, c11, pad(c6, c6, c11) from t1; ++------+------+------------------+ +| c6 | c11 | pad(c6, c6, c11) | ++------+------+------------------+ +| 2 | 1 | 2 | ++------+------+------------------+ +select c6, c12, rpad(c6, c6, c12), lpad(c6, c6, c12) from t1; ++------+------+-------------------+-------------------+ +| c6 | c12 | rpad(c6, c6, c12) | lpad(c6, c6, c12) | ++------+------+-------------------+-------------------+ +| 2 | 2 | 22 | 22 | ++------+------+-------------------+-------------------+ +select c6, c12, pad(c6, c6, c12) from t1; ++------+------+------------------+ +| c6 | c12 | pad(c6, c6, c12) | ++------+------+------------------+ +| 2 | 2 | 22 | ++------+------+------------------+ +select c6, c13, rpad(c6, c6, c13), lpad(c6, c6, c13) from t1; ++------+------+-------------------+-------------------+ +| c6 | c13 | rpad(c6, c6, c13) | lpad(c6, c6, c13) | ++------+------+-------------------+-------------------+ +| 2 | 3.5 | 23 | 32 | ++------+------+-------------------+-------------------+ +select c6, c13, pad(c6, c6, c13) from t1; ++------+------+------------------+ +| c6 | c13 | pad(c6, c6, c13) | ++------+------+------------------+ +| 2 | 3.5 | 2222 | ++------+------+------------------+ +select c6, c14, rpad(c6, c6, c14), lpad(c6, c6, c14) from t1; ++------+------+-------------------+-------------------+ +| c6 | c14 | rpad(c6, c6, c14) | lpad(c6, c6, c14) | ++------+------+-------------------+-------------------+ +| 2 | 4.5 | 24 | 42 | ++------+------+-------------------+-------------------+ +select c6, c14, pad(c6, c6, c14) from t1; ++------+------+------------------+ +| c6 | c14 | pad(c6, c6, c14) | ++------+------+------------------+ +| 2 | 4.5 | 2222 | ++------+------+------------------+ +select c6, c15, rpad(c6, c6, c15), lpad(c6, c6, c15) from t1; ++------+------+-------------------+-------------------+ +| c6 | c15 | rpad(c6, c6, c15) | lpad(c6, c6, c15) | ++------+------+-------------------+-------------------+ +| 2 | 5.5 | 25 | 52 | ++------+------+-------------------+-------------------+ +select c6, c15, pad(c6, c6, c15) from t1; ++------+------+------------------+ +| c6 | c15 | pad(c6, c6, c15) | ++------+------+------------------+ +| 2 | 5.5 | 222222 | ++------+------+------------------+ +select c6, c16, rpad(c6, c6, c16), lpad(c6, c6, c16) from t1; ++------+------+-------------------+-------------------+ +| c6 | c16 | rpad(c6, c6, c16) | lpad(c6, c6, c16) | ++------+------+-------------------+-------------------+ +| 2 | 6.5 | 26 | 62 | ++------+------+-------------------+-------------------+ +select c6, c16, pad(c6, c6, c16) from t1; ++------+------+------------------+ +| c6 | c16 | pad(c6, c6, c16) | ++------+------+------------------+ +| 2 | 6.5 | 222222 | ++------+------+------------------+ +select c6, c17, rpad(c6, c6, c17), lpad(c6, c6, c17) from t1; ++------+------+-------------------+-------------------+ +| c6 | c17 | rpad(c6, c6, c17) | lpad(c6, c6, c17) | ++------+------+-------------------+-------------------+ +| 2 | 8 | 28 | 82 | ++------+------+-------------------+-------------------+ +select c6, c17, pad(c6, c6, c17) from t1; ++------+------+------------------+ +| c6 | c17 | pad(c6, c6, c17) | ++------+------+------------------+ +| 2 | 8 | 22222222 | ++------+------+------------------+ +select c6, c18, rpad(c6, c6, c18), lpad(c6, c6, c18) from t1; ++------+------+-------------------+-------------------+ +| c6 | c18 | rpad(c6, c6, c18) | lpad(c6, c6, c18) | ++------+------+-------------------+-------------------+ +| 2 | 9 | 29 | 92 | ++------+------+-------------------+-------------------+ +select c6, c18, pad(c6, c6, c18) from t1; ++------+------+------------------+ +| c6 | c18 | pad(c6, c6, c18) | ++------+------+------------------+ +| 2 | 9 | 222222222 | ++------+------+------------------+ +select c6, c19, rpad(c6, c6, c19), lpad(c6, c6, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c6 | c19 | rpad(c6, c6, c19) | lpad(c6, c6, c19) | ++------+---------------------+-------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 22 | 22 | ++------+---------------------+-------------------+-------------------+ +select c6, c19, pad(c6, c6, c19) from t1; ++------+---------------------+------------------+ +| c6 | c19 | pad(c6, c6, c19) | ++------+---------------------+------------------+ +| 2 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c6, c20, rpad(c6, c6, c20), lpad(c6, c6, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c6 | c20 | rpad(c6, c6, c20) | lpad(c6, c6, c20) | ++------+---------------------+-------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 22 | 22 | ++------+---------------------+-------------------+-------------------+ +select c6, c20, pad(c6, c6, c20) from t1; ++------+---------------------+------------------+ +| c6 | c20 | pad(c6, c6, c20) | ++------+---------------------+------------------+ +| 2 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c6, c21, rpad(c6, c6, c21), lpad(c6, c6, c21) from t1; ++------+------+-------------------+-------------------+ +| c6 | c21 | rpad(c6, c6, c21) | lpad(c6, c6, c21) | ++------+------+-------------------+-------------------+ +| 2 | 9.5 | 29 | 92 | ++------+------+-------------------+-------------------+ +select c6, c21, pad(c6, c6, c21) from t1; ++------+------+------------------+ +| c6 | c21 | pad(c6, c6, c21) | ++------+------+------------------+ +| 2 | 9.5 | 2222222222 | ++------+------+------------------+ +select c6, c22, rpad(c6, c6, c22), lpad(c6, c6, c22) from t1; ++------+------+-------------------+-------------------+ +| c6 | c22 | rpad(c6, c6, c22) | lpad(c6, c6, c22) | ++------+------+-------------------+-------------------+ +| 2 | 10.5 | 21 | 12 | ++------+------+-------------------+-------------------+ +select c6, c22, pad(c6, c6, c22) from t1; ++------+------+------------------+ +| c6 | c22 | pad(c6, c6, c22) | ++------+------+------------------+ +| 2 | 10.5 | 22222222222 | ++------+------+------------------+ +select c7, c1, rpad(c7, c7, c1), lpad(c7, c7, c1) from t1; ++------+------+------------------+------------------+ +| c7 | c1 | rpad(c7, c7, c1) | lpad(c7, c7, c1) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c1, pad(c7, c7, c1) from t1; ++------+------+-----------------+ +| c7 | c1 | pad(c7, c7, c1) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c7, c2, rpad(c7, c7, c2), lpad(c7, c7, c2) from t1; ++------+------+------------------+------------------+ +| c7 | c2 | rpad(c7, c7, c2) | lpad(c7, c7, c2) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c2, pad(c7, c7, c2) from t1; ++------+------+-----------------+ +| c7 | c2 | pad(c7, c7, c2) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c7, c3, rpad(c7, c7, c3), lpad(c7, c7, c3) from t1; ++------+------+------------------+------------------+ +| c7 | c3 | rpad(c7, c7, c3) | lpad(c7, c7, c3) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c3, pad(c7, c7, c3) from t1; ++------+------+-----------------+ +| c7 | c3 | pad(c7, c7, c3) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c7, c4, rpad(c7, c7, c4), lpad(c7, c7, c4) from t1; ++------+------+------------------+------------------+ +| c7 | c4 | rpad(c7, c7, c4) | lpad(c7, c7, c4) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c4, pad(c7, c7, c4) from t1; ++------+------+-----------------+ +| c7 | c4 | pad(c7, c7, c4) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c7, c5, rpad(c7, c7, c5), lpad(c7, c7, c5) from t1; ++------+------+------------------+------------------+ +| c7 | c5 | rpad(c7, c7, c5) | lpad(c7, c7, c5) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c5, pad(c7, c7, c5) from t1; ++------+------+-----------------+ +| c7 | c5 | pad(c7, c7, c5) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c7, c6, rpad(c7, c7, c6), lpad(c7, c7, c6) from t1; ++------+------+------------------+------------------+ +| c7 | c6 | rpad(c7, c7, c6) | lpad(c7, c7, c6) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c6, pad(c7, c7, c6) from t1; ++------+------+-----------------+ +| c7 | c6 | pad(c7, c7, c6) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c7, c7, rpad(c7, c7, c7), lpad(c7, c7, c7) from t1; ++------+------+------------------+------------------+ +| c7 | c7 | rpad(c7, c7, c7) | lpad(c7, c7, c7) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c7, pad(c7, c7, c7) from t1; ++------+------+-----------------+ +| c7 | c7 | pad(c7, c7, c7) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c7, c8, rpad(c7, c7, c8), lpad(c7, c7, c8) from t1; ++------+------+------------------+------------------+ +| c7 | c8 | rpad(c7, c7, c8) | lpad(c7, c7, c8) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c8, pad(c7, c7, c8) from t1; ++------+------+-----------------+ +| c7 | c8 | pad(c7, c7, c8) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c7, c9, rpad(c7, c7, c9), lpad(c7, c7, c9) from t1; ++------+------+------------------+------------------+ +| c7 | c9 | rpad(c7, c7, c9) | lpad(c7, c7, c9) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c7, c9, pad(c7, c7, c9) from t1; ++------+------+-----------------+ +| c7 | c9 | pad(c7, c7, c9) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c7, c10, rpad(c7, c7, c10), lpad(c7, c7, c10) from t1; ++------+------+-------------------+-------------------+ +| c7 | c10 | rpad(c7, c7, c10) | lpad(c7, c7, c10) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c10, pad(c7, c7, c10) from t1; ++------+------+------------------+ +| c7 | c10 | pad(c7, c7, c10) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c7, c11, rpad(c7, c7, c11), lpad(c7, c7, c11) from t1; ++------+------+-------------------+-------------------+ +| c7 | c11 | rpad(c7, c7, c11) | lpad(c7, c7, c11) | ++------+------+-------------------+-------------------+ +| 1 | 1 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c11, pad(c7, c7, c11) from t1; ++------+------+------------------+ +| c7 | c11 | pad(c7, c7, c11) | ++------+------+------------------+ +| 1 | 1 | 1 | ++------+------+------------------+ +select c7, c12, rpad(c7, c7, c12), lpad(c7, c7, c12) from t1; ++------+------+-------------------+-------------------+ +| c7 | c12 | rpad(c7, c7, c12) | lpad(c7, c7, c12) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c12, pad(c7, c7, c12) from t1; ++------+------+------------------+ +| c7 | c12 | pad(c7, c7, c12) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c7, c13, rpad(c7, c7, c13), lpad(c7, c7, c13) from t1; ++------+------+-------------------+-------------------+ +| c7 | c13 | rpad(c7, c7, c13) | lpad(c7, c7, c13) | ++------+------+-------------------+-------------------+ +| 1 | 3.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c13, pad(c7, c7, c13) from t1; ++------+------+------------------+ +| c7 | c13 | pad(c7, c7, c13) | ++------+------+------------------+ +| 1 | 3.5 | 1111 | ++------+------+------------------+ +select c7, c14, rpad(c7, c7, c14), lpad(c7, c7, c14) from t1; ++------+------+-------------------+-------------------+ +| c7 | c14 | rpad(c7, c7, c14) | lpad(c7, c7, c14) | ++------+------+-------------------+-------------------+ +| 1 | 4.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c14, pad(c7, c7, c14) from t1; ++------+------+------------------+ +| c7 | c14 | pad(c7, c7, c14) | ++------+------+------------------+ +| 1 | 4.5 | 1111 | ++------+------+------------------+ +select c7, c15, rpad(c7, c7, c15), lpad(c7, c7, c15) from t1; ++------+------+-------------------+-------------------+ +| c7 | c15 | rpad(c7, c7, c15) | lpad(c7, c7, c15) | ++------+------+-------------------+-------------------+ +| 1 | 5.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c15, pad(c7, c7, c15) from t1; ++------+------+------------------+ +| c7 | c15 | pad(c7, c7, c15) | ++------+------+------------------+ +| 1 | 5.5 | 111111 | ++------+------+------------------+ +select c7, c16, rpad(c7, c7, c16), lpad(c7, c7, c16) from t1; ++------+------+-------------------+-------------------+ +| c7 | c16 | rpad(c7, c7, c16) | lpad(c7, c7, c16) | ++------+------+-------------------+-------------------+ +| 1 | 6.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c16, pad(c7, c7, c16) from t1; ++------+------+------------------+ +| c7 | c16 | pad(c7, c7, c16) | ++------+------+------------------+ +| 1 | 6.5 | 111111 | ++------+------+------------------+ +select c7, c17, rpad(c7, c7, c17), lpad(c7, c7, c17) from t1; ++------+------+-------------------+-------------------+ +| c7 | c17 | rpad(c7, c7, c17) | lpad(c7, c7, c17) | ++------+------+-------------------+-------------------+ +| 1 | 8 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c17, pad(c7, c7, c17) from t1; ++------+------+------------------+ +| c7 | c17 | pad(c7, c7, c17) | ++------+------+------------------+ +| 1 | 8 | 11111111 | ++------+------+------------------+ +select c7, c18, rpad(c7, c7, c18), lpad(c7, c7, c18) from t1; ++------+------+-------------------+-------------------+ +| c7 | c18 | rpad(c7, c7, c18) | lpad(c7, c7, c18) | ++------+------+-------------------+-------------------+ +| 1 | 9 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c18, pad(c7, c7, c18) from t1; ++------+------+------------------+ +| c7 | c18 | pad(c7, c7, c18) | ++------+------+------------------+ +| 1 | 9 | 111111111 | ++------+------+------------------+ +select c7, c19, rpad(c7, c7, c19), lpad(c7, c7, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c7 | c19 | rpad(c7, c7, c19) | lpad(c7, c7, c19) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c7, c19, pad(c7, c7, c19) from t1; ++------+---------------------+------------------+ +| c7 | c19 | pad(c7, c7, c19) | ++------+---------------------+------------------+ +| 1 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c7, c20, rpad(c7, c7, c20), lpad(c7, c7, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c7 | c20 | rpad(c7, c7, c20) | lpad(c7, c7, c20) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c7, c20, pad(c7, c7, c20) from t1; ++------+---------------------+------------------+ +| c7 | c20 | pad(c7, c7, c20) | ++------+---------------------+------------------+ +| 1 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c7, c21, rpad(c7, c7, c21), lpad(c7, c7, c21) from t1; ++------+------+-------------------+-------------------+ +| c7 | c21 | rpad(c7, c7, c21) | lpad(c7, c7, c21) | ++------+------+-------------------+-------------------+ +| 1 | 9.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c21, pad(c7, c7, c21) from t1; ++------+------+------------------+ +| c7 | c21 | pad(c7, c7, c21) | ++------+------+------------------+ +| 1 | 9.5 | 1111111111 | ++------+------+------------------+ +select c7, c22, rpad(c7, c7, c22), lpad(c7, c7, c22) from t1; ++------+------+-------------------+-------------------+ +| c7 | c22 | rpad(c7, c7, c22) | lpad(c7, c7, c22) | ++------+------+-------------------+-------------------+ +| 1 | 10.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c7, c22, pad(c7, c7, c22) from t1; ++------+------+------------------+ +| c7 | c22 | pad(c7, c7, c22) | ++------+------+------------------+ +| 1 | 10.5 | 11111111111 | ++------+------+------------------+ +select c8, c1, rpad(c8, c8, c1), lpad(c8, c8, c1) from t1; ++------+------+------------------+------------------+ +| c8 | c1 | rpad(c8, c8, c1) | lpad(c8, c8, c1) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c8, c1, pad(c8, c8, c1) from t1; ++------+------+-----------------+ +| c8 | c1 | pad(c8, c8, c1) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c8, c2, rpad(c8, c8, c2), lpad(c8, c8, c2) from t1; ++------+------+------------------+------------------+ +| c8 | c2 | rpad(c8, c8, c2) | lpad(c8, c8, c2) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c8, c2, pad(c8, c8, c2) from t1; ++------+------+-----------------+ +| c8 | c2 | pad(c8, c8, c2) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c8, c3, rpad(c8, c8, c3), lpad(c8, c8, c3) from t1; ++------+------+------------------+------------------+ +| c8 | c3 | rpad(c8, c8, c3) | lpad(c8, c8, c3) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c8, c3, pad(c8, c8, c3) from t1; ++------+------+-----------------+ +| c8 | c3 | pad(c8, c8, c3) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c8, c4, rpad(c8, c8, c4), lpad(c8, c8, c4) from t1; ++------+------+------------------+------------------+ +| c8 | c4 | rpad(c8, c8, c4) | lpad(c8, c8, c4) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c8, c4, pad(c8, c8, c4) from t1; ++------+------+-----------------+ +| c8 | c4 | pad(c8, c8, c4) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c8, c5, rpad(c8, c8, c5), lpad(c8, c8, c5) from t1; ++------+------+------------------+------------------+ +| c8 | c5 | rpad(c8, c8, c5) | lpad(c8, c8, c5) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c8, c5, pad(c8, c8, c5) from t1; ++------+------+-----------------+ +| c8 | c5 | pad(c8, c8, c5) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c8, c6, rpad(c8, c8, c6), lpad(c8, c8, c6) from t1; ++------+------+------------------+------------------+ +| c8 | c6 | rpad(c8, c8, c6) | lpad(c8, c8, c6) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c8, c6, pad(c8, c8, c6) from t1; ++------+------+-----------------+ +| c8 | c6 | pad(c8, c8, c6) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c8, c7, rpad(c8, c8, c7), lpad(c8, c8, c7) from t1; ++------+------+------------------+------------------+ +| c8 | c7 | rpad(c8, c8, c7) | lpad(c8, c8, c7) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c8, c7, pad(c8, c8, c7) from t1; ++------+------+-----------------+ +| c8 | c7 | pad(c8, c8, c7) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c8, c8, rpad(c8, c8, c8), lpad(c8, c8, c8) from t1; ++------+------+------------------+------------------+ +| c8 | c8 | rpad(c8, c8, c8) | lpad(c8, c8, c8) | ++------+------+------------------+------------------+ +| 2 | 2 | 22 | 22 | ++------+------+------------------+------------------+ +select c8, c8, pad(c8, c8, c8) from t1; ++------+------+-----------------+ +| c8 | c8 | pad(c8, c8, c8) | ++------+------+-----------------+ +| 2 | 2 | 22 | ++------+------+-----------------+ +select c8, c9, rpad(c8, c8, c9), lpad(c8, c8, c9) from t1; ++------+------+------------------+------------------+ +| c8 | c9 | rpad(c8, c8, c9) | lpad(c8, c8, c9) | ++------+------+------------------+------------------+ +| 2 | 1 | 21 | 12 | ++------+------+------------------+------------------+ +select c8, c9, pad(c8, c8, c9) from t1; ++------+------+-----------------+ +| c8 | c9 | pad(c8, c8, c9) | ++------+------+-----------------+ +| 2 | 1 | 2 | ++------+------+-----------------+ +select c8, c10, rpad(c8, c8, c10), lpad(c8, c8, c10) from t1; ++------+------+-------------------+-------------------+ +| c8 | c10 | rpad(c8, c8, c10) | lpad(c8, c8, c10) | ++------+------+-------------------+-------------------+ +| 2 | 2 | 22 | 22 | ++------+------+-------------------+-------------------+ +select c8, c10, pad(c8, c8, c10) from t1; ++------+------+------------------+ +| c8 | c10 | pad(c8, c8, c10) | ++------+------+------------------+ +| 2 | 2 | 22 | ++------+------+------------------+ +select c8, c11, rpad(c8, c8, c11), lpad(c8, c8, c11) from t1; ++------+------+-------------------+-------------------+ +| c8 | c11 | rpad(c8, c8, c11) | lpad(c8, c8, c11) | ++------+------+-------------------+-------------------+ +| 2 | 1 | 21 | 12 | ++------+------+-------------------+-------------------+ +select c8, c11, pad(c8, c8, c11) from t1; ++------+------+------------------+ +| c8 | c11 | pad(c8, c8, c11) | ++------+------+------------------+ +| 2 | 1 | 2 | ++------+------+------------------+ +select c8, c12, rpad(c8, c8, c12), lpad(c8, c8, c12) from t1; ++------+------+-------------------+-------------------+ +| c8 | c12 | rpad(c8, c8, c12) | lpad(c8, c8, c12) | ++------+------+-------------------+-------------------+ +| 2 | 2 | 22 | 22 | ++------+------+-------------------+-------------------+ +select c8, c12, pad(c8, c8, c12) from t1; ++------+------+------------------+ +| c8 | c12 | pad(c8, c8, c12) | ++------+------+------------------+ +| 2 | 2 | 22 | ++------+------+------------------+ +select c8, c13, rpad(c8, c8, c13), lpad(c8, c8, c13) from t1; ++------+------+-------------------+-------------------+ +| c8 | c13 | rpad(c8, c8, c13) | lpad(c8, c8, c13) | ++------+------+-------------------+-------------------+ +| 2 | 3.5 | 23 | 32 | ++------+------+-------------------+-------------------+ +select c8, c13, pad(c8, c8, c13) from t1; ++------+------+------------------+ +| c8 | c13 | pad(c8, c8, c13) | ++------+------+------------------+ +| 2 | 3.5 | 2222 | ++------+------+------------------+ +select c8, c14, rpad(c8, c8, c14), lpad(c8, c8, c14) from t1; ++------+------+-------------------+-------------------+ +| c8 | c14 | rpad(c8, c8, c14) | lpad(c8, c8, c14) | ++------+------+-------------------+-------------------+ +| 2 | 4.5 | 24 | 42 | ++------+------+-------------------+-------------------+ +select c8, c14, pad(c8, c8, c14) from t1; ++------+------+------------------+ +| c8 | c14 | pad(c8, c8, c14) | ++------+------+------------------+ +| 2 | 4.5 | 2222 | ++------+------+------------------+ +select c8, c15, rpad(c8, c8, c15), lpad(c8, c8, c15) from t1; ++------+------+-------------------+-------------------+ +| c8 | c15 | rpad(c8, c8, c15) | lpad(c8, c8, c15) | ++------+------+-------------------+-------------------+ +| 2 | 5.5 | 25 | 52 | ++------+------+-------------------+-------------------+ +select c8, c15, pad(c8, c8, c15) from t1; ++------+------+------------------+ +| c8 | c15 | pad(c8, c8, c15) | ++------+------+------------------+ +| 2 | 5.5 | 222222 | ++------+------+------------------+ +select c8, c16, rpad(c8, c8, c16), lpad(c8, c8, c16) from t1; ++------+------+-------------------+-------------------+ +| c8 | c16 | rpad(c8, c8, c16) | lpad(c8, c8, c16) | ++------+------+-------------------+-------------------+ +| 2 | 6.5 | 26 | 62 | ++------+------+-------------------+-------------------+ +select c8, c16, pad(c8, c8, c16) from t1; ++------+------+------------------+ +| c8 | c16 | pad(c8, c8, c16) | ++------+------+------------------+ +| 2 | 6.5 | 222222 | ++------+------+------------------+ +select c8, c17, rpad(c8, c8, c17), lpad(c8, c8, c17) from t1; ++------+------+-------------------+-------------------+ +| c8 | c17 | rpad(c8, c8, c17) | lpad(c8, c8, c17) | ++------+------+-------------------+-------------------+ +| 2 | 8 | 28 | 82 | ++------+------+-------------------+-------------------+ +select c8, c17, pad(c8, c8, c17) from t1; ++------+------+------------------+ +| c8 | c17 | pad(c8, c8, c17) | ++------+------+------------------+ +| 2 | 8 | 22222222 | ++------+------+------------------+ +select c8, c18, rpad(c8, c8, c18), lpad(c8, c8, c18) from t1; ++------+------+-------------------+-------------------+ +| c8 | c18 | rpad(c8, c8, c18) | lpad(c8, c8, c18) | ++------+------+-------------------+-------------------+ +| 2 | 9 | 29 | 92 | ++------+------+-------------------+-------------------+ +select c8, c18, pad(c8, c8, c18) from t1; ++------+------+------------------+ +| c8 | c18 | pad(c8, c8, c18) | ++------+------+------------------+ +| 2 | 9 | 222222222 | ++------+------+------------------+ +select c8, c19, rpad(c8, c8, c19), lpad(c8, c8, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c8 | c19 | rpad(c8, c8, c19) | lpad(c8, c8, c19) | ++------+---------------------+-------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 22 | 22 | ++------+---------------------+-------------------+-------------------+ +select c8, c19, pad(c8, c8, c19) from t1; ++------+---------------------+------------------+ +| c8 | c19 | pad(c8, c8, c19) | ++------+---------------------+------------------+ +| 2 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c8, c20, rpad(c8, c8, c20), lpad(c8, c8, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c8 | c20 | rpad(c8, c8, c20) | lpad(c8, c8, c20) | ++------+---------------------+-------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 22 | 22 | ++------+---------------------+-------------------+-------------------+ +select c8, c20, pad(c8, c8, c20) from t1; ++------+---------------------+------------------+ +| c8 | c20 | pad(c8, c8, c20) | ++------+---------------------+------------------+ +| 2 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c8, c21, rpad(c8, c8, c21), lpad(c8, c8, c21) from t1; ++------+------+-------------------+-------------------+ +| c8 | c21 | rpad(c8, c8, c21) | lpad(c8, c8, c21) | ++------+------+-------------------+-------------------+ +| 2 | 9.5 | 29 | 92 | ++------+------+-------------------+-------------------+ +select c8, c21, pad(c8, c8, c21) from t1; ++------+------+------------------+ +| c8 | c21 | pad(c8, c8, c21) | ++------+------+------------------+ +| 2 | 9.5 | 2222222222 | ++------+------+------------------+ +select c8, c22, rpad(c8, c8, c22), lpad(c8, c8, c22) from t1; ++------+------+-------------------+-------------------+ +| c8 | c22 | rpad(c8, c8, c22) | lpad(c8, c8, c22) | ++------+------+-------------------+-------------------+ +| 2 | 10.5 | 21 | 12 | ++------+------+-------------------+-------------------+ +select c8, c22, pad(c8, c8, c22) from t1; ++------+------+------------------+ +| c8 | c22 | pad(c8, c8, c22) | ++------+------+------------------+ +| 2 | 10.5 | 22222222222 | ++------+------+------------------+ +select c9, c1, rpad(c9, c9, c1), lpad(c9, c9, c1) from t1; ++------+------+------------------+------------------+ +| c9 | c1 | rpad(c9, c9, c1) | lpad(c9, c9, c1) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c1, pad(c9, c9, c1) from t1; ++------+------+-----------------+ +| c9 | c1 | pad(c9, c9, c1) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c9, c2, rpad(c9, c9, c2), lpad(c9, c9, c2) from t1; ++------+------+------------------+------------------+ +| c9 | c2 | rpad(c9, c9, c2) | lpad(c9, c9, c2) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c2, pad(c9, c9, c2) from t1; ++------+------+-----------------+ +| c9 | c2 | pad(c9, c9, c2) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c9, c3, rpad(c9, c9, c3), lpad(c9, c9, c3) from t1; ++------+------+------------------+------------------+ +| c9 | c3 | rpad(c9, c9, c3) | lpad(c9, c9, c3) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c3, pad(c9, c9, c3) from t1; ++------+------+-----------------+ +| c9 | c3 | pad(c9, c9, c3) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c9, c4, rpad(c9, c9, c4), lpad(c9, c9, c4) from t1; ++------+------+------------------+------------------+ +| c9 | c4 | rpad(c9, c9, c4) | lpad(c9, c9, c4) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c4, pad(c9, c9, c4) from t1; ++------+------+-----------------+ +| c9 | c4 | pad(c9, c9, c4) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c9, c5, rpad(c9, c9, c5), lpad(c9, c9, c5) from t1; ++------+------+------------------+------------------+ +| c9 | c5 | rpad(c9, c9, c5) | lpad(c9, c9, c5) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c5, pad(c9, c9, c5) from t1; ++------+------+-----------------+ +| c9 | c5 | pad(c9, c9, c5) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c9, c6, rpad(c9, c9, c6), lpad(c9, c9, c6) from t1; ++------+------+------------------+------------------+ +| c9 | c6 | rpad(c9, c9, c6) | lpad(c9, c9, c6) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c6, pad(c9, c9, c6) from t1; ++------+------+-----------------+ +| c9 | c6 | pad(c9, c9, c6) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c9, c7, rpad(c9, c9, c7), lpad(c9, c9, c7) from t1; ++------+------+------------------+------------------+ +| c9 | c7 | rpad(c9, c9, c7) | lpad(c9, c9, c7) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c7, pad(c9, c9, c7) from t1; ++------+------+-----------------+ +| c9 | c7 | pad(c9, c9, c7) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c9, c8, rpad(c9, c9, c8), lpad(c9, c9, c8) from t1; ++------+------+------------------+------------------+ +| c9 | c8 | rpad(c9, c9, c8) | lpad(c9, c9, c8) | ++------+------+------------------+------------------+ +| 1 | 2 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c8, pad(c9, c9, c8) from t1; ++------+------+-----------------+ +| c9 | c8 | pad(c9, c9, c8) | ++------+------+-----------------+ +| 1 | 2 | 11 | ++------+------+-----------------+ +select c9, c9, rpad(c9, c9, c9), lpad(c9, c9, c9) from t1; ++------+------+------------------+------------------+ +| c9 | c9 | rpad(c9, c9, c9) | lpad(c9, c9, c9) | ++------+------+------------------+------------------+ +| 1 | 1 | 1 | 1 | ++------+------+------------------+------------------+ +select c9, c9, pad(c9, c9, c9) from t1; ++------+------+-----------------+ +| c9 | c9 | pad(c9, c9, c9) | ++------+------+-----------------+ +| 1 | 1 | 1 | ++------+------+-----------------+ +select c9, c10, rpad(c9, c9, c10), lpad(c9, c9, c10) from t1; ++------+------+-------------------+-------------------+ +| c9 | c10 | rpad(c9, c9, c10) | lpad(c9, c9, c10) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c10, pad(c9, c9, c10) from t1; ++------+------+------------------+ +| c9 | c10 | pad(c9, c9, c10) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c9, c11, rpad(c9, c9, c11), lpad(c9, c9, c11) from t1; ++------+------+-------------------+-------------------+ +| c9 | c11 | rpad(c9, c9, c11) | lpad(c9, c9, c11) | ++------+------+-------------------+-------------------+ +| 1 | 1 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c11, pad(c9, c9, c11) from t1; ++------+------+------------------+ +| c9 | c11 | pad(c9, c9, c11) | ++------+------+------------------+ +| 1 | 1 | 1 | ++------+------+------------------+ +select c9, c12, rpad(c9, c9, c12), lpad(c9, c9, c12) from t1; ++------+------+-------------------+-------------------+ +| c9 | c12 | rpad(c9, c9, c12) | lpad(c9, c9, c12) | ++------+------+-------------------+-------------------+ +| 1 | 2 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c12, pad(c9, c9, c12) from t1; ++------+------+------------------+ +| c9 | c12 | pad(c9, c9, c12) | ++------+------+------------------+ +| 1 | 2 | 11 | ++------+------+------------------+ +select c9, c13, rpad(c9, c9, c13), lpad(c9, c9, c13) from t1; ++------+------+-------------------+-------------------+ +| c9 | c13 | rpad(c9, c9, c13) | lpad(c9, c9, c13) | ++------+------+-------------------+-------------------+ +| 1 | 3.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c13, pad(c9, c9, c13) from t1; ++------+------+------------------+ +| c9 | c13 | pad(c9, c9, c13) | ++------+------+------------------+ +| 1 | 3.5 | 1111 | ++------+------+------------------+ +select c9, c14, rpad(c9, c9, c14), lpad(c9, c9, c14) from t1; ++------+------+-------------------+-------------------+ +| c9 | c14 | rpad(c9, c9, c14) | lpad(c9, c9, c14) | ++------+------+-------------------+-------------------+ +| 1 | 4.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c14, pad(c9, c9, c14) from t1; ++------+------+------------------+ +| c9 | c14 | pad(c9, c9, c14) | ++------+------+------------------+ +| 1 | 4.5 | 1111 | ++------+------+------------------+ +select c9, c15, rpad(c9, c9, c15), lpad(c9, c9, c15) from t1; ++------+------+-------------------+-------------------+ +| c9 | c15 | rpad(c9, c9, c15) | lpad(c9, c9, c15) | ++------+------+-------------------+-------------------+ +| 1 | 5.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c15, pad(c9, c9, c15) from t1; ++------+------+------------------+ +| c9 | c15 | pad(c9, c9, c15) | ++------+------+------------------+ +| 1 | 5.5 | 111111 | ++------+------+------------------+ +select c9, c16, rpad(c9, c9, c16), lpad(c9, c9, c16) from t1; ++------+------+-------------------+-------------------+ +| c9 | c16 | rpad(c9, c9, c16) | lpad(c9, c9, c16) | ++------+------+-------------------+-------------------+ +| 1 | 6.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c16, pad(c9, c9, c16) from t1; ++------+------+------------------+ +| c9 | c16 | pad(c9, c9, c16) | ++------+------+------------------+ +| 1 | 6.5 | 111111 | ++------+------+------------------+ +select c9, c17, rpad(c9, c9, c17), lpad(c9, c9, c17) from t1; ++------+------+-------------------+-------------------+ +| c9 | c17 | rpad(c9, c9, c17) | lpad(c9, c9, c17) | ++------+------+-------------------+-------------------+ +| 1 | 8 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c17, pad(c9, c9, c17) from t1; ++------+------+------------------+ +| c9 | c17 | pad(c9, c9, c17) | ++------+------+------------------+ +| 1 | 8 | 11111111 | ++------+------+------------------+ +select c9, c18, rpad(c9, c9, c18), lpad(c9, c9, c18) from t1; ++------+------+-------------------+-------------------+ +| c9 | c18 | rpad(c9, c9, c18) | lpad(c9, c9, c18) | ++------+------+-------------------+-------------------+ +| 1 | 9 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c18, pad(c9, c9, c18) from t1; ++------+------+------------------+ +| c9 | c18 | pad(c9, c9, c18) | ++------+------+------------------+ +| 1 | 9 | 111111111 | ++------+------+------------------+ +select c9, c19, rpad(c9, c9, c19), lpad(c9, c9, c19) from t1; ++------+---------------------+-------------------+-------------------+ +| c9 | c19 | rpad(c9, c9, c19) | lpad(c9, c9, c19) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c9, c19, pad(c9, c9, c19) from t1; ++------+---------------------+------------------+ +| c9 | c19 | pad(c9, c9, c19) | ++------+---------------------+------------------+ +| 1 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c9, c20, rpad(c9, c9, c20), lpad(c9, c9, c20) from t1; ++------+---------------------+-------------------+-------------------+ +| c9 | c20 | rpad(c9, c9, c20) | lpad(c9, c9, c20) | ++------+---------------------+-------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | ++------+---------------------+-------------------+-------------------+ +select c9, c20, pad(c9, c9, c20) from t1; ++------+---------------------+------------------+ +| c9 | c20 | pad(c9, c9, c20) | ++------+---------------------+------------------+ +| 1 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c9, c21, rpad(c9, c9, c21), lpad(c9, c9, c21) from t1; ++------+------+-------------------+-------------------+ +| c9 | c21 | rpad(c9, c9, c21) | lpad(c9, c9, c21) | ++------+------+-------------------+-------------------+ +| 1 | 9.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c21, pad(c9, c9, c21) from t1; ++------+------+------------------+ +| c9 | c21 | pad(c9, c9, c21) | ++------+------+------------------+ +| 1 | 9.5 | 1111111111 | ++------+------+------------------+ +select c9, c22, rpad(c9, c9, c22), lpad(c9, c9, c22) from t1; ++------+------+-------------------+-------------------+ +| c9 | c22 | rpad(c9, c9, c22) | lpad(c9, c9, c22) | ++------+------+-------------------+-------------------+ +| 1 | 10.5 | 1 | 1 | ++------+------+-------------------+-------------------+ +select c9, c22, pad(c9, c9, c22) from t1; ++------+------+------------------+ +| c9 | c22 | pad(c9, c9, c22) | ++------+------+------------------+ +| 1 | 10.5 | 11111111111 | ++------+------+------------------+ +select c10, c1, rpad(c10, c10, c1), lpad(c10, c10, c1) from t1; ++------+------+--------------------+--------------------+ +| c10 | c1 | rpad(c10, c10, c1) | lpad(c10, c10, c1) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c10, c1, pad(c10, c10, c1) from t1; ++------+------+-------------------+ +| c10 | c1 | pad(c10, c10, c1) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c10, c2, rpad(c10, c10, c2), lpad(c10, c10, c2) from t1; ++------+------+--------------------+--------------------+ +| c10 | c2 | rpad(c10, c10, c2) | lpad(c10, c10, c2) | ++------+------+--------------------+--------------------+ +| 2 | 2 | 22 | 22 | ++------+------+--------------------+--------------------+ +select c10, c2, pad(c10, c10, c2) from t1; ++------+------+-------------------+ +| c10 | c2 | pad(c10, c10, c2) | ++------+------+-------------------+ +| 2 | 2 | 22 | ++------+------+-------------------+ +select c10, c3, rpad(c10, c10, c3), lpad(c10, c10, c3) from t1; ++------+------+--------------------+--------------------+ +| c10 | c3 | rpad(c10, c10, c3) | lpad(c10, c10, c3) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c10, c3, pad(c10, c10, c3) from t1; ++------+------+-------------------+ +| c10 | c3 | pad(c10, c10, c3) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c10, c4, rpad(c10, c10, c4), lpad(c10, c10, c4) from t1; ++------+------+--------------------+--------------------+ +| c10 | c4 | rpad(c10, c10, c4) | lpad(c10, c10, c4) | ++------+------+--------------------+--------------------+ +| 2 | 2 | 22 | 22 | ++------+------+--------------------+--------------------+ +select c10, c4, pad(c10, c10, c4) from t1; ++------+------+-------------------+ +| c10 | c4 | pad(c10, c10, c4) | ++------+------+-------------------+ +| 2 | 2 | 22 | ++------+------+-------------------+ +select c10, c5, rpad(c10, c10, c5), lpad(c10, c10, c5) from t1; ++------+------+--------------------+--------------------+ +| c10 | c5 | rpad(c10, c10, c5) | lpad(c10, c10, c5) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c10, c5, pad(c10, c10, c5) from t1; ++------+------+-------------------+ +| c10 | c5 | pad(c10, c10, c5) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c10, c6, rpad(c10, c10, c6), lpad(c10, c10, c6) from t1; ++------+------+--------------------+--------------------+ +| c10 | c6 | rpad(c10, c10, c6) | lpad(c10, c10, c6) | ++------+------+--------------------+--------------------+ +| 2 | 2 | 22 | 22 | ++------+------+--------------------+--------------------+ +select c10, c6, pad(c10, c10, c6) from t1; ++------+------+-------------------+ +| c10 | c6 | pad(c10, c10, c6) | ++------+------+-------------------+ +| 2 | 2 | 22 | ++------+------+-------------------+ +select c10, c7, rpad(c10, c10, c7), lpad(c10, c10, c7) from t1; ++------+------+--------------------+--------------------+ +| c10 | c7 | rpad(c10, c10, c7) | lpad(c10, c10, c7) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c10, c7, pad(c10, c10, c7) from t1; ++------+------+-------------------+ +| c10 | c7 | pad(c10, c10, c7) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c10, c8, rpad(c10, c10, c8), lpad(c10, c10, c8) from t1; ++------+------+--------------------+--------------------+ +| c10 | c8 | rpad(c10, c10, c8) | lpad(c10, c10, c8) | ++------+------+--------------------+--------------------+ +| 2 | 2 | 22 | 22 | ++------+------+--------------------+--------------------+ +select c10, c8, pad(c10, c10, c8) from t1; ++------+------+-------------------+ +| c10 | c8 | pad(c10, c10, c8) | ++------+------+-------------------+ +| 2 | 2 | 22 | ++------+------+-------------------+ +select c10, c9, rpad(c10, c10, c9), lpad(c10, c10, c9) from t1; ++------+------+--------------------+--------------------+ +| c10 | c9 | rpad(c10, c10, c9) | lpad(c10, c10, c9) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c10, c9, pad(c10, c10, c9) from t1; ++------+------+-------------------+ +| c10 | c9 | pad(c10, c10, c9) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c10, c10, rpad(c10, c10, c10), lpad(c10, c10, c10) from t1; ++------+------+---------------------+---------------------+ +| c10 | c10 | rpad(c10, c10, c10) | lpad(c10, c10, c10) | ++------+------+---------------------+---------------------+ +| 2 | 2 | 22 | 22 | ++------+------+---------------------+---------------------+ +select c10, c10, pad(c10, c10, c10) from t1; ++------+------+--------------------+ +| c10 | c10 | pad(c10, c10, c10) | ++------+------+--------------------+ +| 2 | 2 | 22 | ++------+------+--------------------+ +select c10, c11, rpad(c10, c10, c11), lpad(c10, c10, c11) from t1; ++------+------+---------------------+---------------------+ +| c10 | c11 | rpad(c10, c10, c11) | lpad(c10, c10, c11) | ++------+------+---------------------+---------------------+ +| 2 | 1 | 21 | 12 | ++------+------+---------------------+---------------------+ +select c10, c11, pad(c10, c10, c11) from t1; ++------+------+--------------------+ +| c10 | c11 | pad(c10, c10, c11) | ++------+------+--------------------+ +| 2 | 1 | 2 | ++------+------+--------------------+ +select c10, c12, rpad(c10, c10, c12), lpad(c10, c10, c12) from t1; ++------+------+---------------------+---------------------+ +| c10 | c12 | rpad(c10, c10, c12) | lpad(c10, c10, c12) | ++------+------+---------------------+---------------------+ +| 2 | 2 | 22 | 22 | ++------+------+---------------------+---------------------+ +select c10, c12, pad(c10, c10, c12) from t1; ++------+------+--------------------+ +| c10 | c12 | pad(c10, c10, c12) | ++------+------+--------------------+ +| 2 | 2 | 22 | ++------+------+--------------------+ +select c10, c13, rpad(c10, c10, c13), lpad(c10, c10, c13) from t1; ++------+------+---------------------+---------------------+ +| c10 | c13 | rpad(c10, c10, c13) | lpad(c10, c10, c13) | ++------+------+---------------------+---------------------+ +| 2 | 3.5 | 23 | 32 | ++------+------+---------------------+---------------------+ +select c10, c13, pad(c10, c10, c13) from t1; ++------+------+--------------------+ +| c10 | c13 | pad(c10, c10, c13) | ++------+------+--------------------+ +| 2 | 3.5 | 2222 | ++------+------+--------------------+ +select c10, c14, rpad(c10, c10, c14), lpad(c10, c10, c14) from t1; ++------+------+---------------------+---------------------+ +| c10 | c14 | rpad(c10, c10, c14) | lpad(c10, c10, c14) | ++------+------+---------------------+---------------------+ +| 2 | 4.5 | 24 | 42 | ++------+------+---------------------+---------------------+ +select c10, c14, pad(c10, c10, c14) from t1; ++------+------+--------------------+ +| c10 | c14 | pad(c10, c10, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 2222 | ++------+------+--------------------+ +select c10, c15, rpad(c10, c10, c15), lpad(c10, c10, c15) from t1; ++------+------+---------------------+---------------------+ +| c10 | c15 | rpad(c10, c10, c15) | lpad(c10, c10, c15) | ++------+------+---------------------+---------------------+ +| 2 | 5.5 | 25 | 52 | ++------+------+---------------------+---------------------+ +select c10, c15, pad(c10, c10, c15) from t1; ++------+------+--------------------+ +| c10 | c15 | pad(c10, c10, c15) | ++------+------+--------------------+ +| 2 | 5.5 | 222222 | ++------+------+--------------------+ +select c10, c16, rpad(c10, c10, c16), lpad(c10, c10, c16) from t1; ++------+------+---------------------+---------------------+ +| c10 | c16 | rpad(c10, c10, c16) | lpad(c10, c10, c16) | ++------+------+---------------------+---------------------+ +| 2 | 6.5 | 26 | 62 | ++------+------+---------------------+---------------------+ +select c10, c16, pad(c10, c10, c16) from t1; ++------+------+--------------------+ +| c10 | c16 | pad(c10, c10, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 222222 | ++------+------+--------------------+ +select c10, c17, rpad(c10, c10, c17), lpad(c10, c10, c17) from t1; ++------+------+---------------------+---------------------+ +| c10 | c17 | rpad(c10, c10, c17) | lpad(c10, c10, c17) | ++------+------+---------------------+---------------------+ +| 2 | 8 | 28 | 82 | ++------+------+---------------------+---------------------+ +select c10, c17, pad(c10, c10, c17) from t1; ++------+------+--------------------+ +| c10 | c17 | pad(c10, c10, c17) | ++------+------+--------------------+ +| 2 | 8 | 22222222 | ++------+------+--------------------+ +select c10, c18, rpad(c10, c10, c18), lpad(c10, c10, c18) from t1; ++------+------+---------------------+---------------------+ +| c10 | c18 | rpad(c10, c10, c18) | lpad(c10, c10, c18) | ++------+------+---------------------+---------------------+ +| 2 | 9 | 29 | 92 | ++------+------+---------------------+---------------------+ +select c10, c18, pad(c10, c10, c18) from t1; ++------+------+--------------------+ +| c10 | c18 | pad(c10, c10, c18) | ++------+------+--------------------+ +| 2 | 9 | 222222222 | ++------+------+--------------------+ +select c10, c19, rpad(c10, c10, c19), lpad(c10, c10, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c10 | c19 | rpad(c10, c10, c19) | lpad(c10, c10, c19) | ++------+---------------------+---------------------+---------------------+ +| 2 | 2019-12-01 12:00:00 | 22 | 22 | ++------+---------------------+---------------------+---------------------+ +select c10, c19, pad(c10, c10, c19) from t1; ++------+---------------------+--------------------+ +| c10 | c19 | pad(c10, c10, c19) | ++------+---------------------+--------------------+ +| 2 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c10, c20, rpad(c10, c10, c20), lpad(c10, c10, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c10 | c20 | rpad(c10, c10, c20) | lpad(c10, c10, c20) | ++------+---------------------+---------------------+---------------------+ +| 2 | 2019-12-03 06:00:00 | 22 | 22 | ++------+---------------------+---------------------+---------------------+ +select c10, c20, pad(c10, c10, c20) from t1; ++------+---------------------+--------------------+ +| c10 | c20 | pad(c10, c10, c20) | ++------+---------------------+--------------------+ +| 2 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c10, c21, rpad(c10, c10, c21), lpad(c10, c10, c21) from t1; ++------+------+---------------------+---------------------+ +| c10 | c21 | rpad(c10, c10, c21) | lpad(c10, c10, c21) | ++------+------+---------------------+---------------------+ +| 2 | 9.5 | 29 | 92 | ++------+------+---------------------+---------------------+ +select c10, c21, pad(c10, c10, c21) from t1; ++------+------+--------------------+ +| c10 | c21 | pad(c10, c10, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 2222222222 | ++------+------+--------------------+ +select c10, c22, rpad(c10, c10, c22), lpad(c10, c10, c22) from t1; ++------+------+---------------------+---------------------+ +| c10 | c22 | rpad(c10, c10, c22) | lpad(c10, c10, c22) | ++------+------+---------------------+---------------------+ +| 2 | 10.5 | 21 | 12 | ++------+------+---------------------+---------------------+ +select c10, c22, pad(c10, c10, c22) from t1; ++------+------+--------------------+ +| c10 | c22 | pad(c10, c10, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 22222222222 | ++------+------+--------------------+ +select c11, c1, rpad(c11, c11, c1), lpad(c11, c11, c1) from t1; ++------+------+--------------------+--------------------+ +| c11 | c1 | rpad(c11, c11, c1) | lpad(c11, c11, c1) | ++------+------+--------------------+--------------------+ +| 1 | 1 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c1, pad(c11, c11, c1) from t1; ++------+------+-------------------+ +| c11 | c1 | pad(c11, c11, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | ++------+------+-------------------+ +select c11, c2, rpad(c11, c11, c2), lpad(c11, c11, c2) from t1; ++------+------+--------------------+--------------------+ +| c11 | c2 | rpad(c11, c11, c2) | lpad(c11, c11, c2) | ++------+------+--------------------+--------------------+ +| 1 | 2 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c2, pad(c11, c11, c2) from t1; ++------+------+-------------------+ +| c11 | c2 | pad(c11, c11, c2) | ++------+------+-------------------+ +| 1 | 2 | 11 | ++------+------+-------------------+ +select c11, c3, rpad(c11, c11, c3), lpad(c11, c11, c3) from t1; ++------+------+--------------------+--------------------+ +| c11 | c3 | rpad(c11, c11, c3) | lpad(c11, c11, c3) | ++------+------+--------------------+--------------------+ +| 1 | 1 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c3, pad(c11, c11, c3) from t1; ++------+------+-------------------+ +| c11 | c3 | pad(c11, c11, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | ++------+------+-------------------+ +select c11, c4, rpad(c11, c11, c4), lpad(c11, c11, c4) from t1; ++------+------+--------------------+--------------------+ +| c11 | c4 | rpad(c11, c11, c4) | lpad(c11, c11, c4) | ++------+------+--------------------+--------------------+ +| 1 | 2 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c4, pad(c11, c11, c4) from t1; ++------+------+-------------------+ +| c11 | c4 | pad(c11, c11, c4) | ++------+------+-------------------+ +| 1 | 2 | 11 | ++------+------+-------------------+ +select c11, c5, rpad(c11, c11, c5), lpad(c11, c11, c5) from t1; ++------+------+--------------------+--------------------+ +| c11 | c5 | rpad(c11, c11, c5) | lpad(c11, c11, c5) | ++------+------+--------------------+--------------------+ +| 1 | 1 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c5, pad(c11, c11, c5) from t1; ++------+------+-------------------+ +| c11 | c5 | pad(c11, c11, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | ++------+------+-------------------+ +select c11, c6, rpad(c11, c11, c6), lpad(c11, c11, c6) from t1; ++------+------+--------------------+--------------------+ +| c11 | c6 | rpad(c11, c11, c6) | lpad(c11, c11, c6) | ++------+------+--------------------+--------------------+ +| 1 | 2 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c6, pad(c11, c11, c6) from t1; ++------+------+-------------------+ +| c11 | c6 | pad(c11, c11, c6) | ++------+------+-------------------+ +| 1 | 2 | 11 | ++------+------+-------------------+ +select c11, c7, rpad(c11, c11, c7), lpad(c11, c11, c7) from t1; ++------+------+--------------------+--------------------+ +| c11 | c7 | rpad(c11, c11, c7) | lpad(c11, c11, c7) | ++------+------+--------------------+--------------------+ +| 1 | 1 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c7, pad(c11, c11, c7) from t1; ++------+------+-------------------+ +| c11 | c7 | pad(c11, c11, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | ++------+------+-------------------+ +select c11, c8, rpad(c11, c11, c8), lpad(c11, c11, c8) from t1; ++------+------+--------------------+--------------------+ +| c11 | c8 | rpad(c11, c11, c8) | lpad(c11, c11, c8) | ++------+------+--------------------+--------------------+ +| 1 | 2 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c8, pad(c11, c11, c8) from t1; ++------+------+-------------------+ +| c11 | c8 | pad(c11, c11, c8) | ++------+------+-------------------+ +| 1 | 2 | 11 | ++------+------+-------------------+ +select c11, c9, rpad(c11, c11, c9), lpad(c11, c11, c9) from t1; ++------+------+--------------------+--------------------+ +| c11 | c9 | rpad(c11, c11, c9) | lpad(c11, c11, c9) | ++------+------+--------------------+--------------------+ +| 1 | 1 | 1 | 1 | ++------+------+--------------------+--------------------+ +select c11, c9, pad(c11, c11, c9) from t1; ++------+------+-------------------+ +| c11 | c9 | pad(c11, c11, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | ++------+------+-------------------+ +select c11, c10, rpad(c11, c11, c10), lpad(c11, c11, c10) from t1; ++------+------+---------------------+---------------------+ +| c11 | c10 | rpad(c11, c11, c10) | lpad(c11, c11, c10) | ++------+------+---------------------+---------------------+ +| 1 | 2 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c10, pad(c11, c11, c10) from t1; ++------+------+--------------------+ +| c11 | c10 | pad(c11, c11, c10) | ++------+------+--------------------+ +| 1 | 2 | 11 | ++------+------+--------------------+ +select c11, c11, rpad(c11, c11, c11), lpad(c11, c11, c11) from t1; ++------+------+---------------------+---------------------+ +| c11 | c11 | rpad(c11, c11, c11) | lpad(c11, c11, c11) | ++------+------+---------------------+---------------------+ +| 1 | 1 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c11, pad(c11, c11, c11) from t1; ++------+------+--------------------+ +| c11 | c11 | pad(c11, c11, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | ++------+------+--------------------+ +select c11, c12, rpad(c11, c11, c12), lpad(c11, c11, c12) from t1; ++------+------+---------------------+---------------------+ +| c11 | c12 | rpad(c11, c11, c12) | lpad(c11, c11, c12) | ++------+------+---------------------+---------------------+ +| 1 | 2 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c12, pad(c11, c11, c12) from t1; ++------+------+--------------------+ +| c11 | c12 | pad(c11, c11, c12) | ++------+------+--------------------+ +| 1 | 2 | 11 | ++------+------+--------------------+ +select c11, c13, rpad(c11, c11, c13), lpad(c11, c11, c13) from t1; ++------+------+---------------------+---------------------+ +| c11 | c13 | rpad(c11, c11, c13) | lpad(c11, c11, c13) | ++------+------+---------------------+---------------------+ +| 1 | 3.5 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c13, pad(c11, c11, c13) from t1; ++------+------+--------------------+ +| c11 | c13 | pad(c11, c11, c13) | ++------+------+--------------------+ +| 1 | 3.5 | 1111 | ++------+------+--------------------+ +select c11, c14, rpad(c11, c11, c14), lpad(c11, c11, c14) from t1; ++------+------+---------------------+---------------------+ +| c11 | c14 | rpad(c11, c11, c14) | lpad(c11, c11, c14) | ++------+------+---------------------+---------------------+ +| 1 | 4.5 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c14, pad(c11, c11, c14) from t1; ++------+------+--------------------+ +| c11 | c14 | pad(c11, c11, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 1111 | ++------+------+--------------------+ +select c11, c15, rpad(c11, c11, c15), lpad(c11, c11, c15) from t1; ++------+------+---------------------+---------------------+ +| c11 | c15 | rpad(c11, c11, c15) | lpad(c11, c11, c15) | ++------+------+---------------------+---------------------+ +| 1 | 5.5 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c15, pad(c11, c11, c15) from t1; ++------+------+--------------------+ +| c11 | c15 | pad(c11, c11, c15) | ++------+------+--------------------+ +| 1 | 5.5 | 111111 | ++------+------+--------------------+ +select c11, c16, rpad(c11, c11, c16), lpad(c11, c11, c16) from t1; ++------+------+---------------------+---------------------+ +| c11 | c16 | rpad(c11, c11, c16) | lpad(c11, c11, c16) | ++------+------+---------------------+---------------------+ +| 1 | 6.5 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c16, pad(c11, c11, c16) from t1; ++------+------+--------------------+ +| c11 | c16 | pad(c11, c11, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 111111 | ++------+------+--------------------+ +select c11, c17, rpad(c11, c11, c17), lpad(c11, c11, c17) from t1; ++------+------+---------------------+---------------------+ +| c11 | c17 | rpad(c11, c11, c17) | lpad(c11, c11, c17) | ++------+------+---------------------+---------------------+ +| 1 | 8 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c17, pad(c11, c11, c17) from t1; ++------+------+--------------------+ +| c11 | c17 | pad(c11, c11, c17) | ++------+------+--------------------+ +| 1 | 8 | 11111111 | ++------+------+--------------------+ +select c11, c18, rpad(c11, c11, c18), lpad(c11, c11, c18) from t1; ++------+------+---------------------+---------------------+ +| c11 | c18 | rpad(c11, c11, c18) | lpad(c11, c11, c18) | ++------+------+---------------------+---------------------+ +| 1 | 9 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c18, pad(c11, c11, c18) from t1; ++------+------+--------------------+ +| c11 | c18 | pad(c11, c11, c18) | ++------+------+--------------------+ +| 1 | 9 | 111111111 | ++------+------+--------------------+ +select c11, c19, rpad(c11, c11, c19), lpad(c11, c11, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c11 | c19 | rpad(c11, c11, c19) | lpad(c11, c11, c19) | ++------+---------------------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | 1 | ++------+---------------------+---------------------+---------------------+ +select c11, c19, pad(c11, c11, c19) from t1; ++------+---------------------+--------------------+ +| c11 | c19 | pad(c11, c11, c19) | ++------+---------------------+--------------------+ +| 1 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c11, c20, rpad(c11, c11, c20), lpad(c11, c11, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c11 | c20 | rpad(c11, c11, c20) | lpad(c11, c11, c20) | ++------+---------------------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | 1 | ++------+---------------------+---------------------+---------------------+ +select c11, c20, pad(c11, c11, c20) from t1; ++------+---------------------+--------------------+ +| c11 | c20 | pad(c11, c11, c20) | ++------+---------------------+--------------------+ +| 1 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c11, c21, rpad(c11, c11, c21), lpad(c11, c11, c21) from t1; ++------+------+---------------------+---------------------+ +| c11 | c21 | rpad(c11, c11, c21) | lpad(c11, c11, c21) | ++------+------+---------------------+---------------------+ +| 1 | 9.5 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c21, pad(c11, c11, c21) from t1; ++------+------+--------------------+ +| c11 | c21 | pad(c11, c11, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 1111111111 | ++------+------+--------------------+ +select c11, c22, rpad(c11, c11, c22), lpad(c11, c11, c22) from t1; ++------+------+---------------------+---------------------+ +| c11 | c22 | rpad(c11, c11, c22) | lpad(c11, c11, c22) | ++------+------+---------------------+---------------------+ +| 1 | 10.5 | 1 | 1 | ++------+------+---------------------+---------------------+ +select c11, c22, pad(c11, c11, c22) from t1; ++------+------+--------------------+ +| c11 | c22 | pad(c11, c11, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 11111111111 | ++------+------+--------------------+ +select c12, c1, rpad(c12, c12, c1), lpad(c12, c12, c1) from t1; ++------+------+--------------------+--------------------+ +| c12 | c1 | rpad(c12, c12, c1) | lpad(c12, c12, c1) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c12, c1, pad(c12, c12, c1) from t1; ++------+------+-------------------+ +| c12 | c1 | pad(c12, c12, c1) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c12, c2, rpad(c12, c12, c2), lpad(c12, c12, c2) from t1; ++------+------+--------------------+--------------------+ +| c12 | c2 | rpad(c12, c12, c2) | lpad(c12, c12, c2) | ++------+------+--------------------+--------------------+ +| 2 | 2 | 22 | 22 | ++------+------+--------------------+--------------------+ +select c12, c2, pad(c12, c12, c2) from t1; ++------+------+-------------------+ +| c12 | c2 | pad(c12, c12, c2) | ++------+------+-------------------+ +| 2 | 2 | 22 | ++------+------+-------------------+ +select c12, c3, rpad(c12, c12, c3), lpad(c12, c12, c3) from t1; ++------+------+--------------------+--------------------+ +| c12 | c3 | rpad(c12, c12, c3) | lpad(c12, c12, c3) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c12, c3, pad(c12, c12, c3) from t1; ++------+------+-------------------+ +| c12 | c3 | pad(c12, c12, c3) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c12, c4, rpad(c12, c12, c4), lpad(c12, c12, c4) from t1; ++------+------+--------------------+--------------------+ +| c12 | c4 | rpad(c12, c12, c4) | lpad(c12, c12, c4) | ++------+------+--------------------+--------------------+ +| 2 | 2 | 22 | 22 | ++------+------+--------------------+--------------------+ +select c12, c4, pad(c12, c12, c4) from t1; ++------+------+-------------------+ +| c12 | c4 | pad(c12, c12, c4) | ++------+------+-------------------+ +| 2 | 2 | 22 | ++------+------+-------------------+ +select c12, c5, rpad(c12, c12, c5), lpad(c12, c12, c5) from t1; ++------+------+--------------------+--------------------+ +| c12 | c5 | rpad(c12, c12, c5) | lpad(c12, c12, c5) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c12, c5, pad(c12, c12, c5) from t1; ++------+------+-------------------+ +| c12 | c5 | pad(c12, c12, c5) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c12, c6, rpad(c12, c12, c6), lpad(c12, c12, c6) from t1; ++------+------+--------------------+--------------------+ +| c12 | c6 | rpad(c12, c12, c6) | lpad(c12, c12, c6) | ++------+------+--------------------+--------------------+ +| 2 | 2 | 22 | 22 | ++------+------+--------------------+--------------------+ +select c12, c6, pad(c12, c12, c6) from t1; ++------+------+-------------------+ +| c12 | c6 | pad(c12, c12, c6) | ++------+------+-------------------+ +| 2 | 2 | 22 | ++------+------+-------------------+ +select c12, c7, rpad(c12, c12, c7), lpad(c12, c12, c7) from t1; ++------+------+--------------------+--------------------+ +| c12 | c7 | rpad(c12, c12, c7) | lpad(c12, c12, c7) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c12, c7, pad(c12, c12, c7) from t1; ++------+------+-------------------+ +| c12 | c7 | pad(c12, c12, c7) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c12, c8, rpad(c12, c12, c8), lpad(c12, c12, c8) from t1; ++------+------+--------------------+--------------------+ +| c12 | c8 | rpad(c12, c12, c8) | lpad(c12, c12, c8) | ++------+------+--------------------+--------------------+ +| 2 | 2 | 22 | 22 | ++------+------+--------------------+--------------------+ +select c12, c8, pad(c12, c12, c8) from t1; ++------+------+-------------------+ +| c12 | c8 | pad(c12, c12, c8) | ++------+------+-------------------+ +| 2 | 2 | 22 | ++------+------+-------------------+ +select c12, c9, rpad(c12, c12, c9), lpad(c12, c12, c9) from t1; ++------+------+--------------------+--------------------+ +| c12 | c9 | rpad(c12, c12, c9) | lpad(c12, c12, c9) | ++------+------+--------------------+--------------------+ +| 2 | 1 | 21 | 12 | ++------+------+--------------------+--------------------+ +select c12, c9, pad(c12, c12, c9) from t1; ++------+------+-------------------+ +| c12 | c9 | pad(c12, c12, c9) | ++------+------+-------------------+ +| 2 | 1 | 2 | ++------+------+-------------------+ +select c12, c10, rpad(c12, c12, c10), lpad(c12, c12, c10) from t1; ++------+------+---------------------+---------------------+ +| c12 | c10 | rpad(c12, c12, c10) | lpad(c12, c12, c10) | ++------+------+---------------------+---------------------+ +| 2 | 2 | 22 | 22 | ++------+------+---------------------+---------------------+ +select c12, c10, pad(c12, c12, c10) from t1; ++------+------+--------------------+ +| c12 | c10 | pad(c12, c12, c10) | ++------+------+--------------------+ +| 2 | 2 | 22 | ++------+------+--------------------+ +select c12, c11, rpad(c12, c12, c11), lpad(c12, c12, c11) from t1; ++------+------+---------------------+---------------------+ +| c12 | c11 | rpad(c12, c12, c11) | lpad(c12, c12, c11) | ++------+------+---------------------+---------------------+ +| 2 | 1 | 21 | 12 | ++------+------+---------------------+---------------------+ +select c12, c11, pad(c12, c12, c11) from t1; ++------+------+--------------------+ +| c12 | c11 | pad(c12, c12, c11) | ++------+------+--------------------+ +| 2 | 1 | 2 | ++------+------+--------------------+ +select c12, c12, rpad(c12, c12, c12), lpad(c12, c12, c12) from t1; ++------+------+---------------------+---------------------+ +| c12 | c12 | rpad(c12, c12, c12) | lpad(c12, c12, c12) | ++------+------+---------------------+---------------------+ +| 2 | 2 | 22 | 22 | ++------+------+---------------------+---------------------+ +select c12, c12, pad(c12, c12, c12) from t1; ++------+------+--------------------+ +| c12 | c12 | pad(c12, c12, c12) | ++------+------+--------------------+ +| 2 | 2 | 22 | ++------+------+--------------------+ +select c12, c13, rpad(c12, c12, c13), lpad(c12, c12, c13) from t1; ++------+------+---------------------+---------------------+ +| c12 | c13 | rpad(c12, c12, c13) | lpad(c12, c12, c13) | ++------+------+---------------------+---------------------+ +| 2 | 3.5 | 23 | 32 | ++------+------+---------------------+---------------------+ +select c12, c13, pad(c12, c12, c13) from t1; ++------+------+--------------------+ +| c12 | c13 | pad(c12, c12, c13) | ++------+------+--------------------+ +| 2 | 3.5 | 2222 | ++------+------+--------------------+ +select c12, c14, rpad(c12, c12, c14), lpad(c12, c12, c14) from t1; ++------+------+---------------------+---------------------+ +| c12 | c14 | rpad(c12, c12, c14) | lpad(c12, c12, c14) | ++------+------+---------------------+---------------------+ +| 2 | 4.5 | 24 | 42 | ++------+------+---------------------+---------------------+ +select c12, c14, pad(c12, c12, c14) from t1; ++------+------+--------------------+ +| c12 | c14 | pad(c12, c12, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 2222 | ++------+------+--------------------+ +select c12, c15, rpad(c12, c12, c15), lpad(c12, c12, c15) from t1; ++------+------+---------------------+---------------------+ +| c12 | c15 | rpad(c12, c12, c15) | lpad(c12, c12, c15) | ++------+------+---------------------+---------------------+ +| 2 | 5.5 | 25 | 52 | ++------+------+---------------------+---------------------+ +select c12, c15, pad(c12, c12, c15) from t1; ++------+------+--------------------+ +| c12 | c15 | pad(c12, c12, c15) | ++------+------+--------------------+ +| 2 | 5.5 | 222222 | ++------+------+--------------------+ +select c12, c16, rpad(c12, c12, c16), lpad(c12, c12, c16) from t1; ++------+------+---------------------+---------------------+ +| c12 | c16 | rpad(c12, c12, c16) | lpad(c12, c12, c16) | ++------+------+---------------------+---------------------+ +| 2 | 6.5 | 26 | 62 | ++------+------+---------------------+---------------------+ +select c12, c16, pad(c12, c12, c16) from t1; ++------+------+--------------------+ +| c12 | c16 | pad(c12, c12, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 222222 | ++------+------+--------------------+ +select c12, c17, rpad(c12, c12, c17), lpad(c12, c12, c17) from t1; ++------+------+---------------------+---------------------+ +| c12 | c17 | rpad(c12, c12, c17) | lpad(c12, c12, c17) | ++------+------+---------------------+---------------------+ +| 2 | 8 | 28 | 82 | ++------+------+---------------------+---------------------+ +select c12, c17, pad(c12, c12, c17) from t1; ++------+------+--------------------+ +| c12 | c17 | pad(c12, c12, c17) | ++------+------+--------------------+ +| 2 | 8 | 22222222 | ++------+------+--------------------+ +select c12, c18, rpad(c12, c12, c18), lpad(c12, c12, c18) from t1; ++------+------+---------------------+---------------------+ +| c12 | c18 | rpad(c12, c12, c18) | lpad(c12, c12, c18) | ++------+------+---------------------+---------------------+ +| 2 | 9 | 29 | 92 | ++------+------+---------------------+---------------------+ +select c12, c18, pad(c12, c12, c18) from t1; ++------+------+--------------------+ +| c12 | c18 | pad(c12, c12, c18) | ++------+------+--------------------+ +| 2 | 9 | 222222222 | ++------+------+--------------------+ +select c12, c19, rpad(c12, c12, c19), lpad(c12, c12, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c12 | c19 | rpad(c12, c12, c19) | lpad(c12, c12, c19) | ++------+---------------------+---------------------+---------------------+ +| 2 | 2019-12-01 12:00:00 | 22 | 22 | ++------+---------------------+---------------------+---------------------+ +select c12, c19, pad(c12, c12, c19) from t1; ++------+---------------------+--------------------+ +| c12 | c19 | pad(c12, c12, c19) | ++------+---------------------+--------------------+ +| 2 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c12, c20, rpad(c12, c12, c20), lpad(c12, c12, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c12 | c20 | rpad(c12, c12, c20) | lpad(c12, c12, c20) | ++------+---------------------+---------------------+---------------------+ +| 2 | 2019-12-03 06:00:00 | 22 | 22 | ++------+---------------------+---------------------+---------------------+ +select c12, c20, pad(c12, c12, c20) from t1; ++------+---------------------+--------------------+ +| c12 | c20 | pad(c12, c12, c20) | ++------+---------------------+--------------------+ +| 2 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c12, c21, rpad(c12, c12, c21), lpad(c12, c12, c21) from t1; ++------+------+---------------------+---------------------+ +| c12 | c21 | rpad(c12, c12, c21) | lpad(c12, c12, c21) | ++------+------+---------------------+---------------------+ +| 2 | 9.5 | 29 | 92 | ++------+------+---------------------+---------------------+ +select c12, c21, pad(c12, c12, c21) from t1; ++------+------+--------------------+ +| c12 | c21 | pad(c12, c12, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 2222222222 | ++------+------+--------------------+ +select c12, c22, rpad(c12, c12, c22), lpad(c12, c12, c22) from t1; ++------+------+---------------------+---------------------+ +| c12 | c22 | rpad(c12, c12, c22) | lpad(c12, c12, c22) | ++------+------+---------------------+---------------------+ +| 2 | 10.5 | 21 | 12 | ++------+------+---------------------+---------------------+ +select c12, c22, pad(c12, c12, c22) from t1; ++------+------+--------------------+ +| c12 | c22 | pad(c12, c12, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 22222222222 | ++------+------+--------------------+ +select c13, c1, rpad(c13, c13, c1), lpad(c13, c13, c1) from t1; ++------+------+--------------------+--------------------+ +| c13 | c1 | rpad(c13, c13, c1) | lpad(c13, c13, c1) | ++------+------+--------------------+--------------------+ +| 3.5 | 1 | 3.51 | 13.5 | ++------+------+--------------------+--------------------+ +select c13, c1, pad(c13, c13, c1) from t1; ++------+------+-------------------+ +| c13 | c1 | pad(c13, c13, c1) | ++------+------+-------------------+ +| 3.5 | 1 | 3.5 | ++------+------+-------------------+ +select c13, c2, rpad(c13, c13, c2), lpad(c13, c13, c2) from t1; ++------+------+--------------------+--------------------+ +| c13 | c2 | rpad(c13, c13, c2) | lpad(c13, c13, c2) | ++------+------+--------------------+--------------------+ +| 3.5 | 2 | 3.52 | 23.5 | ++------+------+--------------------+--------------------+ +select c13, c2, pad(c13, c13, c2) from t1; ++------+------+-------------------+ +| c13 | c2 | pad(c13, c13, c2) | ++------+------+-------------------+ +| 3.5 | 2 | 3.5 | ++------+------+-------------------+ +select c13, c3, rpad(c13, c13, c3), lpad(c13, c13, c3) from t1; ++------+------+--------------------+--------------------+ +| c13 | c3 | rpad(c13, c13, c3) | lpad(c13, c13, c3) | ++------+------+--------------------+--------------------+ +| 3.5 | 1 | 3.51 | 13.5 | ++------+------+--------------------+--------------------+ +select c13, c3, pad(c13, c13, c3) from t1; ++------+------+-------------------+ +| c13 | c3 | pad(c13, c13, c3) | ++------+------+-------------------+ +| 3.5 | 1 | 3.5 | ++------+------+-------------------+ +select c13, c4, rpad(c13, c13, c4), lpad(c13, c13, c4) from t1; ++------+------+--------------------+--------------------+ +| c13 | c4 | rpad(c13, c13, c4) | lpad(c13, c13, c4) | ++------+------+--------------------+--------------------+ +| 3.5 | 2 | 3.52 | 23.5 | ++------+------+--------------------+--------------------+ +select c13, c4, pad(c13, c13, c4) from t1; ++------+------+-------------------+ +| c13 | c4 | pad(c13, c13, c4) | ++------+------+-------------------+ +| 3.5 | 2 | 3.5 | ++------+------+-------------------+ +select c13, c5, rpad(c13, c13, c5), lpad(c13, c13, c5) from t1; ++------+------+--------------------+--------------------+ +| c13 | c5 | rpad(c13, c13, c5) | lpad(c13, c13, c5) | ++------+------+--------------------+--------------------+ +| 3.5 | 1 | 3.51 | 13.5 | ++------+------+--------------------+--------------------+ +select c13, c5, pad(c13, c13, c5) from t1; ++------+------+-------------------+ +| c13 | c5 | pad(c13, c13, c5) | ++------+------+-------------------+ +| 3.5 | 1 | 3.5 | ++------+------+-------------------+ +select c13, c6, rpad(c13, c13, c6), lpad(c13, c13, c6) from t1; ++------+------+--------------------+--------------------+ +| c13 | c6 | rpad(c13, c13, c6) | lpad(c13, c13, c6) | ++------+------+--------------------+--------------------+ +| 3.5 | 2 | 3.52 | 23.5 | ++------+------+--------------------+--------------------+ +select c13, c6, pad(c13, c13, c6) from t1; ++------+------+-------------------+ +| c13 | c6 | pad(c13, c13, c6) | ++------+------+-------------------+ +| 3.5 | 2 | 3.5 | ++------+------+-------------------+ +select c13, c7, rpad(c13, c13, c7), lpad(c13, c13, c7) from t1; ++------+------+--------------------+--------------------+ +| c13 | c7 | rpad(c13, c13, c7) | lpad(c13, c13, c7) | ++------+------+--------------------+--------------------+ +| 3.5 | 1 | 3.51 | 13.5 | ++------+------+--------------------+--------------------+ +select c13, c7, pad(c13, c13, c7) from t1; ++------+------+-------------------+ +| c13 | c7 | pad(c13, c13, c7) | ++------+------+-------------------+ +| 3.5 | 1 | 3.5 | ++------+------+-------------------+ +select c13, c8, rpad(c13, c13, c8), lpad(c13, c13, c8) from t1; ++------+------+--------------------+--------------------+ +| c13 | c8 | rpad(c13, c13, c8) | lpad(c13, c13, c8) | ++------+------+--------------------+--------------------+ +| 3.5 | 2 | 3.52 | 23.5 | ++------+------+--------------------+--------------------+ +select c13, c8, pad(c13, c13, c8) from t1; ++------+------+-------------------+ +| c13 | c8 | pad(c13, c13, c8) | ++------+------+-------------------+ +| 3.5 | 2 | 3.5 | ++------+------+-------------------+ +select c13, c9, rpad(c13, c13, c9), lpad(c13, c13, c9) from t1; ++------+------+--------------------+--------------------+ +| c13 | c9 | rpad(c13, c13, c9) | lpad(c13, c13, c9) | ++------+------+--------------------+--------------------+ +| 3.5 | 1 | 3.51 | 13.5 | ++------+------+--------------------+--------------------+ +select c13, c9, pad(c13, c13, c9) from t1; ++------+------+-------------------+ +| c13 | c9 | pad(c13, c13, c9) | ++------+------+-------------------+ +| 3.5 | 1 | 3.5 | ++------+------+-------------------+ +select c13, c10, rpad(c13, c13, c10), lpad(c13, c13, c10) from t1; ++------+------+---------------------+---------------------+ +| c13 | c10 | rpad(c13, c13, c10) | lpad(c13, c13, c10) | ++------+------+---------------------+---------------------+ +| 3.5 | 2 | 3.52 | 23.5 | ++------+------+---------------------+---------------------+ +select c13, c10, pad(c13, c13, c10) from t1; ++------+------+--------------------+ +| c13 | c10 | pad(c13, c13, c10) | ++------+------+--------------------+ +| 3.5 | 2 | 3.5 | ++------+------+--------------------+ +select c13, c11, rpad(c13, c13, c11), lpad(c13, c13, c11) from t1; ++------+------+---------------------+---------------------+ +| c13 | c11 | rpad(c13, c13, c11) | lpad(c13, c13, c11) | ++------+------+---------------------+---------------------+ +| 3.5 | 1 | 3.51 | 13.5 | ++------+------+---------------------+---------------------+ +select c13, c11, pad(c13, c13, c11) from t1; ++------+------+--------------------+ +| c13 | c11 | pad(c13, c13, c11) | ++------+------+--------------------+ +| 3.5 | 1 | 3.5 | ++------+------+--------------------+ +select c13, c12, rpad(c13, c13, c12), lpad(c13, c13, c12) from t1; ++------+------+---------------------+---------------------+ +| c13 | c12 | rpad(c13, c13, c12) | lpad(c13, c13, c12) | ++------+------+---------------------+---------------------+ +| 3.5 | 2 | 3.52 | 23.5 | ++------+------+---------------------+---------------------+ +select c13, c12, pad(c13, c13, c12) from t1; ++------+------+--------------------+ +| c13 | c12 | pad(c13, c13, c12) | ++------+------+--------------------+ +| 3.5 | 2 | 3.5 | ++------+------+--------------------+ +select c13, c13, rpad(c13, c13, c13), lpad(c13, c13, c13) from t1; ++------+------+---------------------+---------------------+ +| c13 | c13 | rpad(c13, c13, c13) | lpad(c13, c13, c13) | ++------+------+---------------------+---------------------+ +| 3.5 | 3.5 | 3.53 | 33.5 | ++------+------+---------------------+---------------------+ +select c13, c13, pad(c13, c13, c13) from t1; ++------+------+--------------------+ +| c13 | c13 | pad(c13, c13, c13) | ++------+------+--------------------+ +| 3.5 | 3.5 | 3.53 | ++------+------+--------------------+ +select c13, c14, rpad(c13, c13, c14), lpad(c13, c13, c14) from t1; ++------+------+---------------------+---------------------+ +| c13 | c14 | rpad(c13, c13, c14) | lpad(c13, c13, c14) | ++------+------+---------------------+---------------------+ +| 3.5 | 4.5 | 3.54 | 43.5 | ++------+------+---------------------+---------------------+ +select c13, c14, pad(c13, c13, c14) from t1; ++------+------+--------------------+ +| c13 | c14 | pad(c13, c13, c14) | ++------+------+--------------------+ +| 3.5 | 4.5 | 3.53 | ++------+------+--------------------+ +select c13, c15, rpad(c13, c13, c15), lpad(c13, c13, c15) from t1; ++------+------+---------------------+---------------------+ +| c13 | c15 | rpad(c13, c13, c15) | lpad(c13, c13, c15) | ++------+------+---------------------+---------------------+ +| 3.5 | 5.5 | 3.55 | 53.5 | ++------+------+---------------------+---------------------+ +select c13, c15, pad(c13, c13, c15) from t1; ++------+------+--------------------+ +| c13 | c15 | pad(c13, c13, c15) | ++------+------+--------------------+ +| 3.5 | 5.5 | 3.53.5 | ++------+------+--------------------+ +select c13, c16, rpad(c13, c13, c16), lpad(c13, c13, c16) from t1; ++------+------+---------------------+---------------------+ +| c13 | c16 | rpad(c13, c13, c16) | lpad(c13, c13, c16) | ++------+------+---------------------+---------------------+ +| 3.5 | 6.5 | 3.56 | 63.5 | ++------+------+---------------------+---------------------+ +select c13, c16, pad(c13, c13, c16) from t1; ++------+------+--------------------+ +| c13 | c16 | pad(c13, c13, c16) | ++------+------+--------------------+ +| 3.5 | 6.5 | 3.53.5 | ++------+------+--------------------+ +select c13, c17, rpad(c13, c13, c17), lpad(c13, c13, c17) from t1; ++------+------+---------------------+---------------------+ +| c13 | c17 | rpad(c13, c13, c17) | lpad(c13, c13, c17) | ++------+------+---------------------+---------------------+ +| 3.5 | 8 | 3.58 | 83.5 | ++------+------+---------------------+---------------------+ +select c13, c17, pad(c13, c13, c17) from t1; ++------+------+--------------------+ +| c13 | c17 | pad(c13, c13, c17) | ++------+------+--------------------+ +| 3.5 | 8 | 3.53.53. | ++------+------+--------------------+ +select c13, c18, rpad(c13, c13, c18), lpad(c13, c13, c18) from t1; ++------+------+---------------------+---------------------+ +| c13 | c18 | rpad(c13, c13, c18) | lpad(c13, c13, c18) | ++------+------+---------------------+---------------------+ +| 3.5 | 9 | 3.59 | 93.5 | ++------+------+---------------------+---------------------+ +select c13, c18, pad(c13, c13, c18) from t1; ++------+------+--------------------+ +| c13 | c18 | pad(c13, c13, c18) | ++------+------+--------------------+ +| 3.5 | 9 | 3.53.53.5 | ++------+------+--------------------+ +select c13, c19, rpad(c13, c13, c19), lpad(c13, c13, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c13 | c19 | rpad(c13, c13, c19) | lpad(c13, c13, c19) | ++------+---------------------+---------------------+---------------------+ +| 3.5 | 2019-12-01 12:00:00 | 3.52 | 23.5 | ++------+---------------------+---------------------+---------------------+ +select c13, c19, pad(c13, c13, c19) from t1; ++------+---------------------+--------------------+ +| c13 | c19 | pad(c13, c13, c19) | ++------+---------------------+--------------------+ +| 3.5 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c13, c20, rpad(c13, c13, c20), lpad(c13, c13, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c13 | c20 | rpad(c13, c13, c20) | lpad(c13, c13, c20) | ++------+---------------------+---------------------+---------------------+ +| 3.5 | 2019-12-03 06:00:00 | 3.52 | 23.5 | ++------+---------------------+---------------------+---------------------+ +select c13, c20, pad(c13, c13, c20) from t1; ++------+---------------------+--------------------+ +| c13 | c20 | pad(c13, c13, c20) | ++------+---------------------+--------------------+ +| 3.5 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c13, c21, rpad(c13, c13, c21), lpad(c13, c13, c21) from t1; ++------+------+---------------------+---------------------+ +| c13 | c21 | rpad(c13, c13, c21) | lpad(c13, c13, c21) | ++------+------+---------------------+---------------------+ +| 3.5 | 9.5 | 3.59 | 93.5 | ++------+------+---------------------+---------------------+ +select c13, c21, pad(c13, c13, c21) from t1; ++------+------+--------------------+ +| c13 | c21 | pad(c13, c13, c21) | ++------+------+--------------------+ +| 3.5 | 9.5 | 3.53.53.53 | ++------+------+--------------------+ +select c13, c22, rpad(c13, c13, c22), lpad(c13, c13, c22) from t1; ++------+------+---------------------+---------------------+ +| c13 | c22 | rpad(c13, c13, c22) | lpad(c13, c13, c22) | ++------+------+---------------------+---------------------+ +| 3.5 | 10.5 | 3.51 | 13.5 | ++------+------+---------------------+---------------------+ +select c13, c22, pad(c13, c13, c22) from t1; ++------+------+--------------------+ +| c13 | c22 | pad(c13, c13, c22) | ++------+------+--------------------+ +| 3.5 | 10.5 | 3.53.53.53. | ++------+------+--------------------+ +select c14, c1, rpad(c14, c14, c1), lpad(c14, c14, c1) from t1; ++------+------+--------------------+--------------------+ +| c14 | c1 | rpad(c14, c14, c1) | lpad(c14, c14, c1) | ++------+------+--------------------+--------------------+ +| 4.5 | 1 | 4.51 | 14.5 | ++------+------+--------------------+--------------------+ +select c14, c1, pad(c14, c14, c1) from t1; ++------+------+-------------------+ +| c14 | c1 | pad(c14, c14, c1) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | ++------+------+-------------------+ +select c14, c2, rpad(c14, c14, c2), lpad(c14, c14, c2) from t1; ++------+------+--------------------+--------------------+ +| c14 | c2 | rpad(c14, c14, c2) | lpad(c14, c14, c2) | ++------+------+--------------------+--------------------+ +| 4.5 | 2 | 4.52 | 24.5 | ++------+------+--------------------+--------------------+ +select c14, c2, pad(c14, c14, c2) from t1; ++------+------+-------------------+ +| c14 | c2 | pad(c14, c14, c2) | ++------+------+-------------------+ +| 4.5 | 2 | 4.5 | ++------+------+-------------------+ +select c14, c3, rpad(c14, c14, c3), lpad(c14, c14, c3) from t1; ++------+------+--------------------+--------------------+ +| c14 | c3 | rpad(c14, c14, c3) | lpad(c14, c14, c3) | ++------+------+--------------------+--------------------+ +| 4.5 | 1 | 4.51 | 14.5 | ++------+------+--------------------+--------------------+ +select c14, c3, pad(c14, c14, c3) from t1; ++------+------+-------------------+ +| c14 | c3 | pad(c14, c14, c3) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | ++------+------+-------------------+ +select c14, c4, rpad(c14, c14, c4), lpad(c14, c14, c4) from t1; ++------+------+--------------------+--------------------+ +| c14 | c4 | rpad(c14, c14, c4) | lpad(c14, c14, c4) | ++------+------+--------------------+--------------------+ +| 4.5 | 2 | 4.52 | 24.5 | ++------+------+--------------------+--------------------+ +select c14, c4, pad(c14, c14, c4) from t1; ++------+------+-------------------+ +| c14 | c4 | pad(c14, c14, c4) | ++------+------+-------------------+ +| 4.5 | 2 | 4.5 | ++------+------+-------------------+ +select c14, c5, rpad(c14, c14, c5), lpad(c14, c14, c5) from t1; ++------+------+--------------------+--------------------+ +| c14 | c5 | rpad(c14, c14, c5) | lpad(c14, c14, c5) | ++------+------+--------------------+--------------------+ +| 4.5 | 1 | 4.51 | 14.5 | ++------+------+--------------------+--------------------+ +select c14, c5, pad(c14, c14, c5) from t1; ++------+------+-------------------+ +| c14 | c5 | pad(c14, c14, c5) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | ++------+------+-------------------+ +select c14, c6, rpad(c14, c14, c6), lpad(c14, c14, c6) from t1; ++------+------+--------------------+--------------------+ +| c14 | c6 | rpad(c14, c14, c6) | lpad(c14, c14, c6) | ++------+------+--------------------+--------------------+ +| 4.5 | 2 | 4.52 | 24.5 | ++------+------+--------------------+--------------------+ +select c14, c6, pad(c14, c14, c6) from t1; ++------+------+-------------------+ +| c14 | c6 | pad(c14, c14, c6) | ++------+------+-------------------+ +| 4.5 | 2 | 4.5 | ++------+------+-------------------+ +select c14, c7, rpad(c14, c14, c7), lpad(c14, c14, c7) from t1; ++------+------+--------------------+--------------------+ +| c14 | c7 | rpad(c14, c14, c7) | lpad(c14, c14, c7) | ++------+------+--------------------+--------------------+ +| 4.5 | 1 | 4.51 | 14.5 | ++------+------+--------------------+--------------------+ +select c14, c7, pad(c14, c14, c7) from t1; ++------+------+-------------------+ +| c14 | c7 | pad(c14, c14, c7) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | ++------+------+-------------------+ +select c14, c8, rpad(c14, c14, c8), lpad(c14, c14, c8) from t1; ++------+------+--------------------+--------------------+ +| c14 | c8 | rpad(c14, c14, c8) | lpad(c14, c14, c8) | ++------+------+--------------------+--------------------+ +| 4.5 | 2 | 4.52 | 24.5 | ++------+------+--------------------+--------------------+ +select c14, c8, pad(c14, c14, c8) from t1; ++------+------+-------------------+ +| c14 | c8 | pad(c14, c14, c8) | ++------+------+-------------------+ +| 4.5 | 2 | 4.5 | ++------+------+-------------------+ +select c14, c9, rpad(c14, c14, c9), lpad(c14, c14, c9) from t1; ++------+------+--------------------+--------------------+ +| c14 | c9 | rpad(c14, c14, c9) | lpad(c14, c14, c9) | ++------+------+--------------------+--------------------+ +| 4.5 | 1 | 4.51 | 14.5 | ++------+------+--------------------+--------------------+ +select c14, c9, pad(c14, c14, c9) from t1; ++------+------+-------------------+ +| c14 | c9 | pad(c14, c14, c9) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | ++------+------+-------------------+ +select c14, c10, rpad(c14, c14, c10), lpad(c14, c14, c10) from t1; ++------+------+---------------------+---------------------+ +| c14 | c10 | rpad(c14, c14, c10) | lpad(c14, c14, c10) | ++------+------+---------------------+---------------------+ +| 4.5 | 2 | 4.52 | 24.5 | ++------+------+---------------------+---------------------+ +select c14, c10, pad(c14, c14, c10) from t1; ++------+------+--------------------+ +| c14 | c10 | pad(c14, c14, c10) | ++------+------+--------------------+ +| 4.5 | 2 | 4.5 | ++------+------+--------------------+ +select c14, c11, rpad(c14, c14, c11), lpad(c14, c14, c11) from t1; ++------+------+---------------------+---------------------+ +| c14 | c11 | rpad(c14, c14, c11) | lpad(c14, c14, c11) | ++------+------+---------------------+---------------------+ +| 4.5 | 1 | 4.51 | 14.5 | ++------+------+---------------------+---------------------+ +select c14, c11, pad(c14, c14, c11) from t1; ++------+------+--------------------+ +| c14 | c11 | pad(c14, c14, c11) | ++------+------+--------------------+ +| 4.5 | 1 | 4.5 | ++------+------+--------------------+ +select c14, c12, rpad(c14, c14, c12), lpad(c14, c14, c12) from t1; ++------+------+---------------------+---------------------+ +| c14 | c12 | rpad(c14, c14, c12) | lpad(c14, c14, c12) | ++------+------+---------------------+---------------------+ +| 4.5 | 2 | 4.52 | 24.5 | ++------+------+---------------------+---------------------+ +select c14, c12, pad(c14, c14, c12) from t1; ++------+------+--------------------+ +| c14 | c12 | pad(c14, c14, c12) | ++------+------+--------------------+ +| 4.5 | 2 | 4.5 | ++------+------+--------------------+ +select c14, c13, rpad(c14, c14, c13), lpad(c14, c14, c13) from t1; ++------+------+---------------------+---------------------+ +| c14 | c13 | rpad(c14, c14, c13) | lpad(c14, c14, c13) | ++------+------+---------------------+---------------------+ +| 4.5 | 3.5 | 4.53 | 34.5 | ++------+------+---------------------+---------------------+ +select c14, c13, pad(c14, c14, c13) from t1; ++------+------+--------------------+ +| c14 | c13 | pad(c14, c14, c13) | ++------+------+--------------------+ +| 4.5 | 3.5 | 4.54 | ++------+------+--------------------+ +select c14, c14, rpad(c14, c14, c14), lpad(c14, c14, c14) from t1; ++------+------+---------------------+---------------------+ +| c14 | c14 | rpad(c14, c14, c14) | lpad(c14, c14, c14) | ++------+------+---------------------+---------------------+ +| 4.5 | 4.5 | 4.54 | 44.5 | ++------+------+---------------------+---------------------+ +select c14, c14, pad(c14, c14, c14) from t1; ++------+------+--------------------+ +| c14 | c14 | pad(c14, c14, c14) | ++------+------+--------------------+ +| 4.5 | 4.5 | 4.54 | ++------+------+--------------------+ +select c14, c15, rpad(c14, c14, c15), lpad(c14, c14, c15) from t1; ++------+------+---------------------+---------------------+ +| c14 | c15 | rpad(c14, c14, c15) | lpad(c14, c14, c15) | ++------+------+---------------------+---------------------+ +| 4.5 | 5.5 | 4.55 | 54.5 | ++------+------+---------------------+---------------------+ +select c14, c15, pad(c14, c14, c15) from t1; ++------+------+--------------------+ +| c14 | c15 | pad(c14, c14, c15) | ++------+------+--------------------+ +| 4.5 | 5.5 | 4.54.5 | ++------+------+--------------------+ +select c14, c16, rpad(c14, c14, c16), lpad(c14, c14, c16) from t1; ++------+------+---------------------+---------------------+ +| c14 | c16 | rpad(c14, c14, c16) | lpad(c14, c14, c16) | ++------+------+---------------------+---------------------+ +| 4.5 | 6.5 | 4.56 | 64.5 | ++------+------+---------------------+---------------------+ +select c14, c16, pad(c14, c14, c16) from t1; ++------+------+--------------------+ +| c14 | c16 | pad(c14, c14, c16) | ++------+------+--------------------+ +| 4.5 | 6.5 | 4.54.5 | ++------+------+--------------------+ +select c14, c17, rpad(c14, c14, c17), lpad(c14, c14, c17) from t1; ++------+------+---------------------+---------------------+ +| c14 | c17 | rpad(c14, c14, c17) | lpad(c14, c14, c17) | ++------+------+---------------------+---------------------+ +| 4.5 | 8 | 4.58 | 84.5 | ++------+------+---------------------+---------------------+ +select c14, c17, pad(c14, c14, c17) from t1; ++------+------+--------------------+ +| c14 | c17 | pad(c14, c14, c17) | ++------+------+--------------------+ +| 4.5 | 8 | 4.54.54. | ++------+------+--------------------+ +select c14, c18, rpad(c14, c14, c18), lpad(c14, c14, c18) from t1; ++------+------+---------------------+---------------------+ +| c14 | c18 | rpad(c14, c14, c18) | lpad(c14, c14, c18) | ++------+------+---------------------+---------------------+ +| 4.5 | 9 | 4.59 | 94.5 | ++------+------+---------------------+---------------------+ +select c14, c18, pad(c14, c14, c18) from t1; ++------+------+--------------------+ +| c14 | c18 | pad(c14, c14, c18) | ++------+------+--------------------+ +| 4.5 | 9 | 4.54.54.5 | ++------+------+--------------------+ +select c14, c19, rpad(c14, c14, c19), lpad(c14, c14, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c14 | c19 | rpad(c14, c14, c19) | lpad(c14, c14, c19) | ++------+---------------------+---------------------+---------------------+ +| 4.5 | 2019-12-01 12:00:00 | 4.52 | 24.5 | ++------+---------------------+---------------------+---------------------+ +select c14, c19, pad(c14, c14, c19) from t1; ++------+---------------------+--------------------+ +| c14 | c19 | pad(c14, c14, c19) | ++------+---------------------+--------------------+ +| 4.5 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c14, c20, rpad(c14, c14, c20), lpad(c14, c14, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c14 | c20 | rpad(c14, c14, c20) | lpad(c14, c14, c20) | ++------+---------------------+---------------------+---------------------+ +| 4.5 | 2019-12-03 06:00:00 | 4.52 | 24.5 | ++------+---------------------+---------------------+---------------------+ +select c14, c20, pad(c14, c14, c20) from t1; ++------+---------------------+--------------------+ +| c14 | c20 | pad(c14, c14, c20) | ++------+---------------------+--------------------+ +| 4.5 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c14, c21, rpad(c14, c14, c21), lpad(c14, c14, c21) from t1; ++------+------+---------------------+---------------------+ +| c14 | c21 | rpad(c14, c14, c21) | lpad(c14, c14, c21) | ++------+------+---------------------+---------------------+ +| 4.5 | 9.5 | 4.59 | 94.5 | ++------+------+---------------------+---------------------+ +select c14, c21, pad(c14, c14, c21) from t1; ++------+------+--------------------+ +| c14 | c21 | pad(c14, c14, c21) | ++------+------+--------------------+ +| 4.5 | 9.5 | 4.54.54.54 | ++------+------+--------------------+ +select c14, c22, rpad(c14, c14, c22), lpad(c14, c14, c22) from t1; ++------+------+---------------------+---------------------+ +| c14 | c22 | rpad(c14, c14, c22) | lpad(c14, c14, c22) | ++------+------+---------------------+---------------------+ +| 4.5 | 10.5 | 4.51 | 14.5 | ++------+------+---------------------+---------------------+ +select c14, c22, pad(c14, c14, c22) from t1; ++------+------+--------------------+ +| c14 | c22 | pad(c14, c14, c22) | ++------+------+--------------------+ +| 4.5 | 10.5 | 4.54.54.54. | ++------+------+--------------------+ +select c15, c1, rpad(c15, c15, c1), lpad(c15, c15, c1) from t1; ++------+------+--------------------+--------------------+ +| c15 | c1 | rpad(c15, c15, c1) | lpad(c15, c15, c1) | ++------+------+--------------------+--------------------+ +| 5.5 | 1 | 5.5111 | 1115.5 | ++------+------+--------------------+--------------------+ +select c15, c1, pad(c15, c15, c1) from t1; ++------+------+-------------------+ +| c15 | c1 | pad(c15, c15, c1) | ++------+------+-------------------+ +| 5.5 | 1 | 5.5 | ++------+------+-------------------+ +select c15, c2, rpad(c15, c15, c2), lpad(c15, c15, c2) from t1; ++------+------+--------------------+--------------------+ +| c15 | c2 | rpad(c15, c15, c2) | lpad(c15, c15, c2) | ++------+------+--------------------+--------------------+ +| 5.5 | 2 | 5.5222 | 2225.5 | ++------+------+--------------------+--------------------+ +select c15, c2, pad(c15, c15, c2) from t1; ++------+------+-------------------+ +| c15 | c2 | pad(c15, c15, c2) | ++------+------+-------------------+ +| 5.5 | 2 | 5.5 | ++------+------+-------------------+ +select c15, c3, rpad(c15, c15, c3), lpad(c15, c15, c3) from t1; ++------+------+--------------------+--------------------+ +| c15 | c3 | rpad(c15, c15, c3) | lpad(c15, c15, c3) | ++------+------+--------------------+--------------------+ +| 5.5 | 1 | 5.5111 | 1115.5 | ++------+------+--------------------+--------------------+ +select c15, c3, pad(c15, c15, c3) from t1; ++------+------+-------------------+ +| c15 | c3 | pad(c15, c15, c3) | ++------+------+-------------------+ +| 5.5 | 1 | 5.5 | ++------+------+-------------------+ +select c15, c4, rpad(c15, c15, c4), lpad(c15, c15, c4) from t1; ++------+------+--------------------+--------------------+ +| c15 | c4 | rpad(c15, c15, c4) | lpad(c15, c15, c4) | ++------+------+--------------------+--------------------+ +| 5.5 | 2 | 5.5222 | 2225.5 | ++------+------+--------------------+--------------------+ +select c15, c4, pad(c15, c15, c4) from t1; ++------+------+-------------------+ +| c15 | c4 | pad(c15, c15, c4) | ++------+------+-------------------+ +| 5.5 | 2 | 5.5 | ++------+------+-------------------+ +select c15, c5, rpad(c15, c15, c5), lpad(c15, c15, c5) from t1; ++------+------+--------------------+--------------------+ +| c15 | c5 | rpad(c15, c15, c5) | lpad(c15, c15, c5) | ++------+------+--------------------+--------------------+ +| 5.5 | 1 | 5.5111 | 1115.5 | ++------+------+--------------------+--------------------+ +select c15, c5, pad(c15, c15, c5) from t1; ++------+------+-------------------+ +| c15 | c5 | pad(c15, c15, c5) | ++------+------+-------------------+ +| 5.5 | 1 | 5.5 | ++------+------+-------------------+ +select c15, c6, rpad(c15, c15, c6), lpad(c15, c15, c6) from t1; ++------+------+--------------------+--------------------+ +| c15 | c6 | rpad(c15, c15, c6) | lpad(c15, c15, c6) | ++------+------+--------------------+--------------------+ +| 5.5 | 2 | 5.5222 | 2225.5 | ++------+------+--------------------+--------------------+ +select c15, c6, pad(c15, c15, c6) from t1; ++------+------+-------------------+ +| c15 | c6 | pad(c15, c15, c6) | ++------+------+-------------------+ +| 5.5 | 2 | 5.5 | ++------+------+-------------------+ +select c15, c7, rpad(c15, c15, c7), lpad(c15, c15, c7) from t1; ++------+------+--------------------+--------------------+ +| c15 | c7 | rpad(c15, c15, c7) | lpad(c15, c15, c7) | ++------+------+--------------------+--------------------+ +| 5.5 | 1 | 5.5111 | 1115.5 | ++------+------+--------------------+--------------------+ +select c15, c7, pad(c15, c15, c7) from t1; ++------+------+-------------------+ +| c15 | c7 | pad(c15, c15, c7) | ++------+------+-------------------+ +| 5.5 | 1 | 5.5 | ++------+------+-------------------+ +select c15, c8, rpad(c15, c15, c8), lpad(c15, c15, c8) from t1; ++------+------+--------------------+--------------------+ +| c15 | c8 | rpad(c15, c15, c8) | lpad(c15, c15, c8) | ++------+------+--------------------+--------------------+ +| 5.5 | 2 | 5.5222 | 2225.5 | ++------+------+--------------------+--------------------+ +select c15, c8, pad(c15, c15, c8) from t1; ++------+------+-------------------+ +| c15 | c8 | pad(c15, c15, c8) | ++------+------+-------------------+ +| 5.5 | 2 | 5.5 | ++------+------+-------------------+ +select c15, c9, rpad(c15, c15, c9), lpad(c15, c15, c9) from t1; ++------+------+--------------------+--------------------+ +| c15 | c9 | rpad(c15, c15, c9) | lpad(c15, c15, c9) | ++------+------+--------------------+--------------------+ +| 5.5 | 1 | 5.5111 | 1115.5 | ++------+------+--------------------+--------------------+ +select c15, c9, pad(c15, c15, c9) from t1; ++------+------+-------------------+ +| c15 | c9 | pad(c15, c15, c9) | ++------+------+-------------------+ +| 5.5 | 1 | 5.5 | ++------+------+-------------------+ +select c15, c10, rpad(c15, c15, c10), lpad(c15, c15, c10) from t1; ++------+------+---------------------+---------------------+ +| c15 | c10 | rpad(c15, c15, c10) | lpad(c15, c15, c10) | ++------+------+---------------------+---------------------+ +| 5.5 | 2 | 5.5222 | 2225.5 | ++------+------+---------------------+---------------------+ +select c15, c10, pad(c15, c15, c10) from t1; ++------+------+--------------------+ +| c15 | c10 | pad(c15, c15, c10) | ++------+------+--------------------+ +| 5.5 | 2 | 5.5 | ++------+------+--------------------+ +select c15, c11, rpad(c15, c15, c11), lpad(c15, c15, c11) from t1; ++------+------+---------------------+---------------------+ +| c15 | c11 | rpad(c15, c15, c11) | lpad(c15, c15, c11) | ++------+------+---------------------+---------------------+ +| 5.5 | 1 | 5.5111 | 1115.5 | ++------+------+---------------------+---------------------+ +select c15, c11, pad(c15, c15, c11) from t1; ++------+------+--------------------+ +| c15 | c11 | pad(c15, c15, c11) | ++------+------+--------------------+ +| 5.5 | 1 | 5.5 | ++------+------+--------------------+ +select c15, c12, rpad(c15, c15, c12), lpad(c15, c15, c12) from t1; ++------+------+---------------------+---------------------+ +| c15 | c12 | rpad(c15, c15, c12) | lpad(c15, c15, c12) | ++------+------+---------------------+---------------------+ +| 5.5 | 2 | 5.5222 | 2225.5 | ++------+------+---------------------+---------------------+ +select c15, c12, pad(c15, c15, c12) from t1; ++------+------+--------------------+ +| c15 | c12 | pad(c15, c15, c12) | ++------+------+--------------------+ +| 5.5 | 2 | 5.5 | ++------+------+--------------------+ +select c15, c13, rpad(c15, c15, c13), lpad(c15, c15, c13) from t1; ++------+------+---------------------+---------------------+ +| c15 | c13 | rpad(c15, c15, c13) | lpad(c15, c15, c13) | ++------+------+---------------------+---------------------+ +| 5.5 | 3.5 | 5.53.5 | 3.55.5 | ++------+------+---------------------+---------------------+ +select c15, c13, pad(c15, c15, c13) from t1; ++------+------+--------------------+ +| c15 | c13 | pad(c15, c15, c13) | ++------+------+--------------------+ +| 5.5 | 3.5 | 5.55 | ++------+------+--------------------+ +select c15, c14, rpad(c15, c15, c14), lpad(c15, c15, c14) from t1; ++------+------+---------------------+---------------------+ +| c15 | c14 | rpad(c15, c15, c14) | lpad(c15, c15, c14) | ++------+------+---------------------+---------------------+ +| 5.5 | 4.5 | 5.54.5 | 4.55.5 | ++------+------+---------------------+---------------------+ +select c15, c14, pad(c15, c15, c14) from t1; ++------+------+--------------------+ +| c15 | c14 | pad(c15, c15, c14) | ++------+------+--------------------+ +| 5.5 | 4.5 | 5.55 | ++------+------+--------------------+ +select c15, c15, rpad(c15, c15, c15), lpad(c15, c15, c15) from t1; ++------+------+---------------------+---------------------+ +| c15 | c15 | rpad(c15, c15, c15) | lpad(c15, c15, c15) | ++------+------+---------------------+---------------------+ +| 5.5 | 5.5 | 5.55.5 | 5.55.5 | ++------+------+---------------------+---------------------+ +select c15, c15, pad(c15, c15, c15) from t1; ++------+------+--------------------+ +| c15 | c15 | pad(c15, c15, c15) | ++------+------+--------------------+ +| 5.5 | 5.5 | 5.55.5 | ++------+------+--------------------+ +select c15, c16, rpad(c15, c15, c16), lpad(c15, c15, c16) from t1; ++------+------+---------------------+---------------------+ +| c15 | c16 | rpad(c15, c15, c16) | lpad(c15, c15, c16) | ++------+------+---------------------+---------------------+ +| 5.5 | 6.5 | 5.56.5 | 6.55.5 | ++------+------+---------------------+---------------------+ +select c15, c16, pad(c15, c15, c16) from t1; ++------+------+--------------------+ +| c15 | c16 | pad(c15, c15, c16) | ++------+------+--------------------+ +| 5.5 | 6.5 | 5.55.5 | ++------+------+--------------------+ +select c15, c17, rpad(c15, c15, c17), lpad(c15, c15, c17) from t1; ++------+------+---------------------+---------------------+ +| c15 | c17 | rpad(c15, c15, c17) | lpad(c15, c15, c17) | ++------+------+---------------------+---------------------+ +| 5.5 | 8 | 5.5888 | 8885.5 | ++------+------+---------------------+---------------------+ +select c15, c17, pad(c15, c15, c17) from t1; ++------+------+--------------------+ +| c15 | c17 | pad(c15, c15, c17) | ++------+------+--------------------+ +| 5.5 | 8 | 5.55.55. | ++------+------+--------------------+ +select c15, c18, rpad(c15, c15, c18), lpad(c15, c15, c18) from t1; ++------+------+---------------------+---------------------+ +| c15 | c18 | rpad(c15, c15, c18) | lpad(c15, c15, c18) | ++------+------+---------------------+---------------------+ +| 5.5 | 9 | 5.5999 | 9995.5 | ++------+------+---------------------+---------------------+ +select c15, c18, pad(c15, c15, c18) from t1; ++------+------+--------------------+ +| c15 | c18 | pad(c15, c15, c18) | ++------+------+--------------------+ +| 5.5 | 9 | 5.55.55.5 | ++------+------+--------------------+ +select c15, c19, rpad(c15, c15, c19), lpad(c15, c15, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c15 | c19 | rpad(c15, c15, c19) | lpad(c15, c15, c19) | ++------+---------------------+---------------------+---------------------+ +| 5.5 | 2019-12-01 12:00:00 | 5.5201 | 2015.5 | ++------+---------------------+---------------------+---------------------+ +select c15, c19, pad(c15, c15, c19) from t1; ++------+---------------------+--------------------+ +| c15 | c19 | pad(c15, c15, c19) | ++------+---------------------+--------------------+ +| 5.5 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c15, c20, rpad(c15, c15, c20), lpad(c15, c15, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c15 | c20 | rpad(c15, c15, c20) | lpad(c15, c15, c20) | ++------+---------------------+---------------------+---------------------+ +| 5.5 | 2019-12-03 06:00:00 | 5.5201 | 2015.5 | ++------+---------------------+---------------------+---------------------+ +select c15, c20, pad(c15, c15, c20) from t1; ++------+---------------------+--------------------+ +| c15 | c20 | pad(c15, c15, c20) | ++------+---------------------+--------------------+ +| 5.5 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c15, c21, rpad(c15, c15, c21), lpad(c15, c15, c21) from t1; ++------+------+---------------------+---------------------+ +| c15 | c21 | rpad(c15, c15, c21) | lpad(c15, c15, c21) | ++------+------+---------------------+---------------------+ +| 5.5 | 9.5 | 5.59.5 | 9.55.5 | ++------+------+---------------------+---------------------+ +select c15, c21, pad(c15, c15, c21) from t1; ++------+------+--------------------+ +| c15 | c21 | pad(c15, c15, c21) | ++------+------+--------------------+ +| 5.5 | 9.5 | 5.55.55.55 | ++------+------+--------------------+ +select c15, c22, rpad(c15, c15, c22), lpad(c15, c15, c22) from t1; ++------+------+---------------------+---------------------+ +| c15 | c22 | rpad(c15, c15, c22) | lpad(c15, c15, c22) | ++------+------+---------------------+---------------------+ +| 5.5 | 10.5 | 5.510. | 10.5.5 | ++------+------+---------------------+---------------------+ +select c15, c22, pad(c15, c15, c22) from t1; ++------+------+--------------------+ +| c15 | c22 | pad(c15, c15, c22) | ++------+------+--------------------+ +| 5.5 | 10.5 | 5.55.55.55. | ++------+------+--------------------+ +select c16, c1, rpad(c16, c16, c1), lpad(c16, c16, c1) from t1; ++------+------+--------------------+--------------------+ +| c16 | c1 | rpad(c16, c16, c1) | lpad(c16, c16, c1) | ++------+------+--------------------+--------------------+ +| 6.5 | 1 | 6.5111 | 1116.5 | ++------+------+--------------------+--------------------+ +select c16, c1, pad(c16, c16, c1) from t1; ++------+------+-------------------+ +| c16 | c1 | pad(c16, c16, c1) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | ++------+------+-------------------+ +select c16, c2, rpad(c16, c16, c2), lpad(c16, c16, c2) from t1; ++------+------+--------------------+--------------------+ +| c16 | c2 | rpad(c16, c16, c2) | lpad(c16, c16, c2) | ++------+------+--------------------+--------------------+ +| 6.5 | 2 | 6.5222 | 2226.5 | ++------+------+--------------------+--------------------+ +select c16, c2, pad(c16, c16, c2) from t1; ++------+------+-------------------+ +| c16 | c2 | pad(c16, c16, c2) | ++------+------+-------------------+ +| 6.5 | 2 | 6.5 | ++------+------+-------------------+ +select c16, c3, rpad(c16, c16, c3), lpad(c16, c16, c3) from t1; ++------+------+--------------------+--------------------+ +| c16 | c3 | rpad(c16, c16, c3) | lpad(c16, c16, c3) | ++------+------+--------------------+--------------------+ +| 6.5 | 1 | 6.5111 | 1116.5 | ++------+------+--------------------+--------------------+ +select c16, c3, pad(c16, c16, c3) from t1; ++------+------+-------------------+ +| c16 | c3 | pad(c16, c16, c3) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | ++------+------+-------------------+ +select c16, c4, rpad(c16, c16, c4), lpad(c16, c16, c4) from t1; ++------+------+--------------------+--------------------+ +| c16 | c4 | rpad(c16, c16, c4) | lpad(c16, c16, c4) | ++------+------+--------------------+--------------------+ +| 6.5 | 2 | 6.5222 | 2226.5 | ++------+------+--------------------+--------------------+ +select c16, c4, pad(c16, c16, c4) from t1; ++------+------+-------------------+ +| c16 | c4 | pad(c16, c16, c4) | ++------+------+-------------------+ +| 6.5 | 2 | 6.5 | ++------+------+-------------------+ +select c16, c5, rpad(c16, c16, c5), lpad(c16, c16, c5) from t1; ++------+------+--------------------+--------------------+ +| c16 | c5 | rpad(c16, c16, c5) | lpad(c16, c16, c5) | ++------+------+--------------------+--------------------+ +| 6.5 | 1 | 6.5111 | 1116.5 | ++------+------+--------------------+--------------------+ +select c16, c5, pad(c16, c16, c5) from t1; ++------+------+-------------------+ +| c16 | c5 | pad(c16, c16, c5) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | ++------+------+-------------------+ +select c16, c6, rpad(c16, c16, c6), lpad(c16, c16, c6) from t1; ++------+------+--------------------+--------------------+ +| c16 | c6 | rpad(c16, c16, c6) | lpad(c16, c16, c6) | ++------+------+--------------------+--------------------+ +| 6.5 | 2 | 6.5222 | 2226.5 | ++------+------+--------------------+--------------------+ +select c16, c6, pad(c16, c16, c6) from t1; ++------+------+-------------------+ +| c16 | c6 | pad(c16, c16, c6) | ++------+------+-------------------+ +| 6.5 | 2 | 6.5 | ++------+------+-------------------+ +select c16, c7, rpad(c16, c16, c7), lpad(c16, c16, c7) from t1; ++------+------+--------------------+--------------------+ +| c16 | c7 | rpad(c16, c16, c7) | lpad(c16, c16, c7) | ++------+------+--------------------+--------------------+ +| 6.5 | 1 | 6.5111 | 1116.5 | ++------+------+--------------------+--------------------+ +select c16, c7, pad(c16, c16, c7) from t1; ++------+------+-------------------+ +| c16 | c7 | pad(c16, c16, c7) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | ++------+------+-------------------+ +select c16, c8, rpad(c16, c16, c8), lpad(c16, c16, c8) from t1; ++------+------+--------------------+--------------------+ +| c16 | c8 | rpad(c16, c16, c8) | lpad(c16, c16, c8) | ++------+------+--------------------+--------------------+ +| 6.5 | 2 | 6.5222 | 2226.5 | ++------+------+--------------------+--------------------+ +select c16, c8, pad(c16, c16, c8) from t1; ++------+------+-------------------+ +| c16 | c8 | pad(c16, c16, c8) | ++------+------+-------------------+ +| 6.5 | 2 | 6.5 | ++------+------+-------------------+ +select c16, c9, rpad(c16, c16, c9), lpad(c16, c16, c9) from t1; ++------+------+--------------------+--------------------+ +| c16 | c9 | rpad(c16, c16, c9) | lpad(c16, c16, c9) | ++------+------+--------------------+--------------------+ +| 6.5 | 1 | 6.5111 | 1116.5 | ++------+------+--------------------+--------------------+ +select c16, c9, pad(c16, c16, c9) from t1; ++------+------+-------------------+ +| c16 | c9 | pad(c16, c16, c9) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | ++------+------+-------------------+ +select c16, c10, rpad(c16, c16, c10), lpad(c16, c16, c10) from t1; ++------+------+---------------------+---------------------+ +| c16 | c10 | rpad(c16, c16, c10) | lpad(c16, c16, c10) | ++------+------+---------------------+---------------------+ +| 6.5 | 2 | 6.5222 | 2226.5 | ++------+------+---------------------+---------------------+ +select c16, c10, pad(c16, c16, c10) from t1; ++------+------+--------------------+ +| c16 | c10 | pad(c16, c16, c10) | ++------+------+--------------------+ +| 6.5 | 2 | 6.5 | ++------+------+--------------------+ +select c16, c11, rpad(c16, c16, c11), lpad(c16, c16, c11) from t1; ++------+------+---------------------+---------------------+ +| c16 | c11 | rpad(c16, c16, c11) | lpad(c16, c16, c11) | ++------+------+---------------------+---------------------+ +| 6.5 | 1 | 6.5111 | 1116.5 | ++------+------+---------------------+---------------------+ +select c16, c11, pad(c16, c16, c11) from t1; ++------+------+--------------------+ +| c16 | c11 | pad(c16, c16, c11) | ++------+------+--------------------+ +| 6.5 | 1 | 6.5 | ++------+------+--------------------+ +select c16, c12, rpad(c16, c16, c12), lpad(c16, c16, c12) from t1; ++------+------+---------------------+---------------------+ +| c16 | c12 | rpad(c16, c16, c12) | lpad(c16, c16, c12) | ++------+------+---------------------+---------------------+ +| 6.5 | 2 | 6.5222 | 2226.5 | ++------+------+---------------------+---------------------+ +select c16, c12, pad(c16, c16, c12) from t1; ++------+------+--------------------+ +| c16 | c12 | pad(c16, c16, c12) | ++------+------+--------------------+ +| 6.5 | 2 | 6.5 | ++------+------+--------------------+ +select c16, c13, rpad(c16, c16, c13), lpad(c16, c16, c13) from t1; ++------+------+---------------------+---------------------+ +| c16 | c13 | rpad(c16, c16, c13) | lpad(c16, c16, c13) | ++------+------+---------------------+---------------------+ +| 6.5 | 3.5 | 6.53.5 | 3.56.5 | ++------+------+---------------------+---------------------+ +select c16, c13, pad(c16, c16, c13) from t1; ++------+------+--------------------+ +| c16 | c13 | pad(c16, c16, c13) | ++------+------+--------------------+ +| 6.5 | 3.5 | 6.56 | ++------+------+--------------------+ +select c16, c14, rpad(c16, c16, c14), lpad(c16, c16, c14) from t1; ++------+------+---------------------+---------------------+ +| c16 | c14 | rpad(c16, c16, c14) | lpad(c16, c16, c14) | ++------+------+---------------------+---------------------+ +| 6.5 | 4.5 | 6.54.5 | 4.56.5 | ++------+------+---------------------+---------------------+ +select c16, c14, pad(c16, c16, c14) from t1; ++------+------+--------------------+ +| c16 | c14 | pad(c16, c16, c14) | ++------+------+--------------------+ +| 6.5 | 4.5 | 6.56 | ++------+------+--------------------+ +select c16, c15, rpad(c16, c16, c15), lpad(c16, c16, c15) from t1; ++------+------+---------------------+---------------------+ +| c16 | c15 | rpad(c16, c16, c15) | lpad(c16, c16, c15) | ++------+------+---------------------+---------------------+ +| 6.5 | 5.5 | 6.55.5 | 5.56.5 | ++------+------+---------------------+---------------------+ +select c16, c15, pad(c16, c16, c15) from t1; ++------+------+--------------------+ +| c16 | c15 | pad(c16, c16, c15) | ++------+------+--------------------+ +| 6.5 | 5.5 | 6.56.5 | ++------+------+--------------------+ +select c16, c16, rpad(c16, c16, c16), lpad(c16, c16, c16) from t1; ++------+------+---------------------+---------------------+ +| c16 | c16 | rpad(c16, c16, c16) | lpad(c16, c16, c16) | ++------+------+---------------------+---------------------+ +| 6.5 | 6.5 | 6.56.5 | 6.56.5 | ++------+------+---------------------+---------------------+ +select c16, c16, pad(c16, c16, c16) from t1; ++------+------+--------------------+ +| c16 | c16 | pad(c16, c16, c16) | ++------+------+--------------------+ +| 6.5 | 6.5 | 6.56.5 | ++------+------+--------------------+ +select c16, c17, rpad(c16, c16, c17), lpad(c16, c16, c17) from t1; ++------+------+---------------------+---------------------+ +| c16 | c17 | rpad(c16, c16, c17) | lpad(c16, c16, c17) | ++------+------+---------------------+---------------------+ +| 6.5 | 8 | 6.5888 | 8886.5 | ++------+------+---------------------+---------------------+ +select c16, c17, pad(c16, c16, c17) from t1; ++------+------+--------------------+ +| c16 | c17 | pad(c16, c16, c17) | ++------+------+--------------------+ +| 6.5 | 8 | 6.56.56. | ++------+------+--------------------+ +select c16, c18, rpad(c16, c16, c18), lpad(c16, c16, c18) from t1; ++------+------+---------------------+---------------------+ +| c16 | c18 | rpad(c16, c16, c18) | lpad(c16, c16, c18) | ++------+------+---------------------+---------------------+ +| 6.5 | 9 | 6.5999 | 9996.5 | ++------+------+---------------------+---------------------+ +select c16, c18, pad(c16, c16, c18) from t1; ++------+------+--------------------+ +| c16 | c18 | pad(c16, c16, c18) | ++------+------+--------------------+ +| 6.5 | 9 | 6.56.56.5 | ++------+------+--------------------+ +select c16, c19, rpad(c16, c16, c19), lpad(c16, c16, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c16 | c19 | rpad(c16, c16, c19) | lpad(c16, c16, c19) | ++------+---------------------+---------------------+---------------------+ +| 6.5 | 2019-12-01 12:00:00 | 6.5201 | 2016.5 | ++------+---------------------+---------------------+---------------------+ +select c16, c19, pad(c16, c16, c19) from t1; ++------+---------------------+--------------------+ +| c16 | c19 | pad(c16, c16, c19) | ++------+---------------------+--------------------+ +| 6.5 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c16, c20, rpad(c16, c16, c20), lpad(c16, c16, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c16 | c20 | rpad(c16, c16, c20) | lpad(c16, c16, c20) | ++------+---------------------+---------------------+---------------------+ +| 6.5 | 2019-12-03 06:00:00 | 6.5201 | 2016.5 | ++------+---------------------+---------------------+---------------------+ +select c16, c20, pad(c16, c16, c20) from t1; ++------+---------------------+--------------------+ +| c16 | c20 | pad(c16, c16, c20) | ++------+---------------------+--------------------+ +| 6.5 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c16, c21, rpad(c16, c16, c21), lpad(c16, c16, c21) from t1; ++------+------+---------------------+---------------------+ +| c16 | c21 | rpad(c16, c16, c21) | lpad(c16, c16, c21) | ++------+------+---------------------+---------------------+ +| 6.5 | 9.5 | 6.59.5 | 9.56.5 | ++------+------+---------------------+---------------------+ +select c16, c21, pad(c16, c16, c21) from t1; ++------+------+--------------------+ +| c16 | c21 | pad(c16, c16, c21) | ++------+------+--------------------+ +| 6.5 | 9.5 | 6.56.56.56 | ++------+------+--------------------+ +select c16, c22, rpad(c16, c16, c22), lpad(c16, c16, c22) from t1; ++------+------+---------------------+---------------------+ +| c16 | c22 | rpad(c16, c16, c22) | lpad(c16, c16, c22) | ++------+------+---------------------+---------------------+ +| 6.5 | 10.5 | 6.510. | 10.6.5 | ++------+------+---------------------+---------------------+ +select c16, c22, pad(c16, c16, c22) from t1; ++------+------+--------------------+ +| c16 | c22 | pad(c16, c16, c22) | ++------+------+--------------------+ +| 6.5 | 10.5 | 6.56.56.56. | ++------+------+--------------------+ +select c17, c1, rpad(c17, c17, c1), lpad(c17, c17, c1) from t1; ++------+------+--------------------+--------------------+ +| c17 | c1 | rpad(c17, c17, c1) | lpad(c17, c17, c1) | ++------+------+--------------------+--------------------+ +| 8 | 1 | 81111111 | 11111118 | ++------+------+--------------------+--------------------+ +select c17, c1, pad(c17, c17, c1) from t1; ++------+------+-------------------+ +| c17 | c1 | pad(c17, c17, c1) | ++------+------+-------------------+ +| 8 | 1 | 8 | ++------+------+-------------------+ +select c17, c2, rpad(c17, c17, c2), lpad(c17, c17, c2) from t1; ++------+------+--------------------+--------------------+ +| c17 | c2 | rpad(c17, c17, c2) | lpad(c17, c17, c2) | ++------+------+--------------------+--------------------+ +| 8 | 2 | 82222222 | 22222228 | ++------+------+--------------------+--------------------+ +select c17, c2, pad(c17, c17, c2) from t1; ++------+------+-------------------+ +| c17 | c2 | pad(c17, c17, c2) | ++------+------+-------------------+ +| 8 | 2 | 88 | ++------+------+-------------------+ +select c17, c3, rpad(c17, c17, c3), lpad(c17, c17, c3) from t1; ++------+------+--------------------+--------------------+ +| c17 | c3 | rpad(c17, c17, c3) | lpad(c17, c17, c3) | ++------+------+--------------------+--------------------+ +| 8 | 1 | 81111111 | 11111118 | ++------+------+--------------------+--------------------+ +select c17, c3, pad(c17, c17, c3) from t1; ++------+------+-------------------+ +| c17 | c3 | pad(c17, c17, c3) | ++------+------+-------------------+ +| 8 | 1 | 8 | ++------+------+-------------------+ +select c17, c4, rpad(c17, c17, c4), lpad(c17, c17, c4) from t1; ++------+------+--------------------+--------------------+ +| c17 | c4 | rpad(c17, c17, c4) | lpad(c17, c17, c4) | ++------+------+--------------------+--------------------+ +| 8 | 2 | 82222222 | 22222228 | ++------+------+--------------------+--------------------+ +select c17, c4, pad(c17, c17, c4) from t1; ++------+------+-------------------+ +| c17 | c4 | pad(c17, c17, c4) | ++------+------+-------------------+ +| 8 | 2 | 88 | ++------+------+-------------------+ +select c17, c5, rpad(c17, c17, c5), lpad(c17, c17, c5) from t1; ++------+------+--------------------+--------------------+ +| c17 | c5 | rpad(c17, c17, c5) | lpad(c17, c17, c5) | ++------+------+--------------------+--------------------+ +| 8 | 1 | 81111111 | 11111118 | ++------+------+--------------------+--------------------+ +select c17, c5, pad(c17, c17, c5) from t1; ++------+------+-------------------+ +| c17 | c5 | pad(c17, c17, c5) | ++------+------+-------------------+ +| 8 | 1 | 8 | ++------+------+-------------------+ +select c17, c6, rpad(c17, c17, c6), lpad(c17, c17, c6) from t1; ++------+------+--------------------+--------------------+ +| c17 | c6 | rpad(c17, c17, c6) | lpad(c17, c17, c6) | ++------+------+--------------------+--------------------+ +| 8 | 2 | 82222222 | 22222228 | ++------+------+--------------------+--------------------+ +select c17, c6, pad(c17, c17, c6) from t1; ++------+------+-------------------+ +| c17 | c6 | pad(c17, c17, c6) | ++------+------+-------------------+ +| 8 | 2 | 88 | ++------+------+-------------------+ +select c17, c7, rpad(c17, c17, c7), lpad(c17, c17, c7) from t1; ++------+------+--------------------+--------------------+ +| c17 | c7 | rpad(c17, c17, c7) | lpad(c17, c17, c7) | ++------+------+--------------------+--------------------+ +| 8 | 1 | 81111111 | 11111118 | ++------+------+--------------------+--------------------+ +select c17, c7, pad(c17, c17, c7) from t1; ++------+------+-------------------+ +| c17 | c7 | pad(c17, c17, c7) | ++------+------+-------------------+ +| 8 | 1 | 8 | ++------+------+-------------------+ +select c17, c8, rpad(c17, c17, c8), lpad(c17, c17, c8) from t1; ++------+------+--------------------+--------------------+ +| c17 | c8 | rpad(c17, c17, c8) | lpad(c17, c17, c8) | ++------+------+--------------------+--------------------+ +| 8 | 2 | 82222222 | 22222228 | ++------+------+--------------------+--------------------+ +select c17, c8, pad(c17, c17, c8) from t1; ++------+------+-------------------+ +| c17 | c8 | pad(c17, c17, c8) | ++------+------+-------------------+ +| 8 | 2 | 88 | ++------+------+-------------------+ +select c17, c9, rpad(c17, c17, c9), lpad(c17, c17, c9) from t1; ++------+------+--------------------+--------------------+ +| c17 | c9 | rpad(c17, c17, c9) | lpad(c17, c17, c9) | ++------+------+--------------------+--------------------+ +| 8 | 1 | 81111111 | 11111118 | ++------+------+--------------------+--------------------+ +select c17, c9, pad(c17, c17, c9) from t1; ++------+------+-------------------+ +| c17 | c9 | pad(c17, c17, c9) | ++------+------+-------------------+ +| 8 | 1 | 8 | ++------+------+-------------------+ +select c17, c10, rpad(c17, c17, c10), lpad(c17, c17, c10) from t1; ++------+------+---------------------+---------------------+ +| c17 | c10 | rpad(c17, c17, c10) | lpad(c17, c17, c10) | ++------+------+---------------------+---------------------+ +| 8 | 2 | 82222222 | 22222228 | ++------+------+---------------------+---------------------+ +select c17, c10, pad(c17, c17, c10) from t1; ++------+------+--------------------+ +| c17 | c10 | pad(c17, c17, c10) | ++------+------+--------------------+ +| 8 | 2 | 88 | ++------+------+--------------------+ +select c17, c11, rpad(c17, c17, c11), lpad(c17, c17, c11) from t1; ++------+------+---------------------+---------------------+ +| c17 | c11 | rpad(c17, c17, c11) | lpad(c17, c17, c11) | ++------+------+---------------------+---------------------+ +| 8 | 1 | 81111111 | 11111118 | ++------+------+---------------------+---------------------+ +select c17, c11, pad(c17, c17, c11) from t1; ++------+------+--------------------+ +| c17 | c11 | pad(c17, c17, c11) | ++------+------+--------------------+ +| 8 | 1 | 8 | ++------+------+--------------------+ +select c17, c12, rpad(c17, c17, c12), lpad(c17, c17, c12) from t1; ++------+------+---------------------+---------------------+ +| c17 | c12 | rpad(c17, c17, c12) | lpad(c17, c17, c12) | ++------+------+---------------------+---------------------+ +| 8 | 2 | 82222222 | 22222228 | ++------+------+---------------------+---------------------+ +select c17, c12, pad(c17, c17, c12) from t1; ++------+------+--------------------+ +| c17 | c12 | pad(c17, c17, c12) | ++------+------+--------------------+ +| 8 | 2 | 88 | ++------+------+--------------------+ +select c17, c13, rpad(c17, c17, c13), lpad(c17, c17, c13) from t1; ++------+------+---------------------+---------------------+ +| c17 | c13 | rpad(c17, c17, c13) | lpad(c17, c17, c13) | ++------+------+---------------------+---------------------+ +| 8 | 3.5 | 83.53.53 | 3.53.538 | ++------+------+---------------------+---------------------+ +select c17, c13, pad(c17, c17, c13) from t1; ++------+------+--------------------+ +| c17 | c13 | pad(c17, c17, c13) | ++------+------+--------------------+ +| 8 | 3.5 | 8888 | ++------+------+--------------------+ +select c17, c14, rpad(c17, c17, c14), lpad(c17, c17, c14) from t1; ++------+------+---------------------+---------------------+ +| c17 | c14 | rpad(c17, c17, c14) | lpad(c17, c17, c14) | ++------+------+---------------------+---------------------+ +| 8 | 4.5 | 84.54.54 | 4.54.548 | ++------+------+---------------------+---------------------+ +select c17, c14, pad(c17, c17, c14) from t1; ++------+------+--------------------+ +| c17 | c14 | pad(c17, c17, c14) | ++------+------+--------------------+ +| 8 | 4.5 | 8888 | ++------+------+--------------------+ +select c17, c15, rpad(c17, c17, c15), lpad(c17, c17, c15) from t1; ++------+------+---------------------+---------------------+ +| c17 | c15 | rpad(c17, c17, c15) | lpad(c17, c17, c15) | ++------+------+---------------------+---------------------+ +| 8 | 5.5 | 85.55.55 | 5.55.558 | ++------+------+---------------------+---------------------+ +select c17, c15, pad(c17, c17, c15) from t1; ++------+------+--------------------+ +| c17 | c15 | pad(c17, c17, c15) | ++------+------+--------------------+ +| 8 | 5.5 | 888888 | ++------+------+--------------------+ +select c17, c16, rpad(c17, c17, c16), lpad(c17, c17, c16) from t1; ++------+------+---------------------+---------------------+ +| c17 | c16 | rpad(c17, c17, c16) | lpad(c17, c17, c16) | ++------+------+---------------------+---------------------+ +| 8 | 6.5 | 86.56.56 | 6.56.568 | ++------+------+---------------------+---------------------+ +select c17, c16, pad(c17, c17, c16) from t1; ++------+------+--------------------+ +| c17 | c16 | pad(c17, c17, c16) | ++------+------+--------------------+ +| 8 | 6.5 | 888888 | ++------+------+--------------------+ +select c17, c17, rpad(c17, c17, c17), lpad(c17, c17, c17) from t1; ++------+------+---------------------+---------------------+ +| c17 | c17 | rpad(c17, c17, c17) | lpad(c17, c17, c17) | ++------+------+---------------------+---------------------+ +| 8 | 8 | 88888888 | 88888888 | ++------+------+---------------------+---------------------+ +select c17, c17, pad(c17, c17, c17) from t1; ++------+------+--------------------+ +| c17 | c17 | pad(c17, c17, c17) | ++------+------+--------------------+ +| 8 | 8 | 88888888 | ++------+------+--------------------+ +select c17, c18, rpad(c17, c17, c18), lpad(c17, c17, c18) from t1; ++------+------+---------------------+---------------------+ +| c17 | c18 | rpad(c17, c17, c18) | lpad(c17, c17, c18) | ++------+------+---------------------+---------------------+ +| 8 | 9 | 89999999 | 99999998 | ++------+------+---------------------+---------------------+ +select c17, c18, pad(c17, c17, c18) from t1; ++------+------+--------------------+ +| c17 | c18 | pad(c17, c17, c18) | ++------+------+--------------------+ +| 8 | 9 | 888888888 | ++------+------+--------------------+ +select c17, c19, rpad(c17, c17, c19), lpad(c17, c17, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c17 | c19 | rpad(c17, c17, c19) | lpad(c17, c17, c19) | ++------+---------------------+---------------------+---------------------+ +| 8 | 2019-12-01 12:00:00 | 82019-12 | 2019-128 | ++------+---------------------+---------------------+---------------------+ +select c17, c19, pad(c17, c17, c19) from t1; ++------+---------------------+--------------------+ +| c17 | c19 | pad(c17, c17, c19) | ++------+---------------------+--------------------+ +| 8 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c17, c20, rpad(c17, c17, c20), lpad(c17, c17, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c17 | c20 | rpad(c17, c17, c20) | lpad(c17, c17, c20) | ++------+---------------------+---------------------+---------------------+ +| 8 | 2019-12-03 06:00:00 | 82019-12 | 2019-128 | ++------+---------------------+---------------------+---------------------+ +select c17, c20, pad(c17, c17, c20) from t1; ++------+---------------------+--------------------+ +| c17 | c20 | pad(c17, c17, c20) | ++------+---------------------+--------------------+ +| 8 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c17, c21, rpad(c17, c17, c21), lpad(c17, c17, c21) from t1; ++------+------+---------------------+---------------------+ +| c17 | c21 | rpad(c17, c17, c21) | lpad(c17, c17, c21) | ++------+------+---------------------+---------------------+ +| 8 | 9.5 | 89.59.59 | 9.59.598 | ++------+------+---------------------+---------------------+ +select c17, c21, pad(c17, c17, c21) from t1; ++------+------+--------------------+ +| c17 | c21 | pad(c17, c17, c21) | ++------+------+--------------------+ +| 8 | 9.5 | 8888888888 | ++------+------+--------------------+ +select c17, c22, rpad(c17, c17, c22), lpad(c17, c17, c22) from t1; ++------+------+---------------------+---------------------+ +| c17 | c22 | rpad(c17, c17, c22) | lpad(c17, c17, c22) | ++------+------+---------------------+---------------------+ +| 8 | 10.5 | 810.510. | 10.510.8 | ++------+------+---------------------+---------------------+ +select c17, c22, pad(c17, c17, c22) from t1; ++------+------+--------------------+ +| c17 | c22 | pad(c17, c17, c22) | ++------+------+--------------------+ +| 8 | 10.5 | 88888888888 | ++------+------+--------------------+ +select c18, c1, rpad(c18, c18, c1), lpad(c18, c18, c1) from t1; ++------+------+--------------------+--------------------+ +| c18 | c1 | rpad(c18, c18, c1) | lpad(c18, c18, c1) | ++------+------+--------------------+--------------------+ +| 9 | 1 | 911111111 | 111111119 | ++------+------+--------------------+--------------------+ +select c18, c1, pad(c18, c18, c1) from t1; ++------+------+-------------------+ +| c18 | c1 | pad(c18, c18, c1) | ++------+------+-------------------+ +| 9 | 1 | 9 | ++------+------+-------------------+ +select c18, c2, rpad(c18, c18, c2), lpad(c18, c18, c2) from t1; ++------+------+--------------------+--------------------+ +| c18 | c2 | rpad(c18, c18, c2) | lpad(c18, c18, c2) | ++------+------+--------------------+--------------------+ +| 9 | 2 | 922222222 | 222222229 | ++------+------+--------------------+--------------------+ +select c18, c2, pad(c18, c18, c2) from t1; ++------+------+-------------------+ +| c18 | c2 | pad(c18, c18, c2) | ++------+------+-------------------+ +| 9 | 2 | 99 | ++------+------+-------------------+ +select c18, c3, rpad(c18, c18, c3), lpad(c18, c18, c3) from t1; ++------+------+--------------------+--------------------+ +| c18 | c3 | rpad(c18, c18, c3) | lpad(c18, c18, c3) | ++------+------+--------------------+--------------------+ +| 9 | 1 | 911111111 | 111111119 | ++------+------+--------------------+--------------------+ +select c18, c3, pad(c18, c18, c3) from t1; ++------+------+-------------------+ +| c18 | c3 | pad(c18, c18, c3) | ++------+------+-------------------+ +| 9 | 1 | 9 | ++------+------+-------------------+ +select c18, c4, rpad(c18, c18, c4), lpad(c18, c18, c4) from t1; ++------+------+--------------------+--------------------+ +| c18 | c4 | rpad(c18, c18, c4) | lpad(c18, c18, c4) | ++------+------+--------------------+--------------------+ +| 9 | 2 | 922222222 | 222222229 | ++------+------+--------------------+--------------------+ +select c18, c4, pad(c18, c18, c4) from t1; ++------+------+-------------------+ +| c18 | c4 | pad(c18, c18, c4) | ++------+------+-------------------+ +| 9 | 2 | 99 | ++------+------+-------------------+ +select c18, c5, rpad(c18, c18, c5), lpad(c18, c18, c5) from t1; ++------+------+--------------------+--------------------+ +| c18 | c5 | rpad(c18, c18, c5) | lpad(c18, c18, c5) | ++------+------+--------------------+--------------------+ +| 9 | 1 | 911111111 | 111111119 | ++------+------+--------------------+--------------------+ +select c18, c5, pad(c18, c18, c5) from t1; ++------+------+-------------------+ +| c18 | c5 | pad(c18, c18, c5) | ++------+------+-------------------+ +| 9 | 1 | 9 | ++------+------+-------------------+ +select c18, c6, rpad(c18, c18, c6), lpad(c18, c18, c6) from t1; ++------+------+--------------------+--------------------+ +| c18 | c6 | rpad(c18, c18, c6) | lpad(c18, c18, c6) | ++------+------+--------------------+--------------------+ +| 9 | 2 | 922222222 | 222222229 | ++------+------+--------------------+--------------------+ +select c18, c6, pad(c18, c18, c6) from t1; ++------+------+-------------------+ +| c18 | c6 | pad(c18, c18, c6) | ++------+------+-------------------+ +| 9 | 2 | 99 | ++------+------+-------------------+ +select c18, c7, rpad(c18, c18, c7), lpad(c18, c18, c7) from t1; ++------+------+--------------------+--------------------+ +| c18 | c7 | rpad(c18, c18, c7) | lpad(c18, c18, c7) | ++------+------+--------------------+--------------------+ +| 9 | 1 | 911111111 | 111111119 | ++------+------+--------------------+--------------------+ +select c18, c7, pad(c18, c18, c7) from t1; ++------+------+-------------------+ +| c18 | c7 | pad(c18, c18, c7) | ++------+------+-------------------+ +| 9 | 1 | 9 | ++------+------+-------------------+ +select c18, c8, rpad(c18, c18, c8), lpad(c18, c18, c8) from t1; ++------+------+--------------------+--------------------+ +| c18 | c8 | rpad(c18, c18, c8) | lpad(c18, c18, c8) | ++------+------+--------------------+--------------------+ +| 9 | 2 | 922222222 | 222222229 | ++------+------+--------------------+--------------------+ +select c18, c8, pad(c18, c18, c8) from t1; ++------+------+-------------------+ +| c18 | c8 | pad(c18, c18, c8) | ++------+------+-------------------+ +| 9 | 2 | 99 | ++------+------+-------------------+ +select c18, c9, rpad(c18, c18, c9), lpad(c18, c18, c9) from t1; ++------+------+--------------------+--------------------+ +| c18 | c9 | rpad(c18, c18, c9) | lpad(c18, c18, c9) | ++------+------+--------------------+--------------------+ +| 9 | 1 | 911111111 | 111111119 | ++------+------+--------------------+--------------------+ +select c18, c9, pad(c18, c18, c9) from t1; ++------+------+-------------------+ +| c18 | c9 | pad(c18, c18, c9) | ++------+------+-------------------+ +| 9 | 1 | 9 | ++------+------+-------------------+ +select c18, c10, rpad(c18, c18, c10), lpad(c18, c18, c10) from t1; ++------+------+---------------------+---------------------+ +| c18 | c10 | rpad(c18, c18, c10) | lpad(c18, c18, c10) | ++------+------+---------------------+---------------------+ +| 9 | 2 | 922222222 | 222222229 | ++------+------+---------------------+---------------------+ +select c18, c10, pad(c18, c18, c10) from t1; ++------+------+--------------------+ +| c18 | c10 | pad(c18, c18, c10) | ++------+------+--------------------+ +| 9 | 2 | 99 | ++------+------+--------------------+ +select c18, c11, rpad(c18, c18, c11), lpad(c18, c18, c11) from t1; ++------+------+---------------------+---------------------+ +| c18 | c11 | rpad(c18, c18, c11) | lpad(c18, c18, c11) | ++------+------+---------------------+---------------------+ +| 9 | 1 | 911111111 | 111111119 | ++------+------+---------------------+---------------------+ +select c18, c11, pad(c18, c18, c11) from t1; ++------+------+--------------------+ +| c18 | c11 | pad(c18, c18, c11) | ++------+------+--------------------+ +| 9 | 1 | 9 | ++------+------+--------------------+ +select c18, c12, rpad(c18, c18, c12), lpad(c18, c18, c12) from t1; ++------+------+---------------------+---------------------+ +| c18 | c12 | rpad(c18, c18, c12) | lpad(c18, c18, c12) | ++------+------+---------------------+---------------------+ +| 9 | 2 | 922222222 | 222222229 | ++------+------+---------------------+---------------------+ +select c18, c12, pad(c18, c18, c12) from t1; ++------+------+--------------------+ +| c18 | c12 | pad(c18, c18, c12) | ++------+------+--------------------+ +| 9 | 2 | 99 | ++------+------+--------------------+ +select c18, c13, rpad(c18, c18, c13), lpad(c18, c18, c13) from t1; ++------+------+---------------------+---------------------+ +| c18 | c13 | rpad(c18, c18, c13) | lpad(c18, c18, c13) | ++------+------+---------------------+---------------------+ +| 9 | 3.5 | 93.53.53. | 3.53.53.9 | ++------+------+---------------------+---------------------+ +select c18, c13, pad(c18, c18, c13) from t1; ++------+------+--------------------+ +| c18 | c13 | pad(c18, c18, c13) | ++------+------+--------------------+ +| 9 | 3.5 | 9999 | ++------+------+--------------------+ +select c18, c14, rpad(c18, c18, c14), lpad(c18, c18, c14) from t1; ++------+------+---------------------+---------------------+ +| c18 | c14 | rpad(c18, c18, c14) | lpad(c18, c18, c14) | ++------+------+---------------------+---------------------+ +| 9 | 4.5 | 94.54.54. | 4.54.54.9 | ++------+------+---------------------+---------------------+ +select c18, c14, pad(c18, c18, c14) from t1; ++------+------+--------------------+ +| c18 | c14 | pad(c18, c18, c14) | ++------+------+--------------------+ +| 9 | 4.5 | 9999 | ++------+------+--------------------+ +select c18, c15, rpad(c18, c18, c15), lpad(c18, c18, c15) from t1; ++------+------+---------------------+---------------------+ +| c18 | c15 | rpad(c18, c18, c15) | lpad(c18, c18, c15) | ++------+------+---------------------+---------------------+ +| 9 | 5.5 | 95.55.55. | 5.55.55.9 | ++------+------+---------------------+---------------------+ +select c18, c15, pad(c18, c18, c15) from t1; ++------+------+--------------------+ +| c18 | c15 | pad(c18, c18, c15) | ++------+------+--------------------+ +| 9 | 5.5 | 999999 | ++------+------+--------------------+ +select c18, c16, rpad(c18, c18, c16), lpad(c18, c18, c16) from t1; ++------+------+---------------------+---------------------+ +| c18 | c16 | rpad(c18, c18, c16) | lpad(c18, c18, c16) | ++------+------+---------------------+---------------------+ +| 9 | 6.5 | 96.56.56. | 6.56.56.9 | ++------+------+---------------------+---------------------+ +select c18, c16, pad(c18, c18, c16) from t1; ++------+------+--------------------+ +| c18 | c16 | pad(c18, c18, c16) | ++------+------+--------------------+ +| 9 | 6.5 | 999999 | ++------+------+--------------------+ +select c18, c17, rpad(c18, c18, c17), lpad(c18, c18, c17) from t1; ++------+------+---------------------+---------------------+ +| c18 | c17 | rpad(c18, c18, c17) | lpad(c18, c18, c17) | ++------+------+---------------------+---------------------+ +| 9 | 8 | 988888888 | 888888889 | ++------+------+---------------------+---------------------+ +select c18, c17, pad(c18, c18, c17) from t1; ++------+------+--------------------+ +| c18 | c17 | pad(c18, c18, c17) | ++------+------+--------------------+ +| 9 | 8 | 99999999 | ++------+------+--------------------+ +select c18, c18, rpad(c18, c18, c18), lpad(c18, c18, c18) from t1; ++------+------+---------------------+---------------------+ +| c18 | c18 | rpad(c18, c18, c18) | lpad(c18, c18, c18) | ++------+------+---------------------+---------------------+ +| 9 | 9 | 999999999 | 999999999 | ++------+------+---------------------+---------------------+ +select c18, c18, pad(c18, c18, c18) from t1; ++------+------+--------------------+ +| c18 | c18 | pad(c18, c18, c18) | ++------+------+--------------------+ +| 9 | 9 | 999999999 | ++------+------+--------------------+ +select c18, c19, rpad(c18, c18, c19), lpad(c18, c18, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c18 | c19 | rpad(c18, c18, c19) | lpad(c18, c18, c19) | ++------+---------------------+---------------------+---------------------+ +| 9 | 2019-12-01 12:00:00 | 92019-12- | 2019-12-9 | ++------+---------------------+---------------------+---------------------+ +select c18, c19, pad(c18, c18, c19) from t1; ++------+---------------------+--------------------+ +| c18 | c19 | pad(c18, c18, c19) | ++------+---------------------+--------------------+ +| 9 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c18, c20, rpad(c18, c18, c20), lpad(c18, c18, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c18 | c20 | rpad(c18, c18, c20) | lpad(c18, c18, c20) | ++------+---------------------+---------------------+---------------------+ +| 9 | 2019-12-03 06:00:00 | 92019-12- | 2019-12-9 | ++------+---------------------+---------------------+---------------------+ +select c18, c20, pad(c18, c18, c20) from t1; ++------+---------------------+--------------------+ +| c18 | c20 | pad(c18, c18, c20) | ++------+---------------------+--------------------+ +| 9 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c18, c21, rpad(c18, c18, c21), lpad(c18, c18, c21) from t1; ++------+------+---------------------+---------------------+ +| c18 | c21 | rpad(c18, c18, c21) | lpad(c18, c18, c21) | ++------+------+---------------------+---------------------+ +| 9 | 9.5 | 99.59.59. | 9.59.59.9 | ++------+------+---------------------+---------------------+ +select c18, c21, pad(c18, c18, c21) from t1; ++------+------+--------------------+ +| c18 | c21 | pad(c18, c18, c21) | ++------+------+--------------------+ +| 9 | 9.5 | 9999999999 | ++------+------+--------------------+ +select c18, c22, rpad(c18, c18, c22), lpad(c18, c18, c22) from t1; ++------+------+---------------------+---------------------+ +| c18 | c22 | rpad(c18, c18, c22) | lpad(c18, c18, c22) | ++------+------+---------------------+---------------------+ +| 9 | 10.5 | 910.510.5 | 10.510.59 | ++------+------+---------------------+---------------------+ +select c18, c22, pad(c18, c18, c22) from t1; ++------+------+--------------------+ +| c18 | c22 | pad(c18, c18, c22) | ++------+------+--------------------+ +| 9 | 10.5 | 99999999999 | ++------+------+--------------------+ +select c19, c1, rpad(c19, c19, c1), lpad(c19, c19, c1) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c1 | rpad(c19, c19, c1) | lpad(c19, c19, c1) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c1, pad(c19, c19, c1) from t1; ++---------------------+------+---------------------+ +| c19 | c1 | pad(c19, c19, c1) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c2, rpad(c19, c19, c2), lpad(c19, c19, c2) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c2 | rpad(c19, c19, c2) | lpad(c19, c19, c2) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 2 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c2, pad(c19, c19, c2) from t1; ++---------------------+------+---------------------+ +| c19 | c2 | pad(c19, c19, c2) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c3, rpad(c19, c19, c3), lpad(c19, c19, c3) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c3 | rpad(c19, c19, c3) | lpad(c19, c19, c3) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c3, pad(c19, c19, c3) from t1; ++---------------------+------+---------------------+ +| c19 | c3 | pad(c19, c19, c3) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c4, rpad(c19, c19, c4), lpad(c19, c19, c4) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c4 | rpad(c19, c19, c4) | lpad(c19, c19, c4) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 2 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c4, pad(c19, c19, c4) from t1; ++---------------------+------+---------------------+ +| c19 | c4 | pad(c19, c19, c4) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c5, rpad(c19, c19, c5), lpad(c19, c19, c5) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c5 | rpad(c19, c19, c5) | lpad(c19, c19, c5) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c5, pad(c19, c19, c5) from t1; ++---------------------+------+---------------------+ +| c19 | c5 | pad(c19, c19, c5) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c6, rpad(c19, c19, c6), lpad(c19, c19, c6) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c6 | rpad(c19, c19, c6) | lpad(c19, c19, c6) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 2 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c6, pad(c19, c19, c6) from t1; ++---------------------+------+---------------------+ +| c19 | c6 | pad(c19, c19, c6) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c7, rpad(c19, c19, c7), lpad(c19, c19, c7) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c7 | rpad(c19, c19, c7) | lpad(c19, c19, c7) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c7, pad(c19, c19, c7) from t1; ++---------------------+------+---------------------+ +| c19 | c7 | pad(c19, c19, c7) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c8, rpad(c19, c19, c8), lpad(c19, c19, c8) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c8 | rpad(c19, c19, c8) | lpad(c19, c19, c8) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 2 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c8, pad(c19, c19, c8) from t1; ++---------------------+------+---------------------+ +| c19 | c8 | pad(c19, c19, c8) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c9, rpad(c19, c19, c9), lpad(c19, c19, c9) from t1; ++---------------------+------+--------------------+--------------------+ +| c19 | c9 | rpad(c19, c19, c9) | lpad(c19, c19, c9) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-01 12:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c9, pad(c19, c19, c9) from t1; ++---------------------+------+---------------------+ +| c19 | c9 | pad(c19, c19, c9) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c10, rpad(c19, c19, c10), lpad(c19, c19, c10) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c10 | rpad(c19, c19, c10) | lpad(c19, c19, c10) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c10, pad(c19, c19, c10) from t1; ++---------------------+------+---------------------+ +| c19 | c10 | pad(c19, c19, c10) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c11, rpad(c19, c19, c11), lpad(c19, c19, c11) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c11 | rpad(c19, c19, c11) | lpad(c19, c19, c11) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 1 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c11, pad(c19, c19, c11) from t1; ++---------------------+------+---------------------+ +| c19 | c11 | pad(c19, c19, c11) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c12, rpad(c19, c19, c12), lpad(c19, c19, c12) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c12 | rpad(c19, c19, c12) | lpad(c19, c19, c12) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c12, pad(c19, c19, c12) from t1; ++---------------------+------+---------------------+ +| c19 | c12 | pad(c19, c19, c12) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c13, rpad(c19, c19, c13), lpad(c19, c19, c13) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c13 | rpad(c19, c19, c13) | lpad(c19, c19, c13) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 3.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c13, pad(c19, c19, c13) from t1; ++---------------------+------+---------------------+ +| c19 | c13 | pad(c19, c19, c13) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 3.5 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c14, rpad(c19, c19, c14), lpad(c19, c19, c14) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c14 | rpad(c19, c19, c14) | lpad(c19, c19, c14) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 4.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c14, pad(c19, c19, c14) from t1; ++---------------------+------+---------------------+ +| c19 | c14 | pad(c19, c19, c14) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 4.5 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c15, rpad(c19, c19, c15), lpad(c19, c19, c15) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c15 | rpad(c19, c19, c15) | lpad(c19, c19, c15) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 5.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c15, pad(c19, c19, c15) from t1; ++---------------------+------+---------------------+ +| c19 | c15 | pad(c19, c19, c15) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 5.5 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c16, rpad(c19, c19, c16), lpad(c19, c19, c16) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c16 | rpad(c19, c19, c16) | lpad(c19, c19, c16) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 6.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c16, pad(c19, c19, c16) from t1; ++---------------------+------+---------------------+ +| c19 | c16 | pad(c19, c19, c16) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 6.5 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c17, rpad(c19, c19, c17), lpad(c19, c19, c17) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c17 | rpad(c19, c19, c17) | lpad(c19, c19, c17) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 8 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c17, pad(c19, c19, c17) from t1; ++---------------------+------+---------------------+ +| c19 | c17 | pad(c19, c19, c17) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 8 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c18, rpad(c19, c19, c18), lpad(c19, c19, c18) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c18 | rpad(c19, c19, c18) | lpad(c19, c19, c18) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 9 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c18, pad(c19, c19, c18) from t1; ++---------------------+------+---------------------+ +| c19 | c18 | pad(c19, c19, c18) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 9 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c19, rpad(c19, c19, c19), lpad(c19, c19, c19) from t1; ++---------------------+---------------------+---------------------+---------------------+ +| c19 | c19 | rpad(c19, c19, c19) | lpad(c19, c19, c19) | ++---------------------+---------------------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | NULL | NULL | ++---------------------+---------------------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c19, pad(c19, c19, c19) from t1; ++---------------------+---------------------+--------------------+ +| c19 | c19 | pad(c19, c19, c19) | ++---------------------+---------------------+--------------------+ +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | NULL | ++---------------------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c20, rpad(c19, c19, c20), lpad(c19, c19, c20) from t1; ++---------------------+---------------------+---------------------+---------------------+ +| c19 | c20 | rpad(c19, c19, c20) | lpad(c19, c19, c20) | ++---------------------+---------------------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | NULL | NULL | ++---------------------+---------------------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c20, pad(c19, c19, c20) from t1; ++---------------------+---------------------+--------------------+ +| c19 | c20 | pad(c19, c19, c20) | ++---------------------+---------------------+--------------------+ +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | NULL | ++---------------------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c21, rpad(c19, c19, c21), lpad(c19, c19, c21) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c21 | rpad(c19, c19, c21) | lpad(c19, c19, c21) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 9.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c21, pad(c19, c19, c21) from t1; ++---------------------+------+---------------------+ +| c19 | c21 | pad(c19, c19, c21) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 9.5 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c19, c22, rpad(c19, c19, c22), lpad(c19, c19, c22) from t1; ++---------------------+------+---------------------+---------------------+ +| c19 | c22 | rpad(c19, c19, c22) | lpad(c19, c19, c22) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 10.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c19, c22, pad(c19, c19, c22) from t1; ++---------------------+------+---------------------+ +| c19 | c22 | pad(c19, c19, c22) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 10.5 | 2019-12-01 12:00:00 | ++---------------------+------+---------------------+ +select c20, c1, rpad(c20, c20, c1), lpad(c20, c20, c1) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c1 | rpad(c20, c20, c1) | lpad(c20, c20, c1) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c1, pad(c20, c20, c1) from t1; ++---------------------+------+---------------------+ +| c20 | c1 | pad(c20, c20, c1) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c2, rpad(c20, c20, c2), lpad(c20, c20, c2) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c2 | rpad(c20, c20, c2) | lpad(c20, c20, c2) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 2 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c2, pad(c20, c20, c2) from t1; ++---------------------+------+---------------------+ +| c20 | c2 | pad(c20, c20, c2) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c3, rpad(c20, c20, c3), lpad(c20, c20, c3) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c3 | rpad(c20, c20, c3) | lpad(c20, c20, c3) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c3, pad(c20, c20, c3) from t1; ++---------------------+------+---------------------+ +| c20 | c3 | pad(c20, c20, c3) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c4, rpad(c20, c20, c4), lpad(c20, c20, c4) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c4 | rpad(c20, c20, c4) | lpad(c20, c20, c4) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 2 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c4, pad(c20, c20, c4) from t1; ++---------------------+------+---------------------+ +| c20 | c4 | pad(c20, c20, c4) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c5, rpad(c20, c20, c5), lpad(c20, c20, c5) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c5 | rpad(c20, c20, c5) | lpad(c20, c20, c5) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c5, pad(c20, c20, c5) from t1; ++---------------------+------+---------------------+ +| c20 | c5 | pad(c20, c20, c5) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c6, rpad(c20, c20, c6), lpad(c20, c20, c6) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c6 | rpad(c20, c20, c6) | lpad(c20, c20, c6) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 2 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c6, pad(c20, c20, c6) from t1; ++---------------------+------+---------------------+ +| c20 | c6 | pad(c20, c20, c6) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c7, rpad(c20, c20, c7), lpad(c20, c20, c7) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c7 | rpad(c20, c20, c7) | lpad(c20, c20, c7) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c7, pad(c20, c20, c7) from t1; ++---------------------+------+---------------------+ +| c20 | c7 | pad(c20, c20, c7) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c8, rpad(c20, c20, c8), lpad(c20, c20, c8) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c8 | rpad(c20, c20, c8) | lpad(c20, c20, c8) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 2 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c8, pad(c20, c20, c8) from t1; ++---------------------+------+---------------------+ +| c20 | c8 | pad(c20, c20, c8) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c9, rpad(c20, c20, c9), lpad(c20, c20, c9) from t1; ++---------------------+------+--------------------+--------------------+ +| c20 | c9 | rpad(c20, c20, c9) | lpad(c20, c20, c9) | ++---------------------+------+--------------------+--------------------+ +| 2019-12-03 06:00:00 | 1 | NULL | NULL | ++---------------------+------+--------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c9, pad(c20, c20, c9) from t1; ++---------------------+------+---------------------+ +| c20 | c9 | pad(c20, c20, c9) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c10, rpad(c20, c20, c10), lpad(c20, c20, c10) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c10 | rpad(c20, c20, c10) | lpad(c20, c20, c10) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c10, pad(c20, c20, c10) from t1; ++---------------------+------+---------------------+ +| c20 | c10 | pad(c20, c20, c10) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c11, rpad(c20, c20, c11), lpad(c20, c20, c11) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c11 | rpad(c20, c20, c11) | lpad(c20, c20, c11) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 1 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c11, pad(c20, c20, c11) from t1; ++---------------------+------+---------------------+ +| c20 | c11 | pad(c20, c20, c11) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c12, rpad(c20, c20, c12), lpad(c20, c20, c12) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c12 | rpad(c20, c20, c12) | lpad(c20, c20, c12) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c12, pad(c20, c20, c12) from t1; ++---------------------+------+---------------------+ +| c20 | c12 | pad(c20, c20, c12) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c13, rpad(c20, c20, c13), lpad(c20, c20, c13) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c13 | rpad(c20, c20, c13) | lpad(c20, c20, c13) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 3.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c13, pad(c20, c20, c13) from t1; ++---------------------+------+---------------------+ +| c20 | c13 | pad(c20, c20, c13) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 3.5 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c14, rpad(c20, c20, c14), lpad(c20, c20, c14) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c14 | rpad(c20, c20, c14) | lpad(c20, c20, c14) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 4.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c14, pad(c20, c20, c14) from t1; ++---------------------+------+---------------------+ +| c20 | c14 | pad(c20, c20, c14) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 4.5 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c15, rpad(c20, c20, c15), lpad(c20, c20, c15) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c15 | rpad(c20, c20, c15) | lpad(c20, c20, c15) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 5.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c15, pad(c20, c20, c15) from t1; ++---------------------+------+---------------------+ +| c20 | c15 | pad(c20, c20, c15) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 5.5 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c16, rpad(c20, c20, c16), lpad(c20, c20, c16) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c16 | rpad(c20, c20, c16) | lpad(c20, c20, c16) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 6.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c16, pad(c20, c20, c16) from t1; ++---------------------+------+---------------------+ +| c20 | c16 | pad(c20, c20, c16) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 6.5 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c17, rpad(c20, c20, c17), lpad(c20, c20, c17) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c17 | rpad(c20, c20, c17) | lpad(c20, c20, c17) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 8 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c17, pad(c20, c20, c17) from t1; ++---------------------+------+---------------------+ +| c20 | c17 | pad(c20, c20, c17) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 8 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c18, rpad(c20, c20, c18), lpad(c20, c20, c18) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c18 | rpad(c20, c20, c18) | lpad(c20, c20, c18) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 9 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c18, pad(c20, c20, c18) from t1; ++---------------------+------+---------------------+ +| c20 | c18 | pad(c20, c20, c18) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 9 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c19, rpad(c20, c20, c19), lpad(c20, c20, c19) from t1; ++---------------------+---------------------+---------------------+---------------------+ +| c20 | c19 | rpad(c20, c20, c19) | lpad(c20, c20, c19) | ++---------------------+---------------------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | NULL | NULL | ++---------------------+---------------------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c19, pad(c20, c20, c19) from t1; ++---------------------+---------------------+--------------------+ +| c20 | c19 | pad(c20, c20, c19) | ++---------------------+---------------------+--------------------+ +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | NULL | ++---------------------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c20, rpad(c20, c20, c20), lpad(c20, c20, c20) from t1; ++---------------------+---------------------+---------------------+---------------------+ +| c20 | c20 | rpad(c20, c20, c20) | lpad(c20, c20, c20) | ++---------------------+---------------------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | NULL | NULL | ++---------------------+---------------------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c20, pad(c20, c20, c20) from t1; ++---------------------+---------------------+--------------------+ +| c20 | c20 | pad(c20, c20, c20) | ++---------------------+---------------------+--------------------+ +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | NULL | ++---------------------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c21, rpad(c20, c20, c21), lpad(c20, c20, c21) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c21 | rpad(c20, c20, c21) | lpad(c20, c20, c21) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 9.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c21, pad(c20, c20, c21) from t1; ++---------------------+------+---------------------+ +| c20 | c21 | pad(c20, c20, c21) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 9.5 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c20, c22, rpad(c20, c20, c22), lpad(c20, c20, c22) from t1; ++---------------------+------+---------------------+---------------------+ +| c20 | c22 | rpad(c20, c20, c22) | lpad(c20, c20, c22) | ++---------------------+------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 10.5 | NULL | NULL | ++---------------------+------+---------------------+---------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +Warning 1301 Result of lpad() was larger than max_allowed_packet (4194304) - truncated +select c20, c22, pad(c20, c20, c22) from t1; ++---------------------+------+---------------------+ +| c20 | c22 | pad(c20, c20, c22) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 10.5 | 2019-12-03 06:00:00 | ++---------------------+------+---------------------+ +select c21, c1, rpad(c21, c21, c1), lpad(c21, c21, c1) from t1; ++------+------+--------------------+--------------------+ +| c21 | c1 | rpad(c21, c21, c1) | lpad(c21, c21, c1) | ++------+------+--------------------+--------------------+ +| 9.5 | 1 | 9.51111111 | 11111119.5 | ++------+------+--------------------+--------------------+ +select c21, c1, pad(c21, c21, c1) from t1; ++------+------+-------------------+ +| c21 | c1 | pad(c21, c21, c1) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | ++------+------+-------------------+ +select c21, c2, rpad(c21, c21, c2), lpad(c21, c21, c2) from t1; ++------+------+--------------------+--------------------+ +| c21 | c2 | rpad(c21, c21, c2) | lpad(c21, c21, c2) | ++------+------+--------------------+--------------------+ +| 9.5 | 2 | 9.52222222 | 22222229.5 | ++------+------+--------------------+--------------------+ +select c21, c2, pad(c21, c21, c2) from t1; ++------+------+-------------------+ +| c21 | c2 | pad(c21, c21, c2) | ++------+------+-------------------+ +| 9.5 | 2 | 9.5 | ++------+------+-------------------+ +select c21, c3, rpad(c21, c21, c3), lpad(c21, c21, c3) from t1; ++------+------+--------------------+--------------------+ +| c21 | c3 | rpad(c21, c21, c3) | lpad(c21, c21, c3) | ++------+------+--------------------+--------------------+ +| 9.5 | 1 | 9.51111111 | 11111119.5 | ++------+------+--------------------+--------------------+ +select c21, c3, pad(c21, c21, c3) from t1; ++------+------+-------------------+ +| c21 | c3 | pad(c21, c21, c3) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | ++------+------+-------------------+ +select c21, c4, rpad(c21, c21, c4), lpad(c21, c21, c4) from t1; ++------+------+--------------------+--------------------+ +| c21 | c4 | rpad(c21, c21, c4) | lpad(c21, c21, c4) | ++------+------+--------------------+--------------------+ +| 9.5 | 2 | 9.52222222 | 22222229.5 | ++------+------+--------------------+--------------------+ +select c21, c4, pad(c21, c21, c4) from t1; ++------+------+-------------------+ +| c21 | c4 | pad(c21, c21, c4) | ++------+------+-------------------+ +| 9.5 | 2 | 9.5 | ++------+------+-------------------+ +select c21, c5, rpad(c21, c21, c5), lpad(c21, c21, c5) from t1; ++------+------+--------------------+--------------------+ +| c21 | c5 | rpad(c21, c21, c5) | lpad(c21, c21, c5) | ++------+------+--------------------+--------------------+ +| 9.5 | 1 | 9.51111111 | 11111119.5 | ++------+------+--------------------+--------------------+ +select c21, c5, pad(c21, c21, c5) from t1; ++------+------+-------------------+ +| c21 | c5 | pad(c21, c21, c5) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | ++------+------+-------------------+ +select c21, c6, rpad(c21, c21, c6), lpad(c21, c21, c6) from t1; ++------+------+--------------------+--------------------+ +| c21 | c6 | rpad(c21, c21, c6) | lpad(c21, c21, c6) | ++------+------+--------------------+--------------------+ +| 9.5 | 2 | 9.52222222 | 22222229.5 | ++------+------+--------------------+--------------------+ +select c21, c6, pad(c21, c21, c6) from t1; ++------+------+-------------------+ +| c21 | c6 | pad(c21, c21, c6) | ++------+------+-------------------+ +| 9.5 | 2 | 9.5 | ++------+------+-------------------+ +select c21, c7, rpad(c21, c21, c7), lpad(c21, c21, c7) from t1; ++------+------+--------------------+--------------------+ +| c21 | c7 | rpad(c21, c21, c7) | lpad(c21, c21, c7) | ++------+------+--------------------+--------------------+ +| 9.5 | 1 | 9.51111111 | 11111119.5 | ++------+------+--------------------+--------------------+ +select c21, c7, pad(c21, c21, c7) from t1; ++------+------+-------------------+ +| c21 | c7 | pad(c21, c21, c7) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | ++------+------+-------------------+ +select c21, c8, rpad(c21, c21, c8), lpad(c21, c21, c8) from t1; ++------+------+--------------------+--------------------+ +| c21 | c8 | rpad(c21, c21, c8) | lpad(c21, c21, c8) | ++------+------+--------------------+--------------------+ +| 9.5 | 2 | 9.52222222 | 22222229.5 | ++------+------+--------------------+--------------------+ +select c21, c8, pad(c21, c21, c8) from t1; ++------+------+-------------------+ +| c21 | c8 | pad(c21, c21, c8) | ++------+------+-------------------+ +| 9.5 | 2 | 9.5 | ++------+------+-------------------+ +select c21, c9, rpad(c21, c21, c9), lpad(c21, c21, c9) from t1; ++------+------+--------------------+--------------------+ +| c21 | c9 | rpad(c21, c21, c9) | lpad(c21, c21, c9) | ++------+------+--------------------+--------------------+ +| 9.5 | 1 | 9.51111111 | 11111119.5 | ++------+------+--------------------+--------------------+ +select c21, c9, pad(c21, c21, c9) from t1; ++------+------+-------------------+ +| c21 | c9 | pad(c21, c21, c9) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | ++------+------+-------------------+ +select c21, c10, rpad(c21, c21, c10), lpad(c21, c21, c10) from t1; ++------+------+---------------------+---------------------+ +| c21 | c10 | rpad(c21, c21, c10) | lpad(c21, c21, c10) | ++------+------+---------------------+---------------------+ +| 9.5 | 2 | 9.52222222 | 22222229.5 | ++------+------+---------------------+---------------------+ +select c21, c10, pad(c21, c21, c10) from t1; ++------+------+--------------------+ +| c21 | c10 | pad(c21, c21, c10) | ++------+------+--------------------+ +| 9.5 | 2 | 9.5 | ++------+------+--------------------+ +select c21, c11, rpad(c21, c21, c11), lpad(c21, c21, c11) from t1; ++------+------+---------------------+---------------------+ +| c21 | c11 | rpad(c21, c21, c11) | lpad(c21, c21, c11) | ++------+------+---------------------+---------------------+ +| 9.5 | 1 | 9.51111111 | 11111119.5 | ++------+------+---------------------+---------------------+ +select c21, c11, pad(c21, c21, c11) from t1; ++------+------+--------------------+ +| c21 | c11 | pad(c21, c21, c11) | ++------+------+--------------------+ +| 9.5 | 1 | 9.5 | ++------+------+--------------------+ +select c21, c12, rpad(c21, c21, c12), lpad(c21, c21, c12) from t1; ++------+------+---------------------+---------------------+ +| c21 | c12 | rpad(c21, c21, c12) | lpad(c21, c21, c12) | ++------+------+---------------------+---------------------+ +| 9.5 | 2 | 9.52222222 | 22222229.5 | ++------+------+---------------------+---------------------+ +select c21, c12, pad(c21, c21, c12) from t1; ++------+------+--------------------+ +| c21 | c12 | pad(c21, c21, c12) | ++------+------+--------------------+ +| 9.5 | 2 | 9.5 | ++------+------+--------------------+ +select c21, c13, rpad(c21, c21, c13), lpad(c21, c21, c13) from t1; ++------+------+---------------------+---------------------+ +| c21 | c13 | rpad(c21, c21, c13) | lpad(c21, c21, c13) | ++------+------+---------------------+---------------------+ +| 9.5 | 3.5 | 9.53.53.53 | 3.53.539.5 | ++------+------+---------------------+---------------------+ +select c21, c13, pad(c21, c21, c13) from t1; ++------+------+--------------------+ +| c21 | c13 | pad(c21, c21, c13) | ++------+------+--------------------+ +| 9.5 | 3.5 | 9.59 | ++------+------+--------------------+ +select c21, c14, rpad(c21, c21, c14), lpad(c21, c21, c14) from t1; ++------+------+---------------------+---------------------+ +| c21 | c14 | rpad(c21, c21, c14) | lpad(c21, c21, c14) | ++------+------+---------------------+---------------------+ +| 9.5 | 4.5 | 9.54.54.54 | 4.54.549.5 | ++------+------+---------------------+---------------------+ +select c21, c14, pad(c21, c21, c14) from t1; ++------+------+--------------------+ +| c21 | c14 | pad(c21, c21, c14) | ++------+------+--------------------+ +| 9.5 | 4.5 | 9.59 | ++------+------+--------------------+ +select c21, c15, rpad(c21, c21, c15), lpad(c21, c21, c15) from t1; ++------+------+---------------------+---------------------+ +| c21 | c15 | rpad(c21, c21, c15) | lpad(c21, c21, c15) | ++------+------+---------------------+---------------------+ +| 9.5 | 5.5 | 9.55.55.55 | 5.55.559.5 | ++------+------+---------------------+---------------------+ +select c21, c15, pad(c21, c21, c15) from t1; ++------+------+--------------------+ +| c21 | c15 | pad(c21, c21, c15) | ++------+------+--------------------+ +| 9.5 | 5.5 | 9.59.5 | ++------+------+--------------------+ +select c21, c16, rpad(c21, c21, c16), lpad(c21, c21, c16) from t1; ++------+------+---------------------+---------------------+ +| c21 | c16 | rpad(c21, c21, c16) | lpad(c21, c21, c16) | ++------+------+---------------------+---------------------+ +| 9.5 | 6.5 | 9.56.56.56 | 6.56.569.5 | ++------+------+---------------------+---------------------+ +select c21, c16, pad(c21, c21, c16) from t1; ++------+------+--------------------+ +| c21 | c16 | pad(c21, c21, c16) | ++------+------+--------------------+ +| 9.5 | 6.5 | 9.59.5 | ++------+------+--------------------+ +select c21, c17, rpad(c21, c21, c17), lpad(c21, c21, c17) from t1; ++------+------+---------------------+---------------------+ +| c21 | c17 | rpad(c21, c21, c17) | lpad(c21, c21, c17) | ++------+------+---------------------+---------------------+ +| 9.5 | 8 | 9.58888888 | 88888889.5 | ++------+------+---------------------+---------------------+ +select c21, c17, pad(c21, c21, c17) from t1; ++------+------+--------------------+ +| c21 | c17 | pad(c21, c21, c17) | ++------+------+--------------------+ +| 9.5 | 8 | 9.59.59. | ++------+------+--------------------+ +select c21, c18, rpad(c21, c21, c18), lpad(c21, c21, c18) from t1; ++------+------+---------------------+---------------------+ +| c21 | c18 | rpad(c21, c21, c18) | lpad(c21, c21, c18) | ++------+------+---------------------+---------------------+ +| 9.5 | 9 | 9.59999999 | 99999999.5 | ++------+------+---------------------+---------------------+ +select c21, c18, pad(c21, c21, c18) from t1; ++------+------+--------------------+ +| c21 | c18 | pad(c21, c21, c18) | ++------+------+--------------------+ +| 9.5 | 9 | 9.59.59.5 | ++------+------+--------------------+ +select c21, c19, rpad(c21, c21, c19), lpad(c21, c21, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c21 | c19 | rpad(c21, c21, c19) | lpad(c21, c21, c19) | ++------+---------------------+---------------------+---------------------+ +| 9.5 | 2019-12-01 12:00:00 | 9.52019-12 | 2019-129.5 | ++------+---------------------+---------------------+---------------------+ +select c21, c19, pad(c21, c21, c19) from t1; ++------+---------------------+--------------------+ +| c21 | c19 | pad(c21, c21, c19) | ++------+---------------------+--------------------+ +| 9.5 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c21, c20, rpad(c21, c21, c20), lpad(c21, c21, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c21 | c20 | rpad(c21, c21, c20) | lpad(c21, c21, c20) | ++------+---------------------+---------------------+---------------------+ +| 9.5 | 2019-12-03 06:00:00 | 9.52019-12 | 2019-129.5 | ++------+---------------------+---------------------+---------------------+ +select c21, c20, pad(c21, c21, c20) from t1; ++------+---------------------+--------------------+ +| c21 | c20 | pad(c21, c21, c20) | ++------+---------------------+--------------------+ +| 9.5 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c21, c21, rpad(c21, c21, c21), lpad(c21, c21, c21) from t1; ++------+------+---------------------+---------------------+ +| c21 | c21 | rpad(c21, c21, c21) | lpad(c21, c21, c21) | ++------+------+---------------------+---------------------+ +| 9.5 | 9.5 | 9.59.59.59 | 9.59.599.5 | ++------+------+---------------------+---------------------+ +select c21, c21, pad(c21, c21, c21) from t1; ++------+------+--------------------+ +| c21 | c21 | pad(c21, c21, c21) | ++------+------+--------------------+ +| 9.5 | 9.5 | 9.59.59.59 | ++------+------+--------------------+ +select c21, c22, rpad(c21, c21, c22), lpad(c21, c21, c22) from t1; ++------+------+---------------------+---------------------+ +| c21 | c22 | rpad(c21, c21, c22) | lpad(c21, c21, c22) | ++------+------+---------------------+---------------------+ +| 9.5 | 10.5 | 9.510.510. | 10.510.9.5 | ++------+------+---------------------+---------------------+ +select c21, c22, pad(c21, c21, c22) from t1; ++------+------+--------------------+ +| c21 | c22 | pad(c21, c21, c22) | ++------+------+--------------------+ +| 9.5 | 10.5 | 9.59.59.59. | ++------+------+--------------------+ +select c22, c1, rpad(c22, c22, c1), lpad(c22, c22, c1) from t1; ++------+------+--------------------+--------------------+ +| c22 | c1 | rpad(c22, c22, c1) | lpad(c22, c22, c1) | ++------+------+--------------------+--------------------+ +| 10.5 | 1 | 10.51111111 | 111111110.5 | ++------+------+--------------------+--------------------+ +select c22, c1, pad(c22, c22, c1) from t1; ++------+------+-------------------+ +| c22 | c1 | pad(c22, c22, c1) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | ++------+------+-------------------+ +select c22, c2, rpad(c22, c22, c2), lpad(c22, c22, c2) from t1; ++------+------+--------------------+--------------------+ +| c22 | c2 | rpad(c22, c22, c2) | lpad(c22, c22, c2) | ++------+------+--------------------+--------------------+ +| 10.5 | 2 | 10.52222222 | 222222210.5 | ++------+------+--------------------+--------------------+ +select c22, c2, pad(c22, c22, c2) from t1; ++------+------+-------------------+ +| c22 | c2 | pad(c22, c22, c2) | ++------+------+-------------------+ +| 10.5 | 2 | 10.5 | ++------+------+-------------------+ +select c22, c3, rpad(c22, c22, c3), lpad(c22, c22, c3) from t1; ++------+------+--------------------+--------------------+ +| c22 | c3 | rpad(c22, c22, c3) | lpad(c22, c22, c3) | ++------+------+--------------------+--------------------+ +| 10.5 | 1 | 10.51111111 | 111111110.5 | ++------+------+--------------------+--------------------+ +select c22, c3, pad(c22, c22, c3) from t1; ++------+------+-------------------+ +| c22 | c3 | pad(c22, c22, c3) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | ++------+------+-------------------+ +select c22, c4, rpad(c22, c22, c4), lpad(c22, c22, c4) from t1; ++------+------+--------------------+--------------------+ +| c22 | c4 | rpad(c22, c22, c4) | lpad(c22, c22, c4) | ++------+------+--------------------+--------------------+ +| 10.5 | 2 | 10.52222222 | 222222210.5 | ++------+------+--------------------+--------------------+ +select c22, c4, pad(c22, c22, c4) from t1; ++------+------+-------------------+ +| c22 | c4 | pad(c22, c22, c4) | ++------+------+-------------------+ +| 10.5 | 2 | 10.5 | ++------+------+-------------------+ +select c22, c5, rpad(c22, c22, c5), lpad(c22, c22, c5) from t1; ++------+------+--------------------+--------------------+ +| c22 | c5 | rpad(c22, c22, c5) | lpad(c22, c22, c5) | ++------+------+--------------------+--------------------+ +| 10.5 | 1 | 10.51111111 | 111111110.5 | ++------+------+--------------------+--------------------+ +select c22, c5, pad(c22, c22, c5) from t1; ++------+------+-------------------+ +| c22 | c5 | pad(c22, c22, c5) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | ++------+------+-------------------+ +select c22, c6, rpad(c22, c22, c6), lpad(c22, c22, c6) from t1; ++------+------+--------------------+--------------------+ +| c22 | c6 | rpad(c22, c22, c6) | lpad(c22, c22, c6) | ++------+------+--------------------+--------------------+ +| 10.5 | 2 | 10.52222222 | 222222210.5 | ++------+------+--------------------+--------------------+ +select c22, c6, pad(c22, c22, c6) from t1; ++------+------+-------------------+ +| c22 | c6 | pad(c22, c22, c6) | ++------+------+-------------------+ +| 10.5 | 2 | 10.5 | ++------+------+-------------------+ +select c22, c7, rpad(c22, c22, c7), lpad(c22, c22, c7) from t1; ++------+------+--------------------+--------------------+ +| c22 | c7 | rpad(c22, c22, c7) | lpad(c22, c22, c7) | ++------+------+--------------------+--------------------+ +| 10.5 | 1 | 10.51111111 | 111111110.5 | ++------+------+--------------------+--------------------+ +select c22, c7, pad(c22, c22, c7) from t1; ++------+------+-------------------+ +| c22 | c7 | pad(c22, c22, c7) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | ++------+------+-------------------+ +select c22, c8, rpad(c22, c22, c8), lpad(c22, c22, c8) from t1; ++------+------+--------------------+--------------------+ +| c22 | c8 | rpad(c22, c22, c8) | lpad(c22, c22, c8) | ++------+------+--------------------+--------------------+ +| 10.5 | 2 | 10.52222222 | 222222210.5 | ++------+------+--------------------+--------------------+ +select c22, c8, pad(c22, c22, c8) from t1; ++------+------+-------------------+ +| c22 | c8 | pad(c22, c22, c8) | ++------+------+-------------------+ +| 10.5 | 2 | 10.5 | ++------+------+-------------------+ +select c22, c9, rpad(c22, c22, c9), lpad(c22, c22, c9) from t1; ++------+------+--------------------+--------------------+ +| c22 | c9 | rpad(c22, c22, c9) | lpad(c22, c22, c9) | ++------+------+--------------------+--------------------+ +| 10.5 | 1 | 10.51111111 | 111111110.5 | ++------+------+--------------------+--------------------+ +select c22, c9, pad(c22, c22, c9) from t1; ++------+------+-------------------+ +| c22 | c9 | pad(c22, c22, c9) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | ++------+------+-------------------+ +select c22, c10, rpad(c22, c22, c10), lpad(c22, c22, c10) from t1; ++------+------+---------------------+---------------------+ +| c22 | c10 | rpad(c22, c22, c10) | lpad(c22, c22, c10) | ++------+------+---------------------+---------------------+ +| 10.5 | 2 | 10.52222222 | 222222210.5 | ++------+------+---------------------+---------------------+ +select c22, c10, pad(c22, c22, c10) from t1; ++------+------+--------------------+ +| c22 | c10 | pad(c22, c22, c10) | ++------+------+--------------------+ +| 10.5 | 2 | 10.5 | ++------+------+--------------------+ +select c22, c11, rpad(c22, c22, c11), lpad(c22, c22, c11) from t1; ++------+------+---------------------+---------------------+ +| c22 | c11 | rpad(c22, c22, c11) | lpad(c22, c22, c11) | ++------+------+---------------------+---------------------+ +| 10.5 | 1 | 10.51111111 | 111111110.5 | ++------+------+---------------------+---------------------+ +select c22, c11, pad(c22, c22, c11) from t1; ++------+------+--------------------+ +| c22 | c11 | pad(c22, c22, c11) | ++------+------+--------------------+ +| 10.5 | 1 | 10.5 | ++------+------+--------------------+ +select c22, c12, rpad(c22, c22, c12), lpad(c22, c22, c12) from t1; ++------+------+---------------------+---------------------+ +| c22 | c12 | rpad(c22, c22, c12) | lpad(c22, c22, c12) | ++------+------+---------------------+---------------------+ +| 10.5 | 2 | 10.52222222 | 222222210.5 | ++------+------+---------------------+---------------------+ +select c22, c12, pad(c22, c22, c12) from t1; ++------+------+--------------------+ +| c22 | c12 | pad(c22, c22, c12) | ++------+------+--------------------+ +| 10.5 | 2 | 10.5 | ++------+------+--------------------+ +select c22, c13, rpad(c22, c22, c13), lpad(c22, c22, c13) from t1; ++------+------+---------------------+---------------------+ +| c22 | c13 | rpad(c22, c22, c13) | lpad(c22, c22, c13) | ++------+------+---------------------+---------------------+ +| 10.5 | 3.5 | 10.53.53.53 | 3.53.5310.5 | ++------+------+---------------------+---------------------+ +select c22, c13, pad(c22, c22, c13) from t1; ++------+------+--------------------+ +| c22 | c13 | pad(c22, c22, c13) | ++------+------+--------------------+ +| 10.5 | 3.5 | 10.5 | ++------+------+--------------------+ +select c22, c14, rpad(c22, c22, c14), lpad(c22, c22, c14) from t1; ++------+------+---------------------+---------------------+ +| c22 | c14 | rpad(c22, c22, c14) | lpad(c22, c22, c14) | ++------+------+---------------------+---------------------+ +| 10.5 | 4.5 | 10.54.54.54 | 4.54.5410.5 | ++------+------+---------------------+---------------------+ +select c22, c14, pad(c22, c22, c14) from t1; ++------+------+--------------------+ +| c22 | c14 | pad(c22, c22, c14) | ++------+------+--------------------+ +| 10.5 | 4.5 | 10.5 | ++------+------+--------------------+ +select c22, c15, rpad(c22, c22, c15), lpad(c22, c22, c15) from t1; ++------+------+---------------------+---------------------+ +| c22 | c15 | rpad(c22, c22, c15) | lpad(c22, c22, c15) | ++------+------+---------------------+---------------------+ +| 10.5 | 5.5 | 10.55.55.55 | 5.55.5510.5 | ++------+------+---------------------+---------------------+ +select c22, c15, pad(c22, c22, c15) from t1; ++------+------+--------------------+ +| c22 | c15 | pad(c22, c22, c15) | ++------+------+--------------------+ +| 10.5 | 5.5 | 10.510 | ++------+------+--------------------+ +select c22, c16, rpad(c22, c22, c16), lpad(c22, c22, c16) from t1; ++------+------+---------------------+---------------------+ +| c22 | c16 | rpad(c22, c22, c16) | lpad(c22, c22, c16) | ++------+------+---------------------+---------------------+ +| 10.5 | 6.5 | 10.56.56.56 | 6.56.5610.5 | ++------+------+---------------------+---------------------+ +select c22, c16, pad(c22, c22, c16) from t1; ++------+------+--------------------+ +| c22 | c16 | pad(c22, c22, c16) | ++------+------+--------------------+ +| 10.5 | 6.5 | 10.510 | ++------+------+--------------------+ +select c22, c17, rpad(c22, c22, c17), lpad(c22, c22, c17) from t1; ++------+------+---------------------+---------------------+ +| c22 | c17 | rpad(c22, c22, c17) | lpad(c22, c22, c17) | ++------+------+---------------------+---------------------+ +| 10.5 | 8 | 10.58888888 | 888888810.5 | ++------+------+---------------------+---------------------+ +select c22, c17, pad(c22, c22, c17) from t1; ++------+------+--------------------+ +| c22 | c17 | pad(c22, c22, c17) | ++------+------+--------------------+ +| 10.5 | 8 | 10.510.5 | ++------+------+--------------------+ +select c22, c18, rpad(c22, c22, c18), lpad(c22, c22, c18) from t1; ++------+------+---------------------+---------------------+ +| c22 | c18 | rpad(c22, c22, c18) | lpad(c22, c22, c18) | ++------+------+---------------------+---------------------+ +| 10.5 | 9 | 10.59999999 | 999999910.5 | ++------+------+---------------------+---------------------+ +select c22, c18, pad(c22, c22, c18) from t1; ++------+------+--------------------+ +| c22 | c18 | pad(c22, c22, c18) | ++------+------+--------------------+ +| 10.5 | 9 | 10.510.51 | ++------+------+--------------------+ +select c22, c19, rpad(c22, c22, c19), lpad(c22, c22, c19) from t1; ++------+---------------------+---------------------+---------------------+ +| c22 | c19 | rpad(c22, c22, c19) | lpad(c22, c22, c19) | ++------+---------------------+---------------------+---------------------+ +| 10.5 | 2019-12-01 12:00:00 | 10.52019-12 | 2019-1210.5 | ++------+---------------------+---------------------+---------------------+ +select c22, c19, pad(c22, c22, c19) from t1; ++------+---------------------+--------------------+ +| c22 | c19 | pad(c22, c22, c19) | ++------+---------------------+--------------------+ +| 10.5 | 2019-12-01 12:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c22, c20, rpad(c22, c22, c20), lpad(c22, c22, c20) from t1; ++------+---------------------+---------------------+---------------------+ +| c22 | c20 | rpad(c22, c22, c20) | lpad(c22, c22, c20) | ++------+---------------------+---------------------+---------------------+ +| 10.5 | 2019-12-03 06:00:00 | 10.52019-12 | 2019-1210.5 | ++------+---------------------+---------------------+---------------------+ +select c22, c20, pad(c22, c22, c20) from t1; ++------+---------------------+--------------------+ +| c22 | c20 | pad(c22, c22, c20) | ++------+---------------------+--------------------+ +| 10.5 | 2019-12-03 06:00:00 | NULL | ++------+---------------------+--------------------+ +Warnings: +Warning 1301 Result of rpad() was larger than max_allowed_packet (4194304) - truncated +select c22, c21, rpad(c22, c22, c21), lpad(c22, c22, c21) from t1; ++------+------+---------------------+---------------------+ +| c22 | c21 | rpad(c22, c22, c21) | lpad(c22, c22, c21) | ++------+------+---------------------+---------------------+ +| 10.5 | 9.5 | 10.59.59.59 | 9.59.5910.5 | ++------+------+---------------------+---------------------+ +select c22, c21, pad(c22, c22, c21) from t1; ++------+------+--------------------+ +| c22 | c21 | pad(c22, c22, c21) | ++------+------+--------------------+ +| 10.5 | 9.5 | 10.510.510 | ++------+------+--------------------+ +select c22, c22, rpad(c22, c22, c22), lpad(c22, c22, c22) from t1; ++------+------+---------------------+---------------------+ +| c22 | c22 | rpad(c22, c22, c22) | lpad(c22, c22, c22) | ++------+------+---------------------+---------------------+ +| 10.5 | 10.5 | 10.510.510. | 10.510.10.5 | ++------+------+---------------------+---------------------+ +select c22, c22, pad(c22, c22, c22) from t1; ++------+------+--------------------+ +| c22 | c22 | pad(c22, c22, c22) | ++------+------+--------------------+ +| 10.5 | 10.5 | 10.510.510. | ++------+------+--------------------+ + +select lpad(); +ERROR 42000: Incorrect parameter count in the call to native function 'lpad' +select lpad(2, 2); +ERROR 42000: Incorrect parameter count in the call to native function 'lpad' +select lpad(2, 2, 2, 2); +ERROR 42000: Incorrect parameter count in the call to native function 'lpad' + +select lpad(2, 2, 2); ++---------------+ +| lpad(2, 2, 2) | ++---------------+ +| 22 | ++---------------+ + +select lpad('a', 5, 'b'); ++-------------------+ +| lpad('a', 5, 'b') | ++-------------------+ +| bbbba | ++-------------------+ +select lpad('a', 5, '12'); ++--------------------+ +| lpad('a', 5, '12') | ++--------------------+ +| 1212a | ++--------------------+ +select lpad('a', '5', 12); ++--------------------+ +| lpad('a', '5', 12) | ++--------------------+ +| 1212a | ++--------------------+ +select lpad('bb', 0, 'c'); ++--------------------+ +| lpad('bb', 0, 'c') | ++--------------------+ +| | ++--------------------+ +select lpad('bb', -1, 'c'); ++---------------------+ +| lpad('bb', -1, 'c') | ++---------------------+ +| NULL | ++---------------------+ + +select lpad('a', 5, NULL); ++--------------------+ +| lpad('a', 5, NULL) | ++--------------------+ +| NULL | ++--------------------+ +select lpad('a', 5, ''); ++------------------+ +| lpad('a', 5, '') | ++------------------+ +| NULL | ++------------------+ +select lpad(NULL, 5, 'a'); ++--------------------+ +| lpad(NULL, 5, 'a') | ++--------------------+ +| NULL | ++--------------------+ +select lpad('', 5, 'a'); ++------------------+ +| lpad('', 5, 'a') | ++------------------+ +| aaaaa | ++------------------+ + +select lpad('a', 0.49, 'b'); ++----------------------+ +| lpad('a', 0.49, 'b') | ++----------------------+ +| | ++----------------------+ +select lpad('a', 0.5, 'b'); ++---------------------+ +| lpad('a', 0.5, 'b') | ++---------------------+ +| a | ++---------------------+ +select lpad('a', -0.49, 'b'); ++-----------------------+ +| lpad('a', -0.49, 'b') | ++-----------------------+ +| | ++-----------------------+ +select lpad('a', -0.5, 'b'); ++----------------------+ +| lpad('a', -0.5, 'b') | ++----------------------+ +| NULL | ++----------------------+ + +set character_set_client=utf8; +set character_set_connection=utf8; +set character_set_database=utf8; +set character_set_results=utf8; +set character_set_server=utf8; + +set character_set_connection=binary; +select hex(lpad('钡', 2, 'c')); ++--------------------------+ +| hex(lpad('钡', 2, 'c')) | ++--------------------------+ +| E992 | ++--------------------------+ +set character_set_connection=utf8; +select hex(lpad('钡', 2, 'c')); ++--------------------------+ +| hex(lpad('钡', 2, 'c')) | ++--------------------------+ +| 63E992A1 | ++--------------------------+ + +select lpad('a', 1, '阿斯'), length(lpad('a', 1, '阿斯')) from dual; ++------------------------+--------------------------------+ +| lpad('a', 1, '阿斯') | length(lpad('a', 1, '阿斯')) | ++------------------------+--------------------------------+ +| a | 1 | ++------------------------+--------------------------------+ +select lpad('a', 2, '阿斯'), length(lpad('a', 2, '阿斯')) from dual; ++------------------------+--------------------------------+ +| lpad('a', 2, '阿斯') | length(lpad('a', 2, '阿斯')) | ++------------------------+--------------------------------+ +| 阿a | 4 | ++------------------------+--------------------------------+ +select lpad('a', 3, '阿斯'), length(lpad('a', 3, '阿斯')) from dual; ++------------------------+--------------------------------+ +| lpad('a', 3, '阿斯') | length(lpad('a', 3, '阿斯')) | ++------------------------+--------------------------------+ +| 阿斯a | 7 | ++------------------------+--------------------------------+ +select lpad('a', 4, '阿斯'), length(lpad('a', 4, '阿斯')) from dual; ++------------------------+--------------------------------+ +| lpad('a', 4, '阿斯') | length(lpad('a', 4, '阿斯')) | ++------------------------+--------------------------------+ +| 阿斯阿a | 10 | ++------------------------+--------------------------------+ +select lpad('a', 5, '阿斯'), length(lpad('a', 5, '阿斯')) from dual; ++------------------------+--------------------------------+ +| lpad('a', 5, '阿斯') | length(lpad('a', 5, '阿斯')) | ++------------------------+--------------------------------+ +| 阿斯阿斯a | 13 | ++------------------------+--------------------------------+ +select lpad('a', 6, '阿斯'), length(lpad('a', 6, '阿斯')) from dual; ++------------------------+--------------------------------+ +| lpad('a', 6, '阿斯') | length(lpad('a', 6, '阿斯')) | ++------------------------+--------------------------------+ +| 阿斯阿斯阿a | 16 | ++------------------------+--------------------------------+ +select lpad('a', 7, '阿斯'), length(lpad('a', 7, '阿斯')) from dual; ++------------------------+--------------------------------+ +| lpad('a', 7, '阿斯') | length(lpad('a', 7, '阿斯')) | ++------------------------+--------------------------------+ +| 阿斯阿斯阿斯a | 19 | ++------------------------+--------------------------------+ +select lpad('a', 8, '阿斯'), length(lpad('a', 8, '阿斯')) from dual; ++------------------------+--------------------------------+ +| lpad('a', 8, '阿斯') | length(lpad('a', 8, '阿斯')) | ++------------------------+--------------------------------+ +| 阿斯阿斯阿斯阿a | 22 | ++------------------------+--------------------------------+ + +select rpad('a', 1, '阿斯'), length(rpad('a', 1, '阿斯')) from dual; ++------------------------+--------------------------------+ +| rpad('a', 1, '阿斯') | length(rpad('a', 1, '阿斯')) | ++------------------------+--------------------------------+ +| a | 1 | ++------------------------+--------------------------------+ +select rpad('a', 2, '阿斯'), length(rpad('a', 2, '阿斯')) from dual; ++------------------------+--------------------------------+ +| rpad('a', 2, '阿斯') | length(rpad('a', 2, '阿斯')) | ++------------------------+--------------------------------+ +| a阿 | 4 | ++------------------------+--------------------------------+ +select rpad('a', 3, '阿斯'), length(rpad('a', 3, '阿斯')) from dual; ++------------------------+--------------------------------+ +| rpad('a', 3, '阿斯') | length(rpad('a', 3, '阿斯')) | ++------------------------+--------------------------------+ +| a阿斯 | 7 | ++------------------------+--------------------------------+ +select rpad('a', 4, '阿斯'), length(rpad('a', 4, '阿斯')) from dual; ++------------------------+--------------------------------+ +| rpad('a', 4, '阿斯') | length(rpad('a', 4, '阿斯')) | ++------------------------+--------------------------------+ +| a阿斯阿 | 10 | ++------------------------+--------------------------------+ +select rpad('a', 5, '阿斯'), length(rpad('a', 5, '阿斯')) from dual; ++------------------------+--------------------------------+ +| rpad('a', 5, '阿斯') | length(rpad('a', 5, '阿斯')) | ++------------------------+--------------------------------+ +| a阿斯阿斯 | 13 | ++------------------------+--------------------------------+ +select rpad('a', 6, '阿斯'), length(rpad('a', 6, '阿斯')) from dual; ++------------------------+--------------------------------+ +| rpad('a', 6, '阿斯') | length(rpad('a', 6, '阿斯')) | ++------------------------+--------------------------------+ +| a阿斯阿斯阿 | 16 | ++------------------------+--------------------------------+ +select rpad('a', 7, '阿斯'), length(rpad('a', 7, '阿斯')) from dual; ++------------------------+--------------------------------+ +| rpad('a', 7, '阿斯') | length(rpad('a', 7, '阿斯')) | ++------------------------+--------------------------------+ +| a阿斯阿斯阿斯 | 19 | ++------------------------+--------------------------------+ +select rpad('a', 8, '阿斯'), length(rpad('a', 8, '阿斯')) from dual; ++------------------------+--------------------------------+ +| rpad('a', 8, '阿斯') | length(rpad('a', 8, '阿斯')) | ++------------------------+--------------------------------+ +| a阿斯阿斯阿斯阿 | 22 | ++------------------------+--------------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_part_hash.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_part_hash.result new file mode 100644 index 000000000..9cd6bffb3 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_part_hash.result @@ -0,0 +1,39 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 int, c2 bigint, c3 decimal); +insert into t1 (c1, c2, c3) values (1, NULL, 1); + + +set @@ob_enable_plan_cache = 0; + +select c1, partition_hash(c1) from t1; ++------+--------------------+ +| c1 | partition_hash(c1) | ++------+--------------------+ +| 1 | 1 | ++------+--------------------+ +select c2, partition_hash(c2) from t1; ++------+--------------------+ +| c2 | partition_hash(c2) | ++------+--------------------+ +| NULL | 0 | ++------+--------------------+ +select c3, partition_hash(c3) from t1; +ERROR HY000: The PARTITION function returns the wrong type +select partition_hash(c1, c2) from t1; +ERROR HY000: Internal error + +select partition_hash(10) from t1; ++--------------------+ +| partition_hash(10) | ++--------------------+ +| 10 | ++--------------------+ +select partition_hash(-10) from t1; ++---------------------+ +| partition_hash(-10) | ++---------------------+ +| 10 | ++---------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_part_key.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_part_key.result new file mode 100644 index 000000000..a1b22ff79 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_part_key.result @@ -0,0 +1,145 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 int, c2 bigint, c3 decimal, c4 char(20), c5 varchar(20), c6 date, c7 datetime, c8 timestamp); +insert into t1 (c1, c2, c3, c4, c5, c6, c7, c8) values (1, NULL, 1, "abc ", "abc ", '2020-01-01', '2020-01-01 01:01:01', '2020-01-01 01:01:01'); + + +set @@ob_enable_plan_cache = 0; + +select c1, partition_key(c1) from t1; ++------+--------------------+ +| c1 | partition_key(c1) | ++------+--------------------+ +| 1 | 294837134935570197 | ++------+--------------------+ +select c2, partition_key(c2) from t1; ++------+---------------------+ +| c2 | partition_key(c2) | ++------+---------------------+ +| NULL | 6960269033020761575 | ++------+---------------------+ +select c3, partition_key(c3) from t1; ++------+---------------------+ +| c3 | partition_key(c3) | ++------+---------------------+ +| 1 | 4095890315155992887 | ++------+---------------------+ +select c4, partition_key(c4) from t1; ++------+---------------------+ +| c4 | partition_key(c4) | ++------+---------------------+ +| abc | 1801346201538688951 | ++------+---------------------+ +select c5, partition_key(c5) from t1; ++-----------+---------------------+ +| c5 | partition_key(c5) | ++-----------+---------------------+ +| abc | 1801346201538688951 | ++-----------+---------------------+ +select c6, partition_key(c6) from t1; ++------------+---------------------+ +| c6 | partition_key(c6) | ++------------+---------------------+ +| 2020-01-01 | 3780289746228831367 | ++------------+---------------------+ +select c7, partition_key(c7) from t1; ++---------------------+---------------------+ +| c7 | partition_key(c7) | ++---------------------+---------------------+ +| 2020-01-01 01:01:01 | 6488855144877179734 | ++---------------------+---------------------+ +select c8, partition_key(c8) from t1; ++---------------------+---------------------+ +| c8 | partition_key(c8) | ++---------------------+---------------------+ +| 2020-01-01 01:01:01 | 6375794890780556234 | ++---------------------+---------------------+ + +select partition_key(c1, c2) from t1; ++-----------------------+ +| partition_key(c1, c2) | ++-----------------------+ +| 319562542098195289 | ++-----------------------+ +select partition_key(c1, c2, c3) from t1; ++---------------------------+ +| partition_key(c1, c2, c3) | ++---------------------------+ +| 3093204954362125526 | ++---------------------------+ +select partition_key(c1, c3) from t1; ++-----------------------+ +| partition_key(c1, c3) | ++-----------------------+ +| 9006715823204485749 | ++-----------------------+ + +select c1, partition_key_v2(c1) from t1; ++------+----------------------+ +| c1 | partition_key_v2(c1) | ++------+----------------------+ +| 1 | 8089716718896805586 | ++------+----------------------+ +select c2, partition_key_v2(c2) from t1; ++------+----------------------+ +| c2 | partition_key_v2(c2) | ++------+----------------------+ +| NULL | 6960269033020761575 | ++------+----------------------+ +select c3, partition_key_v2(c3) from t1; ++------+----------------------+ +| c3 | partition_key_v2(c3) | ++------+----------------------+ +| 1 | 5958971315933813165 | ++------+----------------------+ +select c4, partition_key_v2(c4) from t1; ++------+----------------------+ +| c4 | partition_key_v2(c4) | ++------+----------------------+ +| abc | 258901174748407223 | ++------+----------------------+ +select c5, partition_key_v2(c5) from t1; ++-----------+----------------------+ +| c5 | partition_key_v2(c5) | ++-----------+----------------------+ +| abc | 258901174748407223 | ++-----------+----------------------+ +select c6, partition_key_v2(c6) from t1; ++------------+----------------------+ +| c6 | partition_key_v2(c6) | ++------------+----------------------+ +| 2020-01-01 | 5558489265225801925 | ++------------+----------------------+ +select c7, partition_key_v2(c7) from t1; ++---------------------+----------------------+ +| c7 | partition_key_v2(c7) | ++---------------------+----------------------+ +| 2020-01-01 01:01:01 | 3406840642020255355 | ++---------------------+----------------------+ +select c8, partition_key_v2(c8) from t1; ++---------------------+----------------------+ +| c8 | partition_key_v2(c8) | ++---------------------+----------------------+ +| 2020-01-01 01:01:01 | 8121525409574338685 | ++---------------------+----------------------+ + +select partition_key_v2(c1, c2) from t1; ++--------------------------+ +| partition_key_v2(c1, c2) | ++--------------------------+ +| 3042015303219230768 | ++--------------------------+ +select partition_key_v2(c1, c2, c3) from t1; ++------------------------------+ +| partition_key_v2(c1, c2, c3) | ++------------------------------+ +| 2899520937750054785 | ++------------------------------+ +select partition_key_v2(c1, c3) from t1; ++--------------------------+ +| partition_key_v2(c1, c3) | ++--------------------------+ +| 4685265492491719863 | ++--------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_regexp.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_regexp.result new file mode 100644 index 000000000..25c11f6ed --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_regexp.result @@ -0,0 +1,70 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 varchar(50), c2 varchar(50)); +insert into t1 (c1, c2) values ('abc1', '^abc[0-9]?$'); +insert into t1 (c1, c2) values ('abc1', '^abd'); + +drop table if exists t2; +create table t2 (a varchar(50)); +insert into t2 values ("abc1"); + + +set @@ob_enable_plan_cache = 0; + +select 'abcdef' regexp '^abc.*'; ++--------------------------+ +| 'abcdef' regexp '^abc.*' | ++--------------------------+ +| 1 | ++--------------------------+ +select 'abcdef' regexp '^abd.*'; ++--------------------------+ +| 'abcdef' regexp '^abd.*' | ++--------------------------+ +| 0 | ++--------------------------+ + +select '' regexp '^$'; ++----------------+ +| '' regexp '^$' | ++----------------+ +| 1 | ++----------------+ +select 'a' regexp ''; +ERROR 42000: Got error 'empty (sub)expression' from regexp +select NULL regexp 'a'; ++-----------------+ +| NULL regexp 'a' | ++-----------------+ +| NULL | ++-----------------+ +select 'a' regexp NULL; ++-----------------+ +| 'a' regexp NULL | ++-----------------+ +| NULL | ++-----------------+ + +select c2, c2 regexp 'abc' from t1; ++-------------+-----------------+ +| c2 | c2 regexp 'abc' | ++-------------+-----------------+ +| ^abc[0-9]?$ | 1 | +| ^abd | 0 | ++-------------+-----------------+ +select c2, (select a regexp c2 from t2) from t1; ++-------------+------------------------------+ +| c2 | (select a regexp c2 from t2) | ++-------------+------------------------------+ +| ^abc[0-9]?$ | 1 | +| ^abd | 0 | ++-------------+------------------------------+ +select c1, c2, c1 regexp c2 from t1; ++------+-------------+--------------+ +| c1 | c2 | c1 regexp c2 | ++------+-------------+--------------+ +| abc1 | ^abc[0-9]?$ | 1 | +| abc1 | ^abd | 0 | ++------+-------------+--------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_regexp_func.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_regexp_func.result new file mode 100644 index 000000000..a3abac012 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_regexp_func.result @@ -0,0 +1,285 @@ +result_format: 4 + + +set @@ob_enable_plan_cache = 0; + +select regexp_like('abc', 'a.*') from dual; ++---------------------------+ +| regexp_like('abc', 'a.*') | ++---------------------------+ +| 1 | ++---------------------------+ +select regexp_like('abc', 'a.* ') from dual; ++----------------------------+ +| regexp_like('abc', 'a.* ') | ++----------------------------+ +| 0 | ++----------------------------+ +select regexp_like('abc', 'a.* ', NULL) from dual; ++----------------------------------+ +| regexp_like('abc', 'a.* ', NULL) | ++----------------------------------+ +| NULL | ++----------------------------------+ +select regexp_like('abc', 'a.* ', 'x') from dual; +ERROR HY000: Invalid argument +select regexp_like('abc', NULL) from dual; ++--------------------------+ +| regexp_like('abc', NULL) | ++--------------------------+ +| NULL | ++--------------------------+ +select regexp_like(NULL, 'a.*') from dual; ++--------------------------+ +| regexp_like(NULL, 'a.*') | ++--------------------------+ +| NULL | ++--------------------------+ + +select regexp_like(123, 123) from dual; ++-----------------------+ +| regexp_like(123, 123) | ++-----------------------+ +| 1 | ++-----------------------+ +select regexp_like('我是好人', '.是.*') from dual; ++---------------------------------------+ +| regexp_like('我是好人', '.是.*') | ++---------------------------------------+ +| 1 | ++---------------------------------------+ + +select regexp_instr('abcadef', 'a.') from dual; ++-------------------------------+ +| regexp_instr('abcadef', 'a.') | ++-------------------------------+ +| 1 | ++-------------------------------+ +select regexp_instr('abcadef', 'a.', 1, 2) from dual; ++-------------------------------------+ +| regexp_instr('abcadef', 'a.', 1, 2) | ++-------------------------------------+ +| 4 | ++-------------------------------------+ +select regexp_instr('abcadef', 'a.', 1, 2, 0) from dual; ++----------------------------------------+ +| regexp_instr('abcadef', 'a.', 1, 2, 0) | ++----------------------------------------+ +| 4 | ++----------------------------------------+ +select regexp_instr('abcadef', 'a.', 1, 2, 1) from dual; ++----------------------------------------+ +| regexp_instr('abcadef', 'a.', 1, 2, 1) | ++----------------------------------------+ +| 6 | ++----------------------------------------+ +select regexp_instr('abcadef', 'a.', 0, 2, 1) from dual; +ERROR HY000: Invalid argument +select regexp_instr('abcadef', 'a.', 1, 0, 1) from dual; +ERROR HY000: Invalid argument +select regexp_instr('abcadef', 'a.', 1, 2, -1) from dual; +ERROR HY000: Invalid argument +select regexp_instr('abcadef', 'a.', 100, 2) from dual; ++---------------------------------------+ +| regexp_instr('abcadef', 'a.', 100, 2) | ++---------------------------------------+ +| 0 | ++---------------------------------------+ +select regexp_instr('abcadef', 'a.', 1, 200) from dual; ++---------------------------------------+ +| regexp_instr('abcadef', 'a.', 1, 200) | ++---------------------------------------+ +| 0 | ++---------------------------------------+ +select regexp_instr('abcadef', 'a. ', 1, 2, 1, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_instr('', 'a. ', 1, 2, 1, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_instr('abcadef', '', 1, 2, 1, 'x') from dual; +ERROR 42000: Got error 'empty (sub)expression' from regexp +select regexp_instr('abcadef', 'a. ', NULL, 2, 1, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_instr('abcadef', 'a. ', 1, NULL, 1, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_instr('abcadef', 'a. ', 1, 2, NULL, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_instr('abcadef', 'a. ', 1, 2, 1, NULL) from dual; ++-----------------------------------------------+ +| regexp_instr('abcadef', 'a. ', 1, 2, 1, NULL) | ++-----------------------------------------------+ +| NULL | ++-----------------------------------------------+ + +select regexp_instr(12341834, 1.3, '1', '2', 1) from dual; ++------------------------------------------+ +| regexp_instr(12341834, 1.3, '1', '2', 1) | ++------------------------------------------+ +| 8 | ++------------------------------------------+ +select regexp_instr('我是好人', '是.') from dual; ++--------------------------------------+ +| regexp_instr('我是好人', '是.') | ++--------------------------------------+ +| 2 | ++--------------------------------------+ + +select regexp_substr('abcadef', 'a.', 1) from dual; ++-----------------------------------+ +| regexp_substr('abcadef', 'a.', 1) | ++-----------------------------------+ +| ab | ++-----------------------------------+ +select regexp_substr('abcadef', 'a.', 1, 2) from dual; ++--------------------------------------+ +| regexp_substr('abcadef', 'a.', 1, 2) | ++--------------------------------------+ +| ad | ++--------------------------------------+ +select regexp_substr('abcadef', 'a.', 0, 2) from dual; +ERROR HY000: Invalid argument +select regexp_substr('abcadef', 'a.', 1, 0) from dual; +ERROR HY000: Invalid argument +select regexp_substr('abcadef', 'a.', 10, 2) from dual; ++---------------------------------------+ +| regexp_substr('abcadef', 'a.', 10, 2) | ++---------------------------------------+ +| NULL | ++---------------------------------------+ +select regexp_substr('abcadef', 'a.', 1, 10) from dual; ++---------------------------------------+ +| regexp_substr('abcadef', 'a.', 1, 10) | ++---------------------------------------+ +| NULL | ++---------------------------------------+ +select regexp_substr('abcadef', 'a. ', 1, 2, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_substr('', 'a. ', 1, 2, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_substr('abcadef', '', 1, 2, 'x') from dual; +ERROR 42000: Got error 'empty (sub)expression' from regexp +select regexp_substr('abcadef', 'a. ', NULL, 2, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_substr('abcadef', 'a. ', 1, NULL, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_substr('abcadef', 'a. ', 1, 2, NULL) from dual; ++---------------------------------------------+ +| regexp_substr('abcadef', 'a. ', 1, 2, NULL) | ++---------------------------------------------+ +| NULL | ++---------------------------------------------+ + +select regexp_substr(12341834, 1.3, '1.9', '2') from dual; ++------------------------------------------+ +| regexp_substr(12341834, 1.3, '1.9', '2') | ++------------------------------------------+ +| 183 | ++------------------------------------------+ +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '1.9' +select regexp_replace('我是好人', '是.') from dual; ++----------------------------------------+ +| regexp_replace('我是好人', '是.') | ++----------------------------------------+ +| 我人 | ++----------------------------------------+ + +select regexp_replace('abcadef', 'a.') from dual; ++---------------------------------+ +| regexp_replace('abcadef', 'a.') | ++---------------------------------+ +| cef | ++---------------------------------+ +select regexp_replace('abcadef', 'a.*') from dual; ++----------------------------------+ +| regexp_replace('abcadef', 'a.*') | ++----------------------------------+ +| | ++----------------------------------+ +select regexp_replace('abcadef', 'a.', 'X') from dual; ++--------------------------------------+ +| regexp_replace('abcadef', 'a.', 'X') | ++--------------------------------------+ +| XcXef | ++--------------------------------------+ +select regexp_replace('abcadef', 'a.', 'X', 1) from dual; ++-----------------------------------------+ +| regexp_replace('abcadef', 'a.', 'X', 1) | ++-----------------------------------------+ +| XcXef | ++-----------------------------------------+ +select regexp_replace('abcadef', 'a.', 'X', 1, 2) from dual; ++--------------------------------------------+ +| regexp_replace('abcadef', 'a.', 'X', 1, 2) | ++--------------------------------------------+ +| abcXef | ++--------------------------------------------+ +select regexp_replace('abcadef', 'a.', 'X', 2, 1) from dual; ++--------------------------------------------+ +| regexp_replace('abcadef', 'a.', 'X', 2, 1) | ++--------------------------------------------+ +| abcXef | ++--------------------------------------------+ +select regexp_replace('abcadef', 'a.', 'X', 2, 2) from dual; ++--------------------------------------------+ +| regexp_replace('abcadef', 'a.', 'X', 2, 2) | ++--------------------------------------------+ +| abcadef | ++--------------------------------------------+ +select regexp_replace('abcadef', 'a.', 'X', 1, 0) from dual; ++--------------------------------------------+ +| regexp_replace('abcadef', 'a.', 'X', 1, 0) | ++--------------------------------------------+ +| XcXef | ++--------------------------------------------+ +select regexp_replace('abcadef', 'a.', 'X', 1, -1) from dual; +ERROR HY000: Invalid argument +select regexp_replace('abcadef', 'a.', 'X', 10, 2) from dual; ++---------------------------------------------+ +| regexp_replace('abcadef', 'a.', 'X', 10, 2) | ++---------------------------------------------+ +| abcadef | ++---------------------------------------------+ +select regexp_replace('abcadef', 'a.', 'X', 1, 100) from dual; ++----------------------------------------------+ +| regexp_replace('abcadef', 'a.', 'X', 1, 100) | ++----------------------------------------------+ +| abcadef | ++----------------------------------------------+ +select regexp_replace('abcadef', 'a. ', 'X', 1, 2) from dual; ++---------------------------------------------+ +| regexp_replace('abcadef', 'a. ', 'X', 1, 2) | ++---------------------------------------------+ +| abcadef | ++---------------------------------------------+ +select regexp_replace('abcadef', 'a. ', 'X', 1, 2, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_replace('', 'a. ', 'X', 1, 2, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_replace('abcadef', '', 'X', 1, 2, 'x') from dual; +ERROR 42000: Got error 'empty (sub)expression' from regexp +select regexp_replace('abcadef', 'a. ', NULL, 1, 2, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_replace('abcadef', 'a. ', 'X', NULL, 2, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_replace('abcadef', 'a. ', 'X', 1, NULL, 'x') from dual; +ERROR HY000: Invalid argument +select regexp_replace('abcadef', 'a. ', 'X', 1, 2, NULL) from dual; ++---------------------------------------------------+ +| regexp_replace('abcadef', 'a. ', 'X', 1, 2, NULL) | ++---------------------------------------------------+ +| NULL | ++---------------------------------------------------+ + +select regexp_replace(12341834, 1.3, 99, '1', '2') from dual; ++---------------------------------------------+ +| regexp_replace(12341834, 1.3, 99, '1', '2') | ++---------------------------------------------+ +| 1234994 | ++---------------------------------------------+ +select regexp_replace('我是好人', '是.', '.....') from dual; ++-------------------------------------------------+ +| regexp_replace('我是好人', '是.', '.....') | ++-------------------------------------------------+ +| 我.....人 | ++-------------------------------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_repeat.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_repeat.result new file mode 100644 index 000000000..4b9adf9ce --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_repeat.result @@ -0,0 +1,88 @@ +result_format: 4 + + + +set @@ob_enable_plan_cache = 0; + +select repeat("abc", -1); ++-------------------+ +| repeat("abc", -1) | ++-------------------+ +| | ++-------------------+ +select repeat("abc", 0); ++------------------+ +| repeat("abc", 0) | ++------------------+ +| | ++------------------+ +select repeat("abc", 1); ++------------------+ +| repeat("abc", 1) | ++------------------+ +| abc | ++------------------+ +select repeat("abc", 2); ++------------------+ +| repeat("abc", 2) | ++------------------+ +| abcabc | ++------------------+ +select repeat("abc", 3); ++------------------+ +| repeat("abc", 3) | ++------------------+ +| abcabcabc | ++------------------+ + +select repeat("abc", "2.1"); ++----------------------+ +| repeat("abc", "2.1") | ++----------------------+ +| abcabc | ++----------------------+ +select repeat("abc", "2.9"); ++----------------------+ +| repeat("abc", "2.9") | ++----------------------+ +| abcabc | ++----------------------+ + +select repeat("", 2); ++---------------+ +| repeat("", 2) | ++---------------+ +| | ++---------------+ +select repeat(NULL, 2); ++-----------------+ +| repeat(NULL, 2) | ++-----------------+ +| NULL | ++-----------------+ +select repeat("abc", NULL); ++---------------------+ +| repeat("abc", NULL) | ++---------------------+ +| NULL | ++---------------------+ +select repeat(1.414, 1); ++------------------+ +| repeat(1.414, 1) | ++------------------+ +| 1.414 | ++------------------+ +select repeat(1.414, 2); ++------------------+ +| repeat(1.414, 2) | ++------------------+ +| 1.4141.414 | ++------------------+ + +select repeat("abc", 200000000); ++--------------------------+ +| repeat("abc", 200000000) | ++--------------------------+ +| NULL | ++--------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_replace.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_replace.result new file mode 100644 index 000000000..5f7383976 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_replace.result @@ -0,0 +1,58 @@ +result_format: 4 + +drop table if exists t1; + + +set @@ob_enable_plan_cache = 0; + +select replace('abcdbf', 'b', 'cc'); ++------------------------------+ +| replace('abcdbf', 'b', 'cc') | ++------------------------------+ +| acccdccf | ++------------------------------+ +select replace('abcdbf', 'b'); +ERROR 42000: Incorrect parameter count in the call to native function 'replace' +select replace('abcdbf', 'b', ''); ++----------------------------+ +| replace('abcdbf', 'b', '') | ++----------------------------+ +| acdf | ++----------------------------+ +select replace('abcdbf', '', 'cc'); ++-----------------------------+ +| replace('abcdbf', '', 'cc') | ++-----------------------------+ +| abcdbf | ++-----------------------------+ +select replace('', 'b', 'cc'); ++------------------------+ +| replace('', 'b', 'cc') | ++------------------------+ +| | ++------------------------+ +select replace(NULL, 'b', 'cc'); ++--------------------------+ +| replace(NULL, 'b', 'cc') | ++--------------------------+ +| NULL | ++--------------------------+ +select replace('abcdbf', NULL, 'cc'); ++-------------------------------+ +| replace('abcdbf', NULL, 'cc') | ++-------------------------------+ +| NULL | ++-------------------------------+ +select replace('abcdbf', 'b', NULL); ++------------------------------+ +| replace('abcdbf', 'b', NULL) | ++------------------------------+ +| NULL | ++------------------------------+ +select replace('abc', 'abc', ''); ++---------------------------+ +| replace('abc', 'abc', '') | ++---------------------------+ +| | ++---------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_sign.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_sign.result new file mode 100644 index 000000000..4c5f6efbf --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_sign.result @@ -0,0 +1,1702 @@ +result_format: 4 +explain_protocol: 0 + +set @@ob_enable_plan_cache = 0; + +drop table if exists t1, t2; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30), c_null int); +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5', null); +insert into t1 values(-1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -3.5, 4.5, + -5.5, 6.5, + -7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '-9.5', '10.5', null); + +create table t2( + a1 char(3) primary key, + a2 int, + a3 char(3), + a4 float, + a5 datetime +); +insert into t2 values('AME',0,'SEA',0.100,date'1942-02-19'); +insert into t2 values('HBR',1,'SEA',0.085,date'1948-03-05'); +insert into t2 values('BOT',-2,'SEA',-0.085,date'1951-11-29'); +insert into t2 values('BMC',3,'SEA',-0.085,date'1958-09-08'); +insert into t2 values('TWU',+0,'LAX',-0.080,date'1969-10-05'); +insert into t2 values('BDL',-0,'DEN',-0.080,date'1960-11-27'); +insert into t2 values('DTX',1,'NYC',0.080,date'1961-05-04'); +insert into t2 values('PLS',-1,'WDC',-0.075,date'1949-01-02'); +insert into t2 values('ZAJ',2,'CHI',-0.075,date'1960-06-15'); +insert into t2 values('VVV',-2,'MON',0.075,date'1959-06-28'); +insert into t2 values('GTM',3,'DAL',-0.070,date'1977-09-23'); +insert into t2 values('SSJ',null,'CHI',null,date'1974-03-19'); +insert into t2 values('KKK',-3,'ATL',null,null); +insert into t2 values('XXX',null,'MIN',null,null); +insert into t2 values('WWW',1,'LED',null,null); +insert into t2 values('GG3',-3,'DD3',-0.051,date'1974-03-19'); +insert into t2 values('GG2',-3,'DD2',0.052,date'1974-03-19'); +insert into t2 values('GG1',3,'DD1',0.053,date'1974-03-19'); + +explain_protocol: 2 +EXPLAIN select sign(null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select sign(null) from dual; ++------------+ +| sign(null) | ++------------+ +| NULL | ++------------+ + +EXPLAIN select c1, sign(c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [sign(t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, sign(c1) from t1; ++------+----------+ +| c1 | sign(c1) | ++------+----------+ +| 1 | 1 | +| -1 | -1 | ++------+----------+ +EXPLAIN select c2, sign(c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [sign(t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, sign(c2) from t1; ++------+----------+ +| c2 | sign(c2) | ++------+----------+ +| 2 | 1 | +| 2 | 1 | ++------+----------+ +EXPLAIN select c3, sign(c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [sign(t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, sign(c3) from t1; ++------+----------+ +| c3 | sign(c3) | ++------+----------+ +| 1 | 1 | +| -1 | -1 | ++------+----------+ +EXPLAIN select c4, sign(c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [sign(t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, sign(c4) from t1; ++------+----------+ +| c4 | sign(c4) | ++------+----------+ +| 2 | 1 | +| 2 | 1 | ++------+----------+ +EXPLAIN select c5, sign(c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [sign(t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, sign(c5) from t1; ++------+----------+ +| c5 | sign(c5) | ++------+----------+ +| 1 | 1 | +| -1 | -1 | ++------+----------+ +EXPLAIN select c6, sign(c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [sign(t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, sign(c6) from t1; ++------+----------+ +| c6 | sign(c6) | ++------+----------+ +| 2 | 1 | +| 2 | 1 | ++------+----------+ +EXPLAIN select c7, sign(c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [sign(t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, sign(c7) from t1; ++------+----------+ +| c7 | sign(c7) | ++------+----------+ +| 1 | 1 | +| -1 | -1 | ++------+----------+ +EXPLAIN select c8, sign(c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [sign(t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, sign(c8) from t1; ++------+----------+ +| c8 | sign(c8) | ++------+----------+ +| 2 | 1 | +| 2 | 1 | ++------+----------+ +EXPLAIN select c9, sign(c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [sign(t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, sign(c9) from t1; ++------+----------+ +| c9 | sign(c9) | ++------+----------+ +| 1 | 1 | +| -1 | -1 | ++------+----------+ +EXPLAIN select c10, sign(c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [sign(t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, sign(c10) from t1; ++------+-----------+ +| c10 | sign(c10) | ++------+-----------+ +| 2 | 1 | +| 2 | 1 | ++------+-----------+ +EXPLAIN select c11, sign(c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [sign(t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, sign(c11) from t1; ++------+-----------+ +| c11 | sign(c11) | ++------+-----------+ +| 1 | 1 | +| -1 | -1 | ++------+-----------+ +EXPLAIN select c12, sign(c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [sign(t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, sign(c12) from t1; ++------+-----------+ +| c12 | sign(c12) | ++------+-----------+ +| 2 | 1 | +| 2 | 1 | ++------+-----------+ +EXPLAIN select c13, sign(c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [sign(t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, sign(c13) from t1; ++------+-----------+ +| c13 | sign(c13) | ++------+-----------+ +| 3.5 | 1 | +| -3.5 | -1 | ++------+-----------+ +EXPLAIN select c14, sign(c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [sign(t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, sign(c14) from t1; ++------+-----------+ +| c14 | sign(c14) | ++------+-----------+ +| 4.5 | 1 | +| 4.5 | 1 | ++------+-----------+ +EXPLAIN select c15, sign(c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [sign(t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, sign(c15) from t1; ++------+-----------+ +| c15 | sign(c15) | ++------+-----------+ +| 5.5 | 1 | +| -5.5 | -1 | ++------+-----------+ +EXPLAIN select c16, sign(c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [sign(t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, sign(c16) from t1; ++------+-----------+ +| c16 | sign(c16) | ++------+-----------+ +| 6.5 | 1 | +| 6.5 | 1 | ++------+-----------+ +EXPLAIN select c17, sign(c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [sign(t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, sign(c17) from t1; ++------+-----------+ +| c17 | sign(c17) | ++------+-----------+ +| 8 | 1 | +| -8 | -1 | ++------+-----------+ +EXPLAIN select c18, sign(c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [sign(t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, sign(c18) from t1; ++------+-----------+ +| c18 | sign(c18) | ++------+-----------+ +| 9 | 1 | +| 9 | 1 | ++------+-----------+ +EXPLAIN select c19, sign(c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [sign(cast(t1.c19, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, sign(c19) from t1; ++---------------------+-----------+ +| c19 | sign(c19) | ++---------------------+-----------+ +| 2019-12-01 12:00:00 | 1 | +| 2019-12-01 12:00:00 | 1 | ++---------------------+-----------+ +EXPLAIN select c20, sign(c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [sign(cast(t1.c20, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, sign(c20) from t1; ++---------------------+-----------+ +| c20 | sign(c20) | ++---------------------+-----------+ +| 2019-12-03 06:00:00 | 1 | +| 2019-12-03 06:00:00 | 1 | ++---------------------+-----------+ +EXPLAIN select c21, sign(c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [sign(cast(t1.c21, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, sign(c21) from t1; ++------+-----------+ +| c21 | sign(c21) | ++------+-----------+ +| 9.5 | 1 | +| -9.5 | -1 | ++------+-----------+ +EXPLAIN select c22, sign(c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [sign(cast(t1.c22, DOUBLE(-1, -1)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, sign(c22) from t1; ++------+-----------+ +| c22 | sign(c22) | ++------+-----------+ +| 10.5 | 1 | +| 10.5 | 1 | ++------+-----------+ + +EXPLAIN select sign(a1) from t2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |18 |39 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(cast(t2.a1, DOUBLE(-1, -1)))]), filter(nil), + access([t2.a1]), partitions(p0) + +select sign(a1) from t2; ++----------+ +| sign(a1) | ++----------+ +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | ++----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'AME' +Warning 1292 Truncated incorrect DOUBLE value: 'BDL' +Warning 1292 Truncated incorrect DOUBLE value: 'BMC' +Warning 1292 Truncated incorrect DOUBLE value: 'BOT' +Warning 1292 Truncated incorrect DOUBLE value: 'DTX' +Warning 1292 Truncated incorrect DOUBLE value: 'GG1' +Warning 1292 Truncated incorrect DOUBLE value: 'GG2' +Warning 1292 Truncated incorrect DOUBLE value: 'GG3' +Warning 1292 Truncated incorrect DOUBLE value: 'GTM' +Warning 1292 Truncated incorrect DOUBLE value: 'HBR' +Warning 1292 Truncated incorrect DOUBLE value: 'KKK' +Warning 1292 Truncated incorrect DOUBLE value: 'PLS' +Warning 1292 Truncated incorrect DOUBLE value: 'SSJ' +Warning 1292 Truncated incorrect DOUBLE value: 'TWU' +Warning 1292 Truncated incorrect DOUBLE value: 'VVV' +Warning 1292 Truncated incorrect DOUBLE value: 'WWW' +Warning 1292 Truncated incorrect DOUBLE value: 'XXX' +Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ' +EXPLAIN select sign(a3) from t2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |18 |40 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(cast(t2.a3, DOUBLE(-1, -1)))]), filter(nil), + access([t2.a3]), partitions(p0) + +select sign(a3) from t2; ++----------+ +| sign(a3) | ++----------+ +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | +| 0 | ++----------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'DEN' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'NYC' +Warning 1292 Truncated incorrect DOUBLE value: 'DD1' +Warning 1292 Truncated incorrect DOUBLE value: 'DD2' +Warning 1292 Truncated incorrect DOUBLE value: 'DD3' +Warning 1292 Truncated incorrect DOUBLE value: 'DAL' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'ATL' +Warning 1292 Truncated incorrect DOUBLE value: 'WDC' +Warning 1292 Truncated incorrect DOUBLE value: 'CHI' +Warning 1292 Truncated incorrect DOUBLE value: 'LAX' +Warning 1292 Truncated incorrect DOUBLE value: 'MON' +Warning 1292 Truncated incorrect DOUBLE value: 'LED' +Warning 1292 Truncated incorrect DOUBLE value: 'MIN' +Warning 1292 Truncated incorrect DOUBLE value: 'CHI' +EXPLAIN select sign(a1),a2 from t2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |18 |40 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(cast(t2.a1, DOUBLE(-1, -1)))], [t2.a2]), filter(nil), + access([t2.a1], [t2.a2]), partitions(p0) + +select sign(a1),a2 from t2; ++----------+------+ +| sign(a1) | a2 | ++----------+------+ +| 0 | 0 | +| 0 | 0 | +| 0 | 3 | +| 0 | -2 | +| 0 | 1 | +| 0 | 3 | +| 0 | -3 | +| 0 | -3 | +| 0 | 3 | +| 0 | 1 | +| 0 | -3 | +| 0 | -1 | +| 0 | NULL | +| 0 | 0 | +| 0 | -2 | +| 0 | 1 | +| 0 | NULL | +| 0 | 2 | ++----------+------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'AME' +Warning 1292 Truncated incorrect DOUBLE value: 'BDL' +Warning 1292 Truncated incorrect DOUBLE value: 'BMC' +Warning 1292 Truncated incorrect DOUBLE value: 'BOT' +Warning 1292 Truncated incorrect DOUBLE value: 'DTX' +Warning 1292 Truncated incorrect DOUBLE value: 'GG1' +Warning 1292 Truncated incorrect DOUBLE value: 'GG2' +Warning 1292 Truncated incorrect DOUBLE value: 'GG3' +Warning 1292 Truncated incorrect DOUBLE value: 'GTM' +Warning 1292 Truncated incorrect DOUBLE value: 'HBR' +Warning 1292 Truncated incorrect DOUBLE value: 'KKK' +Warning 1292 Truncated incorrect DOUBLE value: 'PLS' +Warning 1292 Truncated incorrect DOUBLE value: 'SSJ' +Warning 1292 Truncated incorrect DOUBLE value: 'TWU' +Warning 1292 Truncated incorrect DOUBLE value: 'VVV' +Warning 1292 Truncated incorrect DOUBLE value: 'WWW' +Warning 1292 Truncated incorrect DOUBLE value: 'XXX' +Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ' +EXPLAIN select sign(a2) from t2 where sign(a4) >= 0; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |6 |41 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(t2.a2)]), filter([sign(t2.a4) >= 0]), + access([t2.a4], [t2.a2]), partitions(p0) + +select sign(a2) from t2 where sign(a4) >= 0; ++----------+ +| sign(a2) | ++----------+ +| 0 | +| 1 | +| 1 | +| -1 | +| 1 | +| -1 | ++----------+ +EXPLAIN select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |1 |44 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(t2.a4)]), filter([t2.a2 < 2], [sign(t2.a2) <= 0]), + access([t2.a2], [t2.a4]), partitions(p0) + +select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2; ++----------+ +| sign(a4) | ++----------+ +| 1 | +| -1 | +| -1 | +| 1 | +| -1 | +| NULL | +| -1 | +| -1 | +| 1 | ++----------+ +EXPLAIN select * from t2 group by sign(a2); +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |18 |60 | +|1 | TABLE SCAN |t2 |18 |41 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter(nil), + group([sign(t2.a2)]), agg_func(nil) + 1 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5], [sign(t2.a2)]), filter(nil), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 group by sign(a2); ++-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+ +| AME | 0 | SEA | 0.1 | timestamp | +| BMC | 3 | SEA | -0.085 | timestamp | +| BOT | -2 | SEA | -0.085 | timestamp | +| SSJ | NULL | CHI | NULL | timestamp | ++-----+------+------+--------+---------------------+ +EXPLAIN select * from t2 order by sign(a4) ; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |SORT | |18 |73 | +|1 | TABLE SCAN|t2 |18 |41 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter(nil), sort_keys([sign(t2.a4), ASC]) + 1 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5], [sign(t2.a4)]), filter(nil), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 order by sign(a4) ; ++-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+ +| XXX | NULL | MIN | NULL | timestamp | +| WWW | 1 | LED | NULL | timestamp | +| SSJ | NULL | CHI | NULL | timestamp | +| KKK | -3 | ATL | NULL | timestamp | +| BDL | 0 | DEN | -0.08 | timestamp | +| ZAJ | 2 | CHI | -0.075 | timestamp | +| TWU | 0 | LAX | -0.08 | timestamp | +| PLS | -1 | WDC | -0.075 | timestamp | +| GTM | 3 | DAL | -0.07 | timestamp | +| GG3 | -3 | DD3 | -0.051 | timestamp | +| BOT | -2 | SEA | -0.085 | timestamp | +| BMC | 3 | SEA | -0.085 | timestamp | +| HBR | 1 | SEA | 0.085 | timestamp | +| GG2 | -3 | DD2 | 0.052 | timestamp | +| GG1 | 3 | DD1 | 0.053 | timestamp | +| DTX | 1 | NYC | 0.08 | timestamp | +| VVV | -2 | MON | 0.075 | timestamp | +| AME | 0 | SEA | 0.1 | timestamp | ++-----+------+------+--------+---------------------+ +EXPLAIN select * from t2 order by sign(a4) , a4 ; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |SORT | |18 |73 | +|1 | TABLE SCAN|t2 |18 |41 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter(nil), sort_keys([sign(t2.a4), ASC], [t2.a4, ASC]) + 1 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5], [sign(t2.a4)]), filter(nil), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 order by sign(a4) , a4 ; ++-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+ +| XXX | NULL | MIN | NULL | timestamp | +| WWW | 1 | LED | NULL | timestamp | +| SSJ | NULL | CHI | NULL | timestamp | +| KKK | -3 | ATL | NULL | timestamp | +| BMC | 3 | SEA | -0.085 | timestamp | +| BOT | -2 | SEA | -0.085 | timestamp | +| BDL | 0 | DEN | -0.08 | timestamp | +| TWU | 0 | LAX | -0.08 | timestamp | +| ZAJ | 2 | CHI | -0.075 | timestamp | +| PLS | -1 | WDC | -0.075 | timestamp | +| GTM | 3 | DAL | -0.07 | timestamp | +| GG3 | -3 | DD3 | -0.051 | timestamp | +| GG2 | -3 | DD2 | 0.052 | timestamp | +| GG1 | 3 | DD1 | 0.053 | timestamp | +| VVV | -2 | MON | 0.075 | timestamp | +| DTX | 1 | NYC | 0.08 | timestamp | +| HBR | 1 | SEA | 0.085 | timestamp | +| AME | 0 | SEA | 0.1 | timestamp | ++-----+------+------+--------+---------------------+ +EXPLAIN select * from t2 order by sign(a4) , a1 ; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |SORT | |18 |73 | +|1 | TABLE SCAN|t2 |18 |41 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter(nil), sort_keys([sign(t2.a4), ASC], [t2.a1, ASC]) + 1 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5], [sign(t2.a4)]), filter(nil), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 order by sign(a4) , a1 ; ++-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+ +| KKK | -3 | ATL | NULL | timestamp | +| SSJ | NULL | CHI | NULL | timestamp | +| WWW | 1 | LED | NULL | timestamp | +| XXX | NULL | MIN | NULL | timestamp | +| BDL | 0 | DEN | -0.08 | timestamp | +| BMC | 3 | SEA | -0.085 | timestamp | +| BOT | -2 | SEA | -0.085 | timestamp | +| GG3 | -3 | DD3 | -0.051 | timestamp | +| GTM | 3 | DAL | -0.07 | timestamp | +| PLS | -1 | WDC | -0.075 | timestamp | +| TWU | 0 | LAX | -0.08 | timestamp | +| ZAJ | 2 | CHI | -0.075 | timestamp | +| AME | 0 | SEA | 0.1 | timestamp | +| DTX | 1 | NYC | 0.08 | timestamp | +| GG1 | 3 | DD1 | 0.053 | timestamp | +| GG2 | -3 | DD2 | 0.052 | timestamp | +| HBR | 1 | SEA | 0.085 | timestamp | +| VVV | -2 | MON | 0.075 | timestamp | ++-----+------+------+--------+---------------------+ +EXPLAIN select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |1 |61 | +|1 | TABLE SCAN |t2 |18 |40 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([abs(cast(t2.a2, BIGINT(-1, 0)))], [T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1)))]), filter([T_FUN_SUM(sign(t2.a4)) > ?]), + group([abs(cast(t2.a2, BIGINT(-1, 0)))]), agg_func([T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1)))], [T_FUN_SUM(sign(t2.a4))]) + 1 - output([t2.a2], [abs(cast(t2.a2, BIGINT(-1, 0)))], [cast(t2.a4, DOUBLE(-1, -1))], [sign(t2.a4)]), filter(nil), + access([t2.a2], [t2.a4]), partitions(p0) + +select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0; ++---------+---------------------+ +| abs(a2) | sum(a4) | ++---------+---------------------+ +| 1 | 0.08999999612569809 | ++---------+---------------------+ +EXPLAIN select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) ); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |1 |44 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter([t2.a2 = ?]), + access([t2.a2], [t2.a1], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) ); ++-----+------+------+-------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+-------+---------------------+ +| DTX | 1 | NYC | 0.08 | timestamp | +| HBR | 1 | SEA | 0.085 | timestamp | +| WWW | 1 | LED | NULL | timestamp | ++-----+------+------+-------+---------------------+ +EXPLAIN select sign( sum(a2) ) , sign( sum(a4) ) from t2; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |44 | +|1 | TABLE SCAN |t2 |18 |40 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(T_FUN_SUM(t2.a2))], [sign(T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1))))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t2.a2)], [T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1)))]) + 1 - output([t2.a2], [cast(t2.a4, DOUBLE(-1, -1))]), filter(nil), + access([t2.a2], [t2.a4]), partitions(p0) + +select sign( sum(a2) ) , sign( sum(a4) ) from t2; ++-----------------+-----------------+ +| sign( sum(a2) ) | sign( sum(a4) ) | ++-----------------+-----------------+ +| 0 | -1 | ++-----------------+-----------------+ +EXPLAIN select sign( avg(a2) ) , sign( avg(a4) ) from t2; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |46 | +|1 | TABLE SCAN |t2 |18 |40 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(T_FUN_SUM(t2.a2) / cast(T_FUN_COUNT(t2.a2), DECIMAL(20, 0)))], [sign(T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1))) / cast(T_FUN_COUNT(cast(t2.a4, DOUBLE(-1, -1))), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t2.a2)], [T_FUN_COUNT(t2.a2)], [T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(t2.a4, DOUBLE(-1, -1)))]) + 1 - output([t2.a2], [cast(t2.a4, DOUBLE(-1, -1))]), filter(nil), + access([t2.a2], [t2.a4]), partitions(p0) + +select sign( avg(a2) ) , sign( avg(a4) ) from t2; ++-----------------+-----------------+ +| sign( avg(a2) ) | sign( avg(a4) ) | ++-----------------+-----------------+ +| 0 | -1 | ++-----------------+-----------------+ +EXPLAIN select sign( max(a2) ) , sign( min(a4) ) from t2; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |44 | +|1 | TABLE SCAN |t2 |18 |40 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(T_FUN_MAX(t2.a2))], [sign(T_FUN_MIN(t2.a4))]), filter(nil), + group(nil), agg_func([T_FUN_MAX(t2.a2)], [T_FUN_MIN(t2.a4)]) + 1 - output([t2.a2], [t2.a4]), filter(nil), + access([t2.a2], [t2.a4]), partitions(p0) + +select sign( max(a2) ) , sign( min(a4) ) from t2; ++-----------------+-----------------+ +| sign( max(a2) ) | sign( min(a4) ) | ++-----------------+-----------------+ +| 1 | -1 | ++-----------------+-----------------+ +EXPLAIN select sign(count(*)) from t2; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |43 | +|1 | TABLE SCAN |t2 |18 |39 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(T_FUN_COUNT(*))]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 1 - output([1]), filter(nil), + access([t2.a1]), partitions(p0) + +select sign(count(*)) from t2; ++----------------+ +| sign(count(*)) | ++----------------+ +| 1 | ++----------------+ +EXPLAIN select * from t2 where sign( length(a1) ) = 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |1 |42 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter([sign(length(cast(t2.a1, VARCHAR(1048576)))) = 1]), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 where sign( length(a1) ) = 1; ++-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+ +| AME | 0 | SEA | 0.1 | timestamp | +| BDL | 0 | DEN | -0.08 | timestamp | +| BMC | 3 | SEA | -0.085 | timestamp | +| BOT | -2 | SEA | -0.085 | timestamp | +| DTX | 1 | NYC | 0.08 | timestamp | +| GG1 | 3 | DD1 | 0.053 | timestamp | +| GG2 | -3 | DD2 | 0.052 | timestamp | +| GG3 | -3 | DD3 | -0.051 | timestamp | +| GTM | 3 | DAL | -0.07 | timestamp | +| HBR | 1 | SEA | 0.085 | timestamp | +| KKK | -3 | ATL | NULL | timestamp | +| PLS | -1 | WDC | -0.075 | timestamp | +| SSJ | NULL | CHI | NULL | timestamp | +| TWU | 0 | LAX | -0.08 | timestamp | +| VVV | -2 | MON | 0.075 | timestamp | +| WWW | 1 | LED | NULL | timestamp | +| XXX | NULL | MIN | NULL | timestamp | +| ZAJ | 2 | CHI | -0.075 | timestamp | ++-----+------+------+--------+---------------------+ +EXPLAIN select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |18 |40 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(cast(cast(t2.a1, CHAR(1024)), DOUBLE(-1, -1)))], [sign(cast(cast(t2.a3, CHAR(1024)), DOUBLE(-1, -1)))]), filter(nil), + access([t2.a1], [t2.a3]), partitions(p0) + +select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2; ++--------------------------------+--------------------------------+ +| sign( cast(a1 as char(1024)) ) | sign( cast(a3 as char(1024)) ) | ++--------------------------------+--------------------------------+ +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | ++--------------------------------+--------------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'AME' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'BDL' +Warning 1292 Truncated incorrect DOUBLE value: 'DEN' +Warning 1292 Truncated incorrect DOUBLE value: 'BMC' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'BOT' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'DTX' +Warning 1292 Truncated incorrect DOUBLE value: 'NYC' +Warning 1292 Truncated incorrect DOUBLE value: 'GG1' +Warning 1292 Truncated incorrect DOUBLE value: 'DD1' +Warning 1292 Truncated incorrect DOUBLE value: 'GG2' +Warning 1292 Truncated incorrect DOUBLE value: 'DD2' +Warning 1292 Truncated incorrect DOUBLE value: 'GG3' +Warning 1292 Truncated incorrect DOUBLE value: 'DD3' +Warning 1292 Truncated incorrect DOUBLE value: 'GTM' +Warning 1292 Truncated incorrect DOUBLE value: 'DAL' +Warning 1292 Truncated incorrect DOUBLE value: 'HBR' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'KKK' +Warning 1292 Truncated incorrect DOUBLE value: 'ATL' +Warning 1292 Truncated incorrect DOUBLE value: 'PLS' +Warning 1292 Truncated incorrect DOUBLE value: 'WDC' +Warning 1292 Truncated incorrect DOUBLE value: 'SSJ' +Warning 1292 Truncated incorrect DOUBLE value: 'CHI' +Warning 1292 Truncated incorrect DOUBLE value: 'TWU' +Warning 1292 Truncated incorrect DOUBLE value: 'LAX' +Warning 1292 Truncated incorrect DOUBLE value: 'VVV' +Warning 1292 Truncated incorrect DOUBLE value: 'MON' +Warning 1292 Truncated incorrect DOUBLE value: 'WWW' +Warning 1292 Truncated incorrect DOUBLE value: 'LED' +Warning 1292 Truncated incorrect DOUBLE value: 'XXX' +Warning 1292 Truncated incorrect DOUBLE value: 'MIN' +Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ' +Warning 1292 Truncated incorrect DOUBLE value: 'CHI' +EXPLAIN select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |18 |40 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(cast(cast(t2.a2, CHAR(1024)), DOUBLE(-1, -1)))], [sign(cast(cast(t2.a4, CHAR(1024)), DOUBLE(-1, -1)))]), filter(nil), + access([t2.a2], [t2.a4]), partitions(p0) + +select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2; ++--------------------------------+--------------------------------+ +| sign( cast(a2 as char(1024)) ) | sign( cast(a4 as char(1024)) ) | ++--------------------------------+--------------------------------+ +| 0 | 1 | +| 0 | -1 | +| 1 | -1 | +| -1 | -1 | +| 1 | 1 | +| 1 | 1 | +| -1 | 1 | +| -1 | -1 | +| 1 | -1 | +| 1 | 1 | +| -1 | NULL | +| -1 | -1 | +| NULL | NULL | +| 0 | -1 | +| -1 | 1 | +| 1 | NULL | +| NULL | NULL | +| 1 | -1 | ++--------------------------------+--------------------------------+ +EXPLAIN select * from t2 as t21 join t2 as t22 on sign(t21.a2) = sign(t22.a4); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |2 |123 | +|1 | TABLE SCAN|t21 |18 |41 | +|2 | TABLE SCAN|t22 |18 |41 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t21.a1], [t21.a2], [t21.a3], [t21.a4], [t21.a5], [t22.a1], [t22.a2], [t22.a3], [t22.a4], [t22.a5]), filter(nil), + equal_conds([sign(t21.a2) = sign(t22.a4)]), other_conds(nil) + 1 - output([t21.a2], [t21.a1], [t21.a3], [t21.a4], [t21.a5], [sign(t21.a2)]), filter(nil), + access([t21.a2], [t21.a1], [t21.a3], [t21.a4], [t21.a5]), partitions(p0) + 2 - output([t22.a4], [t22.a1], [t22.a2], [t22.a3], [t22.a5], [sign(t22.a4)]), filter(nil), + access([t22.a4], [t22.a1], [t22.a2], [t22.a3], [t22.a5]), partitions(p0) + +select * from t2 as t21 join t2 as t22 on sign(t21.a2) = sign(t22.a4); ++-----+------+------+--------+---------------------+-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+-----+------+------+--------+---------------------+ +| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | +| WWW | 1 | LED | NULL | NULL | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | +| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | +| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | +| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | +| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | +| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | +| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | +| WWW | 1 | LED | NULL | NULL | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | +| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | +| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | +| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | +| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | +| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | +| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | +| WWW | 1 | LED | NULL | NULL | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | +| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | +| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | +| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | +| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | +| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | +| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | +| WWW | 1 | LED | NULL | NULL | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | +| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | +| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | +| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | +| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | +| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | +| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | +| WWW | 1 | LED | NULL | NULL | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | +| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | +| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | +| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | +| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | +| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 | +| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | +| WWW | 1 | LED | NULL | NULL | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | +| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | +| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | +| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | +| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | +| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | ++-----+------+------+--------+---------------------+-----+------+------+--------+---------------------+ +EXPLAIN select tmp.a1 , sign(tmp.a2) , tmp.a3 , sign(tmp.a4) from t2 as tmp; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|tmp |18 |40 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([tmp.a1], [sign(tmp.a2)], [tmp.a3], [sign(tmp.a4)]), filter(nil), + access([tmp.a1], [tmp.a2], [tmp.a3], [tmp.a4]), partitions(p0) + +select tmp.a1 , sign(tmp.a2) , tmp.a3 , sign(tmp.a4) from t2 as tmp; ++-----+--------------+------+--------------+ +| a1 | sign(tmp.a2) | a3 | sign(tmp.a4) | ++-----+--------------+------+--------------+ +| AME | 0 | SEA | 1 | +| BDL | 0 | DEN | -1 | +| BMC | 1 | SEA | -1 | +| BOT | -1 | SEA | -1 | +| DTX | 1 | NYC | 1 | +| GG1 | 1 | DD1 | 1 | +| GG2 | -1 | DD2 | 1 | +| GG3 | -1 | DD3 | -1 | +| GTM | 1 | DAL | -1 | +| HBR | 1 | SEA | 1 | +| KKK | -1 | ATL | NULL | +| PLS | -1 | WDC | -1 | +| SSJ | NULL | CHI | NULL | +| TWU | 0 | LAX | -1 | +| VVV | -1 | MON | 1 | +| WWW | 1 | LED | NULL | +| XXX | NULL | MIN | NULL | +| ZAJ | 1 | CHI | -1 | ++-----+--------------+------+--------------+ + +## select for update +EXPLAIN select sign(a2) from t2 where sign(a4) >= 0 for update; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |6 |41 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(t2.a2)]), filter([sign(t2.a4) >= 0]), + access([t2.a1], [t2.a4], [t2.a2]), partitions(p0) + +select sign(a2) from t2 where sign(a4) >= 0 for update; ++----------+ +| sign(a2) | ++----------+ +| 0 | +| 1 | +| 1 | +| -1 | +| 1 | +| -1 | ++----------+ +EXPLAIN select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2 for update; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |1 |44 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(t2.a4)]), filter([t2.a2 < 2], [sign(t2.a2) <= 0]), + access([t2.a1], [t2.a2], [t2.a4]), partitions(p0) + +select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2 for update; ++----------+ +| sign(a4) | ++----------+ +| 1 | +| -1 | +| -1 | +| 1 | +| -1 | +| NULL | +| -1 | +| -1 | +| 1 | ++----------+ +EXPLAIN select * from t2 group by sign(a2) for update; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |18 |60 | +|1 | TABLE SCAN |t2 |18 |41 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter(nil), + group([sign(t2.a2)]), agg_func(nil) + 1 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5], [sign(t2.a2)]), filter(nil), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 group by sign(a2) for update; ++-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+ +| AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | +| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | +| SSJ | NULL | CHI | NULL | 1974-03-19 00:00:00 | ++-----+------+------+--------+---------------------+ +EXPLAIN select * from t2 order by sign(a4) for update; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |SORT | |18 |73 | +|1 | TABLE SCAN|t2 |18 |41 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter(nil), sort_keys([sign(t2.a4), ASC]) + 1 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5], [sign(t2.a4)]), filter(nil), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 order by sign(a4) for update; ++-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+ +| XXX | NULL | MIN | NULL | NULL | +| WWW | 1 | LED | NULL | NULL | +| SSJ | NULL | CHI | NULL | 1974-03-19 00:00:00 | +| KKK | -3 | ATL | NULL | NULL | +| BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 | +| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | +| TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 | +| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | +| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | +| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | +| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | +| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | +| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | +| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | +| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | +| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | +| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | +| AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 | ++-----+------+------+--------+---------------------+ +EXPLAIN select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0 for update; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |1 |61 | +|1 | TABLE SCAN |t2 |18 |40 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([abs(cast(t2.a2, BIGINT(-1, 0)))], [T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1)))]), filter([T_FUN_SUM(sign(t2.a4)) > ?]), + group([abs(cast(t2.a2, BIGINT(-1, 0)))]), agg_func([T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1)))], [T_FUN_SUM(sign(t2.a4))]) + 1 - output([t2.a2], [abs(cast(t2.a2, BIGINT(-1, 0)))], [cast(t2.a4, DOUBLE(-1, -1))], [sign(t2.a4)]), filter(nil), + access([t2.a1], [t2.a2], [t2.a4]), partitions(p0) + +select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0 for update; ++---------+---------------------+ +| abs(a2) | sum(a4) | ++---------+---------------------+ +| 1 | 0.08999999612569809 | ++---------+---------------------+ +EXPLAIN select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) ) for update; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |1 |44 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter([t2.a2 = ?]), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) ) for update; ++-----+------+------+-------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+-------+---------------------+ +| DTX | 1 | NYC | 0.08 | timestamp | +| HBR | 1 | SEA | 0.085 | timestamp | +| WWW | 1 | LED | NULL | timestamp | ++-----+------+------+-------+---------------------+ +EXPLAIN select sign( sum(a2) ) , sign( sum(a4) ) from t2 for update; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |44 | +|1 | TABLE SCAN |t2 |18 |40 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(T_FUN_SUM(t2.a2))], [sign(T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1))))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t2.a2)], [T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1)))]) + 1 - output([t2.a2], [cast(t2.a4, DOUBLE(-1, -1))]), filter(nil), + access([t2.a1], [t2.a2], [t2.a4]), partitions(p0) + +select sign( sum(a2) ) , sign( sum(a4) ) from t2 for update; ++-----------------+-----------------+ +| sign( sum(a2) ) | sign( sum(a4) ) | ++-----------------+-----------------+ +| 0 | -1 | ++-----------------+-----------------+ +EXPLAIN select sign( avg(a2) ) , sign( avg(a4) ) from t2 for update; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |46 | +|1 | TABLE SCAN |t2 |18 |40 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(T_FUN_SUM(t2.a2) / cast(T_FUN_COUNT(t2.a2), DECIMAL(20, 0)))], [sign(T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1))) / cast(T_FUN_COUNT(cast(t2.a4, DOUBLE(-1, -1))), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t2.a2)], [T_FUN_COUNT(t2.a2)], [T_FUN_SUM(cast(t2.a4, DOUBLE(-1, -1)))], [T_FUN_COUNT(cast(t2.a4, DOUBLE(-1, -1)))]) + 1 - output([t2.a2], [cast(t2.a4, DOUBLE(-1, -1))]), filter(nil), + access([t2.a1], [t2.a2], [t2.a4]), partitions(p0) + +select sign( avg(a2) ) , sign( avg(a4) ) from t2 for update; ++-----------------+-----------------+ +| sign( avg(a2) ) | sign( avg(a4) ) | ++-----------------+-----------------+ +| 0 | -1 | ++-----------------+-----------------+ +EXPLAIN select sign( max(a2) ) , sign( min(a4) ) from t2 for update; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |44 | +|1 | TABLE SCAN |t2 |18 |40 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(T_FUN_MAX(t2.a2))], [sign(T_FUN_MIN(t2.a4))]), filter(nil), + group(nil), agg_func([T_FUN_MAX(t2.a2)], [T_FUN_MIN(t2.a4)]) + 1 - output([t2.a2], [t2.a4]), filter(nil), + access([t2.a1], [t2.a2], [t2.a4]), partitions(p0) + +select sign( max(a2) ) , sign( min(a4) ) from t2 for update; ++-----------------+-----------------+ +| sign( max(a2) ) | sign( min(a4) ) | ++-----------------+-----------------+ +| 1 | -1 | ++-----------------+-----------------+ +EXPLAIN select sign(count(*)) from t2 for update; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |43 | +|1 | TABLE SCAN |t2 |18 |39 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(T_FUN_COUNT(*))]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 1 - output([1]), filter(nil), + access([t2.a1]), partitions(p0) + +select sign(count(*)) from t2 for update; ++----------------+ +| sign(count(*)) | ++----------------+ +| 1 | ++----------------+ +EXPLAIN select * from t2 where sign( length(a1) ) = 1 for update; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |1 |42 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), filter([sign(length(cast(t2.a1, VARCHAR(1048576)))) = 1]), + access([t2.a1], [t2.a2], [t2.a3], [t2.a4], [t2.a5]), partitions(p0) + +select * from t2 where sign( length(a1) ) = 1 for update; ++-----+------+------+--------+---------------------+ +| a1 | a2 | a3 | a4 | a5 | ++-----+------+------+--------+---------------------+ +| AME | 0 | SEA | 0.1 | timestamp | +| BDL | 0 | DEN | -0.08 | timestamp | +| BMC | 3 | SEA | -0.085 | timestamp | +| BOT | -2 | SEA | -0.085 | timestamp | +| DTX | 1 | NYC | 0.08 | timestamp | +| GG1 | 3 | DD1 | 0.053 | timestamp | +| GG2 | -3 | DD2 | 0.052 | timestamp | +| GG3 | -3 | DD3 | -0.051 | timestamp | +| GTM | 3 | DAL | -0.07 | timestamp | +| HBR | 1 | SEA | 0.085 | timestamp | +| KKK | -3 | ATL | NULL | timestamp | +| PLS | -1 | WDC | -0.075 | timestamp | +| SSJ | NULL | CHI | NULL | timestamp | +| TWU | 0 | LAX | -0.08 | timestamp | +| VVV | -2 | MON | 0.075 | timestamp | +| WWW | 1 | LED | NULL | timestamp | +| XXX | NULL | MIN | NULL | timestamp | +| ZAJ | 2 | CHI | -0.075 | timestamp | ++-----+------+------+--------+---------------------+ +EXPLAIN select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2 for update; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |18 |40 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(cast(cast(t2.a1, CHAR(1024)), DOUBLE(-1, -1)))], [sign(cast(cast(t2.a3, CHAR(1024)), DOUBLE(-1, -1)))]), filter(nil), + access([t2.a1], [t2.a3]), partitions(p0) + +select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2 for update; ++--------------------------------+--------------------------------+ +| sign( cast(a1 as char(1024)) ) | sign( cast(a3 as char(1024)) ) | ++--------------------------------+--------------------------------+ +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | +| 0 | 0 | ++--------------------------------+--------------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'AME' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'BDL' +Warning 1292 Truncated incorrect DOUBLE value: 'DEN' +Warning 1292 Truncated incorrect DOUBLE value: 'BMC' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'BOT' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'DTX' +Warning 1292 Truncated incorrect DOUBLE value: 'NYC' +Warning 1292 Truncated incorrect DOUBLE value: 'GG1' +Warning 1292 Truncated incorrect DOUBLE value: 'DD1' +Warning 1292 Truncated incorrect DOUBLE value: 'GG2' +Warning 1292 Truncated incorrect DOUBLE value: 'DD2' +Warning 1292 Truncated incorrect DOUBLE value: 'GG3' +Warning 1292 Truncated incorrect DOUBLE value: 'DD3' +Warning 1292 Truncated incorrect DOUBLE value: 'GTM' +Warning 1292 Truncated incorrect DOUBLE value: 'DAL' +Warning 1292 Truncated incorrect DOUBLE value: 'HBR' +Warning 1292 Truncated incorrect DOUBLE value: 'SEA' +Warning 1292 Truncated incorrect DOUBLE value: 'KKK' +Warning 1292 Truncated incorrect DOUBLE value: 'ATL' +Warning 1292 Truncated incorrect DOUBLE value: 'PLS' +Warning 1292 Truncated incorrect DOUBLE value: 'WDC' +Warning 1292 Truncated incorrect DOUBLE value: 'SSJ' +Warning 1292 Truncated incorrect DOUBLE value: 'CHI' +Warning 1292 Truncated incorrect DOUBLE value: 'TWU' +Warning 1292 Truncated incorrect DOUBLE value: 'LAX' +Warning 1292 Truncated incorrect DOUBLE value: 'VVV' +Warning 1292 Truncated incorrect DOUBLE value: 'MON' +Warning 1292 Truncated incorrect DOUBLE value: 'WWW' +Warning 1292 Truncated incorrect DOUBLE value: 'LED' +Warning 1292 Truncated incorrect DOUBLE value: 'XXX' +Warning 1292 Truncated incorrect DOUBLE value: 'MIN' +Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ' +Warning 1292 Truncated incorrect DOUBLE value: 'CHI' +EXPLAIN select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2 for update; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |18 |40 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([sign(cast(cast(t2.a2, CHAR(1024)), DOUBLE(-1, -1)))], [sign(cast(cast(t2.a4, CHAR(1024)), DOUBLE(-1, -1)))]), filter(nil), + access([t2.a1], [t2.a2], [t2.a4]), partitions(p0) + +select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2 for update; ++--------------------------------+--------------------------------+ +| sign( cast(a2 as char(1024)) ) | sign( cast(a4 as char(1024)) ) | ++--------------------------------+--------------------------------+ +| 0 | 1 | +| 0 | -1 | +| 1 | -1 | +| -1 | -1 | +| 1 | 1 | +| 1 | 1 | +| -1 | 1 | +| -1 | -1 | +| 1 | -1 | +| 1 | 1 | +| -1 | NULL | +| -1 | -1 | +| NULL | NULL | +| 0 | -1 | +| -1 | 1 | +| 1 | NULL | +| NULL | NULL | +| 1 | -1 | ++--------------------------------+--------------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_str.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_str.result new file mode 100644 index 000000000..7fe2e4f46 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_str.result @@ -0,0 +1,11073 @@ +result_format: 4 +explain_protocol: 0 + + +set @@ob_enable_plan_cache = 0; +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30), c_null int); +select * from t1; ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+--------+ +| c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c16 | c17 | c18 | c19 | c20 | c21 | c22 | c_null | ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+--------+ ++------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+--------+ +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5', null); +insert into t1 values(-1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -3.5, 4.5, + -5.5, 6.5, + -7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '-9.5', '10.5', null); + +select quote(null); ++-------------+ +| quote(null) | ++-------------+ +| NULL | ++-------------+ +select interval(null, null), interval(null, 1), interval(null, 1, 2), interval(null, 1, null), + interval(1, 1,1,2), interval('1', '2'); ++----------------------+-------------------+----------------------+-------------------------+--------------------+--------------------+ +| interval(null, null) | interval(null, 1) | interval(null, 1, 2) | interval(null, 1, null) | interval(1, 1,1,2) | interval('1', '2') | ++----------------------+-------------------+----------------------+-------------------------+--------------------+--------------------+ +| -1 | -1 | -1 | -1 | 2 | 0 | ++----------------------+-------------------+----------------------+-------------------------+--------------------+--------------------+ +select interval('a', 1); ++------------------+ +| interval('a', 1) | ++------------------+ +| 0 | ++------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'a' +select interval(1, 1, 1,1); ++---------------------+ +| interval(1, 1, 1,1) | ++---------------------+ +| 3 | ++---------------------+ + +select make_set(null, null), make_set(null, 1), make_set(1, null); ++----------------------+-------------------+-------------------+ +| make_set(null, null) | make_set(null, 1) | make_set(1, null) | ++----------------------+-------------------+-------------------+ +| NULL | NULL | | ++----------------------+-------------------+-------------------+ +select concat_ws(null, null), concat_ws(',', null), concat_ws(',', null, 1, null),concat_ws(',', null, 1), concat_ws(',', 1, null), + concat_ws(',', ''), concat_ws(',','',''), concat_ws(',','','1','', '2'); ++-----------------------+----------------------+-------------------------------+-------------------------+-------------------------+--------------------+----------------------+-------------------------------+ +| concat_ws(null, null) | concat_ws(',', null) | concat_ws(',', null, 1, null) | concat_ws(',', null, 1) | concat_ws(',', 1, null) | concat_ws(',', '') | concat_ws(',','','') | concat_ws(',','','1','', '2') | ++-----------------------+----------------------+-------------------------------+-------------------------+-------------------------+--------------------+----------------------+-------------------------------+ +| NULL | | 1 | 1 | 1 | | , | ,1,,2 | ++-----------------------+----------------------+-------------------------------+-------------------------+-------------------------+--------------------+----------------------+-------------------------------+ +select sys_op_opnsize(null); ++----------------------+ +| sys_op_opnsize(null) | ++----------------------+ +| 12 | ++----------------------+ + +select c1, quote(c1) from t1; ++------+-----------+ +| c1 | quote(c1) | ++------+-----------+ +| 1 | '1' | +| -1 | '-1' | ++------+-----------+ +select c1, sys_op_opnsize(c1) from t1; ++------+--------------------+ +| c1 | sys_op_opnsize(c1) | ++------+--------------------+ +| 1 | 20 | +| -1 | 20 | ++------+--------------------+ +select c1, c1, make_set(c1, c1) from t1; ++------+------+------------------+ +| c1 | c1 | make_set(c1, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c1, c1, concat_ws(c1, c1) from t1; ++------+------+-------------------+ +| c1 | c1 | concat_ws(c1, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c1, c1, interval(c1, c1) from t1; ++------+------+------------------+ +| c1 | c1 | interval(c1, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c1, c2, make_set(c1, c2) from t1; ++------+------+------------------+ +| c1 | c2 | make_set(c1, c2) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c1, c2, concat_ws(c1, c2) from t1; ++------+------+-------------------+ +| c1 | c2 | concat_ws(c1, c2) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c1, c2, interval(c1, c2) from t1; ++------+------+------------------+ +| c1 | c2 | interval(c1, c2) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c1, c3, make_set(c1, c3) from t1; ++------+------+------------------+ +| c1 | c3 | make_set(c1, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c1, c3, concat_ws(c1, c3) from t1; ++------+------+-------------------+ +| c1 | c3 | concat_ws(c1, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c1, c3, interval(c1, c3) from t1; ++------+------+------------------+ +| c1 | c3 | interval(c1, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c1, c4, make_set(c1, c4) from t1; ++------+------+------------------+ +| c1 | c4 | make_set(c1, c4) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c1, c4, concat_ws(c1, c4) from t1; ++------+------+-------------------+ +| c1 | c4 | concat_ws(c1, c4) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c1, c4, interval(c1, c4) from t1; ++------+------+------------------+ +| c1 | c4 | interval(c1, c4) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c1, c5, make_set(c1, c5) from t1; ++------+------+------------------+ +| c1 | c5 | make_set(c1, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c1, c5, concat_ws(c1, c5) from t1; ++------+------+-------------------+ +| c1 | c5 | concat_ws(c1, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c1, c5, interval(c1, c5) from t1; ++------+------+------------------+ +| c1 | c5 | interval(c1, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c1, c6, make_set(c1, c6) from t1; ++------+------+------------------+ +| c1 | c6 | make_set(c1, c6) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c1, c6, concat_ws(c1, c6) from t1; ++------+------+-------------------+ +| c1 | c6 | concat_ws(c1, c6) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c1, c6, interval(c1, c6) from t1; ++------+------+------------------+ +| c1 | c6 | interval(c1, c6) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c1, c7, make_set(c1, c7) from t1; ++------+------+------------------+ +| c1 | c7 | make_set(c1, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c1, c7, concat_ws(c1, c7) from t1; ++------+------+-------------------+ +| c1 | c7 | concat_ws(c1, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c1, c7, interval(c1, c7) from t1; ++------+------+------------------+ +| c1 | c7 | interval(c1, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c1, c8, make_set(c1, c8) from t1; ++------+------+------------------+ +| c1 | c8 | make_set(c1, c8) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c1, c8, concat_ws(c1, c8) from t1; ++------+------+-------------------+ +| c1 | c8 | concat_ws(c1, c8) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c1, c8, interval(c1, c8) from t1; ++------+------+------------------+ +| c1 | c8 | interval(c1, c8) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c1, c9, make_set(c1, c9) from t1; ++------+------+------------------+ +| c1 | c9 | make_set(c1, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c1, c9, concat_ws(c1, c9) from t1; ++------+------+-------------------+ +| c1 | c9 | concat_ws(c1, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c1, c9, interval(c1, c9) from t1; ++------+------+------------------+ +| c1 | c9 | interval(c1, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c1, c10, make_set(c1, c10) from t1; ++------+------+-------------------+ +| c1 | c10 | make_set(c1, c10) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c1, c10, concat_ws(c1, c10) from t1; ++------+------+--------------------+ +| c1 | c10 | concat_ws(c1, c10) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c1, c10, interval(c1, c10) from t1; ++------+------+-------------------+ +| c1 | c10 | interval(c1, c10) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c1, c11, make_set(c1, c11) from t1; ++------+------+-------------------+ +| c1 | c11 | make_set(c1, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c1, c11, concat_ws(c1, c11) from t1; ++------+------+--------------------+ +| c1 | c11 | concat_ws(c1, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c1, c11, interval(c1, c11) from t1; ++------+------+-------------------+ +| c1 | c11 | interval(c1, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c1, c12, make_set(c1, c12) from t1; ++------+------+-------------------+ +| c1 | c12 | make_set(c1, c12) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c1, c12, concat_ws(c1, c12) from t1; ++------+------+--------------------+ +| c1 | c12 | concat_ws(c1, c12) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c1, c12, interval(c1, c12) from t1; ++------+------+-------------------+ +| c1 | c12 | interval(c1, c12) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c1, c13, make_set(c1, c13) from t1; ++------+------+-------------------+ +| c1 | c13 | make_set(c1, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+-------------------+ +select c1, c13, concat_ws(c1, c13) from t1; ++------+------+--------------------+ +| c1 | c13 | concat_ws(c1, c13) | ++------+------+--------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+--------------------+ +select c1, c13, interval(c1, c13) from t1; ++------+------+-------------------+ +| c1 | c13 | interval(c1, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 0 | +| -1 | -3.5 | 1 | ++------+------+-------------------+ + +select c1, c14, make_set(c1, c14) from t1; ++------+------+-------------------+ +| c1 | c14 | make_set(c1, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+-------------------+ +select c1, c14, concat_ws(c1, c14) from t1; ++------+------+--------------------+ +| c1 | c14 | concat_ws(c1, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+--------------------+ +select c1, c14, interval(c1, c14) from t1; ++------+------+-------------------+ +| c1 | c14 | interval(c1, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 0 | +| -1 | 4.5 | 0 | ++------+------+-------------------+ + +select c1, c15, make_set(c1, c15) from t1; ++------+------+-------------------+ +| c1 | c15 | make_set(c1, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+-------------------+ +select c1, c15, concat_ws(c1, c15) from t1; ++------+------+--------------------+ +| c1 | c15 | concat_ws(c1, c15) | ++------+------+--------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+--------------------+ +select c1, c15, interval(c1, c15) from t1; ++------+------+-------------------+ +| c1 | c15 | interval(c1, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 0 | +| -1 | -5.5 | 1 | ++------+------+-------------------+ + +select c1, c16, make_set(c1, c16) from t1; ++------+------+-------------------+ +| c1 | c16 | make_set(c1, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+-------------------+ +select c1, c16, concat_ws(c1, c16) from t1; ++------+------+--------------------+ +| c1 | c16 | concat_ws(c1, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+--------------------+ +select c1, c16, interval(c1, c16) from t1; ++------+------+-------------------+ +| c1 | c16 | interval(c1, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 0 | +| -1 | 6.5 | 0 | ++------+------+-------------------+ + +select c1, c17, make_set(c1, c17) from t1; ++------+------+-------------------+ +| c1 | c17 | make_set(c1, c17) | ++------+------+-------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+-------------------+ +select c1, c17, concat_ws(c1, c17) from t1; ++------+------+--------------------+ +| c1 | c17 | concat_ws(c1, c17) | ++------+------+--------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+--------------------+ +select c1, c17, interval(c1, c17) from t1; ++------+------+-------------------+ +| c1 | c17 | interval(c1, c17) | ++------+------+-------------------+ +| 1 | 8 | 0 | +| -1 | -8 | 1 | ++------+------+-------------------+ + +select c1, c18, make_set(c1, c18) from t1; ++------+------+-------------------+ +| c1 | c18 | make_set(c1, c18) | ++------+------+-------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+-------------------+ +select c1, c18, concat_ws(c1, c18) from t1; ++------+------+--------------------+ +| c1 | c18 | concat_ws(c1, c18) | ++------+------+--------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+--------------------+ +select c1, c18, interval(c1, c18) from t1; ++------+------+-------------------+ +| c1 | c18 | interval(c1, c18) | ++------+------+-------------------+ +| 1 | 9 | 0 | +| -1 | 9 | 0 | ++------+------+-------------------+ + +select c1, c19, make_set(c1, c19) from t1; ++------+---------------------+---------------------+ +| c1 | c19 | make_set(c1, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c1, c19, concat_ws(c1, c19) from t1; ++------+---------------------+---------------------+ +| c1 | c19 | concat_ws(c1, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c1, c19, interval(c1, c19) from t1; ++------+---------------------+-------------------+ +| c1 | c19 | interval(c1, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 0 | +| -1 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c1, c20, make_set(c1, c20) from t1; ++------+---------------------+---------------------+ +| c1 | c20 | make_set(c1, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c1, c20, concat_ws(c1, c20) from t1; ++------+---------------------+---------------------+ +| c1 | c20 | concat_ws(c1, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c1, c20, interval(c1, c20) from t1; ++------+---------------------+-------------------+ +| c1 | c20 | interval(c1, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 0 | +| -1 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c1, c21, make_set(c1, c21) from t1; ++------+------+-------------------+ +| c1 | c21 | make_set(c1, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+-------------------+ +select c1, c21, concat_ws(c1, c21) from t1; ++------+------+--------------------+ +| c1 | c21 | concat_ws(c1, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+--------------------+ +select c1, c21, interval(c1, c21) from t1; ++------+------+-------------------+ +| c1 | c21 | interval(c1, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 0 | +| -1 | -9.5 | 1 | ++------+------+-------------------+ + +select c1, c22, make_set(c1, c22) from t1; ++------+------+-------------------+ +| c1 | c22 | make_set(c1, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+-------------------+ +select c1, c22, concat_ws(c1, c22) from t1; ++------+------+--------------------+ +| c1 | c22 | concat_ws(c1, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+--------------------+ +select c1, c22, interval(c1, c22) from t1; ++------+------+-------------------+ +| c1 | c22 | interval(c1, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 0 | +| -1 | 10.5 | 0 | ++------+------+-------------------+ + +select c2, quote(c2) from t1; ++------+-----------+ +| c2 | quote(c2) | ++------+-----------+ +| 2 | '2' | +| 2 | '2' | ++------+-----------+ +select c2, sys_op_opnsize(c2) from t1; ++------+--------------------+ +| c2 | sys_op_opnsize(c2) | ++------+--------------------+ +| 2 | 20 | +| 2 | 20 | ++------+--------------------+ +select c2, c1, make_set(c2, c1) from t1; ++------+------+------------------+ +| c2 | c1 | make_set(c2, c1) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c2, c1, concat_ws(c2, c1) from t1; ++------+------+-------------------+ +| c2 | c1 | concat_ws(c2, c1) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c2, c1, interval(c2, c1) from t1; ++------+------+------------------+ +| c2 | c1 | interval(c2, c1) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c2, c2, make_set(c2, c2) from t1; ++------+------+------------------+ +| c2 | c2 | make_set(c2, c2) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c2, c2, concat_ws(c2, c2) from t1; ++------+------+-------------------+ +| c2 | c2 | concat_ws(c2, c2) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c2, c2, interval(c2, c2) from t1; ++------+------+------------------+ +| c2 | c2 | interval(c2, c2) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c2, c3, make_set(c2, c3) from t1; ++------+------+------------------+ +| c2 | c3 | make_set(c2, c3) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c2, c3, concat_ws(c2, c3) from t1; ++------+------+-------------------+ +| c2 | c3 | concat_ws(c2, c3) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c2, c3, interval(c2, c3) from t1; ++------+------+------------------+ +| c2 | c3 | interval(c2, c3) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c2, c4, make_set(c2, c4) from t1; ++------+------+------------------+ +| c2 | c4 | make_set(c2, c4) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c2, c4, concat_ws(c2, c4) from t1; ++------+------+-------------------+ +| c2 | c4 | concat_ws(c2, c4) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c2, c4, interval(c2, c4) from t1; ++------+------+------------------+ +| c2 | c4 | interval(c2, c4) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c2, c5, make_set(c2, c5) from t1; ++------+------+------------------+ +| c2 | c5 | make_set(c2, c5) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c2, c5, concat_ws(c2, c5) from t1; ++------+------+-------------------+ +| c2 | c5 | concat_ws(c2, c5) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c2, c5, interval(c2, c5) from t1; ++------+------+------------------+ +| c2 | c5 | interval(c2, c5) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c2, c6, make_set(c2, c6) from t1; ++------+------+------------------+ +| c2 | c6 | make_set(c2, c6) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c2, c6, concat_ws(c2, c6) from t1; ++------+------+-------------------+ +| c2 | c6 | concat_ws(c2, c6) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c2, c6, interval(c2, c6) from t1; ++------+------+------------------+ +| c2 | c6 | interval(c2, c6) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c2, c7, make_set(c2, c7) from t1; ++------+------+------------------+ +| c2 | c7 | make_set(c2, c7) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c2, c7, concat_ws(c2, c7) from t1; ++------+------+-------------------+ +| c2 | c7 | concat_ws(c2, c7) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c2, c7, interval(c2, c7) from t1; ++------+------+------------------+ +| c2 | c7 | interval(c2, c7) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c2, c8, make_set(c2, c8) from t1; ++------+------+------------------+ +| c2 | c8 | make_set(c2, c8) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c2, c8, concat_ws(c2, c8) from t1; ++------+------+-------------------+ +| c2 | c8 | concat_ws(c2, c8) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c2, c8, interval(c2, c8) from t1; ++------+------+------------------+ +| c2 | c8 | interval(c2, c8) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c2, c9, make_set(c2, c9) from t1; ++------+------+------------------+ +| c2 | c9 | make_set(c2, c9) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c2, c9, concat_ws(c2, c9) from t1; ++------+------+-------------------+ +| c2 | c9 | concat_ws(c2, c9) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c2, c9, interval(c2, c9) from t1; ++------+------+------------------+ +| c2 | c9 | interval(c2, c9) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c2, c10, make_set(c2, c10) from t1; ++------+------+-------------------+ +| c2 | c10 | make_set(c2, c10) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c2, c10, concat_ws(c2, c10) from t1; ++------+------+--------------------+ +| c2 | c10 | concat_ws(c2, c10) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c2, c10, interval(c2, c10) from t1; ++------+------+-------------------+ +| c2 | c10 | interval(c2, c10) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c2, c11, make_set(c2, c11) from t1; ++------+------+-------------------+ +| c2 | c11 | make_set(c2, c11) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c2, c11, concat_ws(c2, c11) from t1; ++------+------+--------------------+ +| c2 | c11 | concat_ws(c2, c11) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c2, c11, interval(c2, c11) from t1; ++------+------+-------------------+ +| c2 | c11 | interval(c2, c11) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c2, c12, make_set(c2, c12) from t1; ++------+------+-------------------+ +| c2 | c12 | make_set(c2, c12) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c2, c12, concat_ws(c2, c12) from t1; ++------+------+--------------------+ +| c2 | c12 | concat_ws(c2, c12) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c2, c12, interval(c2, c12) from t1; ++------+------+-------------------+ +| c2 | c12 | interval(c2, c12) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c2, c13, make_set(c2, c13) from t1; ++------+------+-------------------+ +| c2 | c13 | make_set(c2, c13) | ++------+------+-------------------+ +| 2 | 3.5 | | +| 2 | -3.5 | | ++------+------+-------------------+ +select c2, c13, concat_ws(c2, c13) from t1; ++------+------+--------------------+ +| c2 | c13 | concat_ws(c2, c13) | ++------+------+--------------------+ +| 2 | 3.5 | 3.5 | +| 2 | -3.5 | -3.5 | ++------+------+--------------------+ +select c2, c13, interval(c2, c13) from t1; ++------+------+-------------------+ +| c2 | c13 | interval(c2, c13) | ++------+------+-------------------+ +| 2 | 3.5 | 0 | +| 2 | -3.5 | 1 | ++------+------+-------------------+ + +select c2, c14, make_set(c2, c14) from t1; ++------+------+-------------------+ +| c2 | c14 | make_set(c2, c14) | ++------+------+-------------------+ +| 2 | 4.5 | | +| 2 | 4.5 | | ++------+------+-------------------+ +select c2, c14, concat_ws(c2, c14) from t1; ++------+------+--------------------+ +| c2 | c14 | concat_ws(c2, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 4.5 | +| 2 | 4.5 | 4.5 | ++------+------+--------------------+ +select c2, c14, interval(c2, c14) from t1; ++------+------+-------------------+ +| c2 | c14 | interval(c2, c14) | ++------+------+-------------------+ +| 2 | 4.5 | 0 | +| 2 | 4.5 | 0 | ++------+------+-------------------+ + +select c2, c15, make_set(c2, c15) from t1; ++------+------+-------------------+ +| c2 | c15 | make_set(c2, c15) | ++------+------+-------------------+ +| 2 | 5.5 | | +| 2 | -5.5 | | ++------+------+-------------------+ +select c2, c15, concat_ws(c2, c15) from t1; ++------+------+--------------------+ +| c2 | c15 | concat_ws(c2, c15) | ++------+------+--------------------+ +| 2 | 5.5 | 5.5 | +| 2 | -5.5 | -5.5 | ++------+------+--------------------+ +select c2, c15, interval(c2, c15) from t1; ++------+------+-------------------+ +| c2 | c15 | interval(c2, c15) | ++------+------+-------------------+ +| 2 | 5.5 | 0 | +| 2 | -5.5 | 1 | ++------+------+-------------------+ + +select c2, c16, make_set(c2, c16) from t1; ++------+------+-------------------+ +| c2 | c16 | make_set(c2, c16) | ++------+------+-------------------+ +| 2 | 6.5 | | +| 2 | 6.5 | | ++------+------+-------------------+ +select c2, c16, concat_ws(c2, c16) from t1; ++------+------+--------------------+ +| c2 | c16 | concat_ws(c2, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 6.5 | +| 2 | 6.5 | 6.5 | ++------+------+--------------------+ +select c2, c16, interval(c2, c16) from t1; ++------+------+-------------------+ +| c2 | c16 | interval(c2, c16) | ++------+------+-------------------+ +| 2 | 6.5 | 0 | +| 2 | 6.5 | 0 | ++------+------+-------------------+ + +select c2, c17, make_set(c2, c17) from t1; ++------+------+-------------------+ +| c2 | c17 | make_set(c2, c17) | ++------+------+-------------------+ +| 2 | 8 | | +| 2 | -8 | | ++------+------+-------------------+ +select c2, c17, concat_ws(c2, c17) from t1; ++------+------+--------------------+ +| c2 | c17 | concat_ws(c2, c17) | ++------+------+--------------------+ +| 2 | 8 | 8 | +| 2 | -8 | -8 | ++------+------+--------------------+ +select c2, c17, interval(c2, c17) from t1; ++------+------+-------------------+ +| c2 | c17 | interval(c2, c17) | ++------+------+-------------------+ +| 2 | 8 | 0 | +| 2 | -8 | 1 | ++------+------+-------------------+ + +select c2, c18, make_set(c2, c18) from t1; ++------+------+-------------------+ +| c2 | c18 | make_set(c2, c18) | ++------+------+-------------------+ +| 2 | 9 | | +| 2 | 9 | | ++------+------+-------------------+ +select c2, c18, concat_ws(c2, c18) from t1; ++------+------+--------------------+ +| c2 | c18 | concat_ws(c2, c18) | ++------+------+--------------------+ +| 2 | 9 | 9 | +| 2 | 9 | 9 | ++------+------+--------------------+ +select c2, c18, interval(c2, c18) from t1; ++------+------+-------------------+ +| c2 | c18 | interval(c2, c18) | ++------+------+-------------------+ +| 2 | 9 | 0 | +| 2 | 9 | 0 | ++------+------+-------------------+ + +select c2, c19, make_set(c2, c19) from t1; ++------+---------------------+-------------------+ +| c2 | c19 | make_set(c2, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | | +| 2 | 2019-12-01 12:00:00 | | ++------+---------------------+-------------------+ +select c2, c19, concat_ws(c2, c19) from t1; ++------+---------------------+---------------------+ +| c2 | c19 | concat_ws(c2, c19) | ++------+---------------------+---------------------+ +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c2, c19, interval(c2, c19) from t1; ++------+---------------------+-------------------+ +| c2 | c19 | interval(c2, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 0 | +| 2 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c2, c20, make_set(c2, c20) from t1; ++------+---------------------+-------------------+ +| c2 | c20 | make_set(c2, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | | +| 2 | 2019-12-03 06:00:00 | | ++------+---------------------+-------------------+ +select c2, c20, concat_ws(c2, c20) from t1; ++------+---------------------+---------------------+ +| c2 | c20 | concat_ws(c2, c20) | ++------+---------------------+---------------------+ +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c2, c20, interval(c2, c20) from t1; ++------+---------------------+-------------------+ +| c2 | c20 | interval(c2, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 0 | +| 2 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c2, c21, make_set(c2, c21) from t1; ++------+------+-------------------+ +| c2 | c21 | make_set(c2, c21) | ++------+------+-------------------+ +| 2 | 9.5 | | +| 2 | -9.5 | | ++------+------+-------------------+ +select c2, c21, concat_ws(c2, c21) from t1; ++------+------+--------------------+ +| c2 | c21 | concat_ws(c2, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 9.5 | +| 2 | -9.5 | -9.5 | ++------+------+--------------------+ +select c2, c21, interval(c2, c21) from t1; ++------+------+-------------------+ +| c2 | c21 | interval(c2, c21) | ++------+------+-------------------+ +| 2 | 9.5 | 0 | +| 2 | -9.5 | 1 | ++------+------+-------------------+ + +select c2, c22, make_set(c2, c22) from t1; ++------+------+-------------------+ +| c2 | c22 | make_set(c2, c22) | ++------+------+-------------------+ +| 2 | 10.5 | | +| 2 | 10.5 | | ++------+------+-------------------+ +select c2, c22, concat_ws(c2, c22) from t1; ++------+------+--------------------+ +| c2 | c22 | concat_ws(c2, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 10.5 | +| 2 | 10.5 | 10.5 | ++------+------+--------------------+ +select c2, c22, interval(c2, c22) from t1; ++------+------+-------------------+ +| c2 | c22 | interval(c2, c22) | ++------+------+-------------------+ +| 2 | 10.5 | 0 | +| 2 | 10.5 | 0 | ++------+------+-------------------+ + +select c3, quote(c3) from t1; ++------+-----------+ +| c3 | quote(c3) | ++------+-----------+ +| 1 | '1' | +| -1 | '-1' | ++------+-----------+ +select c3, sys_op_opnsize(c3) from t1; ++------+--------------------+ +| c3 | sys_op_opnsize(c3) | ++------+--------------------+ +| 1 | 20 | +| -1 | 20 | ++------+--------------------+ +select c3, c1, make_set(c3, c1) from t1; ++------+------+------------------+ +| c3 | c1 | make_set(c3, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c3, c1, concat_ws(c3, c1) from t1; ++------+------+-------------------+ +| c3 | c1 | concat_ws(c3, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c3, c1, interval(c3, c1) from t1; ++------+------+------------------+ +| c3 | c1 | interval(c3, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c3, c2, make_set(c3, c2) from t1; ++------+------+------------------+ +| c3 | c2 | make_set(c3, c2) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c3, c2, concat_ws(c3, c2) from t1; ++------+------+-------------------+ +| c3 | c2 | concat_ws(c3, c2) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c3, c2, interval(c3, c2) from t1; ++------+------+------------------+ +| c3 | c2 | interval(c3, c2) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c3, c3, make_set(c3, c3) from t1; ++------+------+------------------+ +| c3 | c3 | make_set(c3, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c3, c3, concat_ws(c3, c3) from t1; ++------+------+-------------------+ +| c3 | c3 | concat_ws(c3, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c3, c3, interval(c3, c3) from t1; ++------+------+------------------+ +| c3 | c3 | interval(c3, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c3, c4, make_set(c3, c4) from t1; ++------+------+------------------+ +| c3 | c4 | make_set(c3, c4) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c3, c4, concat_ws(c3, c4) from t1; ++------+------+-------------------+ +| c3 | c4 | concat_ws(c3, c4) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c3, c4, interval(c3, c4) from t1; ++------+------+------------------+ +| c3 | c4 | interval(c3, c4) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c3, c5, make_set(c3, c5) from t1; ++------+------+------------------+ +| c3 | c5 | make_set(c3, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c3, c5, concat_ws(c3, c5) from t1; ++------+------+-------------------+ +| c3 | c5 | concat_ws(c3, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c3, c5, interval(c3, c5) from t1; ++------+------+------------------+ +| c3 | c5 | interval(c3, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c3, c6, make_set(c3, c6) from t1; ++------+------+------------------+ +| c3 | c6 | make_set(c3, c6) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c3, c6, concat_ws(c3, c6) from t1; ++------+------+-------------------+ +| c3 | c6 | concat_ws(c3, c6) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c3, c6, interval(c3, c6) from t1; ++------+------+------------------+ +| c3 | c6 | interval(c3, c6) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c3, c7, make_set(c3, c7) from t1; ++------+------+------------------+ +| c3 | c7 | make_set(c3, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c3, c7, concat_ws(c3, c7) from t1; ++------+------+-------------------+ +| c3 | c7 | concat_ws(c3, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c3, c7, interval(c3, c7) from t1; ++------+------+------------------+ +| c3 | c7 | interval(c3, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c3, c8, make_set(c3, c8) from t1; ++------+------+------------------+ +| c3 | c8 | make_set(c3, c8) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c3, c8, concat_ws(c3, c8) from t1; ++------+------+-------------------+ +| c3 | c8 | concat_ws(c3, c8) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c3, c8, interval(c3, c8) from t1; ++------+------+------------------+ +| c3 | c8 | interval(c3, c8) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c3, c9, make_set(c3, c9) from t1; ++------+------+------------------+ +| c3 | c9 | make_set(c3, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c3, c9, concat_ws(c3, c9) from t1; ++------+------+-------------------+ +| c3 | c9 | concat_ws(c3, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c3, c9, interval(c3, c9) from t1; ++------+------+------------------+ +| c3 | c9 | interval(c3, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c3, c10, make_set(c3, c10) from t1; ++------+------+-------------------+ +| c3 | c10 | make_set(c3, c10) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c3, c10, concat_ws(c3, c10) from t1; ++------+------+--------------------+ +| c3 | c10 | concat_ws(c3, c10) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c3, c10, interval(c3, c10) from t1; ++------+------+-------------------+ +| c3 | c10 | interval(c3, c10) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c3, c11, make_set(c3, c11) from t1; ++------+------+-------------------+ +| c3 | c11 | make_set(c3, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c3, c11, concat_ws(c3, c11) from t1; ++------+------+--------------------+ +| c3 | c11 | concat_ws(c3, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c3, c11, interval(c3, c11) from t1; ++------+------+-------------------+ +| c3 | c11 | interval(c3, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c3, c12, make_set(c3, c12) from t1; ++------+------+-------------------+ +| c3 | c12 | make_set(c3, c12) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c3, c12, concat_ws(c3, c12) from t1; ++------+------+--------------------+ +| c3 | c12 | concat_ws(c3, c12) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c3, c12, interval(c3, c12) from t1; ++------+------+-------------------+ +| c3 | c12 | interval(c3, c12) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c3, c13, make_set(c3, c13) from t1; ++------+------+-------------------+ +| c3 | c13 | make_set(c3, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+-------------------+ +select c3, c13, concat_ws(c3, c13) from t1; ++------+------+--------------------+ +| c3 | c13 | concat_ws(c3, c13) | ++------+------+--------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+--------------------+ +select c3, c13, interval(c3, c13) from t1; ++------+------+-------------------+ +| c3 | c13 | interval(c3, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 0 | +| -1 | -3.5 | 1 | ++------+------+-------------------+ + +select c3, c14, make_set(c3, c14) from t1; ++------+------+-------------------+ +| c3 | c14 | make_set(c3, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+-------------------+ +select c3, c14, concat_ws(c3, c14) from t1; ++------+------+--------------------+ +| c3 | c14 | concat_ws(c3, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+--------------------+ +select c3, c14, interval(c3, c14) from t1; ++------+------+-------------------+ +| c3 | c14 | interval(c3, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 0 | +| -1 | 4.5 | 0 | ++------+------+-------------------+ + +select c3, c15, make_set(c3, c15) from t1; ++------+------+-------------------+ +| c3 | c15 | make_set(c3, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+-------------------+ +select c3, c15, concat_ws(c3, c15) from t1; ++------+------+--------------------+ +| c3 | c15 | concat_ws(c3, c15) | ++------+------+--------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+--------------------+ +select c3, c15, interval(c3, c15) from t1; ++------+------+-------------------+ +| c3 | c15 | interval(c3, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 0 | +| -1 | -5.5 | 1 | ++------+------+-------------------+ + +select c3, c16, make_set(c3, c16) from t1; ++------+------+-------------------+ +| c3 | c16 | make_set(c3, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+-------------------+ +select c3, c16, concat_ws(c3, c16) from t1; ++------+------+--------------------+ +| c3 | c16 | concat_ws(c3, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+--------------------+ +select c3, c16, interval(c3, c16) from t1; ++------+------+-------------------+ +| c3 | c16 | interval(c3, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 0 | +| -1 | 6.5 | 0 | ++------+------+-------------------+ + +select c3, c17, make_set(c3, c17) from t1; ++------+------+-------------------+ +| c3 | c17 | make_set(c3, c17) | ++------+------+-------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+-------------------+ +select c3, c17, concat_ws(c3, c17) from t1; ++------+------+--------------------+ +| c3 | c17 | concat_ws(c3, c17) | ++------+------+--------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+--------------------+ +select c3, c17, interval(c3, c17) from t1; ++------+------+-------------------+ +| c3 | c17 | interval(c3, c17) | ++------+------+-------------------+ +| 1 | 8 | 0 | +| -1 | -8 | 1 | ++------+------+-------------------+ + +select c3, c18, make_set(c3, c18) from t1; ++------+------+-------------------+ +| c3 | c18 | make_set(c3, c18) | ++------+------+-------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+-------------------+ +select c3, c18, concat_ws(c3, c18) from t1; ++------+------+--------------------+ +| c3 | c18 | concat_ws(c3, c18) | ++------+------+--------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+--------------------+ +select c3, c18, interval(c3, c18) from t1; ++------+------+-------------------+ +| c3 | c18 | interval(c3, c18) | ++------+------+-------------------+ +| 1 | 9 | 0 | +| -1 | 9 | 0 | ++------+------+-------------------+ + +select c3, c19, make_set(c3, c19) from t1; ++------+---------------------+---------------------+ +| c3 | c19 | make_set(c3, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c3, c19, concat_ws(c3, c19) from t1; ++------+---------------------+---------------------+ +| c3 | c19 | concat_ws(c3, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c3, c19, interval(c3, c19) from t1; ++------+---------------------+-------------------+ +| c3 | c19 | interval(c3, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 0 | +| -1 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c3, c20, make_set(c3, c20) from t1; ++------+---------------------+---------------------+ +| c3 | c20 | make_set(c3, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c3, c20, concat_ws(c3, c20) from t1; ++------+---------------------+---------------------+ +| c3 | c20 | concat_ws(c3, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c3, c20, interval(c3, c20) from t1; ++------+---------------------+-------------------+ +| c3 | c20 | interval(c3, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 0 | +| -1 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c3, c21, make_set(c3, c21) from t1; ++------+------+-------------------+ +| c3 | c21 | make_set(c3, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+-------------------+ +select c3, c21, concat_ws(c3, c21) from t1; ++------+------+--------------------+ +| c3 | c21 | concat_ws(c3, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+--------------------+ +select c3, c21, interval(c3, c21) from t1; ++------+------+-------------------+ +| c3 | c21 | interval(c3, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 0 | +| -1 | -9.5 | 1 | ++------+------+-------------------+ + +select c3, c22, make_set(c3, c22) from t1; ++------+------+-------------------+ +| c3 | c22 | make_set(c3, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+-------------------+ +select c3, c22, concat_ws(c3, c22) from t1; ++------+------+--------------------+ +| c3 | c22 | concat_ws(c3, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+--------------------+ +select c3, c22, interval(c3, c22) from t1; ++------+------+-------------------+ +| c3 | c22 | interval(c3, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 0 | +| -1 | 10.5 | 0 | ++------+------+-------------------+ + +select c4, quote(c4) from t1; ++------+-----------+ +| c4 | quote(c4) | ++------+-----------+ +| 2 | '2' | +| 2 | '2' | ++------+-----------+ +select c4, sys_op_opnsize(c4) from t1; ++------+--------------------+ +| c4 | sys_op_opnsize(c4) | ++------+--------------------+ +| 2 | 20 | +| 2 | 20 | ++------+--------------------+ +select c4, c1, make_set(c4, c1) from t1; ++------+------+------------------+ +| c4 | c1 | make_set(c4, c1) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c4, c1, concat_ws(c4, c1) from t1; ++------+------+-------------------+ +| c4 | c1 | concat_ws(c4, c1) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c4, c1, interval(c4, c1) from t1; ++------+------+------------------+ +| c4 | c1 | interval(c4, c1) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c4, c2, make_set(c4, c2) from t1; ++------+------+------------------+ +| c4 | c2 | make_set(c4, c2) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c4, c2, concat_ws(c4, c2) from t1; ++------+------+-------------------+ +| c4 | c2 | concat_ws(c4, c2) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c4, c2, interval(c4, c2) from t1; ++------+------+------------------+ +| c4 | c2 | interval(c4, c2) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c4, c3, make_set(c4, c3) from t1; ++------+------+------------------+ +| c4 | c3 | make_set(c4, c3) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c4, c3, concat_ws(c4, c3) from t1; ++------+------+-------------------+ +| c4 | c3 | concat_ws(c4, c3) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c4, c3, interval(c4, c3) from t1; ++------+------+------------------+ +| c4 | c3 | interval(c4, c3) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c4, c4, make_set(c4, c4) from t1; ++------+------+------------------+ +| c4 | c4 | make_set(c4, c4) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c4, c4, concat_ws(c4, c4) from t1; ++------+------+-------------------+ +| c4 | c4 | concat_ws(c4, c4) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c4, c4, interval(c4, c4) from t1; ++------+------+------------------+ +| c4 | c4 | interval(c4, c4) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c4, c5, make_set(c4, c5) from t1; ++------+------+------------------+ +| c4 | c5 | make_set(c4, c5) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c4, c5, concat_ws(c4, c5) from t1; ++------+------+-------------------+ +| c4 | c5 | concat_ws(c4, c5) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c4, c5, interval(c4, c5) from t1; ++------+------+------------------+ +| c4 | c5 | interval(c4, c5) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c4, c6, make_set(c4, c6) from t1; ++------+------+------------------+ +| c4 | c6 | make_set(c4, c6) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c4, c6, concat_ws(c4, c6) from t1; ++------+------+-------------------+ +| c4 | c6 | concat_ws(c4, c6) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c4, c6, interval(c4, c6) from t1; ++------+------+------------------+ +| c4 | c6 | interval(c4, c6) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c4, c7, make_set(c4, c7) from t1; ++------+------+------------------+ +| c4 | c7 | make_set(c4, c7) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c4, c7, concat_ws(c4, c7) from t1; ++------+------+-------------------+ +| c4 | c7 | concat_ws(c4, c7) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c4, c7, interval(c4, c7) from t1; ++------+------+------------------+ +| c4 | c7 | interval(c4, c7) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c4, c8, make_set(c4, c8) from t1; ++------+------+------------------+ +| c4 | c8 | make_set(c4, c8) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c4, c8, concat_ws(c4, c8) from t1; ++------+------+-------------------+ +| c4 | c8 | concat_ws(c4, c8) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c4, c8, interval(c4, c8) from t1; ++------+------+------------------+ +| c4 | c8 | interval(c4, c8) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c4, c9, make_set(c4, c9) from t1; ++------+------+------------------+ +| c4 | c9 | make_set(c4, c9) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c4, c9, concat_ws(c4, c9) from t1; ++------+------+-------------------+ +| c4 | c9 | concat_ws(c4, c9) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c4, c9, interval(c4, c9) from t1; ++------+------+------------------+ +| c4 | c9 | interval(c4, c9) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c4, c10, make_set(c4, c10) from t1; ++------+------+-------------------+ +| c4 | c10 | make_set(c4, c10) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c4, c10, concat_ws(c4, c10) from t1; ++------+------+--------------------+ +| c4 | c10 | concat_ws(c4, c10) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c4, c10, interval(c4, c10) from t1; ++------+------+-------------------+ +| c4 | c10 | interval(c4, c10) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c4, c11, make_set(c4, c11) from t1; ++------+------+-------------------+ +| c4 | c11 | make_set(c4, c11) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c4, c11, concat_ws(c4, c11) from t1; ++------+------+--------------------+ +| c4 | c11 | concat_ws(c4, c11) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c4, c11, interval(c4, c11) from t1; ++------+------+-------------------+ +| c4 | c11 | interval(c4, c11) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c4, c12, make_set(c4, c12) from t1; ++------+------+-------------------+ +| c4 | c12 | make_set(c4, c12) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c4, c12, concat_ws(c4, c12) from t1; ++------+------+--------------------+ +| c4 | c12 | concat_ws(c4, c12) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c4, c12, interval(c4, c12) from t1; ++------+------+-------------------+ +| c4 | c12 | interval(c4, c12) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c4, c13, make_set(c4, c13) from t1; ++------+------+-------------------+ +| c4 | c13 | make_set(c4, c13) | ++------+------+-------------------+ +| 2 | 3.5 | | +| 2 | -3.5 | | ++------+------+-------------------+ +select c4, c13, concat_ws(c4, c13) from t1; ++------+------+--------------------+ +| c4 | c13 | concat_ws(c4, c13) | ++------+------+--------------------+ +| 2 | 3.5 | 3.5 | +| 2 | -3.5 | -3.5 | ++------+------+--------------------+ +select c4, c13, interval(c4, c13) from t1; ++------+------+-------------------+ +| c4 | c13 | interval(c4, c13) | ++------+------+-------------------+ +| 2 | 3.5 | 0 | +| 2 | -3.5 | 1 | ++------+------+-------------------+ + +select c4, c14, make_set(c4, c14) from t1; ++------+------+-------------------+ +| c4 | c14 | make_set(c4, c14) | ++------+------+-------------------+ +| 2 | 4.5 | | +| 2 | 4.5 | | ++------+------+-------------------+ +select c4, c14, concat_ws(c4, c14) from t1; ++------+------+--------------------+ +| c4 | c14 | concat_ws(c4, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 4.5 | +| 2 | 4.5 | 4.5 | ++------+------+--------------------+ +select c4, c14, interval(c4, c14) from t1; ++------+------+-------------------+ +| c4 | c14 | interval(c4, c14) | ++------+------+-------------------+ +| 2 | 4.5 | 0 | +| 2 | 4.5 | 0 | ++------+------+-------------------+ + +select c4, c15, make_set(c4, c15) from t1; ++------+------+-------------------+ +| c4 | c15 | make_set(c4, c15) | ++------+------+-------------------+ +| 2 | 5.5 | | +| 2 | -5.5 | | ++------+------+-------------------+ +select c4, c15, concat_ws(c4, c15) from t1; ++------+------+--------------------+ +| c4 | c15 | concat_ws(c4, c15) | ++------+------+--------------------+ +| 2 | 5.5 | 5.5 | +| 2 | -5.5 | -5.5 | ++------+------+--------------------+ +select c4, c15, interval(c4, c15) from t1; ++------+------+-------------------+ +| c4 | c15 | interval(c4, c15) | ++------+------+-------------------+ +| 2 | 5.5 | 0 | +| 2 | -5.5 | 1 | ++------+------+-------------------+ + +select c4, c16, make_set(c4, c16) from t1; ++------+------+-------------------+ +| c4 | c16 | make_set(c4, c16) | ++------+------+-------------------+ +| 2 | 6.5 | | +| 2 | 6.5 | | ++------+------+-------------------+ +select c4, c16, concat_ws(c4, c16) from t1; ++------+------+--------------------+ +| c4 | c16 | concat_ws(c4, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 6.5 | +| 2 | 6.5 | 6.5 | ++------+------+--------------------+ +select c4, c16, interval(c4, c16) from t1; ++------+------+-------------------+ +| c4 | c16 | interval(c4, c16) | ++------+------+-------------------+ +| 2 | 6.5 | 0 | +| 2 | 6.5 | 0 | ++------+------+-------------------+ + +select c4, c17, make_set(c4, c17) from t1; ++------+------+-------------------+ +| c4 | c17 | make_set(c4, c17) | ++------+------+-------------------+ +| 2 | 8 | | +| 2 | -8 | | ++------+------+-------------------+ +select c4, c17, concat_ws(c4, c17) from t1; ++------+------+--------------------+ +| c4 | c17 | concat_ws(c4, c17) | ++------+------+--------------------+ +| 2 | 8 | 8 | +| 2 | -8 | -8 | ++------+------+--------------------+ +select c4, c17, interval(c4, c17) from t1; ++------+------+-------------------+ +| c4 | c17 | interval(c4, c17) | ++------+------+-------------------+ +| 2 | 8 | 0 | +| 2 | -8 | 1 | ++------+------+-------------------+ + +select c4, c18, make_set(c4, c18) from t1; ++------+------+-------------------+ +| c4 | c18 | make_set(c4, c18) | ++------+------+-------------------+ +| 2 | 9 | | +| 2 | 9 | | ++------+------+-------------------+ +select c4, c18, concat_ws(c4, c18) from t1; ++------+------+--------------------+ +| c4 | c18 | concat_ws(c4, c18) | ++------+------+--------------------+ +| 2 | 9 | 9 | +| 2 | 9 | 9 | ++------+------+--------------------+ +select c4, c18, interval(c4, c18) from t1; ++------+------+-------------------+ +| c4 | c18 | interval(c4, c18) | ++------+------+-------------------+ +| 2 | 9 | 0 | +| 2 | 9 | 0 | ++------+------+-------------------+ + +select c4, c19, make_set(c4, c19) from t1; ++------+---------------------+-------------------+ +| c4 | c19 | make_set(c4, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | | +| 2 | 2019-12-01 12:00:00 | | ++------+---------------------+-------------------+ +select c4, c19, concat_ws(c4, c19) from t1; ++------+---------------------+---------------------+ +| c4 | c19 | concat_ws(c4, c19) | ++------+---------------------+---------------------+ +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c4, c19, interval(c4, c19) from t1; ++------+---------------------+-------------------+ +| c4 | c19 | interval(c4, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 0 | +| 2 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c4, c20, make_set(c4, c20) from t1; ++------+---------------------+-------------------+ +| c4 | c20 | make_set(c4, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | | +| 2 | 2019-12-03 06:00:00 | | ++------+---------------------+-------------------+ +select c4, c20, concat_ws(c4, c20) from t1; ++------+---------------------+---------------------+ +| c4 | c20 | concat_ws(c4, c20) | ++------+---------------------+---------------------+ +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c4, c20, interval(c4, c20) from t1; ++------+---------------------+-------------------+ +| c4 | c20 | interval(c4, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 0 | +| 2 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c4, c21, make_set(c4, c21) from t1; ++------+------+-------------------+ +| c4 | c21 | make_set(c4, c21) | ++------+------+-------------------+ +| 2 | 9.5 | | +| 2 | -9.5 | | ++------+------+-------------------+ +select c4, c21, concat_ws(c4, c21) from t1; ++------+------+--------------------+ +| c4 | c21 | concat_ws(c4, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 9.5 | +| 2 | -9.5 | -9.5 | ++------+------+--------------------+ +select c4, c21, interval(c4, c21) from t1; ++------+------+-------------------+ +| c4 | c21 | interval(c4, c21) | ++------+------+-------------------+ +| 2 | 9.5 | 0 | +| 2 | -9.5 | 1 | ++------+------+-------------------+ + +select c4, c22, make_set(c4, c22) from t1; ++------+------+-------------------+ +| c4 | c22 | make_set(c4, c22) | ++------+------+-------------------+ +| 2 | 10.5 | | +| 2 | 10.5 | | ++------+------+-------------------+ +select c4, c22, concat_ws(c4, c22) from t1; ++------+------+--------------------+ +| c4 | c22 | concat_ws(c4, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 10.5 | +| 2 | 10.5 | 10.5 | ++------+------+--------------------+ +select c4, c22, interval(c4, c22) from t1; ++------+------+-------------------+ +| c4 | c22 | interval(c4, c22) | ++------+------+-------------------+ +| 2 | 10.5 | 0 | +| 2 | 10.5 | 0 | ++------+------+-------------------+ + +select c5, quote(c5) from t1; ++------+-----------+ +| c5 | quote(c5) | ++------+-----------+ +| 1 | '1' | +| -1 | '-1' | ++------+-----------+ +select c5, sys_op_opnsize(c5) from t1; ++------+--------------------+ +| c5 | sys_op_opnsize(c5) | ++------+--------------------+ +| 1 | 20 | +| -1 | 20 | ++------+--------------------+ +select c5, c1, make_set(c5, c1) from t1; ++------+------+------------------+ +| c5 | c1 | make_set(c5, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c5, c1, concat_ws(c5, c1) from t1; ++------+------+-------------------+ +| c5 | c1 | concat_ws(c5, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c5, c1, interval(c5, c1) from t1; ++------+------+------------------+ +| c5 | c1 | interval(c5, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c5, c2, make_set(c5, c2) from t1; ++------+------+------------------+ +| c5 | c2 | make_set(c5, c2) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c5, c2, concat_ws(c5, c2) from t1; ++------+------+-------------------+ +| c5 | c2 | concat_ws(c5, c2) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c5, c2, interval(c5, c2) from t1; ++------+------+------------------+ +| c5 | c2 | interval(c5, c2) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c5, c3, make_set(c5, c3) from t1; ++------+------+------------------+ +| c5 | c3 | make_set(c5, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c5, c3, concat_ws(c5, c3) from t1; ++------+------+-------------------+ +| c5 | c3 | concat_ws(c5, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c5, c3, interval(c5, c3) from t1; ++------+------+------------------+ +| c5 | c3 | interval(c5, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c5, c4, make_set(c5, c4) from t1; ++------+------+------------------+ +| c5 | c4 | make_set(c5, c4) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c5, c4, concat_ws(c5, c4) from t1; ++------+------+-------------------+ +| c5 | c4 | concat_ws(c5, c4) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c5, c4, interval(c5, c4) from t1; ++------+------+------------------+ +| c5 | c4 | interval(c5, c4) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c5, c5, make_set(c5, c5) from t1; ++------+------+------------------+ +| c5 | c5 | make_set(c5, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c5, c5, concat_ws(c5, c5) from t1; ++------+------+-------------------+ +| c5 | c5 | concat_ws(c5, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c5, c5, interval(c5, c5) from t1; ++------+------+------------------+ +| c5 | c5 | interval(c5, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c5, c6, make_set(c5, c6) from t1; ++------+------+------------------+ +| c5 | c6 | make_set(c5, c6) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c5, c6, concat_ws(c5, c6) from t1; ++------+------+-------------------+ +| c5 | c6 | concat_ws(c5, c6) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c5, c6, interval(c5, c6) from t1; ++------+------+------------------+ +| c5 | c6 | interval(c5, c6) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c5, c7, make_set(c5, c7) from t1; ++------+------+------------------+ +| c5 | c7 | make_set(c5, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c5, c7, concat_ws(c5, c7) from t1; ++------+------+-------------------+ +| c5 | c7 | concat_ws(c5, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c5, c7, interval(c5, c7) from t1; ++------+------+------------------+ +| c5 | c7 | interval(c5, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c5, c8, make_set(c5, c8) from t1; ++------+------+------------------+ +| c5 | c8 | make_set(c5, c8) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c5, c8, concat_ws(c5, c8) from t1; ++------+------+-------------------+ +| c5 | c8 | concat_ws(c5, c8) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c5, c8, interval(c5, c8) from t1; ++------+------+------------------+ +| c5 | c8 | interval(c5, c8) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c5, c9, make_set(c5, c9) from t1; ++------+------+------------------+ +| c5 | c9 | make_set(c5, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c5, c9, concat_ws(c5, c9) from t1; ++------+------+-------------------+ +| c5 | c9 | concat_ws(c5, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c5, c9, interval(c5, c9) from t1; ++------+------+------------------+ +| c5 | c9 | interval(c5, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c5, c10, make_set(c5, c10) from t1; ++------+------+-------------------+ +| c5 | c10 | make_set(c5, c10) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c5, c10, concat_ws(c5, c10) from t1; ++------+------+--------------------+ +| c5 | c10 | concat_ws(c5, c10) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c5, c10, interval(c5, c10) from t1; ++------+------+-------------------+ +| c5 | c10 | interval(c5, c10) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c5, c11, make_set(c5, c11) from t1; ++------+------+-------------------+ +| c5 | c11 | make_set(c5, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c5, c11, concat_ws(c5, c11) from t1; ++------+------+--------------------+ +| c5 | c11 | concat_ws(c5, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c5, c11, interval(c5, c11) from t1; ++------+------+-------------------+ +| c5 | c11 | interval(c5, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c5, c12, make_set(c5, c12) from t1; ++------+------+-------------------+ +| c5 | c12 | make_set(c5, c12) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c5, c12, concat_ws(c5, c12) from t1; ++------+------+--------------------+ +| c5 | c12 | concat_ws(c5, c12) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c5, c12, interval(c5, c12) from t1; ++------+------+-------------------+ +| c5 | c12 | interval(c5, c12) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c5, c13, make_set(c5, c13) from t1; ++------+------+-------------------+ +| c5 | c13 | make_set(c5, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+-------------------+ +select c5, c13, concat_ws(c5, c13) from t1; ++------+------+--------------------+ +| c5 | c13 | concat_ws(c5, c13) | ++------+------+--------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+--------------------+ +select c5, c13, interval(c5, c13) from t1; ++------+------+-------------------+ +| c5 | c13 | interval(c5, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 0 | +| -1 | -3.5 | 1 | ++------+------+-------------------+ + +select c5, c14, make_set(c5, c14) from t1; ++------+------+-------------------+ +| c5 | c14 | make_set(c5, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+-------------------+ +select c5, c14, concat_ws(c5, c14) from t1; ++------+------+--------------------+ +| c5 | c14 | concat_ws(c5, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+--------------------+ +select c5, c14, interval(c5, c14) from t1; ++------+------+-------------------+ +| c5 | c14 | interval(c5, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 0 | +| -1 | 4.5 | 0 | ++------+------+-------------------+ + +select c5, c15, make_set(c5, c15) from t1; ++------+------+-------------------+ +| c5 | c15 | make_set(c5, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+-------------------+ +select c5, c15, concat_ws(c5, c15) from t1; ++------+------+--------------------+ +| c5 | c15 | concat_ws(c5, c15) | ++------+------+--------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+--------------------+ +select c5, c15, interval(c5, c15) from t1; ++------+------+-------------------+ +| c5 | c15 | interval(c5, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 0 | +| -1 | -5.5 | 1 | ++------+------+-------------------+ + +select c5, c16, make_set(c5, c16) from t1; ++------+------+-------------------+ +| c5 | c16 | make_set(c5, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+-------------------+ +select c5, c16, concat_ws(c5, c16) from t1; ++------+------+--------------------+ +| c5 | c16 | concat_ws(c5, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+--------------------+ +select c5, c16, interval(c5, c16) from t1; ++------+------+-------------------+ +| c5 | c16 | interval(c5, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 0 | +| -1 | 6.5 | 0 | ++------+------+-------------------+ + +select c5, c17, make_set(c5, c17) from t1; ++------+------+-------------------+ +| c5 | c17 | make_set(c5, c17) | ++------+------+-------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+-------------------+ +select c5, c17, concat_ws(c5, c17) from t1; ++------+------+--------------------+ +| c5 | c17 | concat_ws(c5, c17) | ++------+------+--------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+--------------------+ +select c5, c17, interval(c5, c17) from t1; ++------+------+-------------------+ +| c5 | c17 | interval(c5, c17) | ++------+------+-------------------+ +| 1 | 8 | 0 | +| -1 | -8 | 1 | ++------+------+-------------------+ + +select c5, c18, make_set(c5, c18) from t1; ++------+------+-------------------+ +| c5 | c18 | make_set(c5, c18) | ++------+------+-------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+-------------------+ +select c5, c18, concat_ws(c5, c18) from t1; ++------+------+--------------------+ +| c5 | c18 | concat_ws(c5, c18) | ++------+------+--------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+--------------------+ +select c5, c18, interval(c5, c18) from t1; ++------+------+-------------------+ +| c5 | c18 | interval(c5, c18) | ++------+------+-------------------+ +| 1 | 9 | 0 | +| -1 | 9 | 0 | ++------+------+-------------------+ + +select c5, c19, make_set(c5, c19) from t1; ++------+---------------------+---------------------+ +| c5 | c19 | make_set(c5, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c5, c19, concat_ws(c5, c19) from t1; ++------+---------------------+---------------------+ +| c5 | c19 | concat_ws(c5, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c5, c19, interval(c5, c19) from t1; ++------+---------------------+-------------------+ +| c5 | c19 | interval(c5, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 0 | +| -1 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c5, c20, make_set(c5, c20) from t1; ++------+---------------------+---------------------+ +| c5 | c20 | make_set(c5, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c5, c20, concat_ws(c5, c20) from t1; ++------+---------------------+---------------------+ +| c5 | c20 | concat_ws(c5, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c5, c20, interval(c5, c20) from t1; ++------+---------------------+-------------------+ +| c5 | c20 | interval(c5, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 0 | +| -1 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c5, c21, make_set(c5, c21) from t1; ++------+------+-------------------+ +| c5 | c21 | make_set(c5, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+-------------------+ +select c5, c21, concat_ws(c5, c21) from t1; ++------+------+--------------------+ +| c5 | c21 | concat_ws(c5, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+--------------------+ +select c5, c21, interval(c5, c21) from t1; ++------+------+-------------------+ +| c5 | c21 | interval(c5, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 0 | +| -1 | -9.5 | 1 | ++------+------+-------------------+ + +select c5, c22, make_set(c5, c22) from t1; ++------+------+-------------------+ +| c5 | c22 | make_set(c5, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+-------------------+ +select c5, c22, concat_ws(c5, c22) from t1; ++------+------+--------------------+ +| c5 | c22 | concat_ws(c5, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+--------------------+ +select c5, c22, interval(c5, c22) from t1; ++------+------+-------------------+ +| c5 | c22 | interval(c5, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 0 | +| -1 | 10.5 | 0 | ++------+------+-------------------+ + +select c6, quote(c6) from t1; ++------+-----------+ +| c6 | quote(c6) | ++------+-----------+ +| 2 | '2' | +| 2 | '2' | ++------+-----------+ +select c6, sys_op_opnsize(c6) from t1; ++------+--------------------+ +| c6 | sys_op_opnsize(c6) | ++------+--------------------+ +| 2 | 20 | +| 2 | 20 | ++------+--------------------+ +select c6, c1, make_set(c6, c1) from t1; ++------+------+------------------+ +| c6 | c1 | make_set(c6, c1) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c6, c1, concat_ws(c6, c1) from t1; ++------+------+-------------------+ +| c6 | c1 | concat_ws(c6, c1) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c6, c1, interval(c6, c1) from t1; ++------+------+------------------+ +| c6 | c1 | interval(c6, c1) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c6, c2, make_set(c6, c2) from t1; ++------+------+------------------+ +| c6 | c2 | make_set(c6, c2) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c6, c2, concat_ws(c6, c2) from t1; ++------+------+-------------------+ +| c6 | c2 | concat_ws(c6, c2) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c6, c2, interval(c6, c2) from t1; ++------+------+------------------+ +| c6 | c2 | interval(c6, c2) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c6, c3, make_set(c6, c3) from t1; ++------+------+------------------+ +| c6 | c3 | make_set(c6, c3) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c6, c3, concat_ws(c6, c3) from t1; ++------+------+-------------------+ +| c6 | c3 | concat_ws(c6, c3) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c6, c3, interval(c6, c3) from t1; ++------+------+------------------+ +| c6 | c3 | interval(c6, c3) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c6, c4, make_set(c6, c4) from t1; ++------+------+------------------+ +| c6 | c4 | make_set(c6, c4) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c6, c4, concat_ws(c6, c4) from t1; ++------+------+-------------------+ +| c6 | c4 | concat_ws(c6, c4) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c6, c4, interval(c6, c4) from t1; ++------+------+------------------+ +| c6 | c4 | interval(c6, c4) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c6, c5, make_set(c6, c5) from t1; ++------+------+------------------+ +| c6 | c5 | make_set(c6, c5) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c6, c5, concat_ws(c6, c5) from t1; ++------+------+-------------------+ +| c6 | c5 | concat_ws(c6, c5) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c6, c5, interval(c6, c5) from t1; ++------+------+------------------+ +| c6 | c5 | interval(c6, c5) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c6, c6, make_set(c6, c6) from t1; ++------+------+------------------+ +| c6 | c6 | make_set(c6, c6) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c6, c6, concat_ws(c6, c6) from t1; ++------+------+-------------------+ +| c6 | c6 | concat_ws(c6, c6) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c6, c6, interval(c6, c6) from t1; ++------+------+------------------+ +| c6 | c6 | interval(c6, c6) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c6, c7, make_set(c6, c7) from t1; ++------+------+------------------+ +| c6 | c7 | make_set(c6, c7) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c6, c7, concat_ws(c6, c7) from t1; ++------+------+-------------------+ +| c6 | c7 | concat_ws(c6, c7) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c6, c7, interval(c6, c7) from t1; ++------+------+------------------+ +| c6 | c7 | interval(c6, c7) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c6, c8, make_set(c6, c8) from t1; ++------+------+------------------+ +| c6 | c8 | make_set(c6, c8) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c6, c8, concat_ws(c6, c8) from t1; ++------+------+-------------------+ +| c6 | c8 | concat_ws(c6, c8) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c6, c8, interval(c6, c8) from t1; ++------+------+------------------+ +| c6 | c8 | interval(c6, c8) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c6, c9, make_set(c6, c9) from t1; ++------+------+------------------+ +| c6 | c9 | make_set(c6, c9) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c6, c9, concat_ws(c6, c9) from t1; ++------+------+-------------------+ +| c6 | c9 | concat_ws(c6, c9) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c6, c9, interval(c6, c9) from t1; ++------+------+------------------+ +| c6 | c9 | interval(c6, c9) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c6, c10, make_set(c6, c10) from t1; ++------+------+-------------------+ +| c6 | c10 | make_set(c6, c10) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c6, c10, concat_ws(c6, c10) from t1; ++------+------+--------------------+ +| c6 | c10 | concat_ws(c6, c10) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c6, c10, interval(c6, c10) from t1; ++------+------+-------------------+ +| c6 | c10 | interval(c6, c10) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c6, c11, make_set(c6, c11) from t1; ++------+------+-------------------+ +| c6 | c11 | make_set(c6, c11) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c6, c11, concat_ws(c6, c11) from t1; ++------+------+--------------------+ +| c6 | c11 | concat_ws(c6, c11) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c6, c11, interval(c6, c11) from t1; ++------+------+-------------------+ +| c6 | c11 | interval(c6, c11) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c6, c12, make_set(c6, c12) from t1; ++------+------+-------------------+ +| c6 | c12 | make_set(c6, c12) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c6, c12, concat_ws(c6, c12) from t1; ++------+------+--------------------+ +| c6 | c12 | concat_ws(c6, c12) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c6, c12, interval(c6, c12) from t1; ++------+------+-------------------+ +| c6 | c12 | interval(c6, c12) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c6, c13, make_set(c6, c13) from t1; ++------+------+-------------------+ +| c6 | c13 | make_set(c6, c13) | ++------+------+-------------------+ +| 2 | 3.5 | | +| 2 | -3.5 | | ++------+------+-------------------+ +select c6, c13, concat_ws(c6, c13) from t1; ++------+------+--------------------+ +| c6 | c13 | concat_ws(c6, c13) | ++------+------+--------------------+ +| 2 | 3.5 | 3.5 | +| 2 | -3.5 | -3.5 | ++------+------+--------------------+ +select c6, c13, interval(c6, c13) from t1; ++------+------+-------------------+ +| c6 | c13 | interval(c6, c13) | ++------+------+-------------------+ +| 2 | 3.5 | 0 | +| 2 | -3.5 | 1 | ++------+------+-------------------+ + +select c6, c14, make_set(c6, c14) from t1; ++------+------+-------------------+ +| c6 | c14 | make_set(c6, c14) | ++------+------+-------------------+ +| 2 | 4.5 | | +| 2 | 4.5 | | ++------+------+-------------------+ +select c6, c14, concat_ws(c6, c14) from t1; ++------+------+--------------------+ +| c6 | c14 | concat_ws(c6, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 4.5 | +| 2 | 4.5 | 4.5 | ++------+------+--------------------+ +select c6, c14, interval(c6, c14) from t1; ++------+------+-------------------+ +| c6 | c14 | interval(c6, c14) | ++------+------+-------------------+ +| 2 | 4.5 | 0 | +| 2 | 4.5 | 0 | ++------+------+-------------------+ + +select c6, c15, make_set(c6, c15) from t1; ++------+------+-------------------+ +| c6 | c15 | make_set(c6, c15) | ++------+------+-------------------+ +| 2 | 5.5 | | +| 2 | -5.5 | | ++------+------+-------------------+ +select c6, c15, concat_ws(c6, c15) from t1; ++------+------+--------------------+ +| c6 | c15 | concat_ws(c6, c15) | ++------+------+--------------------+ +| 2 | 5.5 | 5.5 | +| 2 | -5.5 | -5.5 | ++------+------+--------------------+ +select c6, c15, interval(c6, c15) from t1; ++------+------+-------------------+ +| c6 | c15 | interval(c6, c15) | ++------+------+-------------------+ +| 2 | 5.5 | 0 | +| 2 | -5.5 | 1 | ++------+------+-------------------+ + +select c6, c16, make_set(c6, c16) from t1; ++------+------+-------------------+ +| c6 | c16 | make_set(c6, c16) | ++------+------+-------------------+ +| 2 | 6.5 | | +| 2 | 6.5 | | ++------+------+-------------------+ +select c6, c16, concat_ws(c6, c16) from t1; ++------+------+--------------------+ +| c6 | c16 | concat_ws(c6, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 6.5 | +| 2 | 6.5 | 6.5 | ++------+------+--------------------+ +select c6, c16, interval(c6, c16) from t1; ++------+------+-------------------+ +| c6 | c16 | interval(c6, c16) | ++------+------+-------------------+ +| 2 | 6.5 | 0 | +| 2 | 6.5 | 0 | ++------+------+-------------------+ + +select c6, c17, make_set(c6, c17) from t1; ++------+------+-------------------+ +| c6 | c17 | make_set(c6, c17) | ++------+------+-------------------+ +| 2 | 8 | | +| 2 | -8 | | ++------+------+-------------------+ +select c6, c17, concat_ws(c6, c17) from t1; ++------+------+--------------------+ +| c6 | c17 | concat_ws(c6, c17) | ++------+------+--------------------+ +| 2 | 8 | 8 | +| 2 | -8 | -8 | ++------+------+--------------------+ +select c6, c17, interval(c6, c17) from t1; ++------+------+-------------------+ +| c6 | c17 | interval(c6, c17) | ++------+------+-------------------+ +| 2 | 8 | 0 | +| 2 | -8 | 1 | ++------+------+-------------------+ + +select c6, c18, make_set(c6, c18) from t1; ++------+------+-------------------+ +| c6 | c18 | make_set(c6, c18) | ++------+------+-------------------+ +| 2 | 9 | | +| 2 | 9 | | ++------+------+-------------------+ +select c6, c18, concat_ws(c6, c18) from t1; ++------+------+--------------------+ +| c6 | c18 | concat_ws(c6, c18) | ++------+------+--------------------+ +| 2 | 9 | 9 | +| 2 | 9 | 9 | ++------+------+--------------------+ +select c6, c18, interval(c6, c18) from t1; ++------+------+-------------------+ +| c6 | c18 | interval(c6, c18) | ++------+------+-------------------+ +| 2 | 9 | 0 | +| 2 | 9 | 0 | ++------+------+-------------------+ + +select c6, c19, make_set(c6, c19) from t1; ++------+---------------------+-------------------+ +| c6 | c19 | make_set(c6, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | | +| 2 | 2019-12-01 12:00:00 | | ++------+---------------------+-------------------+ +select c6, c19, concat_ws(c6, c19) from t1; ++------+---------------------+---------------------+ +| c6 | c19 | concat_ws(c6, c19) | ++------+---------------------+---------------------+ +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c6, c19, interval(c6, c19) from t1; ++------+---------------------+-------------------+ +| c6 | c19 | interval(c6, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 0 | +| 2 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c6, c20, make_set(c6, c20) from t1; ++------+---------------------+-------------------+ +| c6 | c20 | make_set(c6, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | | +| 2 | 2019-12-03 06:00:00 | | ++------+---------------------+-------------------+ +select c6, c20, concat_ws(c6, c20) from t1; ++------+---------------------+---------------------+ +| c6 | c20 | concat_ws(c6, c20) | ++------+---------------------+---------------------+ +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c6, c20, interval(c6, c20) from t1; ++------+---------------------+-------------------+ +| c6 | c20 | interval(c6, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 0 | +| 2 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c6, c21, make_set(c6, c21) from t1; ++------+------+-------------------+ +| c6 | c21 | make_set(c6, c21) | ++------+------+-------------------+ +| 2 | 9.5 | | +| 2 | -9.5 | | ++------+------+-------------------+ +select c6, c21, concat_ws(c6, c21) from t1; ++------+------+--------------------+ +| c6 | c21 | concat_ws(c6, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 9.5 | +| 2 | -9.5 | -9.5 | ++------+------+--------------------+ +select c6, c21, interval(c6, c21) from t1; ++------+------+-------------------+ +| c6 | c21 | interval(c6, c21) | ++------+------+-------------------+ +| 2 | 9.5 | 0 | +| 2 | -9.5 | 1 | ++------+------+-------------------+ + +select c6, c22, make_set(c6, c22) from t1; ++------+------+-------------------+ +| c6 | c22 | make_set(c6, c22) | ++------+------+-------------------+ +| 2 | 10.5 | | +| 2 | 10.5 | | ++------+------+-------------------+ +select c6, c22, concat_ws(c6, c22) from t1; ++------+------+--------------------+ +| c6 | c22 | concat_ws(c6, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 10.5 | +| 2 | 10.5 | 10.5 | ++------+------+--------------------+ +select c6, c22, interval(c6, c22) from t1; ++------+------+-------------------+ +| c6 | c22 | interval(c6, c22) | ++------+------+-------------------+ +| 2 | 10.5 | 0 | +| 2 | 10.5 | 0 | ++------+------+-------------------+ + +select c7, quote(c7) from t1; ++------+-----------+ +| c7 | quote(c7) | ++------+-----------+ +| 1 | '1' | +| -1 | '-1' | ++------+-----------+ +select c7, sys_op_opnsize(c7) from t1; ++------+--------------------+ +| c7 | sys_op_opnsize(c7) | ++------+--------------------+ +| 1 | 20 | +| -1 | 20 | ++------+--------------------+ +select c7, c1, make_set(c7, c1) from t1; ++------+------+------------------+ +| c7 | c1 | make_set(c7, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c7, c1, concat_ws(c7, c1) from t1; ++------+------+-------------------+ +| c7 | c1 | concat_ws(c7, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c7, c1, interval(c7, c1) from t1; ++------+------+------------------+ +| c7 | c1 | interval(c7, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c7, c2, make_set(c7, c2) from t1; ++------+------+------------------+ +| c7 | c2 | make_set(c7, c2) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c7, c2, concat_ws(c7, c2) from t1; ++------+------+-------------------+ +| c7 | c2 | concat_ws(c7, c2) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c7, c2, interval(c7, c2) from t1; ++------+------+------------------+ +| c7 | c2 | interval(c7, c2) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c7, c3, make_set(c7, c3) from t1; ++------+------+------------------+ +| c7 | c3 | make_set(c7, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c7, c3, concat_ws(c7, c3) from t1; ++------+------+-------------------+ +| c7 | c3 | concat_ws(c7, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c7, c3, interval(c7, c3) from t1; ++------+------+------------------+ +| c7 | c3 | interval(c7, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c7, c4, make_set(c7, c4) from t1; ++------+------+------------------+ +| c7 | c4 | make_set(c7, c4) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c7, c4, concat_ws(c7, c4) from t1; ++------+------+-------------------+ +| c7 | c4 | concat_ws(c7, c4) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c7, c4, interval(c7, c4) from t1; ++------+------+------------------+ +| c7 | c4 | interval(c7, c4) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c7, c5, make_set(c7, c5) from t1; ++------+------+------------------+ +| c7 | c5 | make_set(c7, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c7, c5, concat_ws(c7, c5) from t1; ++------+------+-------------------+ +| c7 | c5 | concat_ws(c7, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c7, c5, interval(c7, c5) from t1; ++------+------+------------------+ +| c7 | c5 | interval(c7, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c7, c6, make_set(c7, c6) from t1; ++------+------+------------------+ +| c7 | c6 | make_set(c7, c6) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c7, c6, concat_ws(c7, c6) from t1; ++------+------+-------------------+ +| c7 | c6 | concat_ws(c7, c6) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c7, c6, interval(c7, c6) from t1; ++------+------+------------------+ +| c7 | c6 | interval(c7, c6) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c7, c7, make_set(c7, c7) from t1; ++------+------+------------------+ +| c7 | c7 | make_set(c7, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c7, c7, concat_ws(c7, c7) from t1; ++------+------+-------------------+ +| c7 | c7 | concat_ws(c7, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c7, c7, interval(c7, c7) from t1; ++------+------+------------------+ +| c7 | c7 | interval(c7, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c7, c8, make_set(c7, c8) from t1; ++------+------+------------------+ +| c7 | c8 | make_set(c7, c8) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c7, c8, concat_ws(c7, c8) from t1; ++------+------+-------------------+ +| c7 | c8 | concat_ws(c7, c8) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c7, c8, interval(c7, c8) from t1; ++------+------+------------------+ +| c7 | c8 | interval(c7, c8) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c7, c9, make_set(c7, c9) from t1; ++------+------+------------------+ +| c7 | c9 | make_set(c7, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c7, c9, concat_ws(c7, c9) from t1; ++------+------+-------------------+ +| c7 | c9 | concat_ws(c7, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c7, c9, interval(c7, c9) from t1; ++------+------+------------------+ +| c7 | c9 | interval(c7, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c7, c10, make_set(c7, c10) from t1; ++------+------+-------------------+ +| c7 | c10 | make_set(c7, c10) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c7, c10, concat_ws(c7, c10) from t1; ++------+------+--------------------+ +| c7 | c10 | concat_ws(c7, c10) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c7, c10, interval(c7, c10) from t1; ++------+------+-------------------+ +| c7 | c10 | interval(c7, c10) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c7, c11, make_set(c7, c11) from t1; ++------+------+-------------------+ +| c7 | c11 | make_set(c7, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c7, c11, concat_ws(c7, c11) from t1; ++------+------+--------------------+ +| c7 | c11 | concat_ws(c7, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c7, c11, interval(c7, c11) from t1; ++------+------+-------------------+ +| c7 | c11 | interval(c7, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c7, c12, make_set(c7, c12) from t1; ++------+------+-------------------+ +| c7 | c12 | make_set(c7, c12) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c7, c12, concat_ws(c7, c12) from t1; ++------+------+--------------------+ +| c7 | c12 | concat_ws(c7, c12) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c7, c12, interval(c7, c12) from t1; ++------+------+-------------------+ +| c7 | c12 | interval(c7, c12) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c7, c13, make_set(c7, c13) from t1; ++------+------+-------------------+ +| c7 | c13 | make_set(c7, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+-------------------+ +select c7, c13, concat_ws(c7, c13) from t1; ++------+------+--------------------+ +| c7 | c13 | concat_ws(c7, c13) | ++------+------+--------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+--------------------+ +select c7, c13, interval(c7, c13) from t1; ++------+------+-------------------+ +| c7 | c13 | interval(c7, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 0 | +| -1 | -3.5 | 1 | ++------+------+-------------------+ + +select c7, c14, make_set(c7, c14) from t1; ++------+------+-------------------+ +| c7 | c14 | make_set(c7, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+-------------------+ +select c7, c14, concat_ws(c7, c14) from t1; ++------+------+--------------------+ +| c7 | c14 | concat_ws(c7, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+--------------------+ +select c7, c14, interval(c7, c14) from t1; ++------+------+-------------------+ +| c7 | c14 | interval(c7, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 0 | +| -1 | 4.5 | 0 | ++------+------+-------------------+ + +select c7, c15, make_set(c7, c15) from t1; ++------+------+-------------------+ +| c7 | c15 | make_set(c7, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+-------------------+ +select c7, c15, concat_ws(c7, c15) from t1; ++------+------+--------------------+ +| c7 | c15 | concat_ws(c7, c15) | ++------+------+--------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+--------------------+ +select c7, c15, interval(c7, c15) from t1; ++------+------+-------------------+ +| c7 | c15 | interval(c7, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 0 | +| -1 | -5.5 | 1 | ++------+------+-------------------+ + +select c7, c16, make_set(c7, c16) from t1; ++------+------+-------------------+ +| c7 | c16 | make_set(c7, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+-------------------+ +select c7, c16, concat_ws(c7, c16) from t1; ++------+------+--------------------+ +| c7 | c16 | concat_ws(c7, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+--------------------+ +select c7, c16, interval(c7, c16) from t1; ++------+------+-------------------+ +| c7 | c16 | interval(c7, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 0 | +| -1 | 6.5 | 0 | ++------+------+-------------------+ + +select c7, c17, make_set(c7, c17) from t1; ++------+------+-------------------+ +| c7 | c17 | make_set(c7, c17) | ++------+------+-------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+-------------------+ +select c7, c17, concat_ws(c7, c17) from t1; ++------+------+--------------------+ +| c7 | c17 | concat_ws(c7, c17) | ++------+------+--------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+--------------------+ +select c7, c17, interval(c7, c17) from t1; ++------+------+-------------------+ +| c7 | c17 | interval(c7, c17) | ++------+------+-------------------+ +| 1 | 8 | 0 | +| -1 | -8 | 1 | ++------+------+-------------------+ + +select c7, c18, make_set(c7, c18) from t1; ++------+------+-------------------+ +| c7 | c18 | make_set(c7, c18) | ++------+------+-------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+-------------------+ +select c7, c18, concat_ws(c7, c18) from t1; ++------+------+--------------------+ +| c7 | c18 | concat_ws(c7, c18) | ++------+------+--------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+--------------------+ +select c7, c18, interval(c7, c18) from t1; ++------+------+-------------------+ +| c7 | c18 | interval(c7, c18) | ++------+------+-------------------+ +| 1 | 9 | 0 | +| -1 | 9 | 0 | ++------+------+-------------------+ + +select c7, c19, make_set(c7, c19) from t1; ++------+---------------------+---------------------+ +| c7 | c19 | make_set(c7, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c7, c19, concat_ws(c7, c19) from t1; ++------+---------------------+---------------------+ +| c7 | c19 | concat_ws(c7, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c7, c19, interval(c7, c19) from t1; ++------+---------------------+-------------------+ +| c7 | c19 | interval(c7, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 0 | +| -1 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c7, c20, make_set(c7, c20) from t1; ++------+---------------------+---------------------+ +| c7 | c20 | make_set(c7, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c7, c20, concat_ws(c7, c20) from t1; ++------+---------------------+---------------------+ +| c7 | c20 | concat_ws(c7, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c7, c20, interval(c7, c20) from t1; ++------+---------------------+-------------------+ +| c7 | c20 | interval(c7, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 0 | +| -1 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c7, c21, make_set(c7, c21) from t1; ++------+------+-------------------+ +| c7 | c21 | make_set(c7, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+-------------------+ +select c7, c21, concat_ws(c7, c21) from t1; ++------+------+--------------------+ +| c7 | c21 | concat_ws(c7, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+--------------------+ +select c7, c21, interval(c7, c21) from t1; ++------+------+-------------------+ +| c7 | c21 | interval(c7, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 0 | +| -1 | -9.5 | 1 | ++------+------+-------------------+ + +select c7, c22, make_set(c7, c22) from t1; ++------+------+-------------------+ +| c7 | c22 | make_set(c7, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+-------------------+ +select c7, c22, concat_ws(c7, c22) from t1; ++------+------+--------------------+ +| c7 | c22 | concat_ws(c7, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+--------------------+ +select c7, c22, interval(c7, c22) from t1; ++------+------+-------------------+ +| c7 | c22 | interval(c7, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 0 | +| -1 | 10.5 | 0 | ++------+------+-------------------+ + +select c8, quote(c8) from t1; ++------+-----------+ +| c8 | quote(c8) | ++------+-----------+ +| 2 | '2' | +| 2 | '2' | ++------+-----------+ +select c8, sys_op_opnsize(c8) from t1; ++------+--------------------+ +| c8 | sys_op_opnsize(c8) | ++------+--------------------+ +| 2 | 20 | +| 2 | 20 | ++------+--------------------+ +select c8, c1, make_set(c8, c1) from t1; ++------+------+------------------+ +| c8 | c1 | make_set(c8, c1) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c8, c1, concat_ws(c8, c1) from t1; ++------+------+-------------------+ +| c8 | c1 | concat_ws(c8, c1) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c8, c1, interval(c8, c1) from t1; ++------+------+------------------+ +| c8 | c1 | interval(c8, c1) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c8, c2, make_set(c8, c2) from t1; ++------+------+------------------+ +| c8 | c2 | make_set(c8, c2) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c8, c2, concat_ws(c8, c2) from t1; ++------+------+-------------------+ +| c8 | c2 | concat_ws(c8, c2) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c8, c2, interval(c8, c2) from t1; ++------+------+------------------+ +| c8 | c2 | interval(c8, c2) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c8, c3, make_set(c8, c3) from t1; ++------+------+------------------+ +| c8 | c3 | make_set(c8, c3) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c8, c3, concat_ws(c8, c3) from t1; ++------+------+-------------------+ +| c8 | c3 | concat_ws(c8, c3) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c8, c3, interval(c8, c3) from t1; ++------+------+------------------+ +| c8 | c3 | interval(c8, c3) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c8, c4, make_set(c8, c4) from t1; ++------+------+------------------+ +| c8 | c4 | make_set(c8, c4) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c8, c4, concat_ws(c8, c4) from t1; ++------+------+-------------------+ +| c8 | c4 | concat_ws(c8, c4) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c8, c4, interval(c8, c4) from t1; ++------+------+------------------+ +| c8 | c4 | interval(c8, c4) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c8, c5, make_set(c8, c5) from t1; ++------+------+------------------+ +| c8 | c5 | make_set(c8, c5) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c8, c5, concat_ws(c8, c5) from t1; ++------+------+-------------------+ +| c8 | c5 | concat_ws(c8, c5) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c8, c5, interval(c8, c5) from t1; ++------+------+------------------+ +| c8 | c5 | interval(c8, c5) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c8, c6, make_set(c8, c6) from t1; ++------+------+------------------+ +| c8 | c6 | make_set(c8, c6) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c8, c6, concat_ws(c8, c6) from t1; ++------+------+-------------------+ +| c8 | c6 | concat_ws(c8, c6) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c8, c6, interval(c8, c6) from t1; ++------+------+------------------+ +| c8 | c6 | interval(c8, c6) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c8, c7, make_set(c8, c7) from t1; ++------+------+------------------+ +| c8 | c7 | make_set(c8, c7) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c8, c7, concat_ws(c8, c7) from t1; ++------+------+-------------------+ +| c8 | c7 | concat_ws(c8, c7) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c8, c7, interval(c8, c7) from t1; ++------+------+------------------+ +| c8 | c7 | interval(c8, c7) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c8, c8, make_set(c8, c8) from t1; ++------+------+------------------+ +| c8 | c8 | make_set(c8, c8) | ++------+------+------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+------------------+ +select c8, c8, concat_ws(c8, c8) from t1; ++------+------+-------------------+ +| c8 | c8 | concat_ws(c8, c8) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+-------------------+ +select c8, c8, interval(c8, c8) from t1; ++------+------+------------------+ +| c8 | c8 | interval(c8, c8) | ++------+------+------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+------------------+ + +select c8, c9, make_set(c8, c9) from t1; ++------+------+------------------+ +| c8 | c9 | make_set(c8, c9) | ++------+------+------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+------------------+ +select c8, c9, concat_ws(c8, c9) from t1; ++------+------+-------------------+ +| c8 | c9 | concat_ws(c8, c9) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+-------------------+ +select c8, c9, interval(c8, c9) from t1; ++------+------+------------------+ +| c8 | c9 | interval(c8, c9) | ++------+------+------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+------------------+ + +select c8, c10, make_set(c8, c10) from t1; ++------+------+-------------------+ +| c8 | c10 | make_set(c8, c10) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c8, c10, concat_ws(c8, c10) from t1; ++------+------+--------------------+ +| c8 | c10 | concat_ws(c8, c10) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c8, c10, interval(c8, c10) from t1; ++------+------+-------------------+ +| c8 | c10 | interval(c8, c10) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c8, c11, make_set(c8, c11) from t1; ++------+------+-------------------+ +| c8 | c11 | make_set(c8, c11) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c8, c11, concat_ws(c8, c11) from t1; ++------+------+--------------------+ +| c8 | c11 | concat_ws(c8, c11) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c8, c11, interval(c8, c11) from t1; ++------+------+-------------------+ +| c8 | c11 | interval(c8, c11) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c8, c12, make_set(c8, c12) from t1; ++------+------+-------------------+ +| c8 | c12 | make_set(c8, c12) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c8, c12, concat_ws(c8, c12) from t1; ++------+------+--------------------+ +| c8 | c12 | concat_ws(c8, c12) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c8, c12, interval(c8, c12) from t1; ++------+------+-------------------+ +| c8 | c12 | interval(c8, c12) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c8, c13, make_set(c8, c13) from t1; ++------+------+-------------------+ +| c8 | c13 | make_set(c8, c13) | ++------+------+-------------------+ +| 2 | 3.5 | | +| 2 | -3.5 | | ++------+------+-------------------+ +select c8, c13, concat_ws(c8, c13) from t1; ++------+------+--------------------+ +| c8 | c13 | concat_ws(c8, c13) | ++------+------+--------------------+ +| 2 | 3.5 | 3.5 | +| 2 | -3.5 | -3.5 | ++------+------+--------------------+ +select c8, c13, interval(c8, c13) from t1; ++------+------+-------------------+ +| c8 | c13 | interval(c8, c13) | ++------+------+-------------------+ +| 2 | 3.5 | 0 | +| 2 | -3.5 | 1 | ++------+------+-------------------+ + +select c8, c14, make_set(c8, c14) from t1; ++------+------+-------------------+ +| c8 | c14 | make_set(c8, c14) | ++------+------+-------------------+ +| 2 | 4.5 | | +| 2 | 4.5 | | ++------+------+-------------------+ +select c8, c14, concat_ws(c8, c14) from t1; ++------+------+--------------------+ +| c8 | c14 | concat_ws(c8, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 4.5 | +| 2 | 4.5 | 4.5 | ++------+------+--------------------+ +select c8, c14, interval(c8, c14) from t1; ++------+------+-------------------+ +| c8 | c14 | interval(c8, c14) | ++------+------+-------------------+ +| 2 | 4.5 | 0 | +| 2 | 4.5 | 0 | ++------+------+-------------------+ + +select c8, c15, make_set(c8, c15) from t1; ++------+------+-------------------+ +| c8 | c15 | make_set(c8, c15) | ++------+------+-------------------+ +| 2 | 5.5 | | +| 2 | -5.5 | | ++------+------+-------------------+ +select c8, c15, concat_ws(c8, c15) from t1; ++------+------+--------------------+ +| c8 | c15 | concat_ws(c8, c15) | ++------+------+--------------------+ +| 2 | 5.5 | 5.5 | +| 2 | -5.5 | -5.5 | ++------+------+--------------------+ +select c8, c15, interval(c8, c15) from t1; ++------+------+-------------------+ +| c8 | c15 | interval(c8, c15) | ++------+------+-------------------+ +| 2 | 5.5 | 0 | +| 2 | -5.5 | 1 | ++------+------+-------------------+ + +select c8, c16, make_set(c8, c16) from t1; ++------+------+-------------------+ +| c8 | c16 | make_set(c8, c16) | ++------+------+-------------------+ +| 2 | 6.5 | | +| 2 | 6.5 | | ++------+------+-------------------+ +select c8, c16, concat_ws(c8, c16) from t1; ++------+------+--------------------+ +| c8 | c16 | concat_ws(c8, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 6.5 | +| 2 | 6.5 | 6.5 | ++------+------+--------------------+ +select c8, c16, interval(c8, c16) from t1; ++------+------+-------------------+ +| c8 | c16 | interval(c8, c16) | ++------+------+-------------------+ +| 2 | 6.5 | 0 | +| 2 | 6.5 | 0 | ++------+------+-------------------+ + +select c8, c17, make_set(c8, c17) from t1; ++------+------+-------------------+ +| c8 | c17 | make_set(c8, c17) | ++------+------+-------------------+ +| 2 | 8 | | +| 2 | -8 | | ++------+------+-------------------+ +select c8, c17, concat_ws(c8, c17) from t1; ++------+------+--------------------+ +| c8 | c17 | concat_ws(c8, c17) | ++------+------+--------------------+ +| 2 | 8 | 8 | +| 2 | -8 | -8 | ++------+------+--------------------+ +select c8, c17, interval(c8, c17) from t1; ++------+------+-------------------+ +| c8 | c17 | interval(c8, c17) | ++------+------+-------------------+ +| 2 | 8 | 0 | +| 2 | -8 | 1 | ++------+------+-------------------+ + +select c8, c18, make_set(c8, c18) from t1; ++------+------+-------------------+ +| c8 | c18 | make_set(c8, c18) | ++------+------+-------------------+ +| 2 | 9 | | +| 2 | 9 | | ++------+------+-------------------+ +select c8, c18, concat_ws(c8, c18) from t1; ++------+------+--------------------+ +| c8 | c18 | concat_ws(c8, c18) | ++------+------+--------------------+ +| 2 | 9 | 9 | +| 2 | 9 | 9 | ++------+------+--------------------+ +select c8, c18, interval(c8, c18) from t1; ++------+------+-------------------+ +| c8 | c18 | interval(c8, c18) | ++------+------+-------------------+ +| 2 | 9 | 0 | +| 2 | 9 | 0 | ++------+------+-------------------+ + +select c8, c19, make_set(c8, c19) from t1; ++------+---------------------+-------------------+ +| c8 | c19 | make_set(c8, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | | +| 2 | 2019-12-01 12:00:00 | | ++------+---------------------+-------------------+ +select c8, c19, concat_ws(c8, c19) from t1; ++------+---------------------+---------------------+ +| c8 | c19 | concat_ws(c8, c19) | ++------+---------------------+---------------------+ +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c8, c19, interval(c8, c19) from t1; ++------+---------------------+-------------------+ +| c8 | c19 | interval(c8, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 0 | +| 2 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c8, c20, make_set(c8, c20) from t1; ++------+---------------------+-------------------+ +| c8 | c20 | make_set(c8, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | | +| 2 | 2019-12-03 06:00:00 | | ++------+---------------------+-------------------+ +select c8, c20, concat_ws(c8, c20) from t1; ++------+---------------------+---------------------+ +| c8 | c20 | concat_ws(c8, c20) | ++------+---------------------+---------------------+ +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c8, c20, interval(c8, c20) from t1; ++------+---------------------+-------------------+ +| c8 | c20 | interval(c8, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 0 | +| 2 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c8, c21, make_set(c8, c21) from t1; ++------+------+-------------------+ +| c8 | c21 | make_set(c8, c21) | ++------+------+-------------------+ +| 2 | 9.5 | | +| 2 | -9.5 | | ++------+------+-------------------+ +select c8, c21, concat_ws(c8, c21) from t1; ++------+------+--------------------+ +| c8 | c21 | concat_ws(c8, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 9.5 | +| 2 | -9.5 | -9.5 | ++------+------+--------------------+ +select c8, c21, interval(c8, c21) from t1; ++------+------+-------------------+ +| c8 | c21 | interval(c8, c21) | ++------+------+-------------------+ +| 2 | 9.5 | 0 | +| 2 | -9.5 | 1 | ++------+------+-------------------+ + +select c8, c22, make_set(c8, c22) from t1; ++------+------+-------------------+ +| c8 | c22 | make_set(c8, c22) | ++------+------+-------------------+ +| 2 | 10.5 | | +| 2 | 10.5 | | ++------+------+-------------------+ +select c8, c22, concat_ws(c8, c22) from t1; ++------+------+--------------------+ +| c8 | c22 | concat_ws(c8, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 10.5 | +| 2 | 10.5 | 10.5 | ++------+------+--------------------+ +select c8, c22, interval(c8, c22) from t1; ++------+------+-------------------+ +| c8 | c22 | interval(c8, c22) | ++------+------+-------------------+ +| 2 | 10.5 | 0 | +| 2 | 10.5 | 0 | ++------+------+-------------------+ + +select c9, quote(c9) from t1; ++------+-----------+ +| c9 | quote(c9) | ++------+-----------+ +| 1 | '1' | +| -1 | '-1' | ++------+-----------+ +select c9, sys_op_opnsize(c9) from t1; ++------+--------------------+ +| c9 | sys_op_opnsize(c9) | ++------+--------------------+ +| 1 | 20 | +| -1 | 20 | ++------+--------------------+ +select c9, c1, make_set(c9, c1) from t1; ++------+------+------------------+ +| c9 | c1 | make_set(c9, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c9, c1, concat_ws(c9, c1) from t1; ++------+------+-------------------+ +| c9 | c1 | concat_ws(c9, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c9, c1, interval(c9, c1) from t1; ++------+------+------------------+ +| c9 | c1 | interval(c9, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c9, c2, make_set(c9, c2) from t1; ++------+------+------------------+ +| c9 | c2 | make_set(c9, c2) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c9, c2, concat_ws(c9, c2) from t1; ++------+------+-------------------+ +| c9 | c2 | concat_ws(c9, c2) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c9, c2, interval(c9, c2) from t1; ++------+------+------------------+ +| c9 | c2 | interval(c9, c2) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c9, c3, make_set(c9, c3) from t1; ++------+------+------------------+ +| c9 | c3 | make_set(c9, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c9, c3, concat_ws(c9, c3) from t1; ++------+------+-------------------+ +| c9 | c3 | concat_ws(c9, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c9, c3, interval(c9, c3) from t1; ++------+------+------------------+ +| c9 | c3 | interval(c9, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c9, c4, make_set(c9, c4) from t1; ++------+------+------------------+ +| c9 | c4 | make_set(c9, c4) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c9, c4, concat_ws(c9, c4) from t1; ++------+------+-------------------+ +| c9 | c4 | concat_ws(c9, c4) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c9, c4, interval(c9, c4) from t1; ++------+------+------------------+ +| c9 | c4 | interval(c9, c4) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c9, c5, make_set(c9, c5) from t1; ++------+------+------------------+ +| c9 | c5 | make_set(c9, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c9, c5, concat_ws(c9, c5) from t1; ++------+------+-------------------+ +| c9 | c5 | concat_ws(c9, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c9, c5, interval(c9, c5) from t1; ++------+------+------------------+ +| c9 | c5 | interval(c9, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c9, c6, make_set(c9, c6) from t1; ++------+------+------------------+ +| c9 | c6 | make_set(c9, c6) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c9, c6, concat_ws(c9, c6) from t1; ++------+------+-------------------+ +| c9 | c6 | concat_ws(c9, c6) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c9, c6, interval(c9, c6) from t1; ++------+------+------------------+ +| c9 | c6 | interval(c9, c6) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c9, c7, make_set(c9, c7) from t1; ++------+------+------------------+ +| c9 | c7 | make_set(c9, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c9, c7, concat_ws(c9, c7) from t1; ++------+------+-------------------+ +| c9 | c7 | concat_ws(c9, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c9, c7, interval(c9, c7) from t1; ++------+------+------------------+ +| c9 | c7 | interval(c9, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c9, c8, make_set(c9, c8) from t1; ++------+------+------------------+ +| c9 | c8 | make_set(c9, c8) | ++------+------+------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+------------------+ +select c9, c8, concat_ws(c9, c8) from t1; ++------+------+-------------------+ +| c9 | c8 | concat_ws(c9, c8) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c9, c8, interval(c9, c8) from t1; ++------+------+------------------+ +| c9 | c8 | interval(c9, c8) | ++------+------+------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+------------------+ + +select c9, c9, make_set(c9, c9) from t1; ++------+------+------------------+ +| c9 | c9 | make_set(c9, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+------------------+ +select c9, c9, concat_ws(c9, c9) from t1; ++------+------+-------------------+ +| c9 | c9 | concat_ws(c9, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c9, c9, interval(c9, c9) from t1; ++------+------+------------------+ +| c9 | c9 | interval(c9, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+------------------+ + +select c9, c10, make_set(c9, c10) from t1; ++------+------+-------------------+ +| c9 | c10 | make_set(c9, c10) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c9, c10, concat_ws(c9, c10) from t1; ++------+------+--------------------+ +| c9 | c10 | concat_ws(c9, c10) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c9, c10, interval(c9, c10) from t1; ++------+------+-------------------+ +| c9 | c10 | interval(c9, c10) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c9, c11, make_set(c9, c11) from t1; ++------+------+-------------------+ +| c9 | c11 | make_set(c9, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c9, c11, concat_ws(c9, c11) from t1; ++------+------+--------------------+ +| c9 | c11 | concat_ws(c9, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c9, c11, interval(c9, c11) from t1; ++------+------+-------------------+ +| c9 | c11 | interval(c9, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c9, c12, make_set(c9, c12) from t1; ++------+------+-------------------+ +| c9 | c12 | make_set(c9, c12) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c9, c12, concat_ws(c9, c12) from t1; ++------+------+--------------------+ +| c9 | c12 | concat_ws(c9, c12) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c9, c12, interval(c9, c12) from t1; ++------+------+-------------------+ +| c9 | c12 | interval(c9, c12) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c9, c13, make_set(c9, c13) from t1; ++------+------+-------------------+ +| c9 | c13 | make_set(c9, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+-------------------+ +select c9, c13, concat_ws(c9, c13) from t1; ++------+------+--------------------+ +| c9 | c13 | concat_ws(c9, c13) | ++------+------+--------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+--------------------+ +select c9, c13, interval(c9, c13) from t1; ++------+------+-------------------+ +| c9 | c13 | interval(c9, c13) | ++------+------+-------------------+ +| 1 | 3.5 | 0 | +| -1 | -3.5 | 1 | ++------+------+-------------------+ + +select c9, c14, make_set(c9, c14) from t1; ++------+------+-------------------+ +| c9 | c14 | make_set(c9, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+-------------------+ +select c9, c14, concat_ws(c9, c14) from t1; ++------+------+--------------------+ +| c9 | c14 | concat_ws(c9, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+--------------------+ +select c9, c14, interval(c9, c14) from t1; ++------+------+-------------------+ +| c9 | c14 | interval(c9, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 0 | +| -1 | 4.5 | 0 | ++------+------+-------------------+ + +select c9, c15, make_set(c9, c15) from t1; ++------+------+-------------------+ +| c9 | c15 | make_set(c9, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+-------------------+ +select c9, c15, concat_ws(c9, c15) from t1; ++------+------+--------------------+ +| c9 | c15 | concat_ws(c9, c15) | ++------+------+--------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+--------------------+ +select c9, c15, interval(c9, c15) from t1; ++------+------+-------------------+ +| c9 | c15 | interval(c9, c15) | ++------+------+-------------------+ +| 1 | 5.5 | 0 | +| -1 | -5.5 | 1 | ++------+------+-------------------+ + +select c9, c16, make_set(c9, c16) from t1; ++------+------+-------------------+ +| c9 | c16 | make_set(c9, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+-------------------+ +select c9, c16, concat_ws(c9, c16) from t1; ++------+------+--------------------+ +| c9 | c16 | concat_ws(c9, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+--------------------+ +select c9, c16, interval(c9, c16) from t1; ++------+------+-------------------+ +| c9 | c16 | interval(c9, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 0 | +| -1 | 6.5 | 0 | ++------+------+-------------------+ + +select c9, c17, make_set(c9, c17) from t1; ++------+------+-------------------+ +| c9 | c17 | make_set(c9, c17) | ++------+------+-------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+-------------------+ +select c9, c17, concat_ws(c9, c17) from t1; ++------+------+--------------------+ +| c9 | c17 | concat_ws(c9, c17) | ++------+------+--------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+--------------------+ +select c9, c17, interval(c9, c17) from t1; ++------+------+-------------------+ +| c9 | c17 | interval(c9, c17) | ++------+------+-------------------+ +| 1 | 8 | 0 | +| -1 | -8 | 1 | ++------+------+-------------------+ + +select c9, c18, make_set(c9, c18) from t1; ++------+------+-------------------+ +| c9 | c18 | make_set(c9, c18) | ++------+------+-------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+-------------------+ +select c9, c18, concat_ws(c9, c18) from t1; ++------+------+--------------------+ +| c9 | c18 | concat_ws(c9, c18) | ++------+------+--------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+--------------------+ +select c9, c18, interval(c9, c18) from t1; ++------+------+-------------------+ +| c9 | c18 | interval(c9, c18) | ++------+------+-------------------+ +| 1 | 9 | 0 | +| -1 | 9 | 0 | ++------+------+-------------------+ + +select c9, c19, make_set(c9, c19) from t1; ++------+---------------------+---------------------+ +| c9 | c19 | make_set(c9, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c9, c19, concat_ws(c9, c19) from t1; ++------+---------------------+---------------------+ +| c9 | c19 | concat_ws(c9, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c9, c19, interval(c9, c19) from t1; ++------+---------------------+-------------------+ +| c9 | c19 | interval(c9, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 0 | +| -1 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+-------------------+ + +select c9, c20, make_set(c9, c20) from t1; ++------+---------------------+---------------------+ +| c9 | c20 | make_set(c9, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c9, c20, concat_ws(c9, c20) from t1; ++------+---------------------+---------------------+ +| c9 | c20 | concat_ws(c9, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c9, c20, interval(c9, c20) from t1; ++------+---------------------+-------------------+ +| c9 | c20 | interval(c9, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 0 | +| -1 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+-------------------+ + +select c9, c21, make_set(c9, c21) from t1; ++------+------+-------------------+ +| c9 | c21 | make_set(c9, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+-------------------+ +select c9, c21, concat_ws(c9, c21) from t1; ++------+------+--------------------+ +| c9 | c21 | concat_ws(c9, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+--------------------+ +select c9, c21, interval(c9, c21) from t1; ++------+------+-------------------+ +| c9 | c21 | interval(c9, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 0 | +| -1 | -9.5 | 1 | ++------+------+-------------------+ + +select c9, c22, make_set(c9, c22) from t1; ++------+------+-------------------+ +| c9 | c22 | make_set(c9, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+-------------------+ +select c9, c22, concat_ws(c9, c22) from t1; ++------+------+--------------------+ +| c9 | c22 | concat_ws(c9, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+--------------------+ +select c9, c22, interval(c9, c22) from t1; ++------+------+-------------------+ +| c9 | c22 | interval(c9, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 0 | +| -1 | 10.5 | 0 | ++------+------+-------------------+ + +select c10, quote(c10) from t1; ++------+------------+ +| c10 | quote(c10) | ++------+------------+ +| 2 | '2' | +| 2 | '2' | ++------+------------+ +select c10, sys_op_opnsize(c10) from t1; ++------+---------------------+ +| c10 | sys_op_opnsize(c10) | ++------+---------------------+ +| 2 | 20 | +| 2 | 20 | ++------+---------------------+ +select c10, c1, make_set(c10, c1) from t1; ++------+------+-------------------+ +| c10 | c1 | make_set(c10, c1) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c10, c1, concat_ws(c10, c1) from t1; ++------+------+--------------------+ +| c10 | c1 | concat_ws(c10, c1) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c10, c1, interval(c10, c1) from t1; ++------+------+-------------------+ +| c10 | c1 | interval(c10, c1) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c10, c2, make_set(c10, c2) from t1; ++------+------+-------------------+ +| c10 | c2 | make_set(c10, c2) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c10, c2, concat_ws(c10, c2) from t1; ++------+------+--------------------+ +| c10 | c2 | concat_ws(c10, c2) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c10, c2, interval(c10, c2) from t1; ++------+------+-------------------+ +| c10 | c2 | interval(c10, c2) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c10, c3, make_set(c10, c3) from t1; ++------+------+-------------------+ +| c10 | c3 | make_set(c10, c3) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c10, c3, concat_ws(c10, c3) from t1; ++------+------+--------------------+ +| c10 | c3 | concat_ws(c10, c3) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c10, c3, interval(c10, c3) from t1; ++------+------+-------------------+ +| c10 | c3 | interval(c10, c3) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c10, c4, make_set(c10, c4) from t1; ++------+------+-------------------+ +| c10 | c4 | make_set(c10, c4) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c10, c4, concat_ws(c10, c4) from t1; ++------+------+--------------------+ +| c10 | c4 | concat_ws(c10, c4) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c10, c4, interval(c10, c4) from t1; ++------+------+-------------------+ +| c10 | c4 | interval(c10, c4) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c10, c5, make_set(c10, c5) from t1; ++------+------+-------------------+ +| c10 | c5 | make_set(c10, c5) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c10, c5, concat_ws(c10, c5) from t1; ++------+------+--------------------+ +| c10 | c5 | concat_ws(c10, c5) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c10, c5, interval(c10, c5) from t1; ++------+------+-------------------+ +| c10 | c5 | interval(c10, c5) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c10, c6, make_set(c10, c6) from t1; ++------+------+-------------------+ +| c10 | c6 | make_set(c10, c6) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c10, c6, concat_ws(c10, c6) from t1; ++------+------+--------------------+ +| c10 | c6 | concat_ws(c10, c6) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c10, c6, interval(c10, c6) from t1; ++------+------+-------------------+ +| c10 | c6 | interval(c10, c6) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c10, c7, make_set(c10, c7) from t1; ++------+------+-------------------+ +| c10 | c7 | make_set(c10, c7) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c10, c7, concat_ws(c10, c7) from t1; ++------+------+--------------------+ +| c10 | c7 | concat_ws(c10, c7) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c10, c7, interval(c10, c7) from t1; ++------+------+-------------------+ +| c10 | c7 | interval(c10, c7) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c10, c8, make_set(c10, c8) from t1; ++------+------+-------------------+ +| c10 | c8 | make_set(c10, c8) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c10, c8, concat_ws(c10, c8) from t1; ++------+------+--------------------+ +| c10 | c8 | concat_ws(c10, c8) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c10, c8, interval(c10, c8) from t1; ++------+------+-------------------+ +| c10 | c8 | interval(c10, c8) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c10, c9, make_set(c10, c9) from t1; ++------+------+-------------------+ +| c10 | c9 | make_set(c10, c9) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c10, c9, concat_ws(c10, c9) from t1; ++------+------+--------------------+ +| c10 | c9 | concat_ws(c10, c9) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c10, c9, interval(c10, c9) from t1; ++------+------+-------------------+ +| c10 | c9 | interval(c10, c9) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c10, c10, make_set(c10, c10) from t1; ++------+------+--------------------+ +| c10 | c10 | make_set(c10, c10) | ++------+------+--------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+--------------------+ +select c10, c10, concat_ws(c10, c10) from t1; ++------+------+---------------------+ +| c10 | c10 | concat_ws(c10, c10) | ++------+------+---------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+---------------------+ +select c10, c10, interval(c10, c10) from t1; ++------+------+--------------------+ +| c10 | c10 | interval(c10, c10) | ++------+------+--------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+--------------------+ + +select c10, c11, make_set(c10, c11) from t1; ++------+------+--------------------+ +| c10 | c11 | make_set(c10, c11) | ++------+------+--------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+--------------------+ +select c10, c11, concat_ws(c10, c11) from t1; ++------+------+---------------------+ +| c10 | c11 | concat_ws(c10, c11) | ++------+------+---------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+---------------------+ +select c10, c11, interval(c10, c11) from t1; ++------+------+--------------------+ +| c10 | c11 | interval(c10, c11) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+--------------------+ + +select c10, c12, make_set(c10, c12) from t1; ++------+------+--------------------+ +| c10 | c12 | make_set(c10, c12) | ++------+------+--------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+--------------------+ +select c10, c12, concat_ws(c10, c12) from t1; ++------+------+---------------------+ +| c10 | c12 | concat_ws(c10, c12) | ++------+------+---------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+---------------------+ +select c10, c12, interval(c10, c12) from t1; ++------+------+--------------------+ +| c10 | c12 | interval(c10, c12) | ++------+------+--------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+--------------------+ + +select c10, c13, make_set(c10, c13) from t1; ++------+------+--------------------+ +| c10 | c13 | make_set(c10, c13) | ++------+------+--------------------+ +| 2 | 3.5 | | +| 2 | -3.5 | | ++------+------+--------------------+ +select c10, c13, concat_ws(c10, c13) from t1; ++------+------+---------------------+ +| c10 | c13 | concat_ws(c10, c13) | ++------+------+---------------------+ +| 2 | 3.5 | 3.5 | +| 2 | -3.5 | -3.5 | ++------+------+---------------------+ +select c10, c13, interval(c10, c13) from t1; ++------+------+--------------------+ +| c10 | c13 | interval(c10, c13) | ++------+------+--------------------+ +| 2 | 3.5 | 0 | +| 2 | -3.5 | 1 | ++------+------+--------------------+ + +select c10, c14, make_set(c10, c14) from t1; ++------+------+--------------------+ +| c10 | c14 | make_set(c10, c14) | ++------+------+--------------------+ +| 2 | 4.5 | | +| 2 | 4.5 | | ++------+------+--------------------+ +select c10, c14, concat_ws(c10, c14) from t1; ++------+------+---------------------+ +| c10 | c14 | concat_ws(c10, c14) | ++------+------+---------------------+ +| 2 | 4.5 | 4.5 | +| 2 | 4.5 | 4.5 | ++------+------+---------------------+ +select c10, c14, interval(c10, c14) from t1; ++------+------+--------------------+ +| c10 | c14 | interval(c10, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 0 | +| 2 | 4.5 | 0 | ++------+------+--------------------+ + +select c10, c15, make_set(c10, c15) from t1; ++------+------+--------------------+ +| c10 | c15 | make_set(c10, c15) | ++------+------+--------------------+ +| 2 | 5.5 | | +| 2 | -5.5 | | ++------+------+--------------------+ +select c10, c15, concat_ws(c10, c15) from t1; ++------+------+---------------------+ +| c10 | c15 | concat_ws(c10, c15) | ++------+------+---------------------+ +| 2 | 5.5 | 5.5 | +| 2 | -5.5 | -5.5 | ++------+------+---------------------+ +select c10, c15, interval(c10, c15) from t1; ++------+------+--------------------+ +| c10 | c15 | interval(c10, c15) | ++------+------+--------------------+ +| 2 | 5.5 | 0 | +| 2 | -5.5 | 1 | ++------+------+--------------------+ + +select c10, c16, make_set(c10, c16) from t1; ++------+------+--------------------+ +| c10 | c16 | make_set(c10, c16) | ++------+------+--------------------+ +| 2 | 6.5 | | +| 2 | 6.5 | | ++------+------+--------------------+ +select c10, c16, concat_ws(c10, c16) from t1; ++------+------+---------------------+ +| c10 | c16 | concat_ws(c10, c16) | ++------+------+---------------------+ +| 2 | 6.5 | 6.5 | +| 2 | 6.5 | 6.5 | ++------+------+---------------------+ +select c10, c16, interval(c10, c16) from t1; ++------+------+--------------------+ +| c10 | c16 | interval(c10, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 0 | +| 2 | 6.5 | 0 | ++------+------+--------------------+ + +select c10, c17, make_set(c10, c17) from t1; ++------+------+--------------------+ +| c10 | c17 | make_set(c10, c17) | ++------+------+--------------------+ +| 2 | 8 | | +| 2 | -8 | | ++------+------+--------------------+ +select c10, c17, concat_ws(c10, c17) from t1; ++------+------+---------------------+ +| c10 | c17 | concat_ws(c10, c17) | ++------+------+---------------------+ +| 2 | 8 | 8 | +| 2 | -8 | -8 | ++------+------+---------------------+ +select c10, c17, interval(c10, c17) from t1; ++------+------+--------------------+ +| c10 | c17 | interval(c10, c17) | ++------+------+--------------------+ +| 2 | 8 | 0 | +| 2 | -8 | 1 | ++------+------+--------------------+ + +select c10, c18, make_set(c10, c18) from t1; ++------+------+--------------------+ +| c10 | c18 | make_set(c10, c18) | ++------+------+--------------------+ +| 2 | 9 | | +| 2 | 9 | | ++------+------+--------------------+ +select c10, c18, concat_ws(c10, c18) from t1; ++------+------+---------------------+ +| c10 | c18 | concat_ws(c10, c18) | ++------+------+---------------------+ +| 2 | 9 | 9 | +| 2 | 9 | 9 | ++------+------+---------------------+ +select c10, c18, interval(c10, c18) from t1; ++------+------+--------------------+ +| c10 | c18 | interval(c10, c18) | ++------+------+--------------------+ +| 2 | 9 | 0 | +| 2 | 9 | 0 | ++------+------+--------------------+ + +select c10, c19, make_set(c10, c19) from t1; ++------+---------------------+--------------------+ +| c10 | c19 | make_set(c10, c19) | ++------+---------------------+--------------------+ +| 2 | 2019-12-01 12:00:00 | | +| 2 | 2019-12-01 12:00:00 | | ++------+---------------------+--------------------+ +select c10, c19, concat_ws(c10, c19) from t1; ++------+---------------------+---------------------+ +| c10 | c19 | concat_ws(c10, c19) | ++------+---------------------+---------------------+ +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c10, c19, interval(c10, c19) from t1; ++------+---------------------+--------------------+ +| c10 | c19 | interval(c10, c19) | ++------+---------------------+--------------------+ +| 2 | 2019-12-01 12:00:00 | 0 | +| 2 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c10, c20, make_set(c10, c20) from t1; ++------+---------------------+--------------------+ +| c10 | c20 | make_set(c10, c20) | ++------+---------------------+--------------------+ +| 2 | 2019-12-03 06:00:00 | | +| 2 | 2019-12-03 06:00:00 | | ++------+---------------------+--------------------+ +select c10, c20, concat_ws(c10, c20) from t1; ++------+---------------------+---------------------+ +| c10 | c20 | concat_ws(c10, c20) | ++------+---------------------+---------------------+ +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c10, c20, interval(c10, c20) from t1; ++------+---------------------+--------------------+ +| c10 | c20 | interval(c10, c20) | ++------+---------------------+--------------------+ +| 2 | 2019-12-03 06:00:00 | 0 | +| 2 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c10, c21, make_set(c10, c21) from t1; ++------+------+--------------------+ +| c10 | c21 | make_set(c10, c21) | ++------+------+--------------------+ +| 2 | 9.5 | | +| 2 | -9.5 | | ++------+------+--------------------+ +select c10, c21, concat_ws(c10, c21) from t1; ++------+------+---------------------+ +| c10 | c21 | concat_ws(c10, c21) | ++------+------+---------------------+ +| 2 | 9.5 | 9.5 | +| 2 | -9.5 | -9.5 | ++------+------+---------------------+ +select c10, c21, interval(c10, c21) from t1; ++------+------+--------------------+ +| c10 | c21 | interval(c10, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 0 | +| 2 | -9.5 | 1 | ++------+------+--------------------+ + +select c10, c22, make_set(c10, c22) from t1; ++------+------+--------------------+ +| c10 | c22 | make_set(c10, c22) | ++------+------+--------------------+ +| 2 | 10.5 | | +| 2 | 10.5 | | ++------+------+--------------------+ +select c10, c22, concat_ws(c10, c22) from t1; ++------+------+---------------------+ +| c10 | c22 | concat_ws(c10, c22) | ++------+------+---------------------+ +| 2 | 10.5 | 10.5 | +| 2 | 10.5 | 10.5 | ++------+------+---------------------+ +select c10, c22, interval(c10, c22) from t1; ++------+------+--------------------+ +| c10 | c22 | interval(c10, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 0 | +| 2 | 10.5 | 0 | ++------+------+--------------------+ + +select c11, quote(c11) from t1; ++------+------------+ +| c11 | quote(c11) | ++------+------------+ +| 1 | '1' | +| -1 | '-1' | ++------+------------+ +select c11, sys_op_opnsize(c11) from t1; ++------+---------------------+ +| c11 | sys_op_opnsize(c11) | ++------+---------------------+ +| 1 | 20 | +| -1 | 20 | ++------+---------------------+ +select c11, c1, make_set(c11, c1) from t1; ++------+------+-------------------+ +| c11 | c1 | make_set(c11, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c11, c1, concat_ws(c11, c1) from t1; ++------+------+--------------------+ +| c11 | c1 | concat_ws(c11, c1) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c11, c1, interval(c11, c1) from t1; ++------+------+-------------------+ +| c11 | c1 | interval(c11, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c11, c2, make_set(c11, c2) from t1; ++------+------+-------------------+ +| c11 | c2 | make_set(c11, c2) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c11, c2, concat_ws(c11, c2) from t1; ++------+------+--------------------+ +| c11 | c2 | concat_ws(c11, c2) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c11, c2, interval(c11, c2) from t1; ++------+------+-------------------+ +| c11 | c2 | interval(c11, c2) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c11, c3, make_set(c11, c3) from t1; ++------+------+-------------------+ +| c11 | c3 | make_set(c11, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c11, c3, concat_ws(c11, c3) from t1; ++------+------+--------------------+ +| c11 | c3 | concat_ws(c11, c3) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c11, c3, interval(c11, c3) from t1; ++------+------+-------------------+ +| c11 | c3 | interval(c11, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c11, c4, make_set(c11, c4) from t1; ++------+------+-------------------+ +| c11 | c4 | make_set(c11, c4) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c11, c4, concat_ws(c11, c4) from t1; ++------+------+--------------------+ +| c11 | c4 | concat_ws(c11, c4) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c11, c4, interval(c11, c4) from t1; ++------+------+-------------------+ +| c11 | c4 | interval(c11, c4) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c11, c5, make_set(c11, c5) from t1; ++------+------+-------------------+ +| c11 | c5 | make_set(c11, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c11, c5, concat_ws(c11, c5) from t1; ++------+------+--------------------+ +| c11 | c5 | concat_ws(c11, c5) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c11, c5, interval(c11, c5) from t1; ++------+------+-------------------+ +| c11 | c5 | interval(c11, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c11, c6, make_set(c11, c6) from t1; ++------+------+-------------------+ +| c11 | c6 | make_set(c11, c6) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c11, c6, concat_ws(c11, c6) from t1; ++------+------+--------------------+ +| c11 | c6 | concat_ws(c11, c6) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c11, c6, interval(c11, c6) from t1; ++------+------+-------------------+ +| c11 | c6 | interval(c11, c6) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c11, c7, make_set(c11, c7) from t1; ++------+------+-------------------+ +| c11 | c7 | make_set(c11, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c11, c7, concat_ws(c11, c7) from t1; ++------+------+--------------------+ +| c11 | c7 | concat_ws(c11, c7) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c11, c7, interval(c11, c7) from t1; ++------+------+-------------------+ +| c11 | c7 | interval(c11, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c11, c8, make_set(c11, c8) from t1; ++------+------+-------------------+ +| c11 | c8 | make_set(c11, c8) | ++------+------+-------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+-------------------+ +select c11, c8, concat_ws(c11, c8) from t1; ++------+------+--------------------+ +| c11 | c8 | concat_ws(c11, c8) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c11, c8, interval(c11, c8) from t1; ++------+------+-------------------+ +| c11 | c8 | interval(c11, c8) | ++------+------+-------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+-------------------+ + +select c11, c9, make_set(c11, c9) from t1; ++------+------+-------------------+ +| c11 | c9 | make_set(c11, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+-------------------+ +select c11, c9, concat_ws(c11, c9) from t1; ++------+------+--------------------+ +| c11 | c9 | concat_ws(c11, c9) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c11, c9, interval(c11, c9) from t1; ++------+------+-------------------+ +| c11 | c9 | interval(c11, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+-------------------+ + +select c11, c10, make_set(c11, c10) from t1; ++------+------+--------------------+ +| c11 | c10 | make_set(c11, c10) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c11, c10, concat_ws(c11, c10) from t1; ++------+------+---------------------+ +| c11 | c10 | concat_ws(c11, c10) | ++------+------+---------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+---------------------+ +select c11, c10, interval(c11, c10) from t1; ++------+------+--------------------+ +| c11 | c10 | interval(c11, c10) | ++------+------+--------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+--------------------+ + +select c11, c11, make_set(c11, c11) from t1; ++------+------+--------------------+ +| c11 | c11 | make_set(c11, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+--------------------+ +select c11, c11, concat_ws(c11, c11) from t1; ++------+------+---------------------+ +| c11 | c11 | concat_ws(c11, c11) | ++------+------+---------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -1 | ++------+------+---------------------+ +select c11, c11, interval(c11, c11) from t1; ++------+------+--------------------+ +| c11 | c11 | interval(c11, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | 1 | ++------+------+--------------------+ + +select c11, c12, make_set(c11, c12) from t1; ++------+------+--------------------+ +| c11 | c12 | make_set(c11, c12) | ++------+------+--------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+--------------------+ +select c11, c12, concat_ws(c11, c12) from t1; ++------+------+---------------------+ +| c11 | c12 | concat_ws(c11, c12) | ++------+------+---------------------+ +| 1 | 2 | 2 | +| -1 | 2 | 2 | ++------+------+---------------------+ +select c11, c12, interval(c11, c12) from t1; ++------+------+--------------------+ +| c11 | c12 | interval(c11, c12) | ++------+------+--------------------+ +| 1 | 2 | 0 | +| -1 | 2 | 0 | ++------+------+--------------------+ + +select c11, c13, make_set(c11, c13) from t1; ++------+------+--------------------+ +| c11 | c13 | make_set(c11, c13) | ++------+------+--------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+--------------------+ +select c11, c13, concat_ws(c11, c13) from t1; ++------+------+---------------------+ +| c11 | c13 | concat_ws(c11, c13) | ++------+------+---------------------+ +| 1 | 3.5 | 3.5 | +| -1 | -3.5 | -3.5 | ++------+------+---------------------+ +select c11, c13, interval(c11, c13) from t1; ++------+------+--------------------+ +| c11 | c13 | interval(c11, c13) | ++------+------+--------------------+ +| 1 | 3.5 | 0 | +| -1 | -3.5 | 1 | ++------+------+--------------------+ + +select c11, c14, make_set(c11, c14) from t1; ++------+------+--------------------+ +| c11 | c14 | make_set(c11, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+--------------------+ +select c11, c14, concat_ws(c11, c14) from t1; ++------+------+---------------------+ +| c11 | c14 | concat_ws(c11, c14) | ++------+------+---------------------+ +| 1 | 4.5 | 4.5 | +| -1 | 4.5 | 4.5 | ++------+------+---------------------+ +select c11, c14, interval(c11, c14) from t1; ++------+------+--------------------+ +| c11 | c14 | interval(c11, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 0 | +| -1 | 4.5 | 0 | ++------+------+--------------------+ + +select c11, c15, make_set(c11, c15) from t1; ++------+------+--------------------+ +| c11 | c15 | make_set(c11, c15) | ++------+------+--------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+--------------------+ +select c11, c15, concat_ws(c11, c15) from t1; ++------+------+---------------------+ +| c11 | c15 | concat_ws(c11, c15) | ++------+------+---------------------+ +| 1 | 5.5 | 5.5 | +| -1 | -5.5 | -5.5 | ++------+------+---------------------+ +select c11, c15, interval(c11, c15) from t1; ++------+------+--------------------+ +| c11 | c15 | interval(c11, c15) | ++------+------+--------------------+ +| 1 | 5.5 | 0 | +| -1 | -5.5 | 1 | ++------+------+--------------------+ + +select c11, c16, make_set(c11, c16) from t1; ++------+------+--------------------+ +| c11 | c16 | make_set(c11, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+--------------------+ +select c11, c16, concat_ws(c11, c16) from t1; ++------+------+---------------------+ +| c11 | c16 | concat_ws(c11, c16) | ++------+------+---------------------+ +| 1 | 6.5 | 6.5 | +| -1 | 6.5 | 6.5 | ++------+------+---------------------+ +select c11, c16, interval(c11, c16) from t1; ++------+------+--------------------+ +| c11 | c16 | interval(c11, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 0 | +| -1 | 6.5 | 0 | ++------+------+--------------------+ + +select c11, c17, make_set(c11, c17) from t1; ++------+------+--------------------+ +| c11 | c17 | make_set(c11, c17) | ++------+------+--------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+--------------------+ +select c11, c17, concat_ws(c11, c17) from t1; ++------+------+---------------------+ +| c11 | c17 | concat_ws(c11, c17) | ++------+------+---------------------+ +| 1 | 8 | 8 | +| -1 | -8 | -8 | ++------+------+---------------------+ +select c11, c17, interval(c11, c17) from t1; ++------+------+--------------------+ +| c11 | c17 | interval(c11, c17) | ++------+------+--------------------+ +| 1 | 8 | 0 | +| -1 | -8 | 1 | ++------+------+--------------------+ + +select c11, c18, make_set(c11, c18) from t1; ++------+------+--------------------+ +| c11 | c18 | make_set(c11, c18) | ++------+------+--------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+--------------------+ +select c11, c18, concat_ws(c11, c18) from t1; ++------+------+---------------------+ +| c11 | c18 | concat_ws(c11, c18) | ++------+------+---------------------+ +| 1 | 9 | 9 | +| -1 | 9 | 9 | ++------+------+---------------------+ +select c11, c18, interval(c11, c18) from t1; ++------+------+--------------------+ +| c11 | c18 | interval(c11, c18) | ++------+------+--------------------+ +| 1 | 9 | 0 | +| -1 | 9 | 0 | ++------+------+--------------------+ + +select c11, c19, make_set(c11, c19) from t1; ++------+---------------------+---------------------+ +| c11 | c19 | make_set(c11, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c11, c19, concat_ws(c11, c19) from t1; ++------+---------------------+---------------------+ +| c11 | c19 | concat_ws(c11, c19) | ++------+---------------------+---------------------+ +| 1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -1 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c11, c19, interval(c11, c19) from t1; ++------+---------------------+--------------------+ +| c11 | c19 | interval(c11, c19) | ++------+---------------------+--------------------+ +| 1 | 2019-12-01 12:00:00 | 0 | +| -1 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c11, c20, make_set(c11, c20) from t1; ++------+---------------------+---------------------+ +| c11 | c20 | make_set(c11, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c11, c20, concat_ws(c11, c20) from t1; ++------+---------------------+---------------------+ +| c11 | c20 | concat_ws(c11, c20) | ++------+---------------------+---------------------+ +| 1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -1 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c11, c20, interval(c11, c20) from t1; ++------+---------------------+--------------------+ +| c11 | c20 | interval(c11, c20) | ++------+---------------------+--------------------+ +| 1 | 2019-12-03 06:00:00 | 0 | +| -1 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c11, c21, make_set(c11, c21) from t1; ++------+------+--------------------+ +| c11 | c21 | make_set(c11, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+--------------------+ +select c11, c21, concat_ws(c11, c21) from t1; ++------+------+---------------------+ +| c11 | c21 | concat_ws(c11, c21) | ++------+------+---------------------+ +| 1 | 9.5 | 9.5 | +| -1 | -9.5 | -9.5 | ++------+------+---------------------+ +select c11, c21, interval(c11, c21) from t1; ++------+------+--------------------+ +| c11 | c21 | interval(c11, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 0 | +| -1 | -9.5 | 1 | ++------+------+--------------------+ + +select c11, c22, make_set(c11, c22) from t1; ++------+------+--------------------+ +| c11 | c22 | make_set(c11, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+--------------------+ +select c11, c22, concat_ws(c11, c22) from t1; ++------+------+---------------------+ +| c11 | c22 | concat_ws(c11, c22) | ++------+------+---------------------+ +| 1 | 10.5 | 10.5 | +| -1 | 10.5 | 10.5 | ++------+------+---------------------+ +select c11, c22, interval(c11, c22) from t1; ++------+------+--------------------+ +| c11 | c22 | interval(c11, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 0 | +| -1 | 10.5 | 0 | ++------+------+--------------------+ + +select c12, quote(c12) from t1; ++------+------------+ +| c12 | quote(c12) | ++------+------------+ +| 2 | '2' | +| 2 | '2' | ++------+------------+ +select c12, sys_op_opnsize(c12) from t1; ++------+---------------------+ +| c12 | sys_op_opnsize(c12) | ++------+---------------------+ +| 2 | 20 | +| 2 | 20 | ++------+---------------------+ +select c12, c1, make_set(c12, c1) from t1; ++------+------+-------------------+ +| c12 | c1 | make_set(c12, c1) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c12, c1, concat_ws(c12, c1) from t1; ++------+------+--------------------+ +| c12 | c1 | concat_ws(c12, c1) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c12, c1, interval(c12, c1) from t1; ++------+------+-------------------+ +| c12 | c1 | interval(c12, c1) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c12, c2, make_set(c12, c2) from t1; ++------+------+-------------------+ +| c12 | c2 | make_set(c12, c2) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c12, c2, concat_ws(c12, c2) from t1; ++------+------+--------------------+ +| c12 | c2 | concat_ws(c12, c2) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c12, c2, interval(c12, c2) from t1; ++------+------+-------------------+ +| c12 | c2 | interval(c12, c2) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c12, c3, make_set(c12, c3) from t1; ++------+------+-------------------+ +| c12 | c3 | make_set(c12, c3) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c12, c3, concat_ws(c12, c3) from t1; ++------+------+--------------------+ +| c12 | c3 | concat_ws(c12, c3) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c12, c3, interval(c12, c3) from t1; ++------+------+-------------------+ +| c12 | c3 | interval(c12, c3) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c12, c4, make_set(c12, c4) from t1; ++------+------+-------------------+ +| c12 | c4 | make_set(c12, c4) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c12, c4, concat_ws(c12, c4) from t1; ++------+------+--------------------+ +| c12 | c4 | concat_ws(c12, c4) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c12, c4, interval(c12, c4) from t1; ++------+------+-------------------+ +| c12 | c4 | interval(c12, c4) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c12, c5, make_set(c12, c5) from t1; ++------+------+-------------------+ +| c12 | c5 | make_set(c12, c5) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c12, c5, concat_ws(c12, c5) from t1; ++------+------+--------------------+ +| c12 | c5 | concat_ws(c12, c5) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c12, c5, interval(c12, c5) from t1; ++------+------+-------------------+ +| c12 | c5 | interval(c12, c5) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c12, c6, make_set(c12, c6) from t1; ++------+------+-------------------+ +| c12 | c6 | make_set(c12, c6) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c12, c6, concat_ws(c12, c6) from t1; ++------+------+--------------------+ +| c12 | c6 | concat_ws(c12, c6) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c12, c6, interval(c12, c6) from t1; ++------+------+-------------------+ +| c12 | c6 | interval(c12, c6) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c12, c7, make_set(c12, c7) from t1; ++------+------+-------------------+ +| c12 | c7 | make_set(c12, c7) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c12, c7, concat_ws(c12, c7) from t1; ++------+------+--------------------+ +| c12 | c7 | concat_ws(c12, c7) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c12, c7, interval(c12, c7) from t1; ++------+------+-------------------+ +| c12 | c7 | interval(c12, c7) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c12, c8, make_set(c12, c8) from t1; ++------+------+-------------------+ +| c12 | c8 | make_set(c12, c8) | ++------+------+-------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+-------------------+ +select c12, c8, concat_ws(c12, c8) from t1; ++------+------+--------------------+ +| c12 | c8 | concat_ws(c12, c8) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+--------------------+ +select c12, c8, interval(c12, c8) from t1; ++------+------+-------------------+ +| c12 | c8 | interval(c12, c8) | ++------+------+-------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+-------------------+ + +select c12, c9, make_set(c12, c9) from t1; ++------+------+-------------------+ +| c12 | c9 | make_set(c12, c9) | ++------+------+-------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+-------------------+ +select c12, c9, concat_ws(c12, c9) from t1; ++------+------+--------------------+ +| c12 | c9 | concat_ws(c12, c9) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+--------------------+ +select c12, c9, interval(c12, c9) from t1; ++------+------+-------------------+ +| c12 | c9 | interval(c12, c9) | ++------+------+-------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+-------------------+ + +select c12, c10, make_set(c12, c10) from t1; ++------+------+--------------------+ +| c12 | c10 | make_set(c12, c10) | ++------+------+--------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+--------------------+ +select c12, c10, concat_ws(c12, c10) from t1; ++------+------+---------------------+ +| c12 | c10 | concat_ws(c12, c10) | ++------+------+---------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+---------------------+ +select c12, c10, interval(c12, c10) from t1; ++------+------+--------------------+ +| c12 | c10 | interval(c12, c10) | ++------+------+--------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+--------------------+ + +select c12, c11, make_set(c12, c11) from t1; ++------+------+--------------------+ +| c12 | c11 | make_set(c12, c11) | ++------+------+--------------------+ +| 2 | 1 | | +| 2 | -1 | | ++------+------+--------------------+ +select c12, c11, concat_ws(c12, c11) from t1; ++------+------+---------------------+ +| c12 | c11 | concat_ws(c12, c11) | ++------+------+---------------------+ +| 2 | 1 | 1 | +| 2 | -1 | -1 | ++------+------+---------------------+ +select c12, c11, interval(c12, c11) from t1; ++------+------+--------------------+ +| c12 | c11 | interval(c12, c11) | ++------+------+--------------------+ +| 2 | 1 | 1 | +| 2 | -1 | 1 | ++------+------+--------------------+ + +select c12, c12, make_set(c12, c12) from t1; ++------+------+--------------------+ +| c12 | c12 | make_set(c12, c12) | ++------+------+--------------------+ +| 2 | 2 | | +| 2 | 2 | | ++------+------+--------------------+ +select c12, c12, concat_ws(c12, c12) from t1; ++------+------+---------------------+ +| c12 | c12 | concat_ws(c12, c12) | ++------+------+---------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | ++------+------+---------------------+ +select c12, c12, interval(c12, c12) from t1; ++------+------+--------------------+ +| c12 | c12 | interval(c12, c12) | ++------+------+--------------------+ +| 2 | 2 | 1 | +| 2 | 2 | 1 | ++------+------+--------------------+ + +select c12, c13, make_set(c12, c13) from t1; ++------+------+--------------------+ +| c12 | c13 | make_set(c12, c13) | ++------+------+--------------------+ +| 2 | 3.5 | | +| 2 | -3.5 | | ++------+------+--------------------+ +select c12, c13, concat_ws(c12, c13) from t1; ++------+------+---------------------+ +| c12 | c13 | concat_ws(c12, c13) | ++------+------+---------------------+ +| 2 | 3.5 | 3.5 | +| 2 | -3.5 | -3.5 | ++------+------+---------------------+ +select c12, c13, interval(c12, c13) from t1; ++------+------+--------------------+ +| c12 | c13 | interval(c12, c13) | ++------+------+--------------------+ +| 2 | 3.5 | 0 | +| 2 | -3.5 | 1 | ++------+------+--------------------+ + +select c12, c14, make_set(c12, c14) from t1; ++------+------+--------------------+ +| c12 | c14 | make_set(c12, c14) | ++------+------+--------------------+ +| 2 | 4.5 | | +| 2 | 4.5 | | ++------+------+--------------------+ +select c12, c14, concat_ws(c12, c14) from t1; ++------+------+---------------------+ +| c12 | c14 | concat_ws(c12, c14) | ++------+------+---------------------+ +| 2 | 4.5 | 4.5 | +| 2 | 4.5 | 4.5 | ++------+------+---------------------+ +select c12, c14, interval(c12, c14) from t1; ++------+------+--------------------+ +| c12 | c14 | interval(c12, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 0 | +| 2 | 4.5 | 0 | ++------+------+--------------------+ + +select c12, c15, make_set(c12, c15) from t1; ++------+------+--------------------+ +| c12 | c15 | make_set(c12, c15) | ++------+------+--------------------+ +| 2 | 5.5 | | +| 2 | -5.5 | | ++------+------+--------------------+ +select c12, c15, concat_ws(c12, c15) from t1; ++------+------+---------------------+ +| c12 | c15 | concat_ws(c12, c15) | ++------+------+---------------------+ +| 2 | 5.5 | 5.5 | +| 2 | -5.5 | -5.5 | ++------+------+---------------------+ +select c12, c15, interval(c12, c15) from t1; ++------+------+--------------------+ +| c12 | c15 | interval(c12, c15) | ++------+------+--------------------+ +| 2 | 5.5 | 0 | +| 2 | -5.5 | 1 | ++------+------+--------------------+ + +select c12, c16, make_set(c12, c16) from t1; ++------+------+--------------------+ +| c12 | c16 | make_set(c12, c16) | ++------+------+--------------------+ +| 2 | 6.5 | | +| 2 | 6.5 | | ++------+------+--------------------+ +select c12, c16, concat_ws(c12, c16) from t1; ++------+------+---------------------+ +| c12 | c16 | concat_ws(c12, c16) | ++------+------+---------------------+ +| 2 | 6.5 | 6.5 | +| 2 | 6.5 | 6.5 | ++------+------+---------------------+ +select c12, c16, interval(c12, c16) from t1; ++------+------+--------------------+ +| c12 | c16 | interval(c12, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 0 | +| 2 | 6.5 | 0 | ++------+------+--------------------+ + +select c12, c17, make_set(c12, c17) from t1; ++------+------+--------------------+ +| c12 | c17 | make_set(c12, c17) | ++------+------+--------------------+ +| 2 | 8 | | +| 2 | -8 | | ++------+------+--------------------+ +select c12, c17, concat_ws(c12, c17) from t1; ++------+------+---------------------+ +| c12 | c17 | concat_ws(c12, c17) | ++------+------+---------------------+ +| 2 | 8 | 8 | +| 2 | -8 | -8 | ++------+------+---------------------+ +select c12, c17, interval(c12, c17) from t1; ++------+------+--------------------+ +| c12 | c17 | interval(c12, c17) | ++------+------+--------------------+ +| 2 | 8 | 0 | +| 2 | -8 | 1 | ++------+------+--------------------+ + +select c12, c18, make_set(c12, c18) from t1; ++------+------+--------------------+ +| c12 | c18 | make_set(c12, c18) | ++------+------+--------------------+ +| 2 | 9 | | +| 2 | 9 | | ++------+------+--------------------+ +select c12, c18, concat_ws(c12, c18) from t1; ++------+------+---------------------+ +| c12 | c18 | concat_ws(c12, c18) | ++------+------+---------------------+ +| 2 | 9 | 9 | +| 2 | 9 | 9 | ++------+------+---------------------+ +select c12, c18, interval(c12, c18) from t1; ++------+------+--------------------+ +| c12 | c18 | interval(c12, c18) | ++------+------+--------------------+ +| 2 | 9 | 0 | +| 2 | 9 | 0 | ++------+------+--------------------+ + +select c12, c19, make_set(c12, c19) from t1; ++------+---------------------+--------------------+ +| c12 | c19 | make_set(c12, c19) | ++------+---------------------+--------------------+ +| 2 | 2019-12-01 12:00:00 | | +| 2 | 2019-12-01 12:00:00 | | ++------+---------------------+--------------------+ +select c12, c19, concat_ws(c12, c19) from t1; ++------+---------------------+---------------------+ +| c12 | c19 | concat_ws(c12, c19) | ++------+---------------------+---------------------+ +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c12, c19, interval(c12, c19) from t1; ++------+---------------------+--------------------+ +| c12 | c19 | interval(c12, c19) | ++------+---------------------+--------------------+ +| 2 | 2019-12-01 12:00:00 | 0 | +| 2 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c12, c20, make_set(c12, c20) from t1; ++------+---------------------+--------------------+ +| c12 | c20 | make_set(c12, c20) | ++------+---------------------+--------------------+ +| 2 | 2019-12-03 06:00:00 | | +| 2 | 2019-12-03 06:00:00 | | ++------+---------------------+--------------------+ +select c12, c20, concat_ws(c12, c20) from t1; ++------+---------------------+---------------------+ +| c12 | c20 | concat_ws(c12, c20) | ++------+---------------------+---------------------+ +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c12, c20, interval(c12, c20) from t1; ++------+---------------------+--------------------+ +| c12 | c20 | interval(c12, c20) | ++------+---------------------+--------------------+ +| 2 | 2019-12-03 06:00:00 | 0 | +| 2 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c12, c21, make_set(c12, c21) from t1; ++------+------+--------------------+ +| c12 | c21 | make_set(c12, c21) | ++------+------+--------------------+ +| 2 | 9.5 | | +| 2 | -9.5 | | ++------+------+--------------------+ +select c12, c21, concat_ws(c12, c21) from t1; ++------+------+---------------------+ +| c12 | c21 | concat_ws(c12, c21) | ++------+------+---------------------+ +| 2 | 9.5 | 9.5 | +| 2 | -9.5 | -9.5 | ++------+------+---------------------+ +select c12, c21, interval(c12, c21) from t1; ++------+------+--------------------+ +| c12 | c21 | interval(c12, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 0 | +| 2 | -9.5 | 1 | ++------+------+--------------------+ + +select c12, c22, make_set(c12, c22) from t1; ++------+------+--------------------+ +| c12 | c22 | make_set(c12, c22) | ++------+------+--------------------+ +| 2 | 10.5 | | +| 2 | 10.5 | | ++------+------+--------------------+ +select c12, c22, concat_ws(c12, c22) from t1; ++------+------+---------------------+ +| c12 | c22 | concat_ws(c12, c22) | ++------+------+---------------------+ +| 2 | 10.5 | 10.5 | +| 2 | 10.5 | 10.5 | ++------+------+---------------------+ +select c12, c22, interval(c12, c22) from t1; ++------+------+--------------------+ +| c12 | c22 | interval(c12, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 0 | +| 2 | 10.5 | 0 | ++------+------+--------------------+ + +select c13, quote(c13) from t1; ++------+------------+ +| c13 | quote(c13) | ++------+------------+ +| 3.5 | '3.5' | +| -3.5 | '-3.5' | ++------+------------+ +select c13, sys_op_opnsize(c13) from t1; ++------+---------------------+ +| c13 | sys_op_opnsize(c13) | ++------+---------------------+ +| 3.5 | 16 | +| -3.5 | 16 | ++------+---------------------+ +select c13, c1, make_set(c13, c1) from t1; ++------+------+-------------------+ +| c13 | c1 | make_set(c13, c1) | ++------+------+-------------------+ +| 3.5 | 1 | | +| -3.5 | -1 | | ++------+------+-------------------+ +select c13, c1, concat_ws(c13, c1) from t1; ++------+------+--------------------+ +| c13 | c1 | concat_ws(c13, c1) | ++------+------+--------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | -1 | ++------+------+--------------------+ +select c13, c1, interval(c13, c1) from t1; ++------+------+-------------------+ +| c13 | c1 | interval(c13, c1) | ++------+------+-------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | 0 | ++------+------+-------------------+ + +select c13, c2, make_set(c13, c2) from t1; ++------+------+-------------------+ +| c13 | c2 | make_set(c13, c2) | ++------+------+-------------------+ +| 3.5 | 2 | | +| -3.5 | 2 | | ++------+------+-------------------+ +select c13, c2, concat_ws(c13, c2) from t1; ++------+------+--------------------+ +| c13 | c2 | concat_ws(c13, c2) | ++------+------+--------------------+ +| 3.5 | 2 | 2 | +| -3.5 | 2 | 2 | ++------+------+--------------------+ +select c13, c2, interval(c13, c2) from t1; ++------+------+-------------------+ +| c13 | c2 | interval(c13, c2) | ++------+------+-------------------+ +| 3.5 | 2 | 1 | +| -3.5 | 2 | 0 | ++------+------+-------------------+ + +select c13, c3, make_set(c13, c3) from t1; ++------+------+-------------------+ +| c13 | c3 | make_set(c13, c3) | ++------+------+-------------------+ +| 3.5 | 1 | | +| -3.5 | -1 | | ++------+------+-------------------+ +select c13, c3, concat_ws(c13, c3) from t1; ++------+------+--------------------+ +| c13 | c3 | concat_ws(c13, c3) | ++------+------+--------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | -1 | ++------+------+--------------------+ +select c13, c3, interval(c13, c3) from t1; ++------+------+-------------------+ +| c13 | c3 | interval(c13, c3) | ++------+------+-------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | 0 | ++------+------+-------------------+ + +select c13, c4, make_set(c13, c4) from t1; ++------+------+-------------------+ +| c13 | c4 | make_set(c13, c4) | ++------+------+-------------------+ +| 3.5 | 2 | | +| -3.5 | 2 | | ++------+------+-------------------+ +select c13, c4, concat_ws(c13, c4) from t1; ++------+------+--------------------+ +| c13 | c4 | concat_ws(c13, c4) | ++------+------+--------------------+ +| 3.5 | 2 | 2 | +| -3.5 | 2 | 2 | ++------+------+--------------------+ +select c13, c4, interval(c13, c4) from t1; ++------+------+-------------------+ +| c13 | c4 | interval(c13, c4) | ++------+------+-------------------+ +| 3.5 | 2 | 1 | +| -3.5 | 2 | 0 | ++------+------+-------------------+ + +select c13, c5, make_set(c13, c5) from t1; ++------+------+-------------------+ +| c13 | c5 | make_set(c13, c5) | ++------+------+-------------------+ +| 3.5 | 1 | | +| -3.5 | -1 | | ++------+------+-------------------+ +select c13, c5, concat_ws(c13, c5) from t1; ++------+------+--------------------+ +| c13 | c5 | concat_ws(c13, c5) | ++------+------+--------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | -1 | ++------+------+--------------------+ +select c13, c5, interval(c13, c5) from t1; ++------+------+-------------------+ +| c13 | c5 | interval(c13, c5) | ++------+------+-------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | 0 | ++------+------+-------------------+ + +select c13, c6, make_set(c13, c6) from t1; ++------+------+-------------------+ +| c13 | c6 | make_set(c13, c6) | ++------+------+-------------------+ +| 3.5 | 2 | | +| -3.5 | 2 | | ++------+------+-------------------+ +select c13, c6, concat_ws(c13, c6) from t1; ++------+------+--------------------+ +| c13 | c6 | concat_ws(c13, c6) | ++------+------+--------------------+ +| 3.5 | 2 | 2 | +| -3.5 | 2 | 2 | ++------+------+--------------------+ +select c13, c6, interval(c13, c6) from t1; ++------+------+-------------------+ +| c13 | c6 | interval(c13, c6) | ++------+------+-------------------+ +| 3.5 | 2 | 1 | +| -3.5 | 2 | 0 | ++------+------+-------------------+ + +select c13, c7, make_set(c13, c7) from t1; ++------+------+-------------------+ +| c13 | c7 | make_set(c13, c7) | ++------+------+-------------------+ +| 3.5 | 1 | | +| -3.5 | -1 | | ++------+------+-------------------+ +select c13, c7, concat_ws(c13, c7) from t1; ++------+------+--------------------+ +| c13 | c7 | concat_ws(c13, c7) | ++------+------+--------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | -1 | ++------+------+--------------------+ +select c13, c7, interval(c13, c7) from t1; ++------+------+-------------------+ +| c13 | c7 | interval(c13, c7) | ++------+------+-------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | 0 | ++------+------+-------------------+ + +select c13, c8, make_set(c13, c8) from t1; ++------+------+-------------------+ +| c13 | c8 | make_set(c13, c8) | ++------+------+-------------------+ +| 3.5 | 2 | | +| -3.5 | 2 | | ++------+------+-------------------+ +select c13, c8, concat_ws(c13, c8) from t1; ++------+------+--------------------+ +| c13 | c8 | concat_ws(c13, c8) | ++------+------+--------------------+ +| 3.5 | 2 | 2 | +| -3.5 | 2 | 2 | ++------+------+--------------------+ +select c13, c8, interval(c13, c8) from t1; ++------+------+-------------------+ +| c13 | c8 | interval(c13, c8) | ++------+------+-------------------+ +| 3.5 | 2 | 1 | +| -3.5 | 2 | 0 | ++------+------+-------------------+ + +select c13, c9, make_set(c13, c9) from t1; ++------+------+-------------------+ +| c13 | c9 | make_set(c13, c9) | ++------+------+-------------------+ +| 3.5 | 1 | | +| -3.5 | -1 | | ++------+------+-------------------+ +select c13, c9, concat_ws(c13, c9) from t1; ++------+------+--------------------+ +| c13 | c9 | concat_ws(c13, c9) | ++------+------+--------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | -1 | ++------+------+--------------------+ +select c13, c9, interval(c13, c9) from t1; ++------+------+-------------------+ +| c13 | c9 | interval(c13, c9) | ++------+------+-------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | 0 | ++------+------+-------------------+ + +select c13, c10, make_set(c13, c10) from t1; ++------+------+--------------------+ +| c13 | c10 | make_set(c13, c10) | ++------+------+--------------------+ +| 3.5 | 2 | | +| -3.5 | 2 | | ++------+------+--------------------+ +select c13, c10, concat_ws(c13, c10) from t1; ++------+------+---------------------+ +| c13 | c10 | concat_ws(c13, c10) | ++------+------+---------------------+ +| 3.5 | 2 | 2 | +| -3.5 | 2 | 2 | ++------+------+---------------------+ +select c13, c10, interval(c13, c10) from t1; ++------+------+--------------------+ +| c13 | c10 | interval(c13, c10) | ++------+------+--------------------+ +| 3.5 | 2 | 1 | +| -3.5 | 2 | 0 | ++------+------+--------------------+ + +select c13, c11, make_set(c13, c11) from t1; ++------+------+--------------------+ +| c13 | c11 | make_set(c13, c11) | ++------+------+--------------------+ +| 3.5 | 1 | | +| -3.5 | -1 | | ++------+------+--------------------+ +select c13, c11, concat_ws(c13, c11) from t1; ++------+------+---------------------+ +| c13 | c11 | concat_ws(c13, c11) | ++------+------+---------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | -1 | ++------+------+---------------------+ +select c13, c11, interval(c13, c11) from t1; ++------+------+--------------------+ +| c13 | c11 | interval(c13, c11) | ++------+------+--------------------+ +| 3.5 | 1 | 1 | +| -3.5 | -1 | 0 | ++------+------+--------------------+ + +select c13, c12, make_set(c13, c12) from t1; ++------+------+--------------------+ +| c13 | c12 | make_set(c13, c12) | ++------+------+--------------------+ +| 3.5 | 2 | | +| -3.5 | 2 | | ++------+------+--------------------+ +select c13, c12, concat_ws(c13, c12) from t1; ++------+------+---------------------+ +| c13 | c12 | concat_ws(c13, c12) | ++------+------+---------------------+ +| 3.5 | 2 | 2 | +| -3.5 | 2 | 2 | ++------+------+---------------------+ +select c13, c12, interval(c13, c12) from t1; ++------+------+--------------------+ +| c13 | c12 | interval(c13, c12) | ++------+------+--------------------+ +| 3.5 | 2 | 1 | +| -3.5 | 2 | 0 | ++------+------+--------------------+ + +select c13, c13, make_set(c13, c13) from t1; ++------+------+--------------------+ +| c13 | c13 | make_set(c13, c13) | ++------+------+--------------------+ +| 3.5 | 3.5 | | +| -3.5 | -3.5 | | ++------+------+--------------------+ +select c13, c13, concat_ws(c13, c13) from t1; ++------+------+---------------------+ +| c13 | c13 | concat_ws(c13, c13) | ++------+------+---------------------+ +| 3.5 | 3.5 | 3.5 | +| -3.5 | -3.5 | -3.5 | ++------+------+---------------------+ +select c13, c13, interval(c13, c13) from t1; ++------+------+--------------------+ +| c13 | c13 | interval(c13, c13) | ++------+------+--------------------+ +| 3.5 | 3.5 | 1 | +| -3.5 | -3.5 | 1 | ++------+------+--------------------+ + +select c13, c14, make_set(c13, c14) from t1; ++------+------+--------------------+ +| c13 | c14 | make_set(c13, c14) | ++------+------+--------------------+ +| 3.5 | 4.5 | | +| -3.5 | 4.5 | | ++------+------+--------------------+ +select c13, c14, concat_ws(c13, c14) from t1; ++------+------+---------------------+ +| c13 | c14 | concat_ws(c13, c14) | ++------+------+---------------------+ +| 3.5 | 4.5 | 4.5 | +| -3.5 | 4.5 | 4.5 | ++------+------+---------------------+ +select c13, c14, interval(c13, c14) from t1; ++------+------+--------------------+ +| c13 | c14 | interval(c13, c14) | ++------+------+--------------------+ +| 3.5 | 4.5 | 0 | +| -3.5 | 4.5 | 0 | ++------+------+--------------------+ + +select c13, c15, make_set(c13, c15) from t1; ++------+------+--------------------+ +| c13 | c15 | make_set(c13, c15) | ++------+------+--------------------+ +| 3.5 | 5.5 | | +| -3.5 | -5.5 | | ++------+------+--------------------+ +select c13, c15, concat_ws(c13, c15) from t1; ++------+------+---------------------+ +| c13 | c15 | concat_ws(c13, c15) | ++------+------+---------------------+ +| 3.5 | 5.5 | 5.5 | +| -3.5 | -5.5 | -5.5 | ++------+------+---------------------+ +select c13, c15, interval(c13, c15) from t1; ++------+------+--------------------+ +| c13 | c15 | interval(c13, c15) | ++------+------+--------------------+ +| 3.5 | 5.5 | 0 | +| -3.5 | -5.5 | 1 | ++------+------+--------------------+ + +select c13, c16, make_set(c13, c16) from t1; ++------+------+--------------------+ +| c13 | c16 | make_set(c13, c16) | ++------+------+--------------------+ +| 3.5 | 6.5 | | +| -3.5 | 6.5 | | ++------+------+--------------------+ +select c13, c16, concat_ws(c13, c16) from t1; ++------+------+---------------------+ +| c13 | c16 | concat_ws(c13, c16) | ++------+------+---------------------+ +| 3.5 | 6.5 | 6.5 | +| -3.5 | 6.5 | 6.5 | ++------+------+---------------------+ +select c13, c16, interval(c13, c16) from t1; ++------+------+--------------------+ +| c13 | c16 | interval(c13, c16) | ++------+------+--------------------+ +| 3.5 | 6.5 | 0 | +| -3.5 | 6.5 | 0 | ++------+------+--------------------+ + +select c13, c17, make_set(c13, c17) from t1; ++------+------+--------------------+ +| c13 | c17 | make_set(c13, c17) | ++------+------+--------------------+ +| 3.5 | 8 | | +| -3.5 | -8 | | ++------+------+--------------------+ +select c13, c17, concat_ws(c13, c17) from t1; ++------+------+---------------------+ +| c13 | c17 | concat_ws(c13, c17) | ++------+------+---------------------+ +| 3.5 | 8 | 8 | +| -3.5 | -8 | -8 | ++------+------+---------------------+ +select c13, c17, interval(c13, c17) from t1; ++------+------+--------------------+ +| c13 | c17 | interval(c13, c17) | ++------+------+--------------------+ +| 3.5 | 8 | 0 | +| -3.5 | -8 | 1 | ++------+------+--------------------+ + +select c13, c18, make_set(c13, c18) from t1; ++------+------+--------------------+ +| c13 | c18 | make_set(c13, c18) | ++------+------+--------------------+ +| 3.5 | 9 | | +| -3.5 | 9 | | ++------+------+--------------------+ +select c13, c18, concat_ws(c13, c18) from t1; ++------+------+---------------------+ +| c13 | c18 | concat_ws(c13, c18) | ++------+------+---------------------+ +| 3.5 | 9 | 9 | +| -3.5 | 9 | 9 | ++------+------+---------------------+ +select c13, c18, interval(c13, c18) from t1; ++------+------+--------------------+ +| c13 | c18 | interval(c13, c18) | ++------+------+--------------------+ +| 3.5 | 9 | 0 | +| -3.5 | 9 | 0 | ++------+------+--------------------+ + +select c13, c19, make_set(c13, c19) from t1; ++------+---------------------+--------------------+ +| c13 | c19 | make_set(c13, c19) | ++------+---------------------+--------------------+ +| 3.5 | 2019-12-01 12:00:00 | | +| -3.5 | 2019-12-01 12:00:00 | | ++------+---------------------+--------------------+ +select c13, c19, concat_ws(c13, c19) from t1; ++------+---------------------+---------------------+ +| c13 | c19 | concat_ws(c13, c19) | ++------+---------------------+---------------------+ +| 3.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -3.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c13, c19, interval(c13, c19) from t1; ++------+---------------------+--------------------+ +| c13 | c19 | interval(c13, c19) | ++------+---------------------+--------------------+ +| 3.5 | 2019-12-01 12:00:00 | 0 | +| -3.5 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c13, c20, make_set(c13, c20) from t1; ++------+---------------------+--------------------+ +| c13 | c20 | make_set(c13, c20) | ++------+---------------------+--------------------+ +| 3.5 | 2019-12-03 06:00:00 | | +| -3.5 | 2019-12-03 06:00:00 | | ++------+---------------------+--------------------+ +select c13, c20, concat_ws(c13, c20) from t1; ++------+---------------------+---------------------+ +| c13 | c20 | concat_ws(c13, c20) | ++------+---------------------+---------------------+ +| 3.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -3.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c13, c20, interval(c13, c20) from t1; ++------+---------------------+--------------------+ +| c13 | c20 | interval(c13, c20) | ++------+---------------------+--------------------+ +| 3.5 | 2019-12-03 06:00:00 | 0 | +| -3.5 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c13, c21, make_set(c13, c21) from t1; ++------+------+--------------------+ +| c13 | c21 | make_set(c13, c21) | ++------+------+--------------------+ +| 3.5 | 9.5 | | +| -3.5 | -9.5 | | ++------+------+--------------------+ +select c13, c21, concat_ws(c13, c21) from t1; ++------+------+---------------------+ +| c13 | c21 | concat_ws(c13, c21) | ++------+------+---------------------+ +| 3.5 | 9.5 | 9.5 | +| -3.5 | -9.5 | -9.5 | ++------+------+---------------------+ +select c13, c21, interval(c13, c21) from t1; ++------+------+--------------------+ +| c13 | c21 | interval(c13, c21) | ++------+------+--------------------+ +| 3.5 | 9.5 | 0 | +| -3.5 | -9.5 | 1 | ++------+------+--------------------+ + +select c13, c22, make_set(c13, c22) from t1; ++------+------+--------------------+ +| c13 | c22 | make_set(c13, c22) | ++------+------+--------------------+ +| 3.5 | 10.5 | | +| -3.5 | 10.5 | | ++------+------+--------------------+ +select c13, c22, concat_ws(c13, c22) from t1; ++------+------+---------------------+ +| c13 | c22 | concat_ws(c13, c22) | ++------+------+---------------------+ +| 3.5 | 10.5 | 10.5 | +| -3.5 | 10.5 | 10.5 | ++------+------+---------------------+ +select c13, c22, interval(c13, c22) from t1; ++------+------+--------------------+ +| c13 | c22 | interval(c13, c22) | ++------+------+--------------------+ +| 3.5 | 10.5 | 0 | +| -3.5 | 10.5 | 0 | ++------+------+--------------------+ + +select c14, quote(c14) from t1; ++------+------------+ +| c14 | quote(c14) | ++------+------------+ +| 4.5 | '4.5' | +| 4.5 | '4.5' | ++------+------------+ +select c14, sys_op_opnsize(c14) from t1; ++------+---------------------+ +| c14 | sys_op_opnsize(c14) | ++------+---------------------+ +| 4.5 | 16 | +| 4.5 | 16 | ++------+---------------------+ +select c14, c1, make_set(c14, c1) from t1; ++------+------+-------------------+ +| c14 | c1 | make_set(c14, c1) | ++------+------+-------------------+ +| 4.5 | 1 | | +| 4.5 | -1 | | ++------+------+-------------------+ +select c14, c1, concat_ws(c14, c1) from t1; ++------+------+--------------------+ +| c14 | c1 | concat_ws(c14, c1) | ++------+------+--------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | -1 | ++------+------+--------------------+ +select c14, c1, interval(c14, c1) from t1; ++------+------+-------------------+ +| c14 | c1 | interval(c14, c1) | ++------+------+-------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | 1 | ++------+------+-------------------+ + +select c14, c2, make_set(c14, c2) from t1; ++------+------+-------------------+ +| c14 | c2 | make_set(c14, c2) | ++------+------+-------------------+ +| 4.5 | 2 | | +| 4.5 | 2 | | ++------+------+-------------------+ +select c14, c2, concat_ws(c14, c2) from t1; ++------+------+--------------------+ +| c14 | c2 | concat_ws(c14, c2) | ++------+------+--------------------+ +| 4.5 | 2 | 2 | +| 4.5 | 2 | 2 | ++------+------+--------------------+ +select c14, c2, interval(c14, c2) from t1; ++------+------+-------------------+ +| c14 | c2 | interval(c14, c2) | ++------+------+-------------------+ +| 4.5 | 2 | 1 | +| 4.5 | 2 | 1 | ++------+------+-------------------+ + +select c14, c3, make_set(c14, c3) from t1; ++------+------+-------------------+ +| c14 | c3 | make_set(c14, c3) | ++------+------+-------------------+ +| 4.5 | 1 | | +| 4.5 | -1 | | ++------+------+-------------------+ +select c14, c3, concat_ws(c14, c3) from t1; ++------+------+--------------------+ +| c14 | c3 | concat_ws(c14, c3) | ++------+------+--------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | -1 | ++------+------+--------------------+ +select c14, c3, interval(c14, c3) from t1; ++------+------+-------------------+ +| c14 | c3 | interval(c14, c3) | ++------+------+-------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | 1 | ++------+------+-------------------+ + +select c14, c4, make_set(c14, c4) from t1; ++------+------+-------------------+ +| c14 | c4 | make_set(c14, c4) | ++------+------+-------------------+ +| 4.5 | 2 | | +| 4.5 | 2 | | ++------+------+-------------------+ +select c14, c4, concat_ws(c14, c4) from t1; ++------+------+--------------------+ +| c14 | c4 | concat_ws(c14, c4) | ++------+------+--------------------+ +| 4.5 | 2 | 2 | +| 4.5 | 2 | 2 | ++------+------+--------------------+ +select c14, c4, interval(c14, c4) from t1; ++------+------+-------------------+ +| c14 | c4 | interval(c14, c4) | ++------+------+-------------------+ +| 4.5 | 2 | 1 | +| 4.5 | 2 | 1 | ++------+------+-------------------+ + +select c14, c5, make_set(c14, c5) from t1; ++------+------+-------------------+ +| c14 | c5 | make_set(c14, c5) | ++------+------+-------------------+ +| 4.5 | 1 | | +| 4.5 | -1 | | ++------+------+-------------------+ +select c14, c5, concat_ws(c14, c5) from t1; ++------+------+--------------------+ +| c14 | c5 | concat_ws(c14, c5) | ++------+------+--------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | -1 | ++------+------+--------------------+ +select c14, c5, interval(c14, c5) from t1; ++------+------+-------------------+ +| c14 | c5 | interval(c14, c5) | ++------+------+-------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | 1 | ++------+------+-------------------+ + +select c14, c6, make_set(c14, c6) from t1; ++------+------+-------------------+ +| c14 | c6 | make_set(c14, c6) | ++------+------+-------------------+ +| 4.5 | 2 | | +| 4.5 | 2 | | ++------+------+-------------------+ +select c14, c6, concat_ws(c14, c6) from t1; ++------+------+--------------------+ +| c14 | c6 | concat_ws(c14, c6) | ++------+------+--------------------+ +| 4.5 | 2 | 2 | +| 4.5 | 2 | 2 | ++------+------+--------------------+ +select c14, c6, interval(c14, c6) from t1; ++------+------+-------------------+ +| c14 | c6 | interval(c14, c6) | ++------+------+-------------------+ +| 4.5 | 2 | 1 | +| 4.5 | 2 | 1 | ++------+------+-------------------+ + +select c14, c7, make_set(c14, c7) from t1; ++------+------+-------------------+ +| c14 | c7 | make_set(c14, c7) | ++------+------+-------------------+ +| 4.5 | 1 | | +| 4.5 | -1 | | ++------+------+-------------------+ +select c14, c7, concat_ws(c14, c7) from t1; ++------+------+--------------------+ +| c14 | c7 | concat_ws(c14, c7) | ++------+------+--------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | -1 | ++------+------+--------------------+ +select c14, c7, interval(c14, c7) from t1; ++------+------+-------------------+ +| c14 | c7 | interval(c14, c7) | ++------+------+-------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | 1 | ++------+------+-------------------+ + +select c14, c8, make_set(c14, c8) from t1; ++------+------+-------------------+ +| c14 | c8 | make_set(c14, c8) | ++------+------+-------------------+ +| 4.5 | 2 | | +| 4.5 | 2 | | ++------+------+-------------------+ +select c14, c8, concat_ws(c14, c8) from t1; ++------+------+--------------------+ +| c14 | c8 | concat_ws(c14, c8) | ++------+------+--------------------+ +| 4.5 | 2 | 2 | +| 4.5 | 2 | 2 | ++------+------+--------------------+ +select c14, c8, interval(c14, c8) from t1; ++------+------+-------------------+ +| c14 | c8 | interval(c14, c8) | ++------+------+-------------------+ +| 4.5 | 2 | 1 | +| 4.5 | 2 | 1 | ++------+------+-------------------+ + +select c14, c9, make_set(c14, c9) from t1; ++------+------+-------------------+ +| c14 | c9 | make_set(c14, c9) | ++------+------+-------------------+ +| 4.5 | 1 | | +| 4.5 | -1 | | ++------+------+-------------------+ +select c14, c9, concat_ws(c14, c9) from t1; ++------+------+--------------------+ +| c14 | c9 | concat_ws(c14, c9) | ++------+------+--------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | -1 | ++------+------+--------------------+ +select c14, c9, interval(c14, c9) from t1; ++------+------+-------------------+ +| c14 | c9 | interval(c14, c9) | ++------+------+-------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | 1 | ++------+------+-------------------+ + +select c14, c10, make_set(c14, c10) from t1; ++------+------+--------------------+ +| c14 | c10 | make_set(c14, c10) | ++------+------+--------------------+ +| 4.5 | 2 | | +| 4.5 | 2 | | ++------+------+--------------------+ +select c14, c10, concat_ws(c14, c10) from t1; ++------+------+---------------------+ +| c14 | c10 | concat_ws(c14, c10) | ++------+------+---------------------+ +| 4.5 | 2 | 2 | +| 4.5 | 2 | 2 | ++------+------+---------------------+ +select c14, c10, interval(c14, c10) from t1; ++------+------+--------------------+ +| c14 | c10 | interval(c14, c10) | ++------+------+--------------------+ +| 4.5 | 2 | 1 | +| 4.5 | 2 | 1 | ++------+------+--------------------+ + +select c14, c11, make_set(c14, c11) from t1; ++------+------+--------------------+ +| c14 | c11 | make_set(c14, c11) | ++------+------+--------------------+ +| 4.5 | 1 | | +| 4.5 | -1 | | ++------+------+--------------------+ +select c14, c11, concat_ws(c14, c11) from t1; ++------+------+---------------------+ +| c14 | c11 | concat_ws(c14, c11) | ++------+------+---------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | -1 | ++------+------+---------------------+ +select c14, c11, interval(c14, c11) from t1; ++------+------+--------------------+ +| c14 | c11 | interval(c14, c11) | ++------+------+--------------------+ +| 4.5 | 1 | 1 | +| 4.5 | -1 | 1 | ++------+------+--------------------+ + +select c14, c12, make_set(c14, c12) from t1; ++------+------+--------------------+ +| c14 | c12 | make_set(c14, c12) | ++------+------+--------------------+ +| 4.5 | 2 | | +| 4.5 | 2 | | ++------+------+--------------------+ +select c14, c12, concat_ws(c14, c12) from t1; ++------+------+---------------------+ +| c14 | c12 | concat_ws(c14, c12) | ++------+------+---------------------+ +| 4.5 | 2 | 2 | +| 4.5 | 2 | 2 | ++------+------+---------------------+ +select c14, c12, interval(c14, c12) from t1; ++------+------+--------------------+ +| c14 | c12 | interval(c14, c12) | ++------+------+--------------------+ +| 4.5 | 2 | 1 | +| 4.5 | 2 | 1 | ++------+------+--------------------+ + +select c14, c13, make_set(c14, c13) from t1; ++------+------+--------------------+ +| c14 | c13 | make_set(c14, c13) | ++------+------+--------------------+ +| 4.5 | 3.5 | | +| 4.5 | -3.5 | | ++------+------+--------------------+ +select c14, c13, concat_ws(c14, c13) from t1; ++------+------+---------------------+ +| c14 | c13 | concat_ws(c14, c13) | ++------+------+---------------------+ +| 4.5 | 3.5 | 3.5 | +| 4.5 | -3.5 | -3.5 | ++------+------+---------------------+ +select c14, c13, interval(c14, c13) from t1; ++------+------+--------------------+ +| c14 | c13 | interval(c14, c13) | ++------+------+--------------------+ +| 4.5 | 3.5 | 1 | +| 4.5 | -3.5 | 1 | ++------+------+--------------------+ + +select c14, c14, make_set(c14, c14) from t1; ++------+------+--------------------+ +| c14 | c14 | make_set(c14, c14) | ++------+------+--------------------+ +| 4.5 | 4.5 | | +| 4.5 | 4.5 | | ++------+------+--------------------+ +select c14, c14, concat_ws(c14, c14) from t1; ++------+------+---------------------+ +| c14 | c14 | concat_ws(c14, c14) | ++------+------+---------------------+ +| 4.5 | 4.5 | 4.5 | +| 4.5 | 4.5 | 4.5 | ++------+------+---------------------+ +select c14, c14, interval(c14, c14) from t1; ++------+------+--------------------+ +| c14 | c14 | interval(c14, c14) | ++------+------+--------------------+ +| 4.5 | 4.5 | 1 | +| 4.5 | 4.5 | 1 | ++------+------+--------------------+ + +select c14, c15, make_set(c14, c15) from t1; ++------+------+--------------------+ +| c14 | c15 | make_set(c14, c15) | ++------+------+--------------------+ +| 4.5 | 5.5 | | +| 4.5 | -5.5 | | ++------+------+--------------------+ +select c14, c15, concat_ws(c14, c15) from t1; ++------+------+---------------------+ +| c14 | c15 | concat_ws(c14, c15) | ++------+------+---------------------+ +| 4.5 | 5.5 | 5.5 | +| 4.5 | -5.5 | -5.5 | ++------+------+---------------------+ +select c14, c15, interval(c14, c15) from t1; ++------+------+--------------------+ +| c14 | c15 | interval(c14, c15) | ++------+------+--------------------+ +| 4.5 | 5.5 | 0 | +| 4.5 | -5.5 | 1 | ++------+------+--------------------+ + +select c14, c16, make_set(c14, c16) from t1; ++------+------+--------------------+ +| c14 | c16 | make_set(c14, c16) | ++------+------+--------------------+ +| 4.5 | 6.5 | | +| 4.5 | 6.5 | | ++------+------+--------------------+ +select c14, c16, concat_ws(c14, c16) from t1; ++------+------+---------------------+ +| c14 | c16 | concat_ws(c14, c16) | ++------+------+---------------------+ +| 4.5 | 6.5 | 6.5 | +| 4.5 | 6.5 | 6.5 | ++------+------+---------------------+ +select c14, c16, interval(c14, c16) from t1; ++------+------+--------------------+ +| c14 | c16 | interval(c14, c16) | ++------+------+--------------------+ +| 4.5 | 6.5 | 0 | +| 4.5 | 6.5 | 0 | ++------+------+--------------------+ + +select c14, c17, make_set(c14, c17) from t1; ++------+------+--------------------+ +| c14 | c17 | make_set(c14, c17) | ++------+------+--------------------+ +| 4.5 | 8 | | +| 4.5 | -8 | | ++------+------+--------------------+ +select c14, c17, concat_ws(c14, c17) from t1; ++------+------+---------------------+ +| c14 | c17 | concat_ws(c14, c17) | ++------+------+---------------------+ +| 4.5 | 8 | 8 | +| 4.5 | -8 | -8 | ++------+------+---------------------+ +select c14, c17, interval(c14, c17) from t1; ++------+------+--------------------+ +| c14 | c17 | interval(c14, c17) | ++------+------+--------------------+ +| 4.5 | 8 | 0 | +| 4.5 | -8 | 1 | ++------+------+--------------------+ + +select c14, c18, make_set(c14, c18) from t1; ++------+------+--------------------+ +| c14 | c18 | make_set(c14, c18) | ++------+------+--------------------+ +| 4.5 | 9 | | +| 4.5 | 9 | | ++------+------+--------------------+ +select c14, c18, concat_ws(c14, c18) from t1; ++------+------+---------------------+ +| c14 | c18 | concat_ws(c14, c18) | ++------+------+---------------------+ +| 4.5 | 9 | 9 | +| 4.5 | 9 | 9 | ++------+------+---------------------+ +select c14, c18, interval(c14, c18) from t1; ++------+------+--------------------+ +| c14 | c18 | interval(c14, c18) | ++------+------+--------------------+ +| 4.5 | 9 | 0 | +| 4.5 | 9 | 0 | ++------+------+--------------------+ + +select c14, c19, make_set(c14, c19) from t1; ++------+---------------------+--------------------+ +| c14 | c19 | make_set(c14, c19) | ++------+---------------------+--------------------+ +| 4.5 | 2019-12-01 12:00:00 | | +| 4.5 | 2019-12-01 12:00:00 | | ++------+---------------------+--------------------+ +select c14, c19, concat_ws(c14, c19) from t1; ++------+---------------------+---------------------+ +| c14 | c19 | concat_ws(c14, c19) | ++------+---------------------+---------------------+ +| 4.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 4.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c14, c19, interval(c14, c19) from t1; ++------+---------------------+--------------------+ +| c14 | c19 | interval(c14, c19) | ++------+---------------------+--------------------+ +| 4.5 | 2019-12-01 12:00:00 | 0 | +| 4.5 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c14, c20, make_set(c14, c20) from t1; ++------+---------------------+--------------------+ +| c14 | c20 | make_set(c14, c20) | ++------+---------------------+--------------------+ +| 4.5 | 2019-12-03 06:00:00 | | +| 4.5 | 2019-12-03 06:00:00 | | ++------+---------------------+--------------------+ +select c14, c20, concat_ws(c14, c20) from t1; ++------+---------------------+---------------------+ +| c14 | c20 | concat_ws(c14, c20) | ++------+---------------------+---------------------+ +| 4.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 4.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c14, c20, interval(c14, c20) from t1; ++------+---------------------+--------------------+ +| c14 | c20 | interval(c14, c20) | ++------+---------------------+--------------------+ +| 4.5 | 2019-12-03 06:00:00 | 0 | +| 4.5 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c14, c21, make_set(c14, c21) from t1; ++------+------+--------------------+ +| c14 | c21 | make_set(c14, c21) | ++------+------+--------------------+ +| 4.5 | 9.5 | | +| 4.5 | -9.5 | | ++------+------+--------------------+ +select c14, c21, concat_ws(c14, c21) from t1; ++------+------+---------------------+ +| c14 | c21 | concat_ws(c14, c21) | ++------+------+---------------------+ +| 4.5 | 9.5 | 9.5 | +| 4.5 | -9.5 | -9.5 | ++------+------+---------------------+ +select c14, c21, interval(c14, c21) from t1; ++------+------+--------------------+ +| c14 | c21 | interval(c14, c21) | ++------+------+--------------------+ +| 4.5 | 9.5 | 0 | +| 4.5 | -9.5 | 1 | ++------+------+--------------------+ + +select c14, c22, make_set(c14, c22) from t1; ++------+------+--------------------+ +| c14 | c22 | make_set(c14, c22) | ++------+------+--------------------+ +| 4.5 | 10.5 | | +| 4.5 | 10.5 | | ++------+------+--------------------+ +select c14, c22, concat_ws(c14, c22) from t1; ++------+------+---------------------+ +| c14 | c22 | concat_ws(c14, c22) | ++------+------+---------------------+ +| 4.5 | 10.5 | 10.5 | +| 4.5 | 10.5 | 10.5 | ++------+------+---------------------+ +select c14, c22, interval(c14, c22) from t1; ++------+------+--------------------+ +| c14 | c22 | interval(c14, c22) | ++------+------+--------------------+ +| 4.5 | 10.5 | 0 | +| 4.5 | 10.5 | 0 | ++------+------+--------------------+ + +select c15, quote(c15) from t1; ++------+------------+ +| c15 | quote(c15) | ++------+------------+ +| 5.5 | '5.5' | +| -5.5 | '-5.5' | ++------+------------+ +select c15, sys_op_opnsize(c15) from t1; ++------+---------------------+ +| c15 | sys_op_opnsize(c15) | ++------+---------------------+ +| 5.5 | 20 | +| -5.5 | 20 | ++------+---------------------+ +select c15, c1, make_set(c15, c1) from t1; ++------+------+-------------------+ +| c15 | c1 | make_set(c15, c1) | ++------+------+-------------------+ +| 5.5 | 1 | | +| -5.5 | -1 | | ++------+------+-------------------+ +select c15, c1, concat_ws(c15, c1) from t1; ++------+------+--------------------+ +| c15 | c1 | concat_ws(c15, c1) | ++------+------+--------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | -1 | ++------+------+--------------------+ +select c15, c1, interval(c15, c1) from t1; ++------+------+-------------------+ +| c15 | c1 | interval(c15, c1) | ++------+------+-------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | 0 | ++------+------+-------------------+ + +select c15, c2, make_set(c15, c2) from t1; ++------+------+-------------------+ +| c15 | c2 | make_set(c15, c2) | ++------+------+-------------------+ +| 5.5 | 2 | | +| -5.5 | 2 | | ++------+------+-------------------+ +select c15, c2, concat_ws(c15, c2) from t1; ++------+------+--------------------+ +| c15 | c2 | concat_ws(c15, c2) | ++------+------+--------------------+ +| 5.5 | 2 | 2 | +| -5.5 | 2 | 2 | ++------+------+--------------------+ +select c15, c2, interval(c15, c2) from t1; ++------+------+-------------------+ +| c15 | c2 | interval(c15, c2) | ++------+------+-------------------+ +| 5.5 | 2 | 1 | +| -5.5 | 2 | 0 | ++------+------+-------------------+ + +select c15, c3, make_set(c15, c3) from t1; ++------+------+-------------------+ +| c15 | c3 | make_set(c15, c3) | ++------+------+-------------------+ +| 5.5 | 1 | | +| -5.5 | -1 | | ++------+------+-------------------+ +select c15, c3, concat_ws(c15, c3) from t1; ++------+------+--------------------+ +| c15 | c3 | concat_ws(c15, c3) | ++------+------+--------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | -1 | ++------+------+--------------------+ +select c15, c3, interval(c15, c3) from t1; ++------+------+-------------------+ +| c15 | c3 | interval(c15, c3) | ++------+------+-------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | 0 | ++------+------+-------------------+ + +select c15, c4, make_set(c15, c4) from t1; ++------+------+-------------------+ +| c15 | c4 | make_set(c15, c4) | ++------+------+-------------------+ +| 5.5 | 2 | | +| -5.5 | 2 | | ++------+------+-------------------+ +select c15, c4, concat_ws(c15, c4) from t1; ++------+------+--------------------+ +| c15 | c4 | concat_ws(c15, c4) | ++------+------+--------------------+ +| 5.5 | 2 | 2 | +| -5.5 | 2 | 2 | ++------+------+--------------------+ +select c15, c4, interval(c15, c4) from t1; ++------+------+-------------------+ +| c15 | c4 | interval(c15, c4) | ++------+------+-------------------+ +| 5.5 | 2 | 1 | +| -5.5 | 2 | 0 | ++------+------+-------------------+ + +select c15, c5, make_set(c15, c5) from t1; ++------+------+-------------------+ +| c15 | c5 | make_set(c15, c5) | ++------+------+-------------------+ +| 5.5 | 1 | | +| -5.5 | -1 | | ++------+------+-------------------+ +select c15, c5, concat_ws(c15, c5) from t1; ++------+------+--------------------+ +| c15 | c5 | concat_ws(c15, c5) | ++------+------+--------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | -1 | ++------+------+--------------------+ +select c15, c5, interval(c15, c5) from t1; ++------+------+-------------------+ +| c15 | c5 | interval(c15, c5) | ++------+------+-------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | 0 | ++------+------+-------------------+ + +select c15, c6, make_set(c15, c6) from t1; ++------+------+-------------------+ +| c15 | c6 | make_set(c15, c6) | ++------+------+-------------------+ +| 5.5 | 2 | | +| -5.5 | 2 | | ++------+------+-------------------+ +select c15, c6, concat_ws(c15, c6) from t1; ++------+------+--------------------+ +| c15 | c6 | concat_ws(c15, c6) | ++------+------+--------------------+ +| 5.5 | 2 | 2 | +| -5.5 | 2 | 2 | ++------+------+--------------------+ +select c15, c6, interval(c15, c6) from t1; ++------+------+-------------------+ +| c15 | c6 | interval(c15, c6) | ++------+------+-------------------+ +| 5.5 | 2 | 1 | +| -5.5 | 2 | 0 | ++------+------+-------------------+ + +select c15, c7, make_set(c15, c7) from t1; ++------+------+-------------------+ +| c15 | c7 | make_set(c15, c7) | ++------+------+-------------------+ +| 5.5 | 1 | | +| -5.5 | -1 | | ++------+------+-------------------+ +select c15, c7, concat_ws(c15, c7) from t1; ++------+------+--------------------+ +| c15 | c7 | concat_ws(c15, c7) | ++------+------+--------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | -1 | ++------+------+--------------------+ +select c15, c7, interval(c15, c7) from t1; ++------+------+-------------------+ +| c15 | c7 | interval(c15, c7) | ++------+------+-------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | 0 | ++------+------+-------------------+ + +select c15, c8, make_set(c15, c8) from t1; ++------+------+-------------------+ +| c15 | c8 | make_set(c15, c8) | ++------+------+-------------------+ +| 5.5 | 2 | | +| -5.5 | 2 | | ++------+------+-------------------+ +select c15, c8, concat_ws(c15, c8) from t1; ++------+------+--------------------+ +| c15 | c8 | concat_ws(c15, c8) | ++------+------+--------------------+ +| 5.5 | 2 | 2 | +| -5.5 | 2 | 2 | ++------+------+--------------------+ +select c15, c8, interval(c15, c8) from t1; ++------+------+-------------------+ +| c15 | c8 | interval(c15, c8) | ++------+------+-------------------+ +| 5.5 | 2 | 1 | +| -5.5 | 2 | 0 | ++------+------+-------------------+ + +select c15, c9, make_set(c15, c9) from t1; ++------+------+-------------------+ +| c15 | c9 | make_set(c15, c9) | ++------+------+-------------------+ +| 5.5 | 1 | | +| -5.5 | -1 | | ++------+------+-------------------+ +select c15, c9, concat_ws(c15, c9) from t1; ++------+------+--------------------+ +| c15 | c9 | concat_ws(c15, c9) | ++------+------+--------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | -1 | ++------+------+--------------------+ +select c15, c9, interval(c15, c9) from t1; ++------+------+-------------------+ +| c15 | c9 | interval(c15, c9) | ++------+------+-------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | 0 | ++------+------+-------------------+ + +select c15, c10, make_set(c15, c10) from t1; ++------+------+--------------------+ +| c15 | c10 | make_set(c15, c10) | ++------+------+--------------------+ +| 5.5 | 2 | | +| -5.5 | 2 | | ++------+------+--------------------+ +select c15, c10, concat_ws(c15, c10) from t1; ++------+------+---------------------+ +| c15 | c10 | concat_ws(c15, c10) | ++------+------+---------------------+ +| 5.5 | 2 | 2 | +| -5.5 | 2 | 2 | ++------+------+---------------------+ +select c15, c10, interval(c15, c10) from t1; ++------+------+--------------------+ +| c15 | c10 | interval(c15, c10) | ++------+------+--------------------+ +| 5.5 | 2 | 1 | +| -5.5 | 2 | 0 | ++------+------+--------------------+ + +select c15, c11, make_set(c15, c11) from t1; ++------+------+--------------------+ +| c15 | c11 | make_set(c15, c11) | ++------+------+--------------------+ +| 5.5 | 1 | | +| -5.5 | -1 | | ++------+------+--------------------+ +select c15, c11, concat_ws(c15, c11) from t1; ++------+------+---------------------+ +| c15 | c11 | concat_ws(c15, c11) | ++------+------+---------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | -1 | ++------+------+---------------------+ +select c15, c11, interval(c15, c11) from t1; ++------+------+--------------------+ +| c15 | c11 | interval(c15, c11) | ++------+------+--------------------+ +| 5.5 | 1 | 1 | +| -5.5 | -1 | 0 | ++------+------+--------------------+ + +select c15, c12, make_set(c15, c12) from t1; ++------+------+--------------------+ +| c15 | c12 | make_set(c15, c12) | ++------+------+--------------------+ +| 5.5 | 2 | | +| -5.5 | 2 | | ++------+------+--------------------+ +select c15, c12, concat_ws(c15, c12) from t1; ++------+------+---------------------+ +| c15 | c12 | concat_ws(c15, c12) | ++------+------+---------------------+ +| 5.5 | 2 | 2 | +| -5.5 | 2 | 2 | ++------+------+---------------------+ +select c15, c12, interval(c15, c12) from t1; ++------+------+--------------------+ +| c15 | c12 | interval(c15, c12) | ++------+------+--------------------+ +| 5.5 | 2 | 1 | +| -5.5 | 2 | 0 | ++------+------+--------------------+ + +select c15, c13, make_set(c15, c13) from t1; ++------+------+--------------------+ +| c15 | c13 | make_set(c15, c13) | ++------+------+--------------------+ +| 5.5 | 3.5 | | +| -5.5 | -3.5 | | ++------+------+--------------------+ +select c15, c13, concat_ws(c15, c13) from t1; ++------+------+---------------------+ +| c15 | c13 | concat_ws(c15, c13) | ++------+------+---------------------+ +| 5.5 | 3.5 | 3.5 | +| -5.5 | -3.5 | -3.5 | ++------+------+---------------------+ +select c15, c13, interval(c15, c13) from t1; ++------+------+--------------------+ +| c15 | c13 | interval(c15, c13) | ++------+------+--------------------+ +| 5.5 | 3.5 | 1 | +| -5.5 | -3.5 | 0 | ++------+------+--------------------+ + +select c15, c14, make_set(c15, c14) from t1; ++------+------+--------------------+ +| c15 | c14 | make_set(c15, c14) | ++------+------+--------------------+ +| 5.5 | 4.5 | | +| -5.5 | 4.5 | | ++------+------+--------------------+ +select c15, c14, concat_ws(c15, c14) from t1; ++------+------+---------------------+ +| c15 | c14 | concat_ws(c15, c14) | ++------+------+---------------------+ +| 5.5 | 4.5 | 4.5 | +| -5.5 | 4.5 | 4.5 | ++------+------+---------------------+ +select c15, c14, interval(c15, c14) from t1; ++------+------+--------------------+ +| c15 | c14 | interval(c15, c14) | ++------+------+--------------------+ +| 5.5 | 4.5 | 1 | +| -5.5 | 4.5 | 0 | ++------+------+--------------------+ + +select c15, c15, make_set(c15, c15) from t1; ++------+------+--------------------+ +| c15 | c15 | make_set(c15, c15) | ++------+------+--------------------+ +| 5.5 | 5.5 | | +| -5.5 | -5.5 | | ++------+------+--------------------+ +select c15, c15, concat_ws(c15, c15) from t1; ++------+------+---------------------+ +| c15 | c15 | concat_ws(c15, c15) | ++------+------+---------------------+ +| 5.5 | 5.5 | 5.5 | +| -5.5 | -5.5 | -5.5 | ++------+------+---------------------+ +select c15, c15, interval(c15, c15) from t1; ++------+------+--------------------+ +| c15 | c15 | interval(c15, c15) | ++------+------+--------------------+ +| 5.5 | 5.5 | 1 | +| -5.5 | -5.5 | 1 | ++------+------+--------------------+ + +select c15, c16, make_set(c15, c16) from t1; ++------+------+--------------------+ +| c15 | c16 | make_set(c15, c16) | ++------+------+--------------------+ +| 5.5 | 6.5 | | +| -5.5 | 6.5 | | ++------+------+--------------------+ +select c15, c16, concat_ws(c15, c16) from t1; ++------+------+---------------------+ +| c15 | c16 | concat_ws(c15, c16) | ++------+------+---------------------+ +| 5.5 | 6.5 | 6.5 | +| -5.5 | 6.5 | 6.5 | ++------+------+---------------------+ +select c15, c16, interval(c15, c16) from t1; ++------+------+--------------------+ +| c15 | c16 | interval(c15, c16) | ++------+------+--------------------+ +| 5.5 | 6.5 | 0 | +| -5.5 | 6.5 | 0 | ++------+------+--------------------+ + +select c15, c17, make_set(c15, c17) from t1; ++------+------+--------------------+ +| c15 | c17 | make_set(c15, c17) | ++------+------+--------------------+ +| 5.5 | 8 | | +| -5.5 | -8 | | ++------+------+--------------------+ +select c15, c17, concat_ws(c15, c17) from t1; ++------+------+---------------------+ +| c15 | c17 | concat_ws(c15, c17) | ++------+------+---------------------+ +| 5.5 | 8 | 8 | +| -5.5 | -8 | -8 | ++------+------+---------------------+ +select c15, c17, interval(c15, c17) from t1; ++------+------+--------------------+ +| c15 | c17 | interval(c15, c17) | ++------+------+--------------------+ +| 5.5 | 8 | 0 | +| -5.5 | -8 | 1 | ++------+------+--------------------+ + +select c15, c18, make_set(c15, c18) from t1; ++------+------+--------------------+ +| c15 | c18 | make_set(c15, c18) | ++------+------+--------------------+ +| 5.5 | 9 | | +| -5.5 | 9 | | ++------+------+--------------------+ +select c15, c18, concat_ws(c15, c18) from t1; ++------+------+---------------------+ +| c15 | c18 | concat_ws(c15, c18) | ++------+------+---------------------+ +| 5.5 | 9 | 9 | +| -5.5 | 9 | 9 | ++------+------+---------------------+ +select c15, c18, interval(c15, c18) from t1; ++------+------+--------------------+ +| c15 | c18 | interval(c15, c18) | ++------+------+--------------------+ +| 5.5 | 9 | 0 | +| -5.5 | 9 | 0 | ++------+------+--------------------+ + +select c15, c19, make_set(c15, c19) from t1; ++------+---------------------+--------------------+ +| c15 | c19 | make_set(c15, c19) | ++------+---------------------+--------------------+ +| 5.5 | 2019-12-01 12:00:00 | | +| -5.5 | 2019-12-01 12:00:00 | | ++------+---------------------+--------------------+ +select c15, c19, concat_ws(c15, c19) from t1; ++------+---------------------+---------------------+ +| c15 | c19 | concat_ws(c15, c19) | ++------+---------------------+---------------------+ +| 5.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -5.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c15, c19, interval(c15, c19) from t1; ++------+---------------------+--------------------+ +| c15 | c19 | interval(c15, c19) | ++------+---------------------+--------------------+ +| 5.5 | 2019-12-01 12:00:00 | 0 | +| -5.5 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c15, c20, make_set(c15, c20) from t1; ++------+---------------------+--------------------+ +| c15 | c20 | make_set(c15, c20) | ++------+---------------------+--------------------+ +| 5.5 | 2019-12-03 06:00:00 | | +| -5.5 | 2019-12-03 06:00:00 | | ++------+---------------------+--------------------+ +select c15, c20, concat_ws(c15, c20) from t1; ++------+---------------------+---------------------+ +| c15 | c20 | concat_ws(c15, c20) | ++------+---------------------+---------------------+ +| 5.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -5.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c15, c20, interval(c15, c20) from t1; ++------+---------------------+--------------------+ +| c15 | c20 | interval(c15, c20) | ++------+---------------------+--------------------+ +| 5.5 | 2019-12-03 06:00:00 | 0 | +| -5.5 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c15, c21, make_set(c15, c21) from t1; ++------+------+--------------------+ +| c15 | c21 | make_set(c15, c21) | ++------+------+--------------------+ +| 5.5 | 9.5 | | +| -5.5 | -9.5 | | ++------+------+--------------------+ +select c15, c21, concat_ws(c15, c21) from t1; ++------+------+---------------------+ +| c15 | c21 | concat_ws(c15, c21) | ++------+------+---------------------+ +| 5.5 | 9.5 | 9.5 | +| -5.5 | -9.5 | -9.5 | ++------+------+---------------------+ +select c15, c21, interval(c15, c21) from t1; ++------+------+--------------------+ +| c15 | c21 | interval(c15, c21) | ++------+------+--------------------+ +| 5.5 | 9.5 | 0 | +| -5.5 | -9.5 | 1 | ++------+------+--------------------+ + +select c15, c22, make_set(c15, c22) from t1; ++------+------+--------------------+ +| c15 | c22 | make_set(c15, c22) | ++------+------+--------------------+ +| 5.5 | 10.5 | | +| -5.5 | 10.5 | | ++------+------+--------------------+ +select c15, c22, concat_ws(c15, c22) from t1; ++------+------+---------------------+ +| c15 | c22 | concat_ws(c15, c22) | ++------+------+---------------------+ +| 5.5 | 10.5 | 10.5 | +| -5.5 | 10.5 | 10.5 | ++------+------+---------------------+ +select c15, c22, interval(c15, c22) from t1; ++------+------+--------------------+ +| c15 | c22 | interval(c15, c22) | ++------+------+--------------------+ +| 5.5 | 10.5 | 0 | +| -5.5 | 10.5 | 0 | ++------+------+--------------------+ + +select c16, quote(c16) from t1; ++------+------------+ +| c16 | quote(c16) | ++------+------------+ +| 6.5 | '6.5' | +| 6.5 | '6.5' | ++------+------------+ +select c16, sys_op_opnsize(c16) from t1; ++------+---------------------+ +| c16 | sys_op_opnsize(c16) | ++------+---------------------+ +| 6.5 | 20 | +| 6.5 | 20 | ++------+---------------------+ +select c16, c1, make_set(c16, c1) from t1; ++------+------+-------------------+ +| c16 | c1 | make_set(c16, c1) | ++------+------+-------------------+ +| 6.5 | 1 | | +| 6.5 | -1 | | ++------+------+-------------------+ +select c16, c1, concat_ws(c16, c1) from t1; ++------+------+--------------------+ +| c16 | c1 | concat_ws(c16, c1) | ++------+------+--------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | -1 | ++------+------+--------------------+ +select c16, c1, interval(c16, c1) from t1; ++------+------+-------------------+ +| c16 | c1 | interval(c16, c1) | ++------+------+-------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | 1 | ++------+------+-------------------+ + +select c16, c2, make_set(c16, c2) from t1; ++------+------+-------------------+ +| c16 | c2 | make_set(c16, c2) | ++------+------+-------------------+ +| 6.5 | 2 | | +| 6.5 | 2 | | ++------+------+-------------------+ +select c16, c2, concat_ws(c16, c2) from t1; ++------+------+--------------------+ +| c16 | c2 | concat_ws(c16, c2) | ++------+------+--------------------+ +| 6.5 | 2 | 2 | +| 6.5 | 2 | 2 | ++------+------+--------------------+ +select c16, c2, interval(c16, c2) from t1; ++------+------+-------------------+ +| c16 | c2 | interval(c16, c2) | ++------+------+-------------------+ +| 6.5 | 2 | 1 | +| 6.5 | 2 | 1 | ++------+------+-------------------+ + +select c16, c3, make_set(c16, c3) from t1; ++------+------+-------------------+ +| c16 | c3 | make_set(c16, c3) | ++------+------+-------------------+ +| 6.5 | 1 | | +| 6.5 | -1 | | ++------+------+-------------------+ +select c16, c3, concat_ws(c16, c3) from t1; ++------+------+--------------------+ +| c16 | c3 | concat_ws(c16, c3) | ++------+------+--------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | -1 | ++------+------+--------------------+ +select c16, c3, interval(c16, c3) from t1; ++------+------+-------------------+ +| c16 | c3 | interval(c16, c3) | ++------+------+-------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | 1 | ++------+------+-------------------+ + +select c16, c4, make_set(c16, c4) from t1; ++------+------+-------------------+ +| c16 | c4 | make_set(c16, c4) | ++------+------+-------------------+ +| 6.5 | 2 | | +| 6.5 | 2 | | ++------+------+-------------------+ +select c16, c4, concat_ws(c16, c4) from t1; ++------+------+--------------------+ +| c16 | c4 | concat_ws(c16, c4) | ++------+------+--------------------+ +| 6.5 | 2 | 2 | +| 6.5 | 2 | 2 | ++------+------+--------------------+ +select c16, c4, interval(c16, c4) from t1; ++------+------+-------------------+ +| c16 | c4 | interval(c16, c4) | ++------+------+-------------------+ +| 6.5 | 2 | 1 | +| 6.5 | 2 | 1 | ++------+------+-------------------+ + +select c16, c5, make_set(c16, c5) from t1; ++------+------+-------------------+ +| c16 | c5 | make_set(c16, c5) | ++------+------+-------------------+ +| 6.5 | 1 | | +| 6.5 | -1 | | ++------+------+-------------------+ +select c16, c5, concat_ws(c16, c5) from t1; ++------+------+--------------------+ +| c16 | c5 | concat_ws(c16, c5) | ++------+------+--------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | -1 | ++------+------+--------------------+ +select c16, c5, interval(c16, c5) from t1; ++------+------+-------------------+ +| c16 | c5 | interval(c16, c5) | ++------+------+-------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | 1 | ++------+------+-------------------+ + +select c16, c6, make_set(c16, c6) from t1; ++------+------+-------------------+ +| c16 | c6 | make_set(c16, c6) | ++------+------+-------------------+ +| 6.5 | 2 | | +| 6.5 | 2 | | ++------+------+-------------------+ +select c16, c6, concat_ws(c16, c6) from t1; ++------+------+--------------------+ +| c16 | c6 | concat_ws(c16, c6) | ++------+------+--------------------+ +| 6.5 | 2 | 2 | +| 6.5 | 2 | 2 | ++------+------+--------------------+ +select c16, c6, interval(c16, c6) from t1; ++------+------+-------------------+ +| c16 | c6 | interval(c16, c6) | ++------+------+-------------------+ +| 6.5 | 2 | 1 | +| 6.5 | 2 | 1 | ++------+------+-------------------+ + +select c16, c7, make_set(c16, c7) from t1; ++------+------+-------------------+ +| c16 | c7 | make_set(c16, c7) | ++------+------+-------------------+ +| 6.5 | 1 | | +| 6.5 | -1 | | ++------+------+-------------------+ +select c16, c7, concat_ws(c16, c7) from t1; ++------+------+--------------------+ +| c16 | c7 | concat_ws(c16, c7) | ++------+------+--------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | -1 | ++------+------+--------------------+ +select c16, c7, interval(c16, c7) from t1; ++------+------+-------------------+ +| c16 | c7 | interval(c16, c7) | ++------+------+-------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | 1 | ++------+------+-------------------+ + +select c16, c8, make_set(c16, c8) from t1; ++------+------+-------------------+ +| c16 | c8 | make_set(c16, c8) | ++------+------+-------------------+ +| 6.5 | 2 | | +| 6.5 | 2 | | ++------+------+-------------------+ +select c16, c8, concat_ws(c16, c8) from t1; ++------+------+--------------------+ +| c16 | c8 | concat_ws(c16, c8) | ++------+------+--------------------+ +| 6.5 | 2 | 2 | +| 6.5 | 2 | 2 | ++------+------+--------------------+ +select c16, c8, interval(c16, c8) from t1; ++------+------+-------------------+ +| c16 | c8 | interval(c16, c8) | ++------+------+-------------------+ +| 6.5 | 2 | 1 | +| 6.5 | 2 | 1 | ++------+------+-------------------+ + +select c16, c9, make_set(c16, c9) from t1; ++------+------+-------------------+ +| c16 | c9 | make_set(c16, c9) | ++------+------+-------------------+ +| 6.5 | 1 | | +| 6.5 | -1 | | ++------+------+-------------------+ +select c16, c9, concat_ws(c16, c9) from t1; ++------+------+--------------------+ +| c16 | c9 | concat_ws(c16, c9) | ++------+------+--------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | -1 | ++------+------+--------------------+ +select c16, c9, interval(c16, c9) from t1; ++------+------+-------------------+ +| c16 | c9 | interval(c16, c9) | ++------+------+-------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | 1 | ++------+------+-------------------+ + +select c16, c10, make_set(c16, c10) from t1; ++------+------+--------------------+ +| c16 | c10 | make_set(c16, c10) | ++------+------+--------------------+ +| 6.5 | 2 | | +| 6.5 | 2 | | ++------+------+--------------------+ +select c16, c10, concat_ws(c16, c10) from t1; ++------+------+---------------------+ +| c16 | c10 | concat_ws(c16, c10) | ++------+------+---------------------+ +| 6.5 | 2 | 2 | +| 6.5 | 2 | 2 | ++------+------+---------------------+ +select c16, c10, interval(c16, c10) from t1; ++------+------+--------------------+ +| c16 | c10 | interval(c16, c10) | ++------+------+--------------------+ +| 6.5 | 2 | 1 | +| 6.5 | 2 | 1 | ++------+------+--------------------+ + +select c16, c11, make_set(c16, c11) from t1; ++------+------+--------------------+ +| c16 | c11 | make_set(c16, c11) | ++------+------+--------------------+ +| 6.5 | 1 | | +| 6.5 | -1 | | ++------+------+--------------------+ +select c16, c11, concat_ws(c16, c11) from t1; ++------+------+---------------------+ +| c16 | c11 | concat_ws(c16, c11) | ++------+------+---------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | -1 | ++------+------+---------------------+ +select c16, c11, interval(c16, c11) from t1; ++------+------+--------------------+ +| c16 | c11 | interval(c16, c11) | ++------+------+--------------------+ +| 6.5 | 1 | 1 | +| 6.5 | -1 | 1 | ++------+------+--------------------+ + +select c16, c12, make_set(c16, c12) from t1; ++------+------+--------------------+ +| c16 | c12 | make_set(c16, c12) | ++------+------+--------------------+ +| 6.5 | 2 | | +| 6.5 | 2 | | ++------+------+--------------------+ +select c16, c12, concat_ws(c16, c12) from t1; ++------+------+---------------------+ +| c16 | c12 | concat_ws(c16, c12) | ++------+------+---------------------+ +| 6.5 | 2 | 2 | +| 6.5 | 2 | 2 | ++------+------+---------------------+ +select c16, c12, interval(c16, c12) from t1; ++------+------+--------------------+ +| c16 | c12 | interval(c16, c12) | ++------+------+--------------------+ +| 6.5 | 2 | 1 | +| 6.5 | 2 | 1 | ++------+------+--------------------+ + +select c16, c13, make_set(c16, c13) from t1; ++------+------+--------------------+ +| c16 | c13 | make_set(c16, c13) | ++------+------+--------------------+ +| 6.5 | 3.5 | | +| 6.5 | -3.5 | | ++------+------+--------------------+ +select c16, c13, concat_ws(c16, c13) from t1; ++------+------+---------------------+ +| c16 | c13 | concat_ws(c16, c13) | ++------+------+---------------------+ +| 6.5 | 3.5 | 3.5 | +| 6.5 | -3.5 | -3.5 | ++------+------+---------------------+ +select c16, c13, interval(c16, c13) from t1; ++------+------+--------------------+ +| c16 | c13 | interval(c16, c13) | ++------+------+--------------------+ +| 6.5 | 3.5 | 1 | +| 6.5 | -3.5 | 1 | ++------+------+--------------------+ + +select c16, c14, make_set(c16, c14) from t1; ++------+------+--------------------+ +| c16 | c14 | make_set(c16, c14) | ++------+------+--------------------+ +| 6.5 | 4.5 | | +| 6.5 | 4.5 | | ++------+------+--------------------+ +select c16, c14, concat_ws(c16, c14) from t1; ++------+------+---------------------+ +| c16 | c14 | concat_ws(c16, c14) | ++------+------+---------------------+ +| 6.5 | 4.5 | 4.5 | +| 6.5 | 4.5 | 4.5 | ++------+------+---------------------+ +select c16, c14, interval(c16, c14) from t1; ++------+------+--------------------+ +| c16 | c14 | interval(c16, c14) | ++------+------+--------------------+ +| 6.5 | 4.5 | 1 | +| 6.5 | 4.5 | 1 | ++------+------+--------------------+ + +select c16, c15, make_set(c16, c15) from t1; ++------+------+--------------------+ +| c16 | c15 | make_set(c16, c15) | ++------+------+--------------------+ +| 6.5 | 5.5 | | +| 6.5 | -5.5 | | ++------+------+--------------------+ +select c16, c15, concat_ws(c16, c15) from t1; ++------+------+---------------------+ +| c16 | c15 | concat_ws(c16, c15) | ++------+------+---------------------+ +| 6.5 | 5.5 | 5.5 | +| 6.5 | -5.5 | -5.5 | ++------+------+---------------------+ +select c16, c15, interval(c16, c15) from t1; ++------+------+--------------------+ +| c16 | c15 | interval(c16, c15) | ++------+------+--------------------+ +| 6.5 | 5.5 | 1 | +| 6.5 | -5.5 | 1 | ++------+------+--------------------+ + +select c16, c16, make_set(c16, c16) from t1; ++------+------+--------------------+ +| c16 | c16 | make_set(c16, c16) | ++------+------+--------------------+ +| 6.5 | 6.5 | | +| 6.5 | 6.5 | | ++------+------+--------------------+ +select c16, c16, concat_ws(c16, c16) from t1; ++------+------+---------------------+ +| c16 | c16 | concat_ws(c16, c16) | ++------+------+---------------------+ +| 6.5 | 6.5 | 6.5 | +| 6.5 | 6.5 | 6.5 | ++------+------+---------------------+ +select c16, c16, interval(c16, c16) from t1; ++------+------+--------------------+ +| c16 | c16 | interval(c16, c16) | ++------+------+--------------------+ +| 6.5 | 6.5 | 1 | +| 6.5 | 6.5 | 1 | ++------+------+--------------------+ + +select c16, c17, make_set(c16, c17) from t1; ++------+------+--------------------+ +| c16 | c17 | make_set(c16, c17) | ++------+------+--------------------+ +| 6.5 | 8 | | +| 6.5 | -8 | | ++------+------+--------------------+ +select c16, c17, concat_ws(c16, c17) from t1; ++------+------+---------------------+ +| c16 | c17 | concat_ws(c16, c17) | ++------+------+---------------------+ +| 6.5 | 8 | 8 | +| 6.5 | -8 | -8 | ++------+------+---------------------+ +select c16, c17, interval(c16, c17) from t1; ++------+------+--------------------+ +| c16 | c17 | interval(c16, c17) | ++------+------+--------------------+ +| 6.5 | 8 | 0 | +| 6.5 | -8 | 1 | ++------+------+--------------------+ + +select c16, c18, make_set(c16, c18) from t1; ++------+------+--------------------+ +| c16 | c18 | make_set(c16, c18) | ++------+------+--------------------+ +| 6.5 | 9 | | +| 6.5 | 9 | | ++------+------+--------------------+ +select c16, c18, concat_ws(c16, c18) from t1; ++------+------+---------------------+ +| c16 | c18 | concat_ws(c16, c18) | ++------+------+---------------------+ +| 6.5 | 9 | 9 | +| 6.5 | 9 | 9 | ++------+------+---------------------+ +select c16, c18, interval(c16, c18) from t1; ++------+------+--------------------+ +| c16 | c18 | interval(c16, c18) | ++------+------+--------------------+ +| 6.5 | 9 | 0 | +| 6.5 | 9 | 0 | ++------+------+--------------------+ + +select c16, c19, make_set(c16, c19) from t1; ++------+---------------------+--------------------+ +| c16 | c19 | make_set(c16, c19) | ++------+---------------------+--------------------+ +| 6.5 | 2019-12-01 12:00:00 | | +| 6.5 | 2019-12-01 12:00:00 | | ++------+---------------------+--------------------+ +select c16, c19, concat_ws(c16, c19) from t1; ++------+---------------------+---------------------+ +| c16 | c19 | concat_ws(c16, c19) | ++------+---------------------+---------------------+ +| 6.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 6.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c16, c19, interval(c16, c19) from t1; ++------+---------------------+--------------------+ +| c16 | c19 | interval(c16, c19) | ++------+---------------------+--------------------+ +| 6.5 | 2019-12-01 12:00:00 | 0 | +| 6.5 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c16, c20, make_set(c16, c20) from t1; ++------+---------------------+--------------------+ +| c16 | c20 | make_set(c16, c20) | ++------+---------------------+--------------------+ +| 6.5 | 2019-12-03 06:00:00 | | +| 6.5 | 2019-12-03 06:00:00 | | ++------+---------------------+--------------------+ +select c16, c20, concat_ws(c16, c20) from t1; ++------+---------------------+---------------------+ +| c16 | c20 | concat_ws(c16, c20) | ++------+---------------------+---------------------+ +| 6.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 6.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c16, c20, interval(c16, c20) from t1; ++------+---------------------+--------------------+ +| c16 | c20 | interval(c16, c20) | ++------+---------------------+--------------------+ +| 6.5 | 2019-12-03 06:00:00 | 0 | +| 6.5 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c16, c21, make_set(c16, c21) from t1; ++------+------+--------------------+ +| c16 | c21 | make_set(c16, c21) | ++------+------+--------------------+ +| 6.5 | 9.5 | | +| 6.5 | -9.5 | | ++------+------+--------------------+ +select c16, c21, concat_ws(c16, c21) from t1; ++------+------+---------------------+ +| c16 | c21 | concat_ws(c16, c21) | ++------+------+---------------------+ +| 6.5 | 9.5 | 9.5 | +| 6.5 | -9.5 | -9.5 | ++------+------+---------------------+ +select c16, c21, interval(c16, c21) from t1; ++------+------+--------------------+ +| c16 | c21 | interval(c16, c21) | ++------+------+--------------------+ +| 6.5 | 9.5 | 0 | +| 6.5 | -9.5 | 1 | ++------+------+--------------------+ + +select c16, c22, make_set(c16, c22) from t1; ++------+------+--------------------+ +| c16 | c22 | make_set(c16, c22) | ++------+------+--------------------+ +| 6.5 | 10.5 | | +| 6.5 | 10.5 | | ++------+------+--------------------+ +select c16, c22, concat_ws(c16, c22) from t1; ++------+------+---------------------+ +| c16 | c22 | concat_ws(c16, c22) | ++------+------+---------------------+ +| 6.5 | 10.5 | 10.5 | +| 6.5 | 10.5 | 10.5 | ++------+------+---------------------+ +select c16, c22, interval(c16, c22) from t1; ++------+------+--------------------+ +| c16 | c22 | interval(c16, c22) | ++------+------+--------------------+ +| 6.5 | 10.5 | 0 | +| 6.5 | 10.5 | 0 | ++------+------+--------------------+ + +select c17, quote(c17) from t1; ++------+------------+ +| c17 | quote(c17) | ++------+------------+ +| 8 | '8' | +| -8 | '-8' | ++------+------------+ +select c17, sys_op_opnsize(c17) from t1; ++------+---------------------+ +| c17 | sys_op_opnsize(c17) | ++------+---------------------+ +| 8 | 20 | +| -8 | 20 | ++------+---------------------+ +select c17, c1, make_set(c17, c1) from t1; ++------+------+-------------------+ +| c17 | c1 | make_set(c17, c1) | ++------+------+-------------------+ +| 8 | 1 | | +| -8 | -1 | | ++------+------+-------------------+ +select c17, c1, concat_ws(c17, c1) from t1; ++------+------+--------------------+ +| c17 | c1 | concat_ws(c17, c1) | ++------+------+--------------------+ +| 8 | 1 | 1 | +| -8 | -1 | -1 | ++------+------+--------------------+ +select c17, c1, interval(c17, c1) from t1; ++------+------+-------------------+ +| c17 | c1 | interval(c17, c1) | ++------+------+-------------------+ +| 8 | 1 | 1 | +| -8 | -1 | 0 | ++------+------+-------------------+ + +select c17, c2, make_set(c17, c2) from t1; ++------+------+-------------------+ +| c17 | c2 | make_set(c17, c2) | ++------+------+-------------------+ +| 8 | 2 | | +| -8 | 2 | | ++------+------+-------------------+ +select c17, c2, concat_ws(c17, c2) from t1; ++------+------+--------------------+ +| c17 | c2 | concat_ws(c17, c2) | ++------+------+--------------------+ +| 8 | 2 | 2 | +| -8 | 2 | 2 | ++------+------+--------------------+ +select c17, c2, interval(c17, c2) from t1; ++------+------+-------------------+ +| c17 | c2 | interval(c17, c2) | ++------+------+-------------------+ +| 8 | 2 | 1 | +| -8 | 2 | 0 | ++------+------+-------------------+ + +select c17, c3, make_set(c17, c3) from t1; ++------+------+-------------------+ +| c17 | c3 | make_set(c17, c3) | ++------+------+-------------------+ +| 8 | 1 | | +| -8 | -1 | | ++------+------+-------------------+ +select c17, c3, concat_ws(c17, c3) from t1; ++------+------+--------------------+ +| c17 | c3 | concat_ws(c17, c3) | ++------+------+--------------------+ +| 8 | 1 | 1 | +| -8 | -1 | -1 | ++------+------+--------------------+ +select c17, c3, interval(c17, c3) from t1; ++------+------+-------------------+ +| c17 | c3 | interval(c17, c3) | ++------+------+-------------------+ +| 8 | 1 | 1 | +| -8 | -1 | 0 | ++------+------+-------------------+ + +select c17, c4, make_set(c17, c4) from t1; ++------+------+-------------------+ +| c17 | c4 | make_set(c17, c4) | ++------+------+-------------------+ +| 8 | 2 | | +| -8 | 2 | | ++------+------+-------------------+ +select c17, c4, concat_ws(c17, c4) from t1; ++------+------+--------------------+ +| c17 | c4 | concat_ws(c17, c4) | ++------+------+--------------------+ +| 8 | 2 | 2 | +| -8 | 2 | 2 | ++------+------+--------------------+ +select c17, c4, interval(c17, c4) from t1; ++------+------+-------------------+ +| c17 | c4 | interval(c17, c4) | ++------+------+-------------------+ +| 8 | 2 | 1 | +| -8 | 2 | 0 | ++------+------+-------------------+ + +select c17, c5, make_set(c17, c5) from t1; ++------+------+-------------------+ +| c17 | c5 | make_set(c17, c5) | ++------+------+-------------------+ +| 8 | 1 | | +| -8 | -1 | | ++------+------+-------------------+ +select c17, c5, concat_ws(c17, c5) from t1; ++------+------+--------------------+ +| c17 | c5 | concat_ws(c17, c5) | ++------+------+--------------------+ +| 8 | 1 | 1 | +| -8 | -1 | -1 | ++------+------+--------------------+ +select c17, c5, interval(c17, c5) from t1; ++------+------+-------------------+ +| c17 | c5 | interval(c17, c5) | ++------+------+-------------------+ +| 8 | 1 | 1 | +| -8 | -1 | 0 | ++------+------+-------------------+ + +select c17, c6, make_set(c17, c6) from t1; ++------+------+-------------------+ +| c17 | c6 | make_set(c17, c6) | ++------+------+-------------------+ +| 8 | 2 | | +| -8 | 2 | | ++------+------+-------------------+ +select c17, c6, concat_ws(c17, c6) from t1; ++------+------+--------------------+ +| c17 | c6 | concat_ws(c17, c6) | ++------+------+--------------------+ +| 8 | 2 | 2 | +| -8 | 2 | 2 | ++------+------+--------------------+ +select c17, c6, interval(c17, c6) from t1; ++------+------+-------------------+ +| c17 | c6 | interval(c17, c6) | ++------+------+-------------------+ +| 8 | 2 | 1 | +| -8 | 2 | 0 | ++------+------+-------------------+ + +select c17, c7, make_set(c17, c7) from t1; ++------+------+-------------------+ +| c17 | c7 | make_set(c17, c7) | ++------+------+-------------------+ +| 8 | 1 | | +| -8 | -1 | | ++------+------+-------------------+ +select c17, c7, concat_ws(c17, c7) from t1; ++------+------+--------------------+ +| c17 | c7 | concat_ws(c17, c7) | ++------+------+--------------------+ +| 8 | 1 | 1 | +| -8 | -1 | -1 | ++------+------+--------------------+ +select c17, c7, interval(c17, c7) from t1; ++------+------+-------------------+ +| c17 | c7 | interval(c17, c7) | ++------+------+-------------------+ +| 8 | 1 | 1 | +| -8 | -1 | 0 | ++------+------+-------------------+ + +select c17, c8, make_set(c17, c8) from t1; ++------+------+-------------------+ +| c17 | c8 | make_set(c17, c8) | ++------+------+-------------------+ +| 8 | 2 | | +| -8 | 2 | | ++------+------+-------------------+ +select c17, c8, concat_ws(c17, c8) from t1; ++------+------+--------------------+ +| c17 | c8 | concat_ws(c17, c8) | ++------+------+--------------------+ +| 8 | 2 | 2 | +| -8 | 2 | 2 | ++------+------+--------------------+ +select c17, c8, interval(c17, c8) from t1; ++------+------+-------------------+ +| c17 | c8 | interval(c17, c8) | ++------+------+-------------------+ +| 8 | 2 | 1 | +| -8 | 2 | 0 | ++------+------+-------------------+ + +select c17, c9, make_set(c17, c9) from t1; ++------+------+-------------------+ +| c17 | c9 | make_set(c17, c9) | ++------+------+-------------------+ +| 8 | 1 | | +| -8 | -1 | | ++------+------+-------------------+ +select c17, c9, concat_ws(c17, c9) from t1; ++------+------+--------------------+ +| c17 | c9 | concat_ws(c17, c9) | ++------+------+--------------------+ +| 8 | 1 | 1 | +| -8 | -1 | -1 | ++------+------+--------------------+ +select c17, c9, interval(c17, c9) from t1; ++------+------+-------------------+ +| c17 | c9 | interval(c17, c9) | ++------+------+-------------------+ +| 8 | 1 | 1 | +| -8 | -1 | 0 | ++------+------+-------------------+ + +select c17, c10, make_set(c17, c10) from t1; ++------+------+--------------------+ +| c17 | c10 | make_set(c17, c10) | ++------+------+--------------------+ +| 8 | 2 | | +| -8 | 2 | | ++------+------+--------------------+ +select c17, c10, concat_ws(c17, c10) from t1; ++------+------+---------------------+ +| c17 | c10 | concat_ws(c17, c10) | ++------+------+---------------------+ +| 8 | 2 | 2 | +| -8 | 2 | 2 | ++------+------+---------------------+ +select c17, c10, interval(c17, c10) from t1; ++------+------+--------------------+ +| c17 | c10 | interval(c17, c10) | ++------+------+--------------------+ +| 8 | 2 | 1 | +| -8 | 2 | 0 | ++------+------+--------------------+ + +select c17, c11, make_set(c17, c11) from t1; ++------+------+--------------------+ +| c17 | c11 | make_set(c17, c11) | ++------+------+--------------------+ +| 8 | 1 | | +| -8 | -1 | | ++------+------+--------------------+ +select c17, c11, concat_ws(c17, c11) from t1; ++------+------+---------------------+ +| c17 | c11 | concat_ws(c17, c11) | ++------+------+---------------------+ +| 8 | 1 | 1 | +| -8 | -1 | -1 | ++------+------+---------------------+ +select c17, c11, interval(c17, c11) from t1; ++------+------+--------------------+ +| c17 | c11 | interval(c17, c11) | ++------+------+--------------------+ +| 8 | 1 | 1 | +| -8 | -1 | 0 | ++------+------+--------------------+ + +select c17, c12, make_set(c17, c12) from t1; ++------+------+--------------------+ +| c17 | c12 | make_set(c17, c12) | ++------+------+--------------------+ +| 8 | 2 | | +| -8 | 2 | | ++------+------+--------------------+ +select c17, c12, concat_ws(c17, c12) from t1; ++------+------+---------------------+ +| c17 | c12 | concat_ws(c17, c12) | ++------+------+---------------------+ +| 8 | 2 | 2 | +| -8 | 2 | 2 | ++------+------+---------------------+ +select c17, c12, interval(c17, c12) from t1; ++------+------+--------------------+ +| c17 | c12 | interval(c17, c12) | ++------+------+--------------------+ +| 8 | 2 | 1 | +| -8 | 2 | 0 | ++------+------+--------------------+ + +select c17, c13, make_set(c17, c13) from t1; ++------+------+--------------------+ +| c17 | c13 | make_set(c17, c13) | ++------+------+--------------------+ +| 8 | 3.5 | | +| -8 | -3.5 | | ++------+------+--------------------+ +select c17, c13, concat_ws(c17, c13) from t1; ++------+------+---------------------+ +| c17 | c13 | concat_ws(c17, c13) | ++------+------+---------------------+ +| 8 | 3.5 | 3.5 | +| -8 | -3.5 | -3.5 | ++------+------+---------------------+ +select c17, c13, interval(c17, c13) from t1; ++------+------+--------------------+ +| c17 | c13 | interval(c17, c13) | ++------+------+--------------------+ +| 8 | 3.5 | 1 | +| -8 | -3.5 | 0 | ++------+------+--------------------+ + +select c17, c14, make_set(c17, c14) from t1; ++------+------+--------------------+ +| c17 | c14 | make_set(c17, c14) | ++------+------+--------------------+ +| 8 | 4.5 | | +| -8 | 4.5 | | ++------+------+--------------------+ +select c17, c14, concat_ws(c17, c14) from t1; ++------+------+---------------------+ +| c17 | c14 | concat_ws(c17, c14) | ++------+------+---------------------+ +| 8 | 4.5 | 4.5 | +| -8 | 4.5 | 4.5 | ++------+------+---------------------+ +select c17, c14, interval(c17, c14) from t1; ++------+------+--------------------+ +| c17 | c14 | interval(c17, c14) | ++------+------+--------------------+ +| 8 | 4.5 | 1 | +| -8 | 4.5 | 0 | ++------+------+--------------------+ + +select c17, c15, make_set(c17, c15) from t1; ++------+------+--------------------+ +| c17 | c15 | make_set(c17, c15) | ++------+------+--------------------+ +| 8 | 5.5 | | +| -8 | -5.5 | | ++------+------+--------------------+ +select c17, c15, concat_ws(c17, c15) from t1; ++------+------+---------------------+ +| c17 | c15 | concat_ws(c17, c15) | ++------+------+---------------------+ +| 8 | 5.5 | 5.5 | +| -8 | -5.5 | -5.5 | ++------+------+---------------------+ +select c17, c15, interval(c17, c15) from t1; ++------+------+--------------------+ +| c17 | c15 | interval(c17, c15) | ++------+------+--------------------+ +| 8 | 5.5 | 1 | +| -8 | -5.5 | 0 | ++------+------+--------------------+ + +select c17, c16, make_set(c17, c16) from t1; ++------+------+--------------------+ +| c17 | c16 | make_set(c17, c16) | ++------+------+--------------------+ +| 8 | 6.5 | | +| -8 | 6.5 | | ++------+------+--------------------+ +select c17, c16, concat_ws(c17, c16) from t1; ++------+------+---------------------+ +| c17 | c16 | concat_ws(c17, c16) | ++------+------+---------------------+ +| 8 | 6.5 | 6.5 | +| -8 | 6.5 | 6.5 | ++------+------+---------------------+ +select c17, c16, interval(c17, c16) from t1; ++------+------+--------------------+ +| c17 | c16 | interval(c17, c16) | ++------+------+--------------------+ +| 8 | 6.5 | 1 | +| -8 | 6.5 | 0 | ++------+------+--------------------+ + +select c17, c17, make_set(c17, c17) from t1; ++------+------+--------------------+ +| c17 | c17 | make_set(c17, c17) | ++------+------+--------------------+ +| 8 | 8 | | +| -8 | -8 | | ++------+------+--------------------+ +select c17, c17, concat_ws(c17, c17) from t1; ++------+------+---------------------+ +| c17 | c17 | concat_ws(c17, c17) | ++------+------+---------------------+ +| 8 | 8 | 8 | +| -8 | -8 | -8 | ++------+------+---------------------+ +select c17, c17, interval(c17, c17) from t1; ++------+------+--------------------+ +| c17 | c17 | interval(c17, c17) | ++------+------+--------------------+ +| 8 | 8 | 1 | +| -8 | -8 | 1 | ++------+------+--------------------+ + +select c17, c18, make_set(c17, c18) from t1; ++------+------+--------------------+ +| c17 | c18 | make_set(c17, c18) | ++------+------+--------------------+ +| 8 | 9 | | +| -8 | 9 | | ++------+------+--------------------+ +select c17, c18, concat_ws(c17, c18) from t1; ++------+------+---------------------+ +| c17 | c18 | concat_ws(c17, c18) | ++------+------+---------------------+ +| 8 | 9 | 9 | +| -8 | 9 | 9 | ++------+------+---------------------+ +select c17, c18, interval(c17, c18) from t1; ++------+------+--------------------+ +| c17 | c18 | interval(c17, c18) | ++------+------+--------------------+ +| 8 | 9 | 0 | +| -8 | 9 | 0 | ++------+------+--------------------+ + +select c17, c19, make_set(c17, c19) from t1; ++------+---------------------+--------------------+ +| c17 | c19 | make_set(c17, c19) | ++------+---------------------+--------------------+ +| 8 | 2019-12-01 12:00:00 | | +| -8 | 2019-12-01 12:00:00 | | ++------+---------------------+--------------------+ +select c17, c19, concat_ws(c17, c19) from t1; ++------+---------------------+---------------------+ +| c17 | c19 | concat_ws(c17, c19) | ++------+---------------------+---------------------+ +| 8 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -8 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c17, c19, interval(c17, c19) from t1; ++------+---------------------+--------------------+ +| c17 | c19 | interval(c17, c19) | ++------+---------------------+--------------------+ +| 8 | 2019-12-01 12:00:00 | 0 | +| -8 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c17, c20, make_set(c17, c20) from t1; ++------+---------------------+--------------------+ +| c17 | c20 | make_set(c17, c20) | ++------+---------------------+--------------------+ +| 8 | 2019-12-03 06:00:00 | | +| -8 | 2019-12-03 06:00:00 | | ++------+---------------------+--------------------+ +select c17, c20, concat_ws(c17, c20) from t1; ++------+---------------------+---------------------+ +| c17 | c20 | concat_ws(c17, c20) | ++------+---------------------+---------------------+ +| 8 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -8 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c17, c20, interval(c17, c20) from t1; ++------+---------------------+--------------------+ +| c17 | c20 | interval(c17, c20) | ++------+---------------------+--------------------+ +| 8 | 2019-12-03 06:00:00 | 0 | +| -8 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c17, c21, make_set(c17, c21) from t1; ++------+------+--------------------+ +| c17 | c21 | make_set(c17, c21) | ++------+------+--------------------+ +| 8 | 9.5 | | +| -8 | -9.5 | | ++------+------+--------------------+ +select c17, c21, concat_ws(c17, c21) from t1; ++------+------+---------------------+ +| c17 | c21 | concat_ws(c17, c21) | ++------+------+---------------------+ +| 8 | 9.5 | 9.5 | +| -8 | -9.5 | -9.5 | ++------+------+---------------------+ +select c17, c21, interval(c17, c21) from t1; ++------+------+--------------------+ +| c17 | c21 | interval(c17, c21) | ++------+------+--------------------+ +| 8 | 9.5 | 0 | +| -8 | -9.5 | 1 | ++------+------+--------------------+ + +select c17, c22, make_set(c17, c22) from t1; ++------+------+--------------------+ +| c17 | c22 | make_set(c17, c22) | ++------+------+--------------------+ +| 8 | 10.5 | | +| -8 | 10.5 | | ++------+------+--------------------+ +select c17, c22, concat_ws(c17, c22) from t1; ++------+------+---------------------+ +| c17 | c22 | concat_ws(c17, c22) | ++------+------+---------------------+ +| 8 | 10.5 | 10.5 | +| -8 | 10.5 | 10.5 | ++------+------+---------------------+ +select c17, c22, interval(c17, c22) from t1; ++------+------+--------------------+ +| c17 | c22 | interval(c17, c22) | ++------+------+--------------------+ +| 8 | 10.5 | 0 | +| -8 | 10.5 | 0 | ++------+------+--------------------+ + +select c18, quote(c18) from t1; ++------+------------+ +| c18 | quote(c18) | ++------+------------+ +| 9 | '9' | +| 9 | '9' | ++------+------------+ +select c18, sys_op_opnsize(c18) from t1; ++------+---------------------+ +| c18 | sys_op_opnsize(c18) | ++------+---------------------+ +| 9 | 20 | +| 9 | 20 | ++------+---------------------+ +select c18, c1, make_set(c18, c1) from t1; ++------+------+-------------------+ +| c18 | c1 | make_set(c18, c1) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+-------------------+ +select c18, c1, concat_ws(c18, c1) from t1; ++------+------+--------------------+ +| c18 | c1 | concat_ws(c18, c1) | ++------+------+--------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+--------------------+ +select c18, c1, interval(c18, c1) from t1; ++------+------+-------------------+ +| c18 | c1 | interval(c18, c1) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | 1 | ++------+------+-------------------+ + +select c18, c2, make_set(c18, c2) from t1; ++------+------+-------------------+ +| c18 | c2 | make_set(c18, c2) | ++------+------+-------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+-------------------+ +select c18, c2, concat_ws(c18, c2) from t1; ++------+------+--------------------+ +| c18 | c2 | concat_ws(c18, c2) | ++------+------+--------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+--------------------+ +select c18, c2, interval(c18, c2) from t1; ++------+------+-------------------+ +| c18 | c2 | interval(c18, c2) | ++------+------+-------------------+ +| 9 | 2 | 1 | +| 9 | 2 | 1 | ++------+------+-------------------+ + +select c18, c3, make_set(c18, c3) from t1; ++------+------+-------------------+ +| c18 | c3 | make_set(c18, c3) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+-------------------+ +select c18, c3, concat_ws(c18, c3) from t1; ++------+------+--------------------+ +| c18 | c3 | concat_ws(c18, c3) | ++------+------+--------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+--------------------+ +select c18, c3, interval(c18, c3) from t1; ++------+------+-------------------+ +| c18 | c3 | interval(c18, c3) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | 1 | ++------+------+-------------------+ + +select c18, c4, make_set(c18, c4) from t1; ++------+------+-------------------+ +| c18 | c4 | make_set(c18, c4) | ++------+------+-------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+-------------------+ +select c18, c4, concat_ws(c18, c4) from t1; ++------+------+--------------------+ +| c18 | c4 | concat_ws(c18, c4) | ++------+------+--------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+--------------------+ +select c18, c4, interval(c18, c4) from t1; ++------+------+-------------------+ +| c18 | c4 | interval(c18, c4) | ++------+------+-------------------+ +| 9 | 2 | 1 | +| 9 | 2 | 1 | ++------+------+-------------------+ + +select c18, c5, make_set(c18, c5) from t1; ++------+------+-------------------+ +| c18 | c5 | make_set(c18, c5) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+-------------------+ +select c18, c5, concat_ws(c18, c5) from t1; ++------+------+--------------------+ +| c18 | c5 | concat_ws(c18, c5) | ++------+------+--------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+--------------------+ +select c18, c5, interval(c18, c5) from t1; ++------+------+-------------------+ +| c18 | c5 | interval(c18, c5) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | 1 | ++------+------+-------------------+ + +select c18, c6, make_set(c18, c6) from t1; ++------+------+-------------------+ +| c18 | c6 | make_set(c18, c6) | ++------+------+-------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+-------------------+ +select c18, c6, concat_ws(c18, c6) from t1; ++------+------+--------------------+ +| c18 | c6 | concat_ws(c18, c6) | ++------+------+--------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+--------------------+ +select c18, c6, interval(c18, c6) from t1; ++------+------+-------------------+ +| c18 | c6 | interval(c18, c6) | ++------+------+-------------------+ +| 9 | 2 | 1 | +| 9 | 2 | 1 | ++------+------+-------------------+ + +select c18, c7, make_set(c18, c7) from t1; ++------+------+-------------------+ +| c18 | c7 | make_set(c18, c7) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+-------------------+ +select c18, c7, concat_ws(c18, c7) from t1; ++------+------+--------------------+ +| c18 | c7 | concat_ws(c18, c7) | ++------+------+--------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+--------------------+ +select c18, c7, interval(c18, c7) from t1; ++------+------+-------------------+ +| c18 | c7 | interval(c18, c7) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | 1 | ++------+------+-------------------+ + +select c18, c8, make_set(c18, c8) from t1; ++------+------+-------------------+ +| c18 | c8 | make_set(c18, c8) | ++------+------+-------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+-------------------+ +select c18, c8, concat_ws(c18, c8) from t1; ++------+------+--------------------+ +| c18 | c8 | concat_ws(c18, c8) | ++------+------+--------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+--------------------+ +select c18, c8, interval(c18, c8) from t1; ++------+------+-------------------+ +| c18 | c8 | interval(c18, c8) | ++------+------+-------------------+ +| 9 | 2 | 1 | +| 9 | 2 | 1 | ++------+------+-------------------+ + +select c18, c9, make_set(c18, c9) from t1; ++------+------+-------------------+ +| c18 | c9 | make_set(c18, c9) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+-------------------+ +select c18, c9, concat_ws(c18, c9) from t1; ++------+------+--------------------+ +| c18 | c9 | concat_ws(c18, c9) | ++------+------+--------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+--------------------+ +select c18, c9, interval(c18, c9) from t1; ++------+------+-------------------+ +| c18 | c9 | interval(c18, c9) | ++------+------+-------------------+ +| 9 | 1 | 1 | +| 9 | -1 | 1 | ++------+------+-------------------+ + +select c18, c10, make_set(c18, c10) from t1; ++------+------+--------------------+ +| c18 | c10 | make_set(c18, c10) | ++------+------+--------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+--------------------+ +select c18, c10, concat_ws(c18, c10) from t1; ++------+------+---------------------+ +| c18 | c10 | concat_ws(c18, c10) | ++------+------+---------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+---------------------+ +select c18, c10, interval(c18, c10) from t1; ++------+------+--------------------+ +| c18 | c10 | interval(c18, c10) | ++------+------+--------------------+ +| 9 | 2 | 1 | +| 9 | 2 | 1 | ++------+------+--------------------+ + +select c18, c11, make_set(c18, c11) from t1; ++------+------+--------------------+ +| c18 | c11 | make_set(c18, c11) | ++------+------+--------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+--------------------+ +select c18, c11, concat_ws(c18, c11) from t1; ++------+------+---------------------+ +| c18 | c11 | concat_ws(c18, c11) | ++------+------+---------------------+ +| 9 | 1 | 1 | +| 9 | -1 | -1 | ++------+------+---------------------+ +select c18, c11, interval(c18, c11) from t1; ++------+------+--------------------+ +| c18 | c11 | interval(c18, c11) | ++------+------+--------------------+ +| 9 | 1 | 1 | +| 9 | -1 | 1 | ++------+------+--------------------+ + +select c18, c12, make_set(c18, c12) from t1; ++------+------+--------------------+ +| c18 | c12 | make_set(c18, c12) | ++------+------+--------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+--------------------+ +select c18, c12, concat_ws(c18, c12) from t1; ++------+------+---------------------+ +| c18 | c12 | concat_ws(c18, c12) | ++------+------+---------------------+ +| 9 | 2 | 2 | +| 9 | 2 | 2 | ++------+------+---------------------+ +select c18, c12, interval(c18, c12) from t1; ++------+------+--------------------+ +| c18 | c12 | interval(c18, c12) | ++------+------+--------------------+ +| 9 | 2 | 1 | +| 9 | 2 | 1 | ++------+------+--------------------+ + +select c18, c13, make_set(c18, c13) from t1; ++------+------+--------------------+ +| c18 | c13 | make_set(c18, c13) | ++------+------+--------------------+ +| 9 | 3.5 | 3.5 | +| 9 | -3.5 | -3.5 | ++------+------+--------------------+ +select c18, c13, concat_ws(c18, c13) from t1; ++------+------+---------------------+ +| c18 | c13 | concat_ws(c18, c13) | ++------+------+---------------------+ +| 9 | 3.5 | 3.5 | +| 9 | -3.5 | -3.5 | ++------+------+---------------------+ +select c18, c13, interval(c18, c13) from t1; ++------+------+--------------------+ +| c18 | c13 | interval(c18, c13) | ++------+------+--------------------+ +| 9 | 3.5 | 1 | +| 9 | -3.5 | 1 | ++------+------+--------------------+ + +select c18, c14, make_set(c18, c14) from t1; ++------+------+--------------------+ +| c18 | c14 | make_set(c18, c14) | ++------+------+--------------------+ +| 9 | 4.5 | 4.5 | +| 9 | 4.5 | 4.5 | ++------+------+--------------------+ +select c18, c14, concat_ws(c18, c14) from t1; ++------+------+---------------------+ +| c18 | c14 | concat_ws(c18, c14) | ++------+------+---------------------+ +| 9 | 4.5 | 4.5 | +| 9 | 4.5 | 4.5 | ++------+------+---------------------+ +select c18, c14, interval(c18, c14) from t1; ++------+------+--------------------+ +| c18 | c14 | interval(c18, c14) | ++------+------+--------------------+ +| 9 | 4.5 | 1 | +| 9 | 4.5 | 1 | ++------+------+--------------------+ + +select c18, c15, make_set(c18, c15) from t1; ++------+------+--------------------+ +| c18 | c15 | make_set(c18, c15) | ++------+------+--------------------+ +| 9 | 5.5 | 5.5 | +| 9 | -5.5 | -5.5 | ++------+------+--------------------+ +select c18, c15, concat_ws(c18, c15) from t1; ++------+------+---------------------+ +| c18 | c15 | concat_ws(c18, c15) | ++------+------+---------------------+ +| 9 | 5.5 | 5.5 | +| 9 | -5.5 | -5.5 | ++------+------+---------------------+ +select c18, c15, interval(c18, c15) from t1; ++------+------+--------------------+ +| c18 | c15 | interval(c18, c15) | ++------+------+--------------------+ +| 9 | 5.5 | 1 | +| 9 | -5.5 | 1 | ++------+------+--------------------+ + +select c18, c16, make_set(c18, c16) from t1; ++------+------+--------------------+ +| c18 | c16 | make_set(c18, c16) | ++------+------+--------------------+ +| 9 | 6.5 | 6.5 | +| 9 | 6.5 | 6.5 | ++------+------+--------------------+ +select c18, c16, concat_ws(c18, c16) from t1; ++------+------+---------------------+ +| c18 | c16 | concat_ws(c18, c16) | ++------+------+---------------------+ +| 9 | 6.5 | 6.5 | +| 9 | 6.5 | 6.5 | ++------+------+---------------------+ +select c18, c16, interval(c18, c16) from t1; ++------+------+--------------------+ +| c18 | c16 | interval(c18, c16) | ++------+------+--------------------+ +| 9 | 6.5 | 1 | +| 9 | 6.5 | 1 | ++------+------+--------------------+ + +select c18, c17, make_set(c18, c17) from t1; ++------+------+--------------------+ +| c18 | c17 | make_set(c18, c17) | ++------+------+--------------------+ +| 9 | 8 | 8 | +| 9 | -8 | -8 | ++------+------+--------------------+ +select c18, c17, concat_ws(c18, c17) from t1; ++------+------+---------------------+ +| c18 | c17 | concat_ws(c18, c17) | ++------+------+---------------------+ +| 9 | 8 | 8 | +| 9 | -8 | -8 | ++------+------+---------------------+ +select c18, c17, interval(c18, c17) from t1; ++------+------+--------------------+ +| c18 | c17 | interval(c18, c17) | ++------+------+--------------------+ +| 9 | 8 | 1 | +| 9 | -8 | 1 | ++------+------+--------------------+ + +select c18, c18, make_set(c18, c18) from t1; ++------+------+--------------------+ +| c18 | c18 | make_set(c18, c18) | ++------+------+--------------------+ +| 9 | 9 | 9 | +| 9 | 9 | 9 | ++------+------+--------------------+ +select c18, c18, concat_ws(c18, c18) from t1; ++------+------+---------------------+ +| c18 | c18 | concat_ws(c18, c18) | ++------+------+---------------------+ +| 9 | 9 | 9 | +| 9 | 9 | 9 | ++------+------+---------------------+ +select c18, c18, interval(c18, c18) from t1; ++------+------+--------------------+ +| c18 | c18 | interval(c18, c18) | ++------+------+--------------------+ +| 9 | 9 | 1 | +| 9 | 9 | 1 | ++------+------+--------------------+ + +select c18, c19, make_set(c18, c19) from t1; ++------+---------------------+---------------------+ +| c18 | c19 | make_set(c18, c19) | ++------+---------------------+---------------------+ +| 9 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 9 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c18, c19, concat_ws(c18, c19) from t1; ++------+---------------------+---------------------+ +| c18 | c19 | concat_ws(c18, c19) | ++------+---------------------+---------------------+ +| 9 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 9 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c18, c19, interval(c18, c19) from t1; ++------+---------------------+--------------------+ +| c18 | c19 | interval(c18, c19) | ++------+---------------------+--------------------+ +| 9 | 2019-12-01 12:00:00 | 0 | +| 9 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c18, c20, make_set(c18, c20) from t1; ++------+---------------------+---------------------+ +| c18 | c20 | make_set(c18, c20) | ++------+---------------------+---------------------+ +| 9 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 9 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c18, c20, concat_ws(c18, c20) from t1; ++------+---------------------+---------------------+ +| c18 | c20 | concat_ws(c18, c20) | ++------+---------------------+---------------------+ +| 9 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 9 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c18, c20, interval(c18, c20) from t1; ++------+---------------------+--------------------+ +| c18 | c20 | interval(c18, c20) | ++------+---------------------+--------------------+ +| 9 | 2019-12-03 06:00:00 | 0 | +| 9 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c18, c21, make_set(c18, c21) from t1; ++------+------+--------------------+ +| c18 | c21 | make_set(c18, c21) | ++------+------+--------------------+ +| 9 | 9.5 | 9.5 | +| 9 | -9.5 | -9.5 | ++------+------+--------------------+ +select c18, c21, concat_ws(c18, c21) from t1; ++------+------+---------------------+ +| c18 | c21 | concat_ws(c18, c21) | ++------+------+---------------------+ +| 9 | 9.5 | 9.5 | +| 9 | -9.5 | -9.5 | ++------+------+---------------------+ +select c18, c21, interval(c18, c21) from t1; ++------+------+--------------------+ +| c18 | c21 | interval(c18, c21) | ++------+------+--------------------+ +| 9 | 9.5 | 0 | +| 9 | -9.5 | 1 | ++------+------+--------------------+ + +select c18, c22, make_set(c18, c22) from t1; ++------+------+--------------------+ +| c18 | c22 | make_set(c18, c22) | ++------+------+--------------------+ +| 9 | 10.5 | 10.5 | +| 9 | 10.5 | 10.5 | ++------+------+--------------------+ +select c18, c22, concat_ws(c18, c22) from t1; ++------+------+---------------------+ +| c18 | c22 | concat_ws(c18, c22) | ++------+------+---------------------+ +| 9 | 10.5 | 10.5 | +| 9 | 10.5 | 10.5 | ++------+------+---------------------+ +select c18, c22, interval(c18, c22) from t1; ++------+------+--------------------+ +| c18 | c22 | interval(c18, c22) | ++------+------+--------------------+ +| 9 | 10.5 | 0 | +| 9 | 10.5 | 0 | ++------+------+--------------------+ + +select c19, quote(c19) from t1; ++---------------------+-----------------------+ +| c19 | quote(c19) | ++---------------------+-----------------------+ +| 2019-12-01 12:00:00 | '2019-12-01 12:00:00' | +| 2019-12-01 12:00:00 | '2019-12-01 12:00:00' | ++---------------------+-----------------------+ +select c19, sys_op_opnsize(c19) from t1; ++---------------------+---------------------+ +| c19 | sys_op_opnsize(c19) | ++---------------------+---------------------+ +| 2019-12-01 12:00:00 | 20 | +| 2019-12-01 12:00:00 | 20 | ++---------------------+---------------------+ +select c19, c1, make_set(c19, c1) from t1; ++---------------------+------+-------------------+ +| c19 | c1 | make_set(c19, c1) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | | +| 2019-12-01 12:00:00 | -1 | | ++---------------------+------+-------------------+ +select c19, c1, concat_ws(c19, c1) from t1; ++---------------------+------+--------------------+ +| c19 | c1 | concat_ws(c19, c1) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c19, c1, interval(c19, c1) from t1; ++---------------------+------+-------------------+ +| c19 | c1 | interval(c19, c1) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c19, c2, make_set(c19, c2) from t1; ++---------------------+------+-------------------+ +| c19 | c2 | make_set(c19, c2) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | | +| 2019-12-01 12:00:00 | 2 | | ++---------------------+------+-------------------+ +select c19, c2, concat_ws(c19, c2) from t1; ++---------------------+------+--------------------+ +| c19 | c2 | concat_ws(c19, c2) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | 2 | +| 2019-12-01 12:00:00 | 2 | 2 | ++---------------------+------+--------------------+ +select c19, c2, interval(c19, c2) from t1; ++---------------------+------+-------------------+ +| c19 | c2 | interval(c19, c2) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | 1 | +| 2019-12-01 12:00:00 | 2 | 1 | ++---------------------+------+-------------------+ + +select c19, c3, make_set(c19, c3) from t1; ++---------------------+------+-------------------+ +| c19 | c3 | make_set(c19, c3) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | | +| 2019-12-01 12:00:00 | -1 | | ++---------------------+------+-------------------+ +select c19, c3, concat_ws(c19, c3) from t1; ++---------------------+------+--------------------+ +| c19 | c3 | concat_ws(c19, c3) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c19, c3, interval(c19, c3) from t1; ++---------------------+------+-------------------+ +| c19 | c3 | interval(c19, c3) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c19, c4, make_set(c19, c4) from t1; ++---------------------+------+-------------------+ +| c19 | c4 | make_set(c19, c4) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | | +| 2019-12-01 12:00:00 | 2 | | ++---------------------+------+-------------------+ +select c19, c4, concat_ws(c19, c4) from t1; ++---------------------+------+--------------------+ +| c19 | c4 | concat_ws(c19, c4) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | 2 | +| 2019-12-01 12:00:00 | 2 | 2 | ++---------------------+------+--------------------+ +select c19, c4, interval(c19, c4) from t1; ++---------------------+------+-------------------+ +| c19 | c4 | interval(c19, c4) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | 1 | +| 2019-12-01 12:00:00 | 2 | 1 | ++---------------------+------+-------------------+ + +select c19, c5, make_set(c19, c5) from t1; ++---------------------+------+-------------------+ +| c19 | c5 | make_set(c19, c5) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | | +| 2019-12-01 12:00:00 | -1 | | ++---------------------+------+-------------------+ +select c19, c5, concat_ws(c19, c5) from t1; ++---------------------+------+--------------------+ +| c19 | c5 | concat_ws(c19, c5) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c19, c5, interval(c19, c5) from t1; ++---------------------+------+-------------------+ +| c19 | c5 | interval(c19, c5) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c19, c6, make_set(c19, c6) from t1; ++---------------------+------+-------------------+ +| c19 | c6 | make_set(c19, c6) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | | +| 2019-12-01 12:00:00 | 2 | | ++---------------------+------+-------------------+ +select c19, c6, concat_ws(c19, c6) from t1; ++---------------------+------+--------------------+ +| c19 | c6 | concat_ws(c19, c6) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | 2 | +| 2019-12-01 12:00:00 | 2 | 2 | ++---------------------+------+--------------------+ +select c19, c6, interval(c19, c6) from t1; ++---------------------+------+-------------------+ +| c19 | c6 | interval(c19, c6) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | 1 | +| 2019-12-01 12:00:00 | 2 | 1 | ++---------------------+------+-------------------+ + +select c19, c7, make_set(c19, c7) from t1; ++---------------------+------+-------------------+ +| c19 | c7 | make_set(c19, c7) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | | +| 2019-12-01 12:00:00 | -1 | | ++---------------------+------+-------------------+ +select c19, c7, concat_ws(c19, c7) from t1; ++---------------------+------+--------------------+ +| c19 | c7 | concat_ws(c19, c7) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c19, c7, interval(c19, c7) from t1; ++---------------------+------+-------------------+ +| c19 | c7 | interval(c19, c7) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c19, c8, make_set(c19, c8) from t1; ++---------------------+------+-------------------+ +| c19 | c8 | make_set(c19, c8) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | | +| 2019-12-01 12:00:00 | 2 | | ++---------------------+------+-------------------+ +select c19, c8, concat_ws(c19, c8) from t1; ++---------------------+------+--------------------+ +| c19 | c8 | concat_ws(c19, c8) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | 2 | +| 2019-12-01 12:00:00 | 2 | 2 | ++---------------------+------+--------------------+ +select c19, c8, interval(c19, c8) from t1; ++---------------------+------+-------------------+ +| c19 | c8 | interval(c19, c8) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | 1 | +| 2019-12-01 12:00:00 | 2 | 1 | ++---------------------+------+-------------------+ + +select c19, c9, make_set(c19, c9) from t1; ++---------------------+------+-------------------+ +| c19 | c9 | make_set(c19, c9) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | | +| 2019-12-01 12:00:00 | -1 | | ++---------------------+------+-------------------+ +select c19, c9, concat_ws(c19, c9) from t1; ++---------------------+------+--------------------+ +| c19 | c9 | concat_ws(c19, c9) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c19, c9, interval(c19, c9) from t1; ++---------------------+------+-------------------+ +| c19 | c9 | interval(c19, c9) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c19, c10, make_set(c19, c10) from t1; ++---------------------+------+--------------------+ +| c19 | c10 | make_set(c19, c10) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | | +| 2019-12-01 12:00:00 | 2 | | ++---------------------+------+--------------------+ +select c19, c10, concat_ws(c19, c10) from t1; ++---------------------+------+---------------------+ +| c19 | c10 | concat_ws(c19, c10) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2 | +| 2019-12-01 12:00:00 | 2 | 2 | ++---------------------+------+---------------------+ +select c19, c10, interval(c19, c10) from t1; ++---------------------+------+--------------------+ +| c19 | c10 | interval(c19, c10) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | 1 | +| 2019-12-01 12:00:00 | 2 | 1 | ++---------------------+------+--------------------+ + +select c19, c11, make_set(c19, c11) from t1; ++---------------------+------+--------------------+ +| c19 | c11 | make_set(c19, c11) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 1 | | +| 2019-12-01 12:00:00 | -1 | | ++---------------------+------+--------------------+ +select c19, c11, concat_ws(c19, c11) from t1; ++---------------------+------+---------------------+ +| c19 | c11 | concat_ws(c19, c11) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | -1 | ++---------------------+------+---------------------+ +select c19, c11, interval(c19, c11) from t1; ++---------------------+------+--------------------+ +| c19 | c11 | interval(c19, c11) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 1 | 1 | +| 2019-12-01 12:00:00 | -1 | 1 | ++---------------------+------+--------------------+ + +select c19, c12, make_set(c19, c12) from t1; ++---------------------+------+--------------------+ +| c19 | c12 | make_set(c19, c12) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | | +| 2019-12-01 12:00:00 | 2 | | ++---------------------+------+--------------------+ +select c19, c12, concat_ws(c19, c12) from t1; ++---------------------+------+---------------------+ +| c19 | c12 | concat_ws(c19, c12) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 2 | 2 | +| 2019-12-01 12:00:00 | 2 | 2 | ++---------------------+------+---------------------+ +select c19, c12, interval(c19, c12) from t1; ++---------------------+------+--------------------+ +| c19 | c12 | interval(c19, c12) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | 1 | +| 2019-12-01 12:00:00 | 2 | 1 | ++---------------------+------+--------------------+ + +select c19, c13, make_set(c19, c13) from t1; ++---------------------+------+--------------------+ +| c19 | c13 | make_set(c19, c13) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 3.5 | | +| 2019-12-01 12:00:00 | -3.5 | | ++---------------------+------+--------------------+ +select c19, c13, concat_ws(c19, c13) from t1; ++---------------------+------+---------------------+ +| c19 | c13 | concat_ws(c19, c13) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 3.5 | 3.5 | +| 2019-12-01 12:00:00 | -3.5 | -3.5 | ++---------------------+------+---------------------+ +select c19, c13, interval(c19, c13) from t1; ++---------------------+------+--------------------+ +| c19 | c13 | interval(c19, c13) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 3.5 | 1 | +| 2019-12-01 12:00:00 | -3.5 | 1 | ++---------------------+------+--------------------+ + +select c19, c14, make_set(c19, c14) from t1; ++---------------------+------+--------------------+ +| c19 | c14 | make_set(c19, c14) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 4.5 | | +| 2019-12-01 12:00:00 | 4.5 | | ++---------------------+------+--------------------+ +select c19, c14, concat_ws(c19, c14) from t1; ++---------------------+------+---------------------+ +| c19 | c14 | concat_ws(c19, c14) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 4.5 | 4.5 | +| 2019-12-01 12:00:00 | 4.5 | 4.5 | ++---------------------+------+---------------------+ +select c19, c14, interval(c19, c14) from t1; ++---------------------+------+--------------------+ +| c19 | c14 | interval(c19, c14) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 4.5 | 1 | +| 2019-12-01 12:00:00 | 4.5 | 1 | ++---------------------+------+--------------------+ + +select c19, c15, make_set(c19, c15) from t1; ++---------------------+------+--------------------+ +| c19 | c15 | make_set(c19, c15) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 5.5 | | +| 2019-12-01 12:00:00 | -5.5 | | ++---------------------+------+--------------------+ +select c19, c15, concat_ws(c19, c15) from t1; ++---------------------+------+---------------------+ +| c19 | c15 | concat_ws(c19, c15) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 5.5 | 5.5 | +| 2019-12-01 12:00:00 | -5.5 | -5.5 | ++---------------------+------+---------------------+ +select c19, c15, interval(c19, c15) from t1; ++---------------------+------+--------------------+ +| c19 | c15 | interval(c19, c15) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 5.5 | 1 | +| 2019-12-01 12:00:00 | -5.5 | 1 | ++---------------------+------+--------------------+ + +select c19, c16, make_set(c19, c16) from t1; ++---------------------+------+--------------------+ +| c19 | c16 | make_set(c19, c16) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 6.5 | | +| 2019-12-01 12:00:00 | 6.5 | | ++---------------------+------+--------------------+ +select c19, c16, concat_ws(c19, c16) from t1; ++---------------------+------+---------------------+ +| c19 | c16 | concat_ws(c19, c16) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 6.5 | 6.5 | +| 2019-12-01 12:00:00 | 6.5 | 6.5 | ++---------------------+------+---------------------+ +select c19, c16, interval(c19, c16) from t1; ++---------------------+------+--------------------+ +| c19 | c16 | interval(c19, c16) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 6.5 | 1 | +| 2019-12-01 12:00:00 | 6.5 | 1 | ++---------------------+------+--------------------+ + +select c19, c17, make_set(c19, c17) from t1; ++---------------------+------+--------------------+ +| c19 | c17 | make_set(c19, c17) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 8 | | +| 2019-12-01 12:00:00 | -8 | | ++---------------------+------+--------------------+ +select c19, c17, concat_ws(c19, c17) from t1; ++---------------------+------+---------------------+ +| c19 | c17 | concat_ws(c19, c17) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 8 | 8 | +| 2019-12-01 12:00:00 | -8 | -8 | ++---------------------+------+---------------------+ +select c19, c17, interval(c19, c17) from t1; ++---------------------+------+--------------------+ +| c19 | c17 | interval(c19, c17) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 8 | 1 | +| 2019-12-01 12:00:00 | -8 | 1 | ++---------------------+------+--------------------+ + +select c19, c18, make_set(c19, c18) from t1; ++---------------------+------+--------------------+ +| c19 | c18 | make_set(c19, c18) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 9 | | +| 2019-12-01 12:00:00 | 9 | | ++---------------------+------+--------------------+ +select c19, c18, concat_ws(c19, c18) from t1; ++---------------------+------+---------------------+ +| c19 | c18 | concat_ws(c19, c18) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 9 | 9 | +| 2019-12-01 12:00:00 | 9 | 9 | ++---------------------+------+---------------------+ +select c19, c18, interval(c19, c18) from t1; ++---------------------+------+--------------------+ +| c19 | c18 | interval(c19, c18) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 9 | 1 | +| 2019-12-01 12:00:00 | 9 | 1 | ++---------------------+------+--------------------+ + +select c19, c19, make_set(c19, c19) from t1; ++---------------------+---------------------+--------------------+ +| c19 | c19 | make_set(c19, c19) | ++---------------------+---------------------+--------------------+ +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | | +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | | ++---------------------+---------------------+--------------------+ +select c19, c19, concat_ws(c19, c19) from t1; ++---------------------+---------------------+---------------------+ +| c19 | c19 | concat_ws(c19, c19) | ++---------------------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+---------------------+---------------------+ +select c19, c19, interval(c19, c19) from t1; ++---------------------+---------------------+--------------------+ +| c19 | c19 | interval(c19, c19) | ++---------------------+---------------------+--------------------+ +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | 1 | +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | 1 | ++---------------------+---------------------+--------------------+ + +select c19, c20, make_set(c19, c20) from t1; ++---------------------+---------------------+--------------------+ +| c19 | c20 | make_set(c19, c20) | ++---------------------+---------------------+--------------------+ +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | | +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | | ++---------------------+---------------------+--------------------+ +select c19, c20, concat_ws(c19, c20) from t1; ++---------------------+---------------------+---------------------+ +| c19 | c20 | concat_ws(c19, c20) | ++---------------------+---------------------+---------------------+ +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+---------------------+---------------------+ +select c19, c20, interval(c19, c20) from t1; ++---------------------+---------------------+--------------------+ +| c19 | c20 | interval(c19, c20) | ++---------------------+---------------------+--------------------+ +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 0 | +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 0 | ++---------------------+---------------------+--------------------+ + +select c19, c21, make_set(c19, c21) from t1; ++---------------------+------+--------------------+ +| c19 | c21 | make_set(c19, c21) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 9.5 | | +| 2019-12-01 12:00:00 | -9.5 | | ++---------------------+------+--------------------+ +select c19, c21, concat_ws(c19, c21) from t1; ++---------------------+------+---------------------+ +| c19 | c21 | concat_ws(c19, c21) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 9.5 | 9.5 | +| 2019-12-01 12:00:00 | -9.5 | -9.5 | ++---------------------+------+---------------------+ +select c19, c21, interval(c19, c21) from t1; ++---------------------+------+--------------------+ +| c19 | c21 | interval(c19, c21) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 9.5 | 1 | +| 2019-12-01 12:00:00 | -9.5 | 1 | ++---------------------+------+--------------------+ + +select c19, c22, make_set(c19, c22) from t1; ++---------------------+------+--------------------+ +| c19 | c22 | make_set(c19, c22) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 10.5 | | +| 2019-12-01 12:00:00 | 10.5 | | ++---------------------+------+--------------------+ +select c19, c22, concat_ws(c19, c22) from t1; ++---------------------+------+---------------------+ +| c19 | c22 | concat_ws(c19, c22) | ++---------------------+------+---------------------+ +| 2019-12-01 12:00:00 | 10.5 | 10.5 | +| 2019-12-01 12:00:00 | 10.5 | 10.5 | ++---------------------+------+---------------------+ +select c19, c22, interval(c19, c22) from t1; ++---------------------+------+--------------------+ +| c19 | c22 | interval(c19, c22) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 10.5 | 1 | +| 2019-12-01 12:00:00 | 10.5 | 1 | ++---------------------+------+--------------------+ + +select c20, quote(c20) from t1; ++---------------------+-----------------------+ +| c20 | quote(c20) | ++---------------------+-----------------------+ +| 2019-12-03 06:00:00 | '2019-12-03 06:00:00' | +| 2019-12-03 06:00:00 | '2019-12-03 06:00:00' | ++---------------------+-----------------------+ +select c20, sys_op_opnsize(c20) from t1; ++---------------------+---------------------+ +| c20 | sys_op_opnsize(c20) | ++---------------------+---------------------+ +| 2019-12-03 06:00:00 | 20 | +| 2019-12-03 06:00:00 | 20 | ++---------------------+---------------------+ +select c20, c1, make_set(c20, c1) from t1; ++---------------------+------+-------------------+ +| c20 | c1 | make_set(c20, c1) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | | +| 2019-12-03 06:00:00 | -1 | | ++---------------------+------+-------------------+ +select c20, c1, concat_ws(c20, c1) from t1; ++---------------------+------+--------------------+ +| c20 | c1 | concat_ws(c20, c1) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c20, c1, interval(c20, c1) from t1; ++---------------------+------+-------------------+ +| c20 | c1 | interval(c20, c1) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c20, c2, make_set(c20, c2) from t1; ++---------------------+------+-------------------+ +| c20 | c2 | make_set(c20, c2) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | | +| 2019-12-03 06:00:00 | 2 | | ++---------------------+------+-------------------+ +select c20, c2, concat_ws(c20, c2) from t1; ++---------------------+------+--------------------+ +| c20 | c2 | concat_ws(c20, c2) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | 2 | +| 2019-12-03 06:00:00 | 2 | 2 | ++---------------------+------+--------------------+ +select c20, c2, interval(c20, c2) from t1; ++---------------------+------+-------------------+ +| c20 | c2 | interval(c20, c2) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | 1 | +| 2019-12-03 06:00:00 | 2 | 1 | ++---------------------+------+-------------------+ + +select c20, c3, make_set(c20, c3) from t1; ++---------------------+------+-------------------+ +| c20 | c3 | make_set(c20, c3) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | | +| 2019-12-03 06:00:00 | -1 | | ++---------------------+------+-------------------+ +select c20, c3, concat_ws(c20, c3) from t1; ++---------------------+------+--------------------+ +| c20 | c3 | concat_ws(c20, c3) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c20, c3, interval(c20, c3) from t1; ++---------------------+------+-------------------+ +| c20 | c3 | interval(c20, c3) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c20, c4, make_set(c20, c4) from t1; ++---------------------+------+-------------------+ +| c20 | c4 | make_set(c20, c4) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | | +| 2019-12-03 06:00:00 | 2 | | ++---------------------+------+-------------------+ +select c20, c4, concat_ws(c20, c4) from t1; ++---------------------+------+--------------------+ +| c20 | c4 | concat_ws(c20, c4) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | 2 | +| 2019-12-03 06:00:00 | 2 | 2 | ++---------------------+------+--------------------+ +select c20, c4, interval(c20, c4) from t1; ++---------------------+------+-------------------+ +| c20 | c4 | interval(c20, c4) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | 1 | +| 2019-12-03 06:00:00 | 2 | 1 | ++---------------------+------+-------------------+ + +select c20, c5, make_set(c20, c5) from t1; ++---------------------+------+-------------------+ +| c20 | c5 | make_set(c20, c5) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | | +| 2019-12-03 06:00:00 | -1 | | ++---------------------+------+-------------------+ +select c20, c5, concat_ws(c20, c5) from t1; ++---------------------+------+--------------------+ +| c20 | c5 | concat_ws(c20, c5) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c20, c5, interval(c20, c5) from t1; ++---------------------+------+-------------------+ +| c20 | c5 | interval(c20, c5) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c20, c6, make_set(c20, c6) from t1; ++---------------------+------+-------------------+ +| c20 | c6 | make_set(c20, c6) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | | +| 2019-12-03 06:00:00 | 2 | | ++---------------------+------+-------------------+ +select c20, c6, concat_ws(c20, c6) from t1; ++---------------------+------+--------------------+ +| c20 | c6 | concat_ws(c20, c6) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | 2 | +| 2019-12-03 06:00:00 | 2 | 2 | ++---------------------+------+--------------------+ +select c20, c6, interval(c20, c6) from t1; ++---------------------+------+-------------------+ +| c20 | c6 | interval(c20, c6) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | 1 | +| 2019-12-03 06:00:00 | 2 | 1 | ++---------------------+------+-------------------+ + +select c20, c7, make_set(c20, c7) from t1; ++---------------------+------+-------------------+ +| c20 | c7 | make_set(c20, c7) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | | +| 2019-12-03 06:00:00 | -1 | | ++---------------------+------+-------------------+ +select c20, c7, concat_ws(c20, c7) from t1; ++---------------------+------+--------------------+ +| c20 | c7 | concat_ws(c20, c7) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c20, c7, interval(c20, c7) from t1; ++---------------------+------+-------------------+ +| c20 | c7 | interval(c20, c7) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c20, c8, make_set(c20, c8) from t1; ++---------------------+------+-------------------+ +| c20 | c8 | make_set(c20, c8) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | | +| 2019-12-03 06:00:00 | 2 | | ++---------------------+------+-------------------+ +select c20, c8, concat_ws(c20, c8) from t1; ++---------------------+------+--------------------+ +| c20 | c8 | concat_ws(c20, c8) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | 2 | +| 2019-12-03 06:00:00 | 2 | 2 | ++---------------------+------+--------------------+ +select c20, c8, interval(c20, c8) from t1; ++---------------------+------+-------------------+ +| c20 | c8 | interval(c20, c8) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | 1 | +| 2019-12-03 06:00:00 | 2 | 1 | ++---------------------+------+-------------------+ + +select c20, c9, make_set(c20, c9) from t1; ++---------------------+------+-------------------+ +| c20 | c9 | make_set(c20, c9) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | | +| 2019-12-03 06:00:00 | -1 | | ++---------------------+------+-------------------+ +select c20, c9, concat_ws(c20, c9) from t1; ++---------------------+------+--------------------+ +| c20 | c9 | concat_ws(c20, c9) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | -1 | ++---------------------+------+--------------------+ +select c20, c9, interval(c20, c9) from t1; ++---------------------+------+-------------------+ +| c20 | c9 | interval(c20, c9) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | 1 | ++---------------------+------+-------------------+ + +select c20, c10, make_set(c20, c10) from t1; ++---------------------+------+--------------------+ +| c20 | c10 | make_set(c20, c10) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | | +| 2019-12-03 06:00:00 | 2 | | ++---------------------+------+--------------------+ +select c20, c10, concat_ws(c20, c10) from t1; ++---------------------+------+---------------------+ +| c20 | c10 | concat_ws(c20, c10) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2 | +| 2019-12-03 06:00:00 | 2 | 2 | ++---------------------+------+---------------------+ +select c20, c10, interval(c20, c10) from t1; ++---------------------+------+--------------------+ +| c20 | c10 | interval(c20, c10) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | 1 | +| 2019-12-03 06:00:00 | 2 | 1 | ++---------------------+------+--------------------+ + +select c20, c11, make_set(c20, c11) from t1; ++---------------------+------+--------------------+ +| c20 | c11 | make_set(c20, c11) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 1 | | +| 2019-12-03 06:00:00 | -1 | | ++---------------------+------+--------------------+ +select c20, c11, concat_ws(c20, c11) from t1; ++---------------------+------+---------------------+ +| c20 | c11 | concat_ws(c20, c11) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | -1 | ++---------------------+------+---------------------+ +select c20, c11, interval(c20, c11) from t1; ++---------------------+------+--------------------+ +| c20 | c11 | interval(c20, c11) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 1 | 1 | +| 2019-12-03 06:00:00 | -1 | 1 | ++---------------------+------+--------------------+ + +select c20, c12, make_set(c20, c12) from t1; ++---------------------+------+--------------------+ +| c20 | c12 | make_set(c20, c12) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | | +| 2019-12-03 06:00:00 | 2 | | ++---------------------+------+--------------------+ +select c20, c12, concat_ws(c20, c12) from t1; ++---------------------+------+---------------------+ +| c20 | c12 | concat_ws(c20, c12) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 2 | 2 | +| 2019-12-03 06:00:00 | 2 | 2 | ++---------------------+------+---------------------+ +select c20, c12, interval(c20, c12) from t1; ++---------------------+------+--------------------+ +| c20 | c12 | interval(c20, c12) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | 1 | +| 2019-12-03 06:00:00 | 2 | 1 | ++---------------------+------+--------------------+ + +select c20, c13, make_set(c20, c13) from t1; ++---------------------+------+--------------------+ +| c20 | c13 | make_set(c20, c13) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 3.5 | | +| 2019-12-03 06:00:00 | -3.5 | | ++---------------------+------+--------------------+ +select c20, c13, concat_ws(c20, c13) from t1; ++---------------------+------+---------------------+ +| c20 | c13 | concat_ws(c20, c13) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 3.5 | 3.5 | +| 2019-12-03 06:00:00 | -3.5 | -3.5 | ++---------------------+------+---------------------+ +select c20, c13, interval(c20, c13) from t1; ++---------------------+------+--------------------+ +| c20 | c13 | interval(c20, c13) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 3.5 | 1 | +| 2019-12-03 06:00:00 | -3.5 | 1 | ++---------------------+------+--------------------+ + +select c20, c14, make_set(c20, c14) from t1; ++---------------------+------+--------------------+ +| c20 | c14 | make_set(c20, c14) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 4.5 | | +| 2019-12-03 06:00:00 | 4.5 | | ++---------------------+------+--------------------+ +select c20, c14, concat_ws(c20, c14) from t1; ++---------------------+------+---------------------+ +| c20 | c14 | concat_ws(c20, c14) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 4.5 | 4.5 | +| 2019-12-03 06:00:00 | 4.5 | 4.5 | ++---------------------+------+---------------------+ +select c20, c14, interval(c20, c14) from t1; ++---------------------+------+--------------------+ +| c20 | c14 | interval(c20, c14) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 4.5 | 1 | +| 2019-12-03 06:00:00 | 4.5 | 1 | ++---------------------+------+--------------------+ + +select c20, c15, make_set(c20, c15) from t1; ++---------------------+------+--------------------+ +| c20 | c15 | make_set(c20, c15) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 5.5 | | +| 2019-12-03 06:00:00 | -5.5 | | ++---------------------+------+--------------------+ +select c20, c15, concat_ws(c20, c15) from t1; ++---------------------+------+---------------------+ +| c20 | c15 | concat_ws(c20, c15) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 5.5 | 5.5 | +| 2019-12-03 06:00:00 | -5.5 | -5.5 | ++---------------------+------+---------------------+ +select c20, c15, interval(c20, c15) from t1; ++---------------------+------+--------------------+ +| c20 | c15 | interval(c20, c15) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 5.5 | 1 | +| 2019-12-03 06:00:00 | -5.5 | 1 | ++---------------------+------+--------------------+ + +select c20, c16, make_set(c20, c16) from t1; ++---------------------+------+--------------------+ +| c20 | c16 | make_set(c20, c16) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 6.5 | | +| 2019-12-03 06:00:00 | 6.5 | | ++---------------------+------+--------------------+ +select c20, c16, concat_ws(c20, c16) from t1; ++---------------------+------+---------------------+ +| c20 | c16 | concat_ws(c20, c16) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 6.5 | 6.5 | +| 2019-12-03 06:00:00 | 6.5 | 6.5 | ++---------------------+------+---------------------+ +select c20, c16, interval(c20, c16) from t1; ++---------------------+------+--------------------+ +| c20 | c16 | interval(c20, c16) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 6.5 | 1 | +| 2019-12-03 06:00:00 | 6.5 | 1 | ++---------------------+------+--------------------+ + +select c20, c17, make_set(c20, c17) from t1; ++---------------------+------+--------------------+ +| c20 | c17 | make_set(c20, c17) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 8 | | +| 2019-12-03 06:00:00 | -8 | | ++---------------------+------+--------------------+ +select c20, c17, concat_ws(c20, c17) from t1; ++---------------------+------+---------------------+ +| c20 | c17 | concat_ws(c20, c17) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 8 | 8 | +| 2019-12-03 06:00:00 | -8 | -8 | ++---------------------+------+---------------------+ +select c20, c17, interval(c20, c17) from t1; ++---------------------+------+--------------------+ +| c20 | c17 | interval(c20, c17) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 8 | 1 | +| 2019-12-03 06:00:00 | -8 | 1 | ++---------------------+------+--------------------+ + +select c20, c18, make_set(c20, c18) from t1; ++---------------------+------+--------------------+ +| c20 | c18 | make_set(c20, c18) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 9 | | +| 2019-12-03 06:00:00 | 9 | | ++---------------------+------+--------------------+ +select c20, c18, concat_ws(c20, c18) from t1; ++---------------------+------+---------------------+ +| c20 | c18 | concat_ws(c20, c18) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 9 | 9 | +| 2019-12-03 06:00:00 | 9 | 9 | ++---------------------+------+---------------------+ +select c20, c18, interval(c20, c18) from t1; ++---------------------+------+--------------------+ +| c20 | c18 | interval(c20, c18) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 9 | 1 | +| 2019-12-03 06:00:00 | 9 | 1 | ++---------------------+------+--------------------+ + +select c20, c19, make_set(c20, c19) from t1; ++---------------------+---------------------+--------------------+ +| c20 | c19 | make_set(c20, c19) | ++---------------------+---------------------+--------------------+ +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | | +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | | ++---------------------+---------------------+--------------------+ +select c20, c19, concat_ws(c20, c19) from t1; ++---------------------+---------------------+---------------------+ +| c20 | c19 | concat_ws(c20, c19) | ++---------------------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++---------------------+---------------------+---------------------+ +select c20, c19, interval(c20, c19) from t1; ++---------------------+---------------------+--------------------+ +| c20 | c19 | interval(c20, c19) | ++---------------------+---------------------+--------------------+ +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 1 | +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 1 | ++---------------------+---------------------+--------------------+ + +select c20, c20, make_set(c20, c20) from t1; ++---------------------+---------------------+--------------------+ +| c20 | c20 | make_set(c20, c20) | ++---------------------+---------------------+--------------------+ +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | | +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | | ++---------------------+---------------------+--------------------+ +select c20, c20, concat_ws(c20, c20) from t1; ++---------------------+---------------------+---------------------+ +| c20 | c20 | concat_ws(c20, c20) | ++---------------------+---------------------+---------------------+ +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++---------------------+---------------------+---------------------+ +select c20, c20, interval(c20, c20) from t1; ++---------------------+---------------------+--------------------+ +| c20 | c20 | interval(c20, c20) | ++---------------------+---------------------+--------------------+ +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | 1 | +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | 1 | ++---------------------+---------------------+--------------------+ + +select c20, c21, make_set(c20, c21) from t1; ++---------------------+------+--------------------+ +| c20 | c21 | make_set(c20, c21) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 9.5 | | +| 2019-12-03 06:00:00 | -9.5 | | ++---------------------+------+--------------------+ +select c20, c21, concat_ws(c20, c21) from t1; ++---------------------+------+---------------------+ +| c20 | c21 | concat_ws(c20, c21) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 9.5 | 9.5 | +| 2019-12-03 06:00:00 | -9.5 | -9.5 | ++---------------------+------+---------------------+ +select c20, c21, interval(c20, c21) from t1; ++---------------------+------+--------------------+ +| c20 | c21 | interval(c20, c21) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 9.5 | 1 | +| 2019-12-03 06:00:00 | -9.5 | 1 | ++---------------------+------+--------------------+ + +select c20, c22, make_set(c20, c22) from t1; ++---------------------+------+--------------------+ +| c20 | c22 | make_set(c20, c22) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 10.5 | | +| 2019-12-03 06:00:00 | 10.5 | | ++---------------------+------+--------------------+ +select c20, c22, concat_ws(c20, c22) from t1; ++---------------------+------+---------------------+ +| c20 | c22 | concat_ws(c20, c22) | ++---------------------+------+---------------------+ +| 2019-12-03 06:00:00 | 10.5 | 10.5 | +| 2019-12-03 06:00:00 | 10.5 | 10.5 | ++---------------------+------+---------------------+ +select c20, c22, interval(c20, c22) from t1; ++---------------------+------+--------------------+ +| c20 | c22 | interval(c20, c22) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 10.5 | 1 | +| 2019-12-03 06:00:00 | 10.5 | 1 | ++---------------------+------+--------------------+ + +select c21, quote(c21) from t1; ++------+------------+ +| c21 | quote(c21) | ++------+------------+ +| 9.5 | '9.5' | +| -9.5 | '-9.5' | ++------+------------+ +select c21, sys_op_opnsize(c21) from t1; ++------+---------------------+ +| c21 | sys_op_opnsize(c21) | ++------+---------------------+ +| 9.5 | 15 | +| -9.5 | 16 | ++------+---------------------+ +select c21, c1, make_set(c21, c1) from t1; ++------+------+-------------------+ +| c21 | c1 | make_set(c21, c1) | ++------+------+-------------------+ +| 9.5 | 1 | | +| -9.5 | -1 | | ++------+------+-------------------+ +select c21, c1, concat_ws(c21, c1) from t1; ++------+------+--------------------+ +| c21 | c1 | concat_ws(c21, c1) | ++------+------+--------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | -1 | ++------+------+--------------------+ +select c21, c1, interval(c21, c1) from t1; ++------+------+-------------------+ +| c21 | c1 | interval(c21, c1) | ++------+------+-------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | 0 | ++------+------+-------------------+ + +select c21, c2, make_set(c21, c2) from t1; ++------+------+-------------------+ +| c21 | c2 | make_set(c21, c2) | ++------+------+-------------------+ +| 9.5 | 2 | | +| -9.5 | 2 | | ++------+------+-------------------+ +select c21, c2, concat_ws(c21, c2) from t1; ++------+------+--------------------+ +| c21 | c2 | concat_ws(c21, c2) | ++------+------+--------------------+ +| 9.5 | 2 | 2 | +| -9.5 | 2 | 2 | ++------+------+--------------------+ +select c21, c2, interval(c21, c2) from t1; ++------+------+-------------------+ +| c21 | c2 | interval(c21, c2) | ++------+------+-------------------+ +| 9.5 | 2 | 1 | +| -9.5 | 2 | 0 | ++------+------+-------------------+ + +select c21, c3, make_set(c21, c3) from t1; ++------+------+-------------------+ +| c21 | c3 | make_set(c21, c3) | ++------+------+-------------------+ +| 9.5 | 1 | | +| -9.5 | -1 | | ++------+------+-------------------+ +select c21, c3, concat_ws(c21, c3) from t1; ++------+------+--------------------+ +| c21 | c3 | concat_ws(c21, c3) | ++------+------+--------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | -1 | ++------+------+--------------------+ +select c21, c3, interval(c21, c3) from t1; ++------+------+-------------------+ +| c21 | c3 | interval(c21, c3) | ++------+------+-------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | 0 | ++------+------+-------------------+ + +select c21, c4, make_set(c21, c4) from t1; ++------+------+-------------------+ +| c21 | c4 | make_set(c21, c4) | ++------+------+-------------------+ +| 9.5 | 2 | | +| -9.5 | 2 | | ++------+------+-------------------+ +select c21, c4, concat_ws(c21, c4) from t1; ++------+------+--------------------+ +| c21 | c4 | concat_ws(c21, c4) | ++------+------+--------------------+ +| 9.5 | 2 | 2 | +| -9.5 | 2 | 2 | ++------+------+--------------------+ +select c21, c4, interval(c21, c4) from t1; ++------+------+-------------------+ +| c21 | c4 | interval(c21, c4) | ++------+------+-------------------+ +| 9.5 | 2 | 1 | +| -9.5 | 2 | 0 | ++------+------+-------------------+ + +select c21, c5, make_set(c21, c5) from t1; ++------+------+-------------------+ +| c21 | c5 | make_set(c21, c5) | ++------+------+-------------------+ +| 9.5 | 1 | | +| -9.5 | -1 | | ++------+------+-------------------+ +select c21, c5, concat_ws(c21, c5) from t1; ++------+------+--------------------+ +| c21 | c5 | concat_ws(c21, c5) | ++------+------+--------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | -1 | ++------+------+--------------------+ +select c21, c5, interval(c21, c5) from t1; ++------+------+-------------------+ +| c21 | c5 | interval(c21, c5) | ++------+------+-------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | 0 | ++------+------+-------------------+ + +select c21, c6, make_set(c21, c6) from t1; ++------+------+-------------------+ +| c21 | c6 | make_set(c21, c6) | ++------+------+-------------------+ +| 9.5 | 2 | | +| -9.5 | 2 | | ++------+------+-------------------+ +select c21, c6, concat_ws(c21, c6) from t1; ++------+------+--------------------+ +| c21 | c6 | concat_ws(c21, c6) | ++------+------+--------------------+ +| 9.5 | 2 | 2 | +| -9.5 | 2 | 2 | ++------+------+--------------------+ +select c21, c6, interval(c21, c6) from t1; ++------+------+-------------------+ +| c21 | c6 | interval(c21, c6) | ++------+------+-------------------+ +| 9.5 | 2 | 1 | +| -9.5 | 2 | 0 | ++------+------+-------------------+ + +select c21, c7, make_set(c21, c7) from t1; ++------+------+-------------------+ +| c21 | c7 | make_set(c21, c7) | ++------+------+-------------------+ +| 9.5 | 1 | | +| -9.5 | -1 | | ++------+------+-------------------+ +select c21, c7, concat_ws(c21, c7) from t1; ++------+------+--------------------+ +| c21 | c7 | concat_ws(c21, c7) | ++------+------+--------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | -1 | ++------+------+--------------------+ +select c21, c7, interval(c21, c7) from t1; ++------+------+-------------------+ +| c21 | c7 | interval(c21, c7) | ++------+------+-------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | 0 | ++------+------+-------------------+ + +select c21, c8, make_set(c21, c8) from t1; ++------+------+-------------------+ +| c21 | c8 | make_set(c21, c8) | ++------+------+-------------------+ +| 9.5 | 2 | | +| -9.5 | 2 | | ++------+------+-------------------+ +select c21, c8, concat_ws(c21, c8) from t1; ++------+------+--------------------+ +| c21 | c8 | concat_ws(c21, c8) | ++------+------+--------------------+ +| 9.5 | 2 | 2 | +| -9.5 | 2 | 2 | ++------+------+--------------------+ +select c21, c8, interval(c21, c8) from t1; ++------+------+-------------------+ +| c21 | c8 | interval(c21, c8) | ++------+------+-------------------+ +| 9.5 | 2 | 1 | +| -9.5 | 2 | 0 | ++------+------+-------------------+ + +select c21, c9, make_set(c21, c9) from t1; ++------+------+-------------------+ +| c21 | c9 | make_set(c21, c9) | ++------+------+-------------------+ +| 9.5 | 1 | | +| -9.5 | -1 | | ++------+------+-------------------+ +select c21, c9, concat_ws(c21, c9) from t1; ++------+------+--------------------+ +| c21 | c9 | concat_ws(c21, c9) | ++------+------+--------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | -1 | ++------+------+--------------------+ +select c21, c9, interval(c21, c9) from t1; ++------+------+-------------------+ +| c21 | c9 | interval(c21, c9) | ++------+------+-------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | 0 | ++------+------+-------------------+ + +select c21, c10, make_set(c21, c10) from t1; ++------+------+--------------------+ +| c21 | c10 | make_set(c21, c10) | ++------+------+--------------------+ +| 9.5 | 2 | | +| -9.5 | 2 | | ++------+------+--------------------+ +select c21, c10, concat_ws(c21, c10) from t1; ++------+------+---------------------+ +| c21 | c10 | concat_ws(c21, c10) | ++------+------+---------------------+ +| 9.5 | 2 | 2 | +| -9.5 | 2 | 2 | ++------+------+---------------------+ +select c21, c10, interval(c21, c10) from t1; ++------+------+--------------------+ +| c21 | c10 | interval(c21, c10) | ++------+------+--------------------+ +| 9.5 | 2 | 1 | +| -9.5 | 2 | 0 | ++------+------+--------------------+ + +select c21, c11, make_set(c21, c11) from t1; ++------+------+--------------------+ +| c21 | c11 | make_set(c21, c11) | ++------+------+--------------------+ +| 9.5 | 1 | | +| -9.5 | -1 | | ++------+------+--------------------+ +select c21, c11, concat_ws(c21, c11) from t1; ++------+------+---------------------+ +| c21 | c11 | concat_ws(c21, c11) | ++------+------+---------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | -1 | ++------+------+---------------------+ +select c21, c11, interval(c21, c11) from t1; ++------+------+--------------------+ +| c21 | c11 | interval(c21, c11) | ++------+------+--------------------+ +| 9.5 | 1 | 1 | +| -9.5 | -1 | 0 | ++------+------+--------------------+ + +select c21, c12, make_set(c21, c12) from t1; ++------+------+--------------------+ +| c21 | c12 | make_set(c21, c12) | ++------+------+--------------------+ +| 9.5 | 2 | | +| -9.5 | 2 | | ++------+------+--------------------+ +select c21, c12, concat_ws(c21, c12) from t1; ++------+------+---------------------+ +| c21 | c12 | concat_ws(c21, c12) | ++------+------+---------------------+ +| 9.5 | 2 | 2 | +| -9.5 | 2 | 2 | ++------+------+---------------------+ +select c21, c12, interval(c21, c12) from t1; ++------+------+--------------------+ +| c21 | c12 | interval(c21, c12) | ++------+------+--------------------+ +| 9.5 | 2 | 1 | +| -9.5 | 2 | 0 | ++------+------+--------------------+ + +select c21, c13, make_set(c21, c13) from t1; ++------+------+--------------------+ +| c21 | c13 | make_set(c21, c13) | ++------+------+--------------------+ +| 9.5 | 3.5 | | +| -9.5 | -3.5 | | ++------+------+--------------------+ +select c21, c13, concat_ws(c21, c13) from t1; ++------+------+---------------------+ +| c21 | c13 | concat_ws(c21, c13) | ++------+------+---------------------+ +| 9.5 | 3.5 | 3.5 | +| -9.5 | -3.5 | -3.5 | ++------+------+---------------------+ +select c21, c13, interval(c21, c13) from t1; ++------+------+--------------------+ +| c21 | c13 | interval(c21, c13) | ++------+------+--------------------+ +| 9.5 | 3.5 | 1 | +| -9.5 | -3.5 | 0 | ++------+------+--------------------+ + +select c21, c14, make_set(c21, c14) from t1; ++------+------+--------------------+ +| c21 | c14 | make_set(c21, c14) | ++------+------+--------------------+ +| 9.5 | 4.5 | | +| -9.5 | 4.5 | | ++------+------+--------------------+ +select c21, c14, concat_ws(c21, c14) from t1; ++------+------+---------------------+ +| c21 | c14 | concat_ws(c21, c14) | ++------+------+---------------------+ +| 9.5 | 4.5 | 4.5 | +| -9.5 | 4.5 | 4.5 | ++------+------+---------------------+ +select c21, c14, interval(c21, c14) from t1; ++------+------+--------------------+ +| c21 | c14 | interval(c21, c14) | ++------+------+--------------------+ +| 9.5 | 4.5 | 1 | +| -9.5 | 4.5 | 0 | ++------+------+--------------------+ + +select c21, c15, make_set(c21, c15) from t1; ++------+------+--------------------+ +| c21 | c15 | make_set(c21, c15) | ++------+------+--------------------+ +| 9.5 | 5.5 | | +| -9.5 | -5.5 | | ++------+------+--------------------+ +select c21, c15, concat_ws(c21, c15) from t1; ++------+------+---------------------+ +| c21 | c15 | concat_ws(c21, c15) | ++------+------+---------------------+ +| 9.5 | 5.5 | 5.5 | +| -9.5 | -5.5 | -5.5 | ++------+------+---------------------+ +select c21, c15, interval(c21, c15) from t1; ++------+------+--------------------+ +| c21 | c15 | interval(c21, c15) | ++------+------+--------------------+ +| 9.5 | 5.5 | 1 | +| -9.5 | -5.5 | 0 | ++------+------+--------------------+ + +select c21, c16, make_set(c21, c16) from t1; ++------+------+--------------------+ +| c21 | c16 | make_set(c21, c16) | ++------+------+--------------------+ +| 9.5 | 6.5 | | +| -9.5 | 6.5 | | ++------+------+--------------------+ +select c21, c16, concat_ws(c21, c16) from t1; ++------+------+---------------------+ +| c21 | c16 | concat_ws(c21, c16) | ++------+------+---------------------+ +| 9.5 | 6.5 | 6.5 | +| -9.5 | 6.5 | 6.5 | ++------+------+---------------------+ +select c21, c16, interval(c21, c16) from t1; ++------+------+--------------------+ +| c21 | c16 | interval(c21, c16) | ++------+------+--------------------+ +| 9.5 | 6.5 | 1 | +| -9.5 | 6.5 | 0 | ++------+------+--------------------+ + +select c21, c17, make_set(c21, c17) from t1; ++------+------+--------------------+ +| c21 | c17 | make_set(c21, c17) | ++------+------+--------------------+ +| 9.5 | 8 | | +| -9.5 | -8 | | ++------+------+--------------------+ +select c21, c17, concat_ws(c21, c17) from t1; ++------+------+---------------------+ +| c21 | c17 | concat_ws(c21, c17) | ++------+------+---------------------+ +| 9.5 | 8 | 8 | +| -9.5 | -8 | -8 | ++------+------+---------------------+ +select c21, c17, interval(c21, c17) from t1; ++------+------+--------------------+ +| c21 | c17 | interval(c21, c17) | ++------+------+--------------------+ +| 9.5 | 8 | 1 | +| -9.5 | -8 | 0 | ++------+------+--------------------+ + +select c21, c18, make_set(c21, c18) from t1; ++------+------+--------------------+ +| c21 | c18 | make_set(c21, c18) | ++------+------+--------------------+ +| 9.5 | 9 | | +| -9.5 | 9 | | ++------+------+--------------------+ +select c21, c18, concat_ws(c21, c18) from t1; ++------+------+---------------------+ +| c21 | c18 | concat_ws(c21, c18) | ++------+------+---------------------+ +| 9.5 | 9 | 9 | +| -9.5 | 9 | 9 | ++------+------+---------------------+ +select c21, c18, interval(c21, c18) from t1; ++------+------+--------------------+ +| c21 | c18 | interval(c21, c18) | ++------+------+--------------------+ +| 9.5 | 9 | 1 | +| -9.5 | 9 | 0 | ++------+------+--------------------+ + +select c21, c19, make_set(c21, c19) from t1; ++------+---------------------+--------------------+ +| c21 | c19 | make_set(c21, c19) | ++------+---------------------+--------------------+ +| 9.5 | 2019-12-01 12:00:00 | | +| -9.5 | 2019-12-01 12:00:00 | | ++------+---------------------+--------------------+ +select c21, c19, concat_ws(c21, c19) from t1; ++------+---------------------+---------------------+ +| c21 | c19 | concat_ws(c21, c19) | ++------+---------------------+---------------------+ +| 9.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| -9.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c21, c19, interval(c21, c19) from t1; ++------+---------------------+--------------------+ +| c21 | c19 | interval(c21, c19) | ++------+---------------------+--------------------+ +| 9.5 | 2019-12-01 12:00:00 | 0 | +| -9.5 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c21, c20, make_set(c21, c20) from t1; ++------+---------------------+--------------------+ +| c21 | c20 | make_set(c21, c20) | ++------+---------------------+--------------------+ +| 9.5 | 2019-12-03 06:00:00 | | +| -9.5 | 2019-12-03 06:00:00 | | ++------+---------------------+--------------------+ +select c21, c20, concat_ws(c21, c20) from t1; ++------+---------------------+---------------------+ +| c21 | c20 | concat_ws(c21, c20) | ++------+---------------------+---------------------+ +| 9.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| -9.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c21, c20, interval(c21, c20) from t1; ++------+---------------------+--------------------+ +| c21 | c20 | interval(c21, c20) | ++------+---------------------+--------------------+ +| 9.5 | 2019-12-03 06:00:00 | 0 | +| -9.5 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c21, c21, make_set(c21, c21) from t1; ++------+------+--------------------+ +| c21 | c21 | make_set(c21, c21) | ++------+------+--------------------+ +| 9.5 | 9.5 | | +| -9.5 | -9.5 | | ++------+------+--------------------+ +select c21, c21, concat_ws(c21, c21) from t1; ++------+------+---------------------+ +| c21 | c21 | concat_ws(c21, c21) | ++------+------+---------------------+ +| 9.5 | 9.5 | 9.5 | +| -9.5 | -9.5 | -9.5 | ++------+------+---------------------+ +select c21, c21, interval(c21, c21) from t1; ++------+------+--------------------+ +| c21 | c21 | interval(c21, c21) | ++------+------+--------------------+ +| 9.5 | 9.5 | 1 | +| -9.5 | -9.5 | 1 | ++------+------+--------------------+ + +select c21, c22, make_set(c21, c22) from t1; ++------+------+--------------------+ +| c21 | c22 | make_set(c21, c22) | ++------+------+--------------------+ +| 9.5 | 10.5 | | +| -9.5 | 10.5 | | ++------+------+--------------------+ +select c21, c22, concat_ws(c21, c22) from t1; ++------+------+---------------------+ +| c21 | c22 | concat_ws(c21, c22) | ++------+------+---------------------+ +| 9.5 | 10.5 | 10.5 | +| -9.5 | 10.5 | 10.5 | ++------+------+---------------------+ +select c21, c22, interval(c21, c22) from t1; ++------+------+--------------------+ +| c21 | c22 | interval(c21, c22) | ++------+------+--------------------+ +| 9.5 | 10.5 | 0 | +| -9.5 | 10.5 | 0 | ++------+------+--------------------+ + +select c22, quote(c22) from t1; ++------+------------+ +| c22 | quote(c22) | ++------+------------+ +| 10.5 | '10.5' | +| 10.5 | '10.5' | ++------+------------+ +select c22, sys_op_opnsize(c22) from t1; ++------+---------------------+ +| c22 | sys_op_opnsize(c22) | ++------+---------------------+ +| 10.5 | 16 | +| 10.5 | 16 | ++------+---------------------+ +select c22, c1, make_set(c22, c1) from t1; ++------+------+-------------------+ +| c22 | c1 | make_set(c22, c1) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+-------------------+ +select c22, c1, concat_ws(c22, c1) from t1; ++------+------+--------------------+ +| c22 | c1 | concat_ws(c22, c1) | ++------+------+--------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+--------------------+ +select c22, c1, interval(c22, c1) from t1; ++------+------+-------------------+ +| c22 | c1 | interval(c22, c1) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | 1 | ++------+------+-------------------+ + +select c22, c2, make_set(c22, c2) from t1; ++------+------+-------------------+ +| c22 | c2 | make_set(c22, c2) | ++------+------+-------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+-------------------+ +select c22, c2, concat_ws(c22, c2) from t1; ++------+------+--------------------+ +| c22 | c2 | concat_ws(c22, c2) | ++------+------+--------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+--------------------+ +select c22, c2, interval(c22, c2) from t1; ++------+------+-------------------+ +| c22 | c2 | interval(c22, c2) | ++------+------+-------------------+ +| 10.5 | 2 | 1 | +| 10.5 | 2 | 1 | ++------+------+-------------------+ + +select c22, c3, make_set(c22, c3) from t1; ++------+------+-------------------+ +| c22 | c3 | make_set(c22, c3) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+-------------------+ +select c22, c3, concat_ws(c22, c3) from t1; ++------+------+--------------------+ +| c22 | c3 | concat_ws(c22, c3) | ++------+------+--------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+--------------------+ +select c22, c3, interval(c22, c3) from t1; ++------+------+-------------------+ +| c22 | c3 | interval(c22, c3) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | 1 | ++------+------+-------------------+ + +select c22, c4, make_set(c22, c4) from t1; ++------+------+-------------------+ +| c22 | c4 | make_set(c22, c4) | ++------+------+-------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+-------------------+ +select c22, c4, concat_ws(c22, c4) from t1; ++------+------+--------------------+ +| c22 | c4 | concat_ws(c22, c4) | ++------+------+--------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+--------------------+ +select c22, c4, interval(c22, c4) from t1; ++------+------+-------------------+ +| c22 | c4 | interval(c22, c4) | ++------+------+-------------------+ +| 10.5 | 2 | 1 | +| 10.5 | 2 | 1 | ++------+------+-------------------+ + +select c22, c5, make_set(c22, c5) from t1; ++------+------+-------------------+ +| c22 | c5 | make_set(c22, c5) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+-------------------+ +select c22, c5, concat_ws(c22, c5) from t1; ++------+------+--------------------+ +| c22 | c5 | concat_ws(c22, c5) | ++------+------+--------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+--------------------+ +select c22, c5, interval(c22, c5) from t1; ++------+------+-------------------+ +| c22 | c5 | interval(c22, c5) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | 1 | ++------+------+-------------------+ + +select c22, c6, make_set(c22, c6) from t1; ++------+------+-------------------+ +| c22 | c6 | make_set(c22, c6) | ++------+------+-------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+-------------------+ +select c22, c6, concat_ws(c22, c6) from t1; ++------+------+--------------------+ +| c22 | c6 | concat_ws(c22, c6) | ++------+------+--------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+--------------------+ +select c22, c6, interval(c22, c6) from t1; ++------+------+-------------------+ +| c22 | c6 | interval(c22, c6) | ++------+------+-------------------+ +| 10.5 | 2 | 1 | +| 10.5 | 2 | 1 | ++------+------+-------------------+ + +select c22, c7, make_set(c22, c7) from t1; ++------+------+-------------------+ +| c22 | c7 | make_set(c22, c7) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+-------------------+ +select c22, c7, concat_ws(c22, c7) from t1; ++------+------+--------------------+ +| c22 | c7 | concat_ws(c22, c7) | ++------+------+--------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+--------------------+ +select c22, c7, interval(c22, c7) from t1; ++------+------+-------------------+ +| c22 | c7 | interval(c22, c7) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | 1 | ++------+------+-------------------+ + +select c22, c8, make_set(c22, c8) from t1; ++------+------+-------------------+ +| c22 | c8 | make_set(c22, c8) | ++------+------+-------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+-------------------+ +select c22, c8, concat_ws(c22, c8) from t1; ++------+------+--------------------+ +| c22 | c8 | concat_ws(c22, c8) | ++------+------+--------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+--------------------+ +select c22, c8, interval(c22, c8) from t1; ++------+------+-------------------+ +| c22 | c8 | interval(c22, c8) | ++------+------+-------------------+ +| 10.5 | 2 | 1 | +| 10.5 | 2 | 1 | ++------+------+-------------------+ + +select c22, c9, make_set(c22, c9) from t1; ++------+------+-------------------+ +| c22 | c9 | make_set(c22, c9) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+-------------------+ +select c22, c9, concat_ws(c22, c9) from t1; ++------+------+--------------------+ +| c22 | c9 | concat_ws(c22, c9) | ++------+------+--------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+--------------------+ +select c22, c9, interval(c22, c9) from t1; ++------+------+-------------------+ +| c22 | c9 | interval(c22, c9) | ++------+------+-------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | 1 | ++------+------+-------------------+ + +select c22, c10, make_set(c22, c10) from t1; ++------+------+--------------------+ +| c22 | c10 | make_set(c22, c10) | ++------+------+--------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+--------------------+ +select c22, c10, concat_ws(c22, c10) from t1; ++------+------+---------------------+ +| c22 | c10 | concat_ws(c22, c10) | ++------+------+---------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+---------------------+ +select c22, c10, interval(c22, c10) from t1; ++------+------+--------------------+ +| c22 | c10 | interval(c22, c10) | ++------+------+--------------------+ +| 10.5 | 2 | 1 | +| 10.5 | 2 | 1 | ++------+------+--------------------+ + +select c22, c11, make_set(c22, c11) from t1; ++------+------+--------------------+ +| c22 | c11 | make_set(c22, c11) | ++------+------+--------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+--------------------+ +select c22, c11, concat_ws(c22, c11) from t1; ++------+------+---------------------+ +| c22 | c11 | concat_ws(c22, c11) | ++------+------+---------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | -1 | ++------+------+---------------------+ +select c22, c11, interval(c22, c11) from t1; ++------+------+--------------------+ +| c22 | c11 | interval(c22, c11) | ++------+------+--------------------+ +| 10.5 | 1 | 1 | +| 10.5 | -1 | 1 | ++------+------+--------------------+ + +select c22, c12, make_set(c22, c12) from t1; ++------+------+--------------------+ +| c22 | c12 | make_set(c22, c12) | ++------+------+--------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+--------------------+ +select c22, c12, concat_ws(c22, c12) from t1; ++------+------+---------------------+ +| c22 | c12 | concat_ws(c22, c12) | ++------+------+---------------------+ +| 10.5 | 2 | 2 | +| 10.5 | 2 | 2 | ++------+------+---------------------+ +select c22, c12, interval(c22, c12) from t1; ++------+------+--------------------+ +| c22 | c12 | interval(c22, c12) | ++------+------+--------------------+ +| 10.5 | 2 | 1 | +| 10.5 | 2 | 1 | ++------+------+--------------------+ + +select c22, c13, make_set(c22, c13) from t1; ++------+------+--------------------+ +| c22 | c13 | make_set(c22, c13) | ++------+------+--------------------+ +| 10.5 | 3.5 | 3.5 | +| 10.5 | -3.5 | -3.5 | ++------+------+--------------------+ +select c22, c13, concat_ws(c22, c13) from t1; ++------+------+---------------------+ +| c22 | c13 | concat_ws(c22, c13) | ++------+------+---------------------+ +| 10.5 | 3.5 | 3.5 | +| 10.5 | -3.5 | -3.5 | ++------+------+---------------------+ +select c22, c13, interval(c22, c13) from t1; ++------+------+--------------------+ +| c22 | c13 | interval(c22, c13) | ++------+------+--------------------+ +| 10.5 | 3.5 | 1 | +| 10.5 | -3.5 | 1 | ++------+------+--------------------+ + +select c22, c14, make_set(c22, c14) from t1; ++------+------+--------------------+ +| c22 | c14 | make_set(c22, c14) | ++------+------+--------------------+ +| 10.5 | 4.5 | 4.5 | +| 10.5 | 4.5 | 4.5 | ++------+------+--------------------+ +select c22, c14, concat_ws(c22, c14) from t1; ++------+------+---------------------+ +| c22 | c14 | concat_ws(c22, c14) | ++------+------+---------------------+ +| 10.5 | 4.5 | 4.5 | +| 10.5 | 4.5 | 4.5 | ++------+------+---------------------+ +select c22, c14, interval(c22, c14) from t1; ++------+------+--------------------+ +| c22 | c14 | interval(c22, c14) | ++------+------+--------------------+ +| 10.5 | 4.5 | 1 | +| 10.5 | 4.5 | 1 | ++------+------+--------------------+ + +select c22, c15, make_set(c22, c15) from t1; ++------+------+--------------------+ +| c22 | c15 | make_set(c22, c15) | ++------+------+--------------------+ +| 10.5 | 5.5 | 5.5 | +| 10.5 | -5.5 | -5.5 | ++------+------+--------------------+ +select c22, c15, concat_ws(c22, c15) from t1; ++------+------+---------------------+ +| c22 | c15 | concat_ws(c22, c15) | ++------+------+---------------------+ +| 10.5 | 5.5 | 5.5 | +| 10.5 | -5.5 | -5.5 | ++------+------+---------------------+ +select c22, c15, interval(c22, c15) from t1; ++------+------+--------------------+ +| c22 | c15 | interval(c22, c15) | ++------+------+--------------------+ +| 10.5 | 5.5 | 1 | +| 10.5 | -5.5 | 1 | ++------+------+--------------------+ + +select c22, c16, make_set(c22, c16) from t1; ++------+------+--------------------+ +| c22 | c16 | make_set(c22, c16) | ++------+------+--------------------+ +| 10.5 | 6.5 | 6.5 | +| 10.5 | 6.5 | 6.5 | ++------+------+--------------------+ +select c22, c16, concat_ws(c22, c16) from t1; ++------+------+---------------------+ +| c22 | c16 | concat_ws(c22, c16) | ++------+------+---------------------+ +| 10.5 | 6.5 | 6.5 | +| 10.5 | 6.5 | 6.5 | ++------+------+---------------------+ +select c22, c16, interval(c22, c16) from t1; ++------+------+--------------------+ +| c22 | c16 | interval(c22, c16) | ++------+------+--------------------+ +| 10.5 | 6.5 | 1 | +| 10.5 | 6.5 | 1 | ++------+------+--------------------+ + +select c22, c17, make_set(c22, c17) from t1; ++------+------+--------------------+ +| c22 | c17 | make_set(c22, c17) | ++------+------+--------------------+ +| 10.5 | 8 | 8 | +| 10.5 | -8 | -8 | ++------+------+--------------------+ +select c22, c17, concat_ws(c22, c17) from t1; ++------+------+---------------------+ +| c22 | c17 | concat_ws(c22, c17) | ++------+------+---------------------+ +| 10.5 | 8 | 8 | +| 10.5 | -8 | -8 | ++------+------+---------------------+ +select c22, c17, interval(c22, c17) from t1; ++------+------+--------------------+ +| c22 | c17 | interval(c22, c17) | ++------+------+--------------------+ +| 10.5 | 8 | 1 | +| 10.5 | -8 | 1 | ++------+------+--------------------+ + +select c22, c18, make_set(c22, c18) from t1; ++------+------+--------------------+ +| c22 | c18 | make_set(c22, c18) | ++------+------+--------------------+ +| 10.5 | 9 | 9 | +| 10.5 | 9 | 9 | ++------+------+--------------------+ +select c22, c18, concat_ws(c22, c18) from t1; ++------+------+---------------------+ +| c22 | c18 | concat_ws(c22, c18) | ++------+------+---------------------+ +| 10.5 | 9 | 9 | +| 10.5 | 9 | 9 | ++------+------+---------------------+ +select c22, c18, interval(c22, c18) from t1; ++------+------+--------------------+ +| c22 | c18 | interval(c22, c18) | ++------+------+--------------------+ +| 10.5 | 9 | 1 | +| 10.5 | 9 | 1 | ++------+------+--------------------+ + +select c22, c19, make_set(c22, c19) from t1; ++------+---------------------+---------------------+ +| c22 | c19 | make_set(c22, c19) | ++------+---------------------+---------------------+ +| 10.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 10.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c22, c19, concat_ws(c22, c19) from t1; ++------+---------------------+---------------------+ +| c22 | c19 | concat_ws(c22, c19) | ++------+---------------------+---------------------+ +| 10.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | +| 10.5 | 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | ++------+---------------------+---------------------+ +select c22, c19, interval(c22, c19) from t1; ++------+---------------------+--------------------+ +| c22 | c19 | interval(c22, c19) | ++------+---------------------+--------------------+ +| 10.5 | 2019-12-01 12:00:00 | 0 | +| 10.5 | 2019-12-01 12:00:00 | 0 | ++------+---------------------+--------------------+ + +select c22, c20, make_set(c22, c20) from t1; ++------+---------------------+---------------------+ +| c22 | c20 | make_set(c22, c20) | ++------+---------------------+---------------------+ +| 10.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 10.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c22, c20, concat_ws(c22, c20) from t1; ++------+---------------------+---------------------+ +| c22 | c20 | concat_ws(c22, c20) | ++------+---------------------+---------------------+ +| 10.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | +| 10.5 | 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | ++------+---------------------+---------------------+ +select c22, c20, interval(c22, c20) from t1; ++------+---------------------+--------------------+ +| c22 | c20 | interval(c22, c20) | ++------+---------------------+--------------------+ +| 10.5 | 2019-12-03 06:00:00 | 0 | +| 10.5 | 2019-12-03 06:00:00 | 0 | ++------+---------------------+--------------------+ + +select c22, c21, make_set(c22, c21) from t1; ++------+------+--------------------+ +| c22 | c21 | make_set(c22, c21) | ++------+------+--------------------+ +| 10.5 | 9.5 | 9.5 | +| 10.5 | -9.5 | -9.5 | ++------+------+--------------------+ +select c22, c21, concat_ws(c22, c21) from t1; ++------+------+---------------------+ +| c22 | c21 | concat_ws(c22, c21) | ++------+------+---------------------+ +| 10.5 | 9.5 | 9.5 | +| 10.5 | -9.5 | -9.5 | ++------+------+---------------------+ +select c22, c21, interval(c22, c21) from t1; ++------+------+--------------------+ +| c22 | c21 | interval(c22, c21) | ++------+------+--------------------+ +| 10.5 | 9.5 | 1 | +| 10.5 | -9.5 | 1 | ++------+------+--------------------+ + +select c22, c22, make_set(c22, c22) from t1; ++------+------+--------------------+ +| c22 | c22 | make_set(c22, c22) | ++------+------+--------------------+ +| 10.5 | 10.5 | 10.5 | +| 10.5 | 10.5 | 10.5 | ++------+------+--------------------+ +select c22, c22, concat_ws(c22, c22) from t1; ++------+------+---------------------+ +| c22 | c22 | concat_ws(c22, c22) | ++------+------+---------------------+ +| 10.5 | 10.5 | 10.5 | +| 10.5 | 10.5 | 10.5 | ++------+------+---------------------+ +select c22, c22, interval(c22, c22) from t1; ++------+------+--------------------+ +| c22 | c22 | interval(c22, c22) | ++------+------+--------------------+ +| 10.5 | 10.5 | 1 | +| 10.5 | 10.5 | 1 | ++------+------+--------------------+ + + +select interval(4, 3, 0, 0, 0, 0, 0, 8, 3, -3, 0 -6); ++-----------------------------------------------+ +| interval(4, 3, 0, 0, 0, 0, 0, 8, 3, -3, 0 -6) | ++-----------------------------------------------+ +| 10 | ++-----------------------------------------------+ +select interval(4, 3, 0, 0, 0, 0, 0, 8, null, -3, 0 -6); ++--------------------------------------------------+ +| interval(4, 3, 0, 0, 0, 0, 0, 8, null, -3, 0 -6) | ++--------------------------------------------------+ +| 6 | ++--------------------------------------------------+ +drop table t1; +create table t1(c1 int); +insert into t1 values(0); +select interval(4, 3, 0, 0, 0, 0, c1, 8, 3, -3, 0 -6) from t1; ++------------------------------------------------+ +| interval(4, 3, 0, 0, 0, 0, c1, 8, 3, -3, 0 -6) | ++------------------------------------------------+ +| 6 | ++------------------------------------------------+ +drop table t1; + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_substr.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_substr.result new file mode 100644 index 000000000..c21bbc607 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_substr.result @@ -0,0 +1,177 @@ +result_format: 4 + + + +set @@ob_enable_plan_cache = 0; + +select substr('abcdef', 0) from dual; ++---------------------+ +| substr('abcdef', 0) | ++---------------------+ +| | ++---------------------+ +select substr('abcdef', -1) from dual; ++----------------------+ +| substr('abcdef', -1) | ++----------------------+ +| f | ++----------------------+ +select substr('abcdef', 1) from dual; ++---------------------+ +| substr('abcdef', 1) | ++---------------------+ +| abcdef | ++---------------------+ +select substr('abcdef', 2) from dual; ++---------------------+ +| substr('abcdef', 2) | ++---------------------+ +| bcdef | ++---------------------+ +select substr('abcdef', 10) from dual; ++----------------------+ +| substr('abcdef', 10) | ++----------------------+ +| | ++----------------------+ +select substr('', 1) from dual; ++---------------+ +| substr('', 1) | ++---------------+ +| | ++---------------+ +select substr('abcdef', 10) from dual; ++----------------------+ +| substr('abcdef', 10) | ++----------------------+ +| | ++----------------------+ +select substr('abcdef', 2, 1) from dual; ++------------------------+ +| substr('abcdef', 2, 1) | ++------------------------+ +| b | ++------------------------+ +select substr('abcdef', 2, 2) from dual; ++------------------------+ +| substr('abcdef', 2, 2) | ++------------------------+ +| bc | ++------------------------+ +select substr('abcdef', 2, 0) from dual; ++------------------------+ +| substr('abcdef', 2, 0) | ++------------------------+ +| | ++------------------------+ +select substr('abcdef', 2, -1) from dual; ++-------------------------+ +| substr('abcdef', 2, -1) | ++-------------------------+ +| | ++-------------------------+ +select substr('abcdef', 2, 100) from dual; ++--------------------------+ +| substr('abcdef', 2, 100) | ++--------------------------+ +| bcdef | ++--------------------------+ +select substr('', 2, 100) from dual; ++--------------------+ +| substr('', 2, 100) | ++--------------------+ +| | ++--------------------+ + +select substr(NULL, 2, 1) from dual; ++--------------------+ +| substr(NULL, 2, 1) | ++--------------------+ +| NULL | ++--------------------+ +select substr('abcdef', NULL, 1) from dual; ++---------------------------+ +| substr('abcdef', NULL, 1) | ++---------------------------+ +| NULL | ++---------------------------+ +select substr('abcdef', 2, NULL) from dual; ++---------------------------+ +| substr('abcdef', 2, NULL) | ++---------------------------+ +| NULL | ++---------------------------+ + +select substr(3.14159, 2, 3) from dual; ++-----------------------+ +| substr(3.14159, 2, 3) | ++-----------------------+ +| .14 | ++-----------------------+ +explain select substr(3.14159, '2', '3') from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select substr(3.14159, '2', '2.1') from dual; ++-----------------------------+ +| substr(3.14159, '2', '2.1') | ++-----------------------------+ +| .1 | ++-----------------------------+ +select substr(3.14159, '2', '2.9') from dual; ++-----------------------------+ +| substr(3.14159, '2', '2.9') | ++-----------------------------+ +| .1 | ++-----------------------------+ +select substr(3.14159, '2', '2.9') from dual; ++-----------------------------+ +| substr(3.14159, '2', '2.9') | ++-----------------------------+ +| .1 | ++-----------------------------+ +select substr(3.14159, '2.1', '2.9') from dual; ++-------------------------------+ +| substr(3.14159, '2.1', '2.9') | ++-------------------------------+ +| .1 | ++-------------------------------+ +select substr(3.14159, '2.9', '2.9') from dual; ++-------------------------------+ +| substr(3.14159, '2.9', '2.9') | ++-------------------------------+ +| .1 | ++-------------------------------+ +select substr(3.14159, 2.1, '2.9') from dual; ++-----------------------------+ +| substr(3.14159, 2.1, '2.9') | ++-----------------------------+ +| .1 | ++-----------------------------+ +select substr(3.14159, 2.9, '2.9') from dual; ++-----------------------------+ +| substr(3.14159, 2.9, '2.9') | ++-----------------------------+ +| 14 | ++-----------------------------+ +select substr(3.14159, 2.9, 2.9) from dual; ++---------------------------+ +| substr(3.14159, 2.9, 2.9) | ++---------------------------+ +| 141 | ++---------------------------+ +select substr(3.14159, 2.1, 2.1) from dual; ++---------------------------+ +| substr(3.14159, 2.1, 2.1) | ++---------------------------+ +| .1 | ++---------------------------+ diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_substring_index.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_substring_index.result new file mode 100644 index 000000000..a5e27bd95 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_substring_index.result @@ -0,0 +1,135 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 bigint, c2 bigint unsigned, c3 decimal(40,2), c4 varchar(40)); +insert into t1 (c1, c2, c3, c4) values (-1, 0, 1, "2.1"); +insert into t1 (c1, c2, c3, c4) values (-2, 0, 2.1, "2.9"); +insert into t1 (c1, c2, c3, c4) values (-2, 0, 2.9, "2.9"); +insert into t1 (c1, c2, c3, c4) values (-10, 0, 10, "10"); +insert into t1 (c1, c2, c3, c4) values (4294967296, 4294967296, 4294967296, "4294967296"); +insert into t1 (c1, c2, c3, c4) values (4294967297, 4294967297, 4294967295, "4294967295"); +insert into t1 (c1, c2, c3, c4) values (-4294967296, 4294967296, -4294967296, "-4294967296"); +insert into t1 (c1, c2, c3, c4) values (-4294967297, 4294967297, -4294967295, "-4294967295"); +insert into t1 (c1, c2, c3, c4) values (9223372036854775806, 9223372036854775808, 9223372036854775808, "9223372036854775808"); +insert into t1 (c1, c2, c3, c4) values (9223372036854775807, 9223372036854775807, 9223372036854775807, "9223372036854775807"); +insert into t1 (c1, c2, c3, c4) values (9223372036854775806, 9223372036854775809, 9223372036854775809, "9223372036854775809"); +insert into t1 (c1, c2, c3, c4) values (-9223372036854775807, 9223372036854775807, -9223372036854775807, "-9223372036854775807"); + + +set @@ob_enable_plan_cache = 0; + +select substring_index("a,b,c,d", ",", -1); ++-------------------------------------+ +| substring_index("a,b,c,d", ",", -1) | ++-------------------------------------+ +| d | ++-------------------------------------+ +select substring_index("a,b,c,d", ",", 0); ++------------------------------------+ +| substring_index("a,b,c,d", ",", 0) | ++------------------------------------+ +| | ++------------------------------------+ +select substring_index("a,b,c,d", ",", 1); ++------------------------------------+ +| substring_index("a,b,c,d", ",", 1) | ++------------------------------------+ +| a | ++------------------------------------+ +select substring_index("a,b,c,d", ",", 2); ++------------------------------------+ +| substring_index("a,b,c,d", ",", 2) | ++------------------------------------+ +| a,b | ++------------------------------------+ +select substring_index("", ",", 2); ++-----------------------------+ +| substring_index("", ",", 2) | ++-----------------------------+ +| | ++-----------------------------+ +select substring_index("a,b,c,d", "", 2); ++-----------------------------------+ +| substring_index("a,b,c,d", "", 2) | ++-----------------------------------+ +| | ++-----------------------------------+ +select substring_index(NULL, ",", 2); ++-------------------------------+ +| substring_index(NULL, ",", 2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +select substring_index("a,b,c,d", NULL, 2); ++-------------------------------------+ +| substring_index("a,b,c,d", NULL, 2) | ++-------------------------------------+ +| NULL | ++-------------------------------------+ +select substring_index("a,b,c,d", ",", NULL); ++---------------------------------------+ +| substring_index("a,b,c,d", ",", NULL) | ++---------------------------------------+ +| NULL | ++---------------------------------------+ +select substring_index(1.414, 1, 2); ++------------------------------+ +| substring_index(1.414, 1, 2) | ++------------------------------+ +| 1.4 | ++------------------------------+ + +select c1, substring_index("a,b,c,d", ",", c1), c2, substring_index("a,b,c,d", ",", c2), c3, substring_index("a,b,c,d", ",", c3), c4, substring_index("a,b,c,d", ",", c4) from t1; ++----------------------+-------------------------------------+---------------------+-------------------------------------+-------------------------+-------------------------------------+----------------------+-------------------------------------+ +| c1 | substring_index("a,b,c,d", ",", c1) | c2 | substring_index("a,b,c,d", ",", c2) | c3 | substring_index("a,b,c,d", ",", c3) | c4 | substring_index("a,b,c,d", ",", c4) | ++----------------------+-------------------------------------+---------------------+-------------------------------------+-------------------------+-------------------------------------+----------------------+-------------------------------------+ +| -1 | d | 0 | | 1.00 | a | 2.1 | a,b | +| -2 | c,d | 0 | | 2.10 | a,b | 2.9 | a,b | +| -2 | c,d | 0 | | 2.90 | a,b,c | 2.9 | a,b | +| -10 | a,b,c,d | 0 | | 10.00 | a,b,c,d | 10 | a,b,c,d | +| 4294967296 | | 4294967296 | | 4294967296.00 | | 4294967296 | | +| 4294967297 | a | 4294967297 | a | 4294967295.00 | d | 4294967295 | d | +| -4294967296 | | 4294967296 | | -4294967296.00 | | -4294967296 | | +| -4294967297 | d | 4294967297 | a | -4294967295.00 | a | -4294967295 | a | +| 9223372036854775806 | c,d | 9223372036854775808 | | 9223372036854775808.00 | d | 9223372036854775808 | d | +| 9223372036854775807 | d | 9223372036854775807 | d | 9223372036854775807.00 | d | 9223372036854775807 | d | +| 9223372036854775806 | c,d | 9223372036854775809 | a | 9223372036854775809.00 | d | 9223372036854775809 | d | +| -9223372036854775807 | a | 9223372036854775807 | d | -9223372036854775807.00 | a | -9223372036854775807 | a | ++----------------------+-------------------------------------+---------------------+-------------------------------------+-------------------------+-------------------------------------+----------------------+-------------------------------------+ + +drop table if exists t2, t3; +create table t2(c1 varchar(20)); +create table t3(c1 varchar(20)); +insert into t2 values(null), (''), ('1'); +insert into t3 values(''), (null), ('1'); + +//the result of next 2 sqls should be same +select c1, substring_index(c1, 'vpprm', -47) from t2 order by c1; ++------+-----------------------------------+ +| c1 | substring_index(c1, 'vpprm', -47) | ++------+-----------------------------------+ +| NULL | NULL | +| | | +| 1 | 1 | ++------+-----------------------------------+ +select c1, substring_index(c1, 'vpprm', -47) from t3 order by c1; ++------+-----------------------------------+ +| c1 | substring_index(c1, 'vpprm', -47) | ++------+-----------------------------------+ +| NULL | NULL | +| | | +| 1 | 1 | ++------+-----------------------------------+ + +drop table t1, t2,t3; +drop table if exists t1; +create table t1(c1 char(10)); +insert into t1 values(null), (''); +select substring_index(c1, 'a', 1) from t1; ++-----------------------------+ +| substring_index(c1, 'a', 1) | ++-----------------------------+ +| NULL | +| | ++-----------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_sys_privilege_check.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_sys_privilege_check.result new file mode 100644 index 000000000..51f72fd47 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_sys_privilege_check.result @@ -0,0 +1,43 @@ +result_format: 4 + + + +set @@ob_enable_plan_cache = 0; + +select sys_privilege_check('table_acc', effective_tenant_id(), 'oceanbase', '__all_user'); ++------------------------------------------------------------------------------------+ +| sys_privilege_check('table_acc', effective_tenant_id(), 'oceanbase', '__all_user') | ++------------------------------------------------------------------------------------+ +| 0 | ++------------------------------------------------------------------------------------+ +select sys_privilege_check('db_acc', effective_tenant_id(), 'oceanbase_', '__all_user_'); ++-----------------------------------------------------------------------------------+ +| sys_privilege_check('db_acc', effective_tenant_id(), 'oceanbase_', '__all_user_') | ++-----------------------------------------------------------------------------------+ +| 0 | ++-----------------------------------------------------------------------------------+ + +drop database if exists espcndb; +create database espcndb; + +create user espcnouser; +grant all on test.* to espcnouser; + + +select sys_privilege_check('db_acc', effective_tenant_id(), 'test', 't'); ++-------------------------------------------------------------------+ +| sys_privilege_check('db_acc', effective_tenant_id(), 'test', 't') | ++-------------------------------------------------------------------+ +| 0 | ++-------------------------------------------------------------------+ +select sys_privilege_check('db_acc', effective_tenant_id(), 'espcndb', 't'); ++----------------------------------------------------------------------+ +| sys_privilege_check('db_acc', effective_tenant_id(), 'espcndb', 't') | ++----------------------------------------------------------------------+ +| -1 | ++----------------------------------------------------------------------+ + +drop user espcnouser; +drop database espcnouser; +ERROR HY000: Can't drop database 'espcnouser'; database doesn't exist + diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_time_diff.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_time_diff.result similarity index 95% rename from test/mysql_test/test_suite/static_engine/r/mysql/expr_time_diff.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_time_diff.result index 87682983a..f11f21859 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_time_diff.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_time_diff.result @@ -1,15 +1,10 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; alter system flush plan cache global; -connection default; drop table if exists t1; create table t1(c1 datetime, c2 timestamp, c3 date, c4 time); insert into t1 values('1234-12-12 01:23:45', '2020-01-01 01:23:45', '1234-12-12', '01:23:45'); insert into t1 values('2000-2-29 01:23:45.678', '2000-2-29 01:23:45.678', '2000-2-29', '01:23:45.678'); insert into t1 values('2001-12-31 12:00:00', '2001-12-31 12:00:00', '2001-12-31', '12:00:00'); insert into t1 values(null, null, null, null); -connection conn_admin; -connection default; select a.c1, b.c1, timediff(a.c1, b.c1) from t1 a, t1 b; c1 c1 timediff(a.c1, b.c1) 1234-12-12 01:23:45 1234-12-12 01:23:45 00:00:00 @@ -178,4 +173,3 @@ timediff(c4, c4) 00:00:00 00:00:00 NULL -connection conn_admin; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_timestampadd.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_timestampadd.result new file mode 100644 index 000000000..0bc430744 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_timestampadd.result @@ -0,0 +1,29816 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30)); +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5'); + +// Case1: normal test.测试各种类型组合, 跟不开新引擎开关进行对比 +alter system flush plan cache global; +explain_protocol: 2 +set @@ob_enable_plan_cache = 0; +## timestampadd(second, c14/c16, c19/c20)四种情况结果有误 +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, c1, c1) from t1; ++------------------------------+ +| timestampadd(second, c1, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(year, c1, c1) from t1; ++----------------------------+ +| timestampadd(year, c1, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select timestampadd(second, c1, c2) from t1; ++------------------------------+ +| timestampadd(second, c1, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select timestampadd(year, c1, c2) from t1; ++----------------------------+ +| timestampadd(year, c1, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select timestampadd(second, c1, c3) from t1; ++------------------------------+ +| timestampadd(second, c1, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select timestampadd(year, c1, c3) from t1; ++----------------------------+ +| timestampadd(year, c1, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c1], [t1.c4]), partitions(p0) + +select timestampadd(second, c1, c4) from t1; ++------------------------------+ +| timestampadd(second, c1, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c1], [t1.c4]), partitions(p0) + +select timestampadd(year, c1, c4) from t1; ++----------------------------+ +| timestampadd(year, c1, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c1], [t1.c5]), partitions(p0) + +select timestampadd(second, c1, c5) from t1; ++------------------------------+ +| timestampadd(second, c1, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c1], [t1.c5]), partitions(p0) + +select timestampadd(year, c1, c5) from t1; ++----------------------------+ +| timestampadd(year, c1, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c1], [t1.c6]), partitions(p0) + +select timestampadd(second, c1, c6) from t1; ++------------------------------+ +| timestampadd(second, c1, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c1], [t1.c6]), partitions(p0) + +select timestampadd(year, c1, c6) from t1; ++----------------------------+ +| timestampadd(year, c1, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c1], [t1.c7]), partitions(p0) + +select timestampadd(second, c1, c7) from t1; ++------------------------------+ +| timestampadd(second, c1, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c1], [t1.c7]), partitions(p0) + +select timestampadd(year, c1, c7) from t1; ++----------------------------+ +| timestampadd(year, c1, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c1], [t1.c8]), partitions(p0) + +select timestampadd(second, c1, c8) from t1; ++------------------------------+ +| timestampadd(second, c1, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c1], [t1.c8]), partitions(p0) + +select timestampadd(year, c1, c8) from t1; ++----------------------------+ +| timestampadd(year, c1, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c1, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c1], [t1.c9]), partitions(p0) + +select timestampadd(second, c1, c9) from t1; ++------------------------------+ +| timestampadd(second, c1, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c1, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c1], [t1.c9]), partitions(p0) + +select timestampadd(year, c1, c9) from t1; ++----------------------------+ +| timestampadd(year, c1, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c1], [t1.c10]), partitions(p0) + +select timestampadd(second, c1, c10) from t1; ++-------------------------------+ +| timestampadd(second, c1, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c1], [t1.c10]), partitions(p0) + +select timestampadd(year, c1, c10) from t1; ++-----------------------------+ +| timestampadd(year, c1, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c1], [t1.c11]), partitions(p0) + +select timestampadd(second, c1, c11) from t1; ++-------------------------------+ +| timestampadd(second, c1, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c1], [t1.c11]), partitions(p0) + +select timestampadd(year, c1, c11) from t1; ++-----------------------------+ +| timestampadd(year, c1, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c1], [t1.c12]), partitions(p0) + +select timestampadd(second, c1, c12) from t1; ++-------------------------------+ +| timestampadd(second, c1, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c1], [t1.c12]), partitions(p0) + +select timestampadd(year, c1, c12) from t1; ++-----------------------------+ +| timestampadd(year, c1, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c1], [t1.c13]), partitions(p0) + +select timestampadd(second, c1, c13) from t1; ++-------------------------------+ +| timestampadd(second, c1, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c1], [t1.c13]), partitions(p0) + +select timestampadd(year, c1, c13) from t1; ++-----------------------------+ +| timestampadd(year, c1, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c1], [t1.c14]), partitions(p0) + +select timestampadd(second, c1, c14) from t1; ++-------------------------------+ +| timestampadd(second, c1, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c1], [t1.c14]), partitions(p0) + +select timestampadd(year, c1, c14) from t1; ++-----------------------------+ +| timestampadd(year, c1, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c1], [t1.c15]), partitions(p0) + +select timestampadd(second, c1, c15) from t1; ++-------------------------------+ +| timestampadd(second, c1, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c1], [t1.c15]), partitions(p0) + +select timestampadd(year, c1, c15) from t1; ++-----------------------------+ +| timestampadd(year, c1, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c1], [t1.c16]), partitions(p0) + +select timestampadd(second, c1, c16) from t1; ++-------------------------------+ +| timestampadd(second, c1, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c1], [t1.c16]), partitions(p0) + +select timestampadd(year, c1, c16) from t1; ++-----------------------------+ +| timestampadd(year, c1, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c1], [t1.c17]), partitions(p0) + +select timestampadd(second, c1, c17) from t1; ++-------------------------------+ +| timestampadd(second, c1, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c1], [t1.c17]), partitions(p0) + +select timestampadd(year, c1, c17) from t1; ++-----------------------------+ +| timestampadd(year, c1, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c1], [t1.c18]), partitions(p0) + +select timestampadd(second, c1, c18) from t1; ++-------------------------------+ +| timestampadd(second, c1, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c1], [t1.c18]), partitions(p0) + +select timestampadd(year, c1, c18) from t1; ++-----------------------------+ +| timestampadd(year, c1, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c1], [t1.c19]), partitions(p0) + +select timestampadd(second, c1, c19) from t1; ++-------------------------------+ +| timestampadd(second, c1, c19) | ++-------------------------------+ +| 2019-12-01 12:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c1], [t1.c19]), partitions(p0) + +select timestampadd(year, c1, c19) from t1; ++-----------------------------+ +| timestampadd(year, c1, c19) | ++-----------------------------+ +| 2020-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c1], [t1.c20]), partitions(p0) + +select timestampadd(second, c1, c20) from t1; ++-------------------------------+ +| timestampadd(second, c1, c20) | ++-------------------------------+ +| 2019-12-03 06:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c1], [t1.c20]), partitions(p0) + +select timestampadd(year, c1, c20) from t1; ++-----------------------------+ +| timestampadd(year, c1, c20) | ++-----------------------------+ +| 2020-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c1], [t1.c21]), partitions(p0) + +select timestampadd(second, c1, c21) from t1; ++-------------------------------+ +| timestampadd(second, c1, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c1], [t1.c21]), partitions(p0) + +select timestampadd(year, c1, c21) from t1; ++-----------------------------+ +| timestampadd(year, c1, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c1, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c1, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c1], [t1.c22]), partitions(p0) + +select timestampadd(second, c1, c22) from t1; ++-------------------------------+ +| timestampadd(second, c1, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c1, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c1, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c1], [t1.c22]), partitions(p0) + +select timestampadd(year, c1, c22) from t1; ++-----------------------------+ +| timestampadd(year, c1, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select timestampadd(second, c2, c1) from t1; ++------------------------------+ +| timestampadd(second, c2, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select timestampadd(year, c2, c1) from t1; ++----------------------------+ +| timestampadd(year, c2, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, c2, c2) from t1; ++------------------------------+ +| timestampadd(second, c2, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(year, c2, c2) from t1; ++----------------------------+ +| timestampadd(year, c2, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c2], [t1.c3]), partitions(p0) + +select timestampadd(second, c2, c3) from t1; ++------------------------------+ +| timestampadd(second, c2, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c2], [t1.c3]), partitions(p0) + +select timestampadd(year, c2, c3) from t1; ++----------------------------+ +| timestampadd(year, c2, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c2], [t1.c4]), partitions(p0) + +select timestampadd(second, c2, c4) from t1; ++------------------------------+ +| timestampadd(second, c2, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c2], [t1.c4]), partitions(p0) + +select timestampadd(year, c2, c4) from t1; ++----------------------------+ +| timestampadd(year, c2, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c2], [t1.c5]), partitions(p0) + +select timestampadd(second, c2, c5) from t1; ++------------------------------+ +| timestampadd(second, c2, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c2], [t1.c5]), partitions(p0) + +select timestampadd(year, c2, c5) from t1; ++----------------------------+ +| timestampadd(year, c2, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c2], [t1.c6]), partitions(p0) + +select timestampadd(second, c2, c6) from t1; ++------------------------------+ +| timestampadd(second, c2, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c2], [t1.c6]), partitions(p0) + +select timestampadd(year, c2, c6) from t1; ++----------------------------+ +| timestampadd(year, c2, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c2], [t1.c7]), partitions(p0) + +select timestampadd(second, c2, c7) from t1; ++------------------------------+ +| timestampadd(second, c2, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c2], [t1.c7]), partitions(p0) + +select timestampadd(year, c2, c7) from t1; ++----------------------------+ +| timestampadd(year, c2, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c2], [t1.c8]), partitions(p0) + +select timestampadd(second, c2, c8) from t1; ++------------------------------+ +| timestampadd(second, c2, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c2], [t1.c8]), partitions(p0) + +select timestampadd(year, c2, c8) from t1; ++----------------------------+ +| timestampadd(year, c2, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c2, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c2], [t1.c9]), partitions(p0) + +select timestampadd(second, c2, c9) from t1; ++------------------------------+ +| timestampadd(second, c2, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c2, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c2], [t1.c9]), partitions(p0) + +select timestampadd(year, c2, c9) from t1; ++----------------------------+ +| timestampadd(year, c2, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c2], [t1.c10]), partitions(p0) + +select timestampadd(second, c2, c10) from t1; ++-------------------------------+ +| timestampadd(second, c2, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c2], [t1.c10]), partitions(p0) + +select timestampadd(year, c2, c10) from t1; ++-----------------------------+ +| timestampadd(year, c2, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c2], [t1.c11]), partitions(p0) + +select timestampadd(second, c2, c11) from t1; ++-------------------------------+ +| timestampadd(second, c2, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c2], [t1.c11]), partitions(p0) + +select timestampadd(year, c2, c11) from t1; ++-----------------------------+ +| timestampadd(year, c2, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c2], [t1.c12]), partitions(p0) + +select timestampadd(second, c2, c12) from t1; ++-------------------------------+ +| timestampadd(second, c2, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c2], [t1.c12]), partitions(p0) + +select timestampadd(year, c2, c12) from t1; ++-----------------------------+ +| timestampadd(year, c2, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c2], [t1.c13]), partitions(p0) + +select timestampadd(second, c2, c13) from t1; ++-------------------------------+ +| timestampadd(second, c2, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c2], [t1.c13]), partitions(p0) + +select timestampadd(year, c2, c13) from t1; ++-----------------------------+ +| timestampadd(year, c2, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c2], [t1.c14]), partitions(p0) + +select timestampadd(second, c2, c14) from t1; ++-------------------------------+ +| timestampadd(second, c2, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c2], [t1.c14]), partitions(p0) + +select timestampadd(year, c2, c14) from t1; ++-----------------------------+ +| timestampadd(year, c2, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c2], [t1.c15]), partitions(p0) + +select timestampadd(second, c2, c15) from t1; ++-------------------------------+ +| timestampadd(second, c2, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c2], [t1.c15]), partitions(p0) + +select timestampadd(year, c2, c15) from t1; ++-----------------------------+ +| timestampadd(year, c2, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c2], [t1.c16]), partitions(p0) + +select timestampadd(second, c2, c16) from t1; ++-------------------------------+ +| timestampadd(second, c2, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c2], [t1.c16]), partitions(p0) + +select timestampadd(year, c2, c16) from t1; ++-----------------------------+ +| timestampadd(year, c2, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c2], [t1.c17]), partitions(p0) + +select timestampadd(second, c2, c17) from t1; ++-------------------------------+ +| timestampadd(second, c2, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c2], [t1.c17]), partitions(p0) + +select timestampadd(year, c2, c17) from t1; ++-----------------------------+ +| timestampadd(year, c2, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c2], [t1.c18]), partitions(p0) + +select timestampadd(second, c2, c18) from t1; ++-------------------------------+ +| timestampadd(second, c2, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c2], [t1.c18]), partitions(p0) + +select timestampadd(year, c2, c18) from t1; ++-----------------------------+ +| timestampadd(year, c2, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c2], [t1.c19]), partitions(p0) + +select timestampadd(second, c2, c19) from t1; ++-------------------------------+ +| timestampadd(second, c2, c19) | ++-------------------------------+ +| 2019-12-01 12:00:02 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c2], [t1.c19]), partitions(p0) + +select timestampadd(year, c2, c19) from t1; ++-----------------------------+ +| timestampadd(year, c2, c19) | ++-----------------------------+ +| 2021-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c2], [t1.c20]), partitions(p0) + +select timestampadd(second, c2, c20) from t1; ++-------------------------------+ +| timestampadd(second, c2, c20) | ++-------------------------------+ +| 2019-12-03 06:00:02 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c2], [t1.c20]), partitions(p0) + +select timestampadd(year, c2, c20) from t1; ++-----------------------------+ +| timestampadd(year, c2, c20) | ++-----------------------------+ +| 2021-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c2], [t1.c21]), partitions(p0) + +select timestampadd(second, c2, c21) from t1; ++-------------------------------+ +| timestampadd(second, c2, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c2], [t1.c21]), partitions(p0) + +select timestampadd(year, c2, c21) from t1; ++-----------------------------+ +| timestampadd(year, c2, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c2, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c2, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c2], [t1.c22]), partitions(p0) + +select timestampadd(second, c2, c22) from t1; ++-------------------------------+ +| timestampadd(second, c2, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c2, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c2, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c2], [t1.c22]), partitions(p0) + +select timestampadd(year, c2, c22) from t1; ++-----------------------------+ +| timestampadd(year, c2, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + +select timestampadd(second, c3, c1) from t1; ++------------------------------+ +| timestampadd(second, c3, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + +select timestampadd(year, c3, c1) from t1; ++----------------------------+ +| timestampadd(year, c3, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c3], [t1.c2]), partitions(p0) + +select timestampadd(second, c3, c2) from t1; ++------------------------------+ +| timestampadd(second, c3, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c3], [t1.c2]), partitions(p0) + +select timestampadd(year, c3, c2) from t1; ++----------------------------+ +| timestampadd(year, c3, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, c3, c3) from t1; ++------------------------------+ +| timestampadd(second, c3, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(year, c3, c3) from t1; ++----------------------------+ +| timestampadd(year, c3, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c3], [t1.c4]), partitions(p0) + +select timestampadd(second, c3, c4) from t1; ++------------------------------+ +| timestampadd(second, c3, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c3], [t1.c4]), partitions(p0) + +select timestampadd(year, c3, c4) from t1; ++----------------------------+ +| timestampadd(year, c3, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c3], [t1.c5]), partitions(p0) + +select timestampadd(second, c3, c5) from t1; ++------------------------------+ +| timestampadd(second, c3, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c3], [t1.c5]), partitions(p0) + +select timestampadd(year, c3, c5) from t1; ++----------------------------+ +| timestampadd(year, c3, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c3], [t1.c6]), partitions(p0) + +select timestampadd(second, c3, c6) from t1; ++------------------------------+ +| timestampadd(second, c3, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c3], [t1.c6]), partitions(p0) + +select timestampadd(year, c3, c6) from t1; ++----------------------------+ +| timestampadd(year, c3, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c3], [t1.c7]), partitions(p0) + +select timestampadd(second, c3, c7) from t1; ++------------------------------+ +| timestampadd(second, c3, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c3], [t1.c7]), partitions(p0) + +select timestampadd(year, c3, c7) from t1; ++----------------------------+ +| timestampadd(year, c3, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c3], [t1.c8]), partitions(p0) + +select timestampadd(second, c3, c8) from t1; ++------------------------------+ +| timestampadd(second, c3, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c3], [t1.c8]), partitions(p0) + +select timestampadd(year, c3, c8) from t1; ++----------------------------+ +| timestampadd(year, c3, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c3, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c3], [t1.c9]), partitions(p0) + +select timestampadd(second, c3, c9) from t1; ++------------------------------+ +| timestampadd(second, c3, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c3, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c3], [t1.c9]), partitions(p0) + +select timestampadd(year, c3, c9) from t1; ++----------------------------+ +| timestampadd(year, c3, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c3], [t1.c10]), partitions(p0) + +select timestampadd(second, c3, c10) from t1; ++-------------------------------+ +| timestampadd(second, c3, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c3], [t1.c10]), partitions(p0) + +select timestampadd(year, c3, c10) from t1; ++-----------------------------+ +| timestampadd(year, c3, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c3], [t1.c11]), partitions(p0) + +select timestampadd(second, c3, c11) from t1; ++-------------------------------+ +| timestampadd(second, c3, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c3], [t1.c11]), partitions(p0) + +select timestampadd(year, c3, c11) from t1; ++-----------------------------+ +| timestampadd(year, c3, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c3], [t1.c12]), partitions(p0) + +select timestampadd(second, c3, c12) from t1; ++-------------------------------+ +| timestampadd(second, c3, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c3], [t1.c12]), partitions(p0) + +select timestampadd(year, c3, c12) from t1; ++-----------------------------+ +| timestampadd(year, c3, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c3], [t1.c13]), partitions(p0) + +select timestampadd(second, c3, c13) from t1; ++-------------------------------+ +| timestampadd(second, c3, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c3], [t1.c13]), partitions(p0) + +select timestampadd(year, c3, c13) from t1; ++-----------------------------+ +| timestampadd(year, c3, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c3], [t1.c14]), partitions(p0) + +select timestampadd(second, c3, c14) from t1; ++-------------------------------+ +| timestampadd(second, c3, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c3], [t1.c14]), partitions(p0) + +select timestampadd(year, c3, c14) from t1; ++-----------------------------+ +| timestampadd(year, c3, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c3], [t1.c15]), partitions(p0) + +select timestampadd(second, c3, c15) from t1; ++-------------------------------+ +| timestampadd(second, c3, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c3], [t1.c15]), partitions(p0) + +select timestampadd(year, c3, c15) from t1; ++-----------------------------+ +| timestampadd(year, c3, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c3], [t1.c16]), partitions(p0) + +select timestampadd(second, c3, c16) from t1; ++-------------------------------+ +| timestampadd(second, c3, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c3], [t1.c16]), partitions(p0) + +select timestampadd(year, c3, c16) from t1; ++-----------------------------+ +| timestampadd(year, c3, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c3], [t1.c17]), partitions(p0) + +select timestampadd(second, c3, c17) from t1; ++-------------------------------+ +| timestampadd(second, c3, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c3], [t1.c17]), partitions(p0) + +select timestampadd(year, c3, c17) from t1; ++-----------------------------+ +| timestampadd(year, c3, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c3], [t1.c18]), partitions(p0) + +select timestampadd(second, c3, c18) from t1; ++-------------------------------+ +| timestampadd(second, c3, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c3], [t1.c18]), partitions(p0) + +select timestampadd(year, c3, c18) from t1; ++-----------------------------+ +| timestampadd(year, c3, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c3], [t1.c19]), partitions(p0) + +select timestampadd(second, c3, c19) from t1; ++-------------------------------+ +| timestampadd(second, c3, c19) | ++-------------------------------+ +| 2019-12-01 12:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c3], [t1.c19]), partitions(p0) + +select timestampadd(year, c3, c19) from t1; ++-----------------------------+ +| timestampadd(year, c3, c19) | ++-----------------------------+ +| 2020-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c3], [t1.c20]), partitions(p0) + +select timestampadd(second, c3, c20) from t1; ++-------------------------------+ +| timestampadd(second, c3, c20) | ++-------------------------------+ +| 2019-12-03 06:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c3], [t1.c20]), partitions(p0) + +select timestampadd(year, c3, c20) from t1; ++-----------------------------+ +| timestampadd(year, c3, c20) | ++-----------------------------+ +| 2020-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c3], [t1.c21]), partitions(p0) + +select timestampadd(second, c3, c21) from t1; ++-------------------------------+ +| timestampadd(second, c3, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c3], [t1.c21]), partitions(p0) + +select timestampadd(year, c3, c21) from t1; ++-----------------------------+ +| timestampadd(year, c3, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c3, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c3, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c3], [t1.c22]), partitions(p0) + +select timestampadd(second, c3, c22) from t1; ++-------------------------------+ +| timestampadd(second, c3, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c3, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c3, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c3], [t1.c22]), partitions(p0) + +select timestampadd(year, c3, c22) from t1; ++-----------------------------+ +| timestampadd(year, c3, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c4], [t1.c1]), partitions(p0) + +select timestampadd(second, c4, c1) from t1; ++------------------------------+ +| timestampadd(second, c4, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c4], [t1.c1]), partitions(p0) + +select timestampadd(year, c4, c1) from t1; ++----------------------------+ +| timestampadd(year, c4, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c4], [t1.c2]), partitions(p0) + +select timestampadd(second, c4, c2) from t1; ++------------------------------+ +| timestampadd(second, c4, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c4], [t1.c2]), partitions(p0) + +select timestampadd(year, c4, c2) from t1; ++----------------------------+ +| timestampadd(year, c4, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c4], [t1.c3]), partitions(p0) + +select timestampadd(second, c4, c3) from t1; ++------------------------------+ +| timestampadd(second, c4, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c4], [t1.c3]), partitions(p0) + +select timestampadd(year, c4, c3) from t1; ++----------------------------+ +| timestampadd(year, c4, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, c4, c4) from t1; ++------------------------------+ +| timestampadd(second, c4, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(year, c4, c4) from t1; ++----------------------------+ +| timestampadd(year, c4, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c4], [t1.c5]), partitions(p0) + +select timestampadd(second, c4, c5) from t1; ++------------------------------+ +| timestampadd(second, c4, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c4], [t1.c5]), partitions(p0) + +select timestampadd(year, c4, c5) from t1; ++----------------------------+ +| timestampadd(year, c4, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c4], [t1.c6]), partitions(p0) + +select timestampadd(second, c4, c6) from t1; ++------------------------------+ +| timestampadd(second, c4, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c4], [t1.c6]), partitions(p0) + +select timestampadd(year, c4, c6) from t1; ++----------------------------+ +| timestampadd(year, c4, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c4], [t1.c7]), partitions(p0) + +select timestampadd(second, c4, c7) from t1; ++------------------------------+ +| timestampadd(second, c4, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c4], [t1.c7]), partitions(p0) + +select timestampadd(year, c4, c7) from t1; ++----------------------------+ +| timestampadd(year, c4, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c4], [t1.c8]), partitions(p0) + +select timestampadd(second, c4, c8) from t1; ++------------------------------+ +| timestampadd(second, c4, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c4], [t1.c8]), partitions(p0) + +select timestampadd(year, c4, c8) from t1; ++----------------------------+ +| timestampadd(year, c4, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c4, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c4], [t1.c9]), partitions(p0) + +select timestampadd(second, c4, c9) from t1; ++------------------------------+ +| timestampadd(second, c4, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c4, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c4], [t1.c9]), partitions(p0) + +select timestampadd(year, c4, c9) from t1; ++----------------------------+ +| timestampadd(year, c4, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c4], [t1.c10]), partitions(p0) + +select timestampadd(second, c4, c10) from t1; ++-------------------------------+ +| timestampadd(second, c4, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c4], [t1.c10]), partitions(p0) + +select timestampadd(year, c4, c10) from t1; ++-----------------------------+ +| timestampadd(year, c4, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c4], [t1.c11]), partitions(p0) + +select timestampadd(second, c4, c11) from t1; ++-------------------------------+ +| timestampadd(second, c4, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c4], [t1.c11]), partitions(p0) + +select timestampadd(year, c4, c11) from t1; ++-----------------------------+ +| timestampadd(year, c4, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c4], [t1.c12]), partitions(p0) + +select timestampadd(second, c4, c12) from t1; ++-------------------------------+ +| timestampadd(second, c4, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c4], [t1.c12]), partitions(p0) + +select timestampadd(year, c4, c12) from t1; ++-----------------------------+ +| timestampadd(year, c4, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c4], [t1.c13]), partitions(p0) + +select timestampadd(second, c4, c13) from t1; ++-------------------------------+ +| timestampadd(second, c4, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c4], [t1.c13]), partitions(p0) + +select timestampadd(year, c4, c13) from t1; ++-----------------------------+ +| timestampadd(year, c4, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c4], [t1.c14]), partitions(p0) + +select timestampadd(second, c4, c14) from t1; ++-------------------------------+ +| timestampadd(second, c4, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c4], [t1.c14]), partitions(p0) + +select timestampadd(year, c4, c14) from t1; ++-----------------------------+ +| timestampadd(year, c4, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c4], [t1.c15]), partitions(p0) + +select timestampadd(second, c4, c15) from t1; ++-------------------------------+ +| timestampadd(second, c4, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c4], [t1.c15]), partitions(p0) + +select timestampadd(year, c4, c15) from t1; ++-----------------------------+ +| timestampadd(year, c4, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c4], [t1.c16]), partitions(p0) + +select timestampadd(second, c4, c16) from t1; ++-------------------------------+ +| timestampadd(second, c4, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c4], [t1.c16]), partitions(p0) + +select timestampadd(year, c4, c16) from t1; ++-----------------------------+ +| timestampadd(year, c4, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c4], [t1.c17]), partitions(p0) + +select timestampadd(second, c4, c17) from t1; ++-------------------------------+ +| timestampadd(second, c4, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c4], [t1.c17]), partitions(p0) + +select timestampadd(year, c4, c17) from t1; ++-----------------------------+ +| timestampadd(year, c4, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c4], [t1.c18]), partitions(p0) + +select timestampadd(second, c4, c18) from t1; ++-------------------------------+ +| timestampadd(second, c4, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c4], [t1.c18]), partitions(p0) + +select timestampadd(year, c4, c18) from t1; ++-----------------------------+ +| timestampadd(year, c4, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c4], [t1.c19]), partitions(p0) + +select timestampadd(second, c4, c19) from t1; ++-------------------------------+ +| timestampadd(second, c4, c19) | ++-------------------------------+ +| 2019-12-01 12:00:02 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c4], [t1.c19]), partitions(p0) + +select timestampadd(year, c4, c19) from t1; ++-----------------------------+ +| timestampadd(year, c4, c19) | ++-----------------------------+ +| 2021-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c4], [t1.c20]), partitions(p0) + +select timestampadd(second, c4, c20) from t1; ++-------------------------------+ +| timestampadd(second, c4, c20) | ++-------------------------------+ +| 2019-12-03 06:00:02 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c4], [t1.c20]), partitions(p0) + +select timestampadd(year, c4, c20) from t1; ++-----------------------------+ +| timestampadd(year, c4, c20) | ++-----------------------------+ +| 2021-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c4], [t1.c21]), partitions(p0) + +select timestampadd(second, c4, c21) from t1; ++-------------------------------+ +| timestampadd(second, c4, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c4], [t1.c21]), partitions(p0) + +select timestampadd(year, c4, c21) from t1; ++-----------------------------+ +| timestampadd(year, c4, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c4, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c4, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c4], [t1.c22]), partitions(p0) + +select timestampadd(second, c4, c22) from t1; ++-------------------------------+ +| timestampadd(second, c4, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c4, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c4, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c4], [t1.c22]), partitions(p0) + +select timestampadd(year, c4, c22) from t1; ++-----------------------------+ +| timestampadd(year, c4, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c5], [t1.c1]), partitions(p0) + +select timestampadd(second, c5, c1) from t1; ++------------------------------+ +| timestampadd(second, c5, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c5], [t1.c1]), partitions(p0) + +select timestampadd(year, c5, c1) from t1; ++----------------------------+ +| timestampadd(year, c5, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c5], [t1.c2]), partitions(p0) + +select timestampadd(second, c5, c2) from t1; ++------------------------------+ +| timestampadd(second, c5, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c5], [t1.c2]), partitions(p0) + +select timestampadd(year, c5, c2) from t1; ++----------------------------+ +| timestampadd(year, c5, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c5], [t1.c3]), partitions(p0) + +select timestampadd(second, c5, c3) from t1; ++------------------------------+ +| timestampadd(second, c5, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c5], [t1.c3]), partitions(p0) + +select timestampadd(year, c5, c3) from t1; ++----------------------------+ +| timestampadd(year, c5, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c5], [t1.c4]), partitions(p0) + +select timestampadd(second, c5, c4) from t1; ++------------------------------+ +| timestampadd(second, c5, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c5], [t1.c4]), partitions(p0) + +select timestampadd(year, c5, c4) from t1; ++----------------------------+ +| timestampadd(year, c5, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, c5, c5) from t1; ++------------------------------+ +| timestampadd(second, c5, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(year, c5, c5) from t1; ++----------------------------+ +| timestampadd(year, c5, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c5], [t1.c6]), partitions(p0) + +select timestampadd(second, c5, c6) from t1; ++------------------------------+ +| timestampadd(second, c5, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c5], [t1.c6]), partitions(p0) + +select timestampadd(year, c5, c6) from t1; ++----------------------------+ +| timestampadd(year, c5, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c5], [t1.c7]), partitions(p0) + +select timestampadd(second, c5, c7) from t1; ++------------------------------+ +| timestampadd(second, c5, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c5], [t1.c7]), partitions(p0) + +select timestampadd(year, c5, c7) from t1; ++----------------------------+ +| timestampadd(year, c5, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c5], [t1.c8]), partitions(p0) + +select timestampadd(second, c5, c8) from t1; ++------------------------------+ +| timestampadd(second, c5, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c5], [t1.c8]), partitions(p0) + +select timestampadd(year, c5, c8) from t1; ++----------------------------+ +| timestampadd(year, c5, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c5, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c5], [t1.c9]), partitions(p0) + +select timestampadd(second, c5, c9) from t1; ++------------------------------+ +| timestampadd(second, c5, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c5, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c5], [t1.c9]), partitions(p0) + +select timestampadd(year, c5, c9) from t1; ++----------------------------+ +| timestampadd(year, c5, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c5], [t1.c10]), partitions(p0) + +select timestampadd(second, c5, c10) from t1; ++-------------------------------+ +| timestampadd(second, c5, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c5], [t1.c10]), partitions(p0) + +select timestampadd(year, c5, c10) from t1; ++-----------------------------+ +| timestampadd(year, c5, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c5], [t1.c11]), partitions(p0) + +select timestampadd(second, c5, c11) from t1; ++-------------------------------+ +| timestampadd(second, c5, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c5], [t1.c11]), partitions(p0) + +select timestampadd(year, c5, c11) from t1; ++-----------------------------+ +| timestampadd(year, c5, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c5], [t1.c12]), partitions(p0) + +select timestampadd(second, c5, c12) from t1; ++-------------------------------+ +| timestampadd(second, c5, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c5], [t1.c12]), partitions(p0) + +select timestampadd(year, c5, c12) from t1; ++-----------------------------+ +| timestampadd(year, c5, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c5], [t1.c13]), partitions(p0) + +select timestampadd(second, c5, c13) from t1; ++-------------------------------+ +| timestampadd(second, c5, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c5], [t1.c13]), partitions(p0) + +select timestampadd(year, c5, c13) from t1; ++-----------------------------+ +| timestampadd(year, c5, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c5], [t1.c14]), partitions(p0) + +select timestampadd(second, c5, c14) from t1; ++-------------------------------+ +| timestampadd(second, c5, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c5], [t1.c14]), partitions(p0) + +select timestampadd(year, c5, c14) from t1; ++-----------------------------+ +| timestampadd(year, c5, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c5], [t1.c15]), partitions(p0) + +select timestampadd(second, c5, c15) from t1; ++-------------------------------+ +| timestampadd(second, c5, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c5], [t1.c15]), partitions(p0) + +select timestampadd(year, c5, c15) from t1; ++-----------------------------+ +| timestampadd(year, c5, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c5], [t1.c16]), partitions(p0) + +select timestampadd(second, c5, c16) from t1; ++-------------------------------+ +| timestampadd(second, c5, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c5], [t1.c16]), partitions(p0) + +select timestampadd(year, c5, c16) from t1; ++-----------------------------+ +| timestampadd(year, c5, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c5], [t1.c17]), partitions(p0) + +select timestampadd(second, c5, c17) from t1; ++-------------------------------+ +| timestampadd(second, c5, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c5], [t1.c17]), partitions(p0) + +select timestampadd(year, c5, c17) from t1; ++-----------------------------+ +| timestampadd(year, c5, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c5], [t1.c18]), partitions(p0) + +select timestampadd(second, c5, c18) from t1; ++-------------------------------+ +| timestampadd(second, c5, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c5], [t1.c18]), partitions(p0) + +select timestampadd(year, c5, c18) from t1; ++-----------------------------+ +| timestampadd(year, c5, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c5], [t1.c19]), partitions(p0) + +select timestampadd(second, c5, c19) from t1; ++-------------------------------+ +| timestampadd(second, c5, c19) | ++-------------------------------+ +| 2019-12-01 12:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c5], [t1.c19]), partitions(p0) + +select timestampadd(year, c5, c19) from t1; ++-----------------------------+ +| timestampadd(year, c5, c19) | ++-----------------------------+ +| 2020-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c5], [t1.c20]), partitions(p0) + +select timestampadd(second, c5, c20) from t1; ++-------------------------------+ +| timestampadd(second, c5, c20) | ++-------------------------------+ +| 2019-12-03 06:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c5], [t1.c20]), partitions(p0) + +select timestampadd(year, c5, c20) from t1; ++-----------------------------+ +| timestampadd(year, c5, c20) | ++-----------------------------+ +| 2020-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c5], [t1.c21]), partitions(p0) + +select timestampadd(second, c5, c21) from t1; ++-------------------------------+ +| timestampadd(second, c5, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c5], [t1.c21]), partitions(p0) + +select timestampadd(year, c5, c21) from t1; ++-----------------------------+ +| timestampadd(year, c5, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c5, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c5, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c5], [t1.c22]), partitions(p0) + +select timestampadd(second, c5, c22) from t1; ++-------------------------------+ +| timestampadd(second, c5, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c5, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c5, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c5], [t1.c22]), partitions(p0) + +select timestampadd(year, c5, c22) from t1; ++-----------------------------+ +| timestampadd(year, c5, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c6], [t1.c1]), partitions(p0) + +select timestampadd(second, c6, c1) from t1; ++------------------------------+ +| timestampadd(second, c6, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c6], [t1.c1]), partitions(p0) + +select timestampadd(year, c6, c1) from t1; ++----------------------------+ +| timestampadd(year, c6, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c6], [t1.c2]), partitions(p0) + +select timestampadd(second, c6, c2) from t1; ++------------------------------+ +| timestampadd(second, c6, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c6], [t1.c2]), partitions(p0) + +select timestampadd(year, c6, c2) from t1; ++----------------------------+ +| timestampadd(year, c6, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c6], [t1.c3]), partitions(p0) + +select timestampadd(second, c6, c3) from t1; ++------------------------------+ +| timestampadd(second, c6, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c6], [t1.c3]), partitions(p0) + +select timestampadd(year, c6, c3) from t1; ++----------------------------+ +| timestampadd(year, c6, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c6], [t1.c4]), partitions(p0) + +select timestampadd(second, c6, c4) from t1; ++------------------------------+ +| timestampadd(second, c6, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c6], [t1.c4]), partitions(p0) + +select timestampadd(year, c6, c4) from t1; ++----------------------------+ +| timestampadd(year, c6, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c6], [t1.c5]), partitions(p0) + +select timestampadd(second, c6, c5) from t1; ++------------------------------+ +| timestampadd(second, c6, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c6], [t1.c5]), partitions(p0) + +select timestampadd(year, c6, c5) from t1; ++----------------------------+ +| timestampadd(year, c6, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, c6, c6) from t1; ++------------------------------+ +| timestampadd(second, c6, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(year, c6, c6) from t1; ++----------------------------+ +| timestampadd(year, c6, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c6], [t1.c7]), partitions(p0) + +select timestampadd(second, c6, c7) from t1; ++------------------------------+ +| timestampadd(second, c6, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c6], [t1.c7]), partitions(p0) + +select timestampadd(year, c6, c7) from t1; ++----------------------------+ +| timestampadd(year, c6, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c6], [t1.c8]), partitions(p0) + +select timestampadd(second, c6, c8) from t1; ++------------------------------+ +| timestampadd(second, c6, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c6], [t1.c8]), partitions(p0) + +select timestampadd(year, c6, c8) from t1; ++----------------------------+ +| timestampadd(year, c6, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c6, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c6], [t1.c9]), partitions(p0) + +select timestampadd(second, c6, c9) from t1; ++------------------------------+ +| timestampadd(second, c6, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c6, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c6], [t1.c9]), partitions(p0) + +select timestampadd(year, c6, c9) from t1; ++----------------------------+ +| timestampadd(year, c6, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c6], [t1.c10]), partitions(p0) + +select timestampadd(second, c6, c10) from t1; ++-------------------------------+ +| timestampadd(second, c6, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c6], [t1.c10]), partitions(p0) + +select timestampadd(year, c6, c10) from t1; ++-----------------------------+ +| timestampadd(year, c6, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c6], [t1.c11]), partitions(p0) + +select timestampadd(second, c6, c11) from t1; ++-------------------------------+ +| timestampadd(second, c6, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c6], [t1.c11]), partitions(p0) + +select timestampadd(year, c6, c11) from t1; ++-----------------------------+ +| timestampadd(year, c6, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c6], [t1.c12]), partitions(p0) + +select timestampadd(second, c6, c12) from t1; ++-------------------------------+ +| timestampadd(second, c6, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c6], [t1.c12]), partitions(p0) + +select timestampadd(year, c6, c12) from t1; ++-----------------------------+ +| timestampadd(year, c6, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c6], [t1.c13]), partitions(p0) + +select timestampadd(second, c6, c13) from t1; ++-------------------------------+ +| timestampadd(second, c6, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c6], [t1.c13]), partitions(p0) + +select timestampadd(year, c6, c13) from t1; ++-----------------------------+ +| timestampadd(year, c6, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c6], [t1.c14]), partitions(p0) + +select timestampadd(second, c6, c14) from t1; ++-------------------------------+ +| timestampadd(second, c6, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c6], [t1.c14]), partitions(p0) + +select timestampadd(year, c6, c14) from t1; ++-----------------------------+ +| timestampadd(year, c6, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c6], [t1.c15]), partitions(p0) + +select timestampadd(second, c6, c15) from t1; ++-------------------------------+ +| timestampadd(second, c6, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c6], [t1.c15]), partitions(p0) + +select timestampadd(year, c6, c15) from t1; ++-----------------------------+ +| timestampadd(year, c6, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c6], [t1.c16]), partitions(p0) + +select timestampadd(second, c6, c16) from t1; ++-------------------------------+ +| timestampadd(second, c6, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c6], [t1.c16]), partitions(p0) + +select timestampadd(year, c6, c16) from t1; ++-----------------------------+ +| timestampadd(year, c6, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c6], [t1.c17]), partitions(p0) + +select timestampadd(second, c6, c17) from t1; ++-------------------------------+ +| timestampadd(second, c6, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c6], [t1.c17]), partitions(p0) + +select timestampadd(year, c6, c17) from t1; ++-----------------------------+ +| timestampadd(year, c6, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c6], [t1.c18]), partitions(p0) + +select timestampadd(second, c6, c18) from t1; ++-------------------------------+ +| timestampadd(second, c6, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c6], [t1.c18]), partitions(p0) + +select timestampadd(year, c6, c18) from t1; ++-----------------------------+ +| timestampadd(year, c6, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c6], [t1.c19]), partitions(p0) + +select timestampadd(second, c6, c19) from t1; ++-------------------------------+ +| timestampadd(second, c6, c19) | ++-------------------------------+ +| 2019-12-01 12:00:02 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c6], [t1.c19]), partitions(p0) + +select timestampadd(year, c6, c19) from t1; ++-----------------------------+ +| timestampadd(year, c6, c19) | ++-----------------------------+ +| 2021-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c6], [t1.c20]), partitions(p0) + +select timestampadd(second, c6, c20) from t1; ++-------------------------------+ +| timestampadd(second, c6, c20) | ++-------------------------------+ +| 2019-12-03 06:00:02 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c6], [t1.c20]), partitions(p0) + +select timestampadd(year, c6, c20) from t1; ++-----------------------------+ +| timestampadd(year, c6, c20) | ++-----------------------------+ +| 2021-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c6], [t1.c21]), partitions(p0) + +select timestampadd(second, c6, c21) from t1; ++-------------------------------+ +| timestampadd(second, c6, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c6], [t1.c21]), partitions(p0) + +select timestampadd(year, c6, c21) from t1; ++-----------------------------+ +| timestampadd(year, c6, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c6, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c6, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c6], [t1.c22]), partitions(p0) + +select timestampadd(second, c6, c22) from t1; ++-------------------------------+ +| timestampadd(second, c6, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c6, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c6, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c6], [t1.c22]), partitions(p0) + +select timestampadd(year, c6, c22) from t1; ++-----------------------------+ +| timestampadd(year, c6, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c7], [t1.c1]), partitions(p0) + +select timestampadd(second, c7, c1) from t1; ++------------------------------+ +| timestampadd(second, c7, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c7], [t1.c1]), partitions(p0) + +select timestampadd(year, c7, c1) from t1; ++----------------------------+ +| timestampadd(year, c7, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c7], [t1.c2]), partitions(p0) + +select timestampadd(second, c7, c2) from t1; ++------------------------------+ +| timestampadd(second, c7, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c7], [t1.c2]), partitions(p0) + +select timestampadd(year, c7, c2) from t1; ++----------------------------+ +| timestampadd(year, c7, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c7], [t1.c3]), partitions(p0) + +select timestampadd(second, c7, c3) from t1; ++------------------------------+ +| timestampadd(second, c7, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c7], [t1.c3]), partitions(p0) + +select timestampadd(year, c7, c3) from t1; ++----------------------------+ +| timestampadd(year, c7, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c7], [t1.c4]), partitions(p0) + +select timestampadd(second, c7, c4) from t1; ++------------------------------+ +| timestampadd(second, c7, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c7], [t1.c4]), partitions(p0) + +select timestampadd(year, c7, c4) from t1; ++----------------------------+ +| timestampadd(year, c7, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c7], [t1.c5]), partitions(p0) + +select timestampadd(second, c7, c5) from t1; ++------------------------------+ +| timestampadd(second, c7, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c7], [t1.c5]), partitions(p0) + +select timestampadd(year, c7, c5) from t1; ++----------------------------+ +| timestampadd(year, c7, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c7], [t1.c6]), partitions(p0) + +select timestampadd(second, c7, c6) from t1; ++------------------------------+ +| timestampadd(second, c7, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c7], [t1.c6]), partitions(p0) + +select timestampadd(year, c7, c6) from t1; ++----------------------------+ +| timestampadd(year, c7, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, c7, c7) from t1; ++------------------------------+ +| timestampadd(second, c7, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(year, c7, c7) from t1; ++----------------------------+ +| timestampadd(year, c7, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c7], [t1.c8]), partitions(p0) + +select timestampadd(second, c7, c8) from t1; ++------------------------------+ +| timestampadd(second, c7, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c7], [t1.c8]), partitions(p0) + +select timestampadd(year, c7, c8) from t1; ++----------------------------+ +| timestampadd(year, c7, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c7, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c7], [t1.c9]), partitions(p0) + +select timestampadd(second, c7, c9) from t1; ++------------------------------+ +| timestampadd(second, c7, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c7, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c7], [t1.c9]), partitions(p0) + +select timestampadd(year, c7, c9) from t1; ++----------------------------+ +| timestampadd(year, c7, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c7], [t1.c10]), partitions(p0) + +select timestampadd(second, c7, c10) from t1; ++-------------------------------+ +| timestampadd(second, c7, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c7], [t1.c10]), partitions(p0) + +select timestampadd(year, c7, c10) from t1; ++-----------------------------+ +| timestampadd(year, c7, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c7], [t1.c11]), partitions(p0) + +select timestampadd(second, c7, c11) from t1; ++-------------------------------+ +| timestampadd(second, c7, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c7], [t1.c11]), partitions(p0) + +select timestampadd(year, c7, c11) from t1; ++-----------------------------+ +| timestampadd(year, c7, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c7], [t1.c12]), partitions(p0) + +select timestampadd(second, c7, c12) from t1; ++-------------------------------+ +| timestampadd(second, c7, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c7], [t1.c12]), partitions(p0) + +select timestampadd(year, c7, c12) from t1; ++-----------------------------+ +| timestampadd(year, c7, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c7], [t1.c13]), partitions(p0) + +select timestampadd(second, c7, c13) from t1; ++-------------------------------+ +| timestampadd(second, c7, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c7], [t1.c13]), partitions(p0) + +select timestampadd(year, c7, c13) from t1; ++-----------------------------+ +| timestampadd(year, c7, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c7], [t1.c14]), partitions(p0) + +select timestampadd(second, c7, c14) from t1; ++-------------------------------+ +| timestampadd(second, c7, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c7], [t1.c14]), partitions(p0) + +select timestampadd(year, c7, c14) from t1; ++-----------------------------+ +| timestampadd(year, c7, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c7], [t1.c15]), partitions(p0) + +select timestampadd(second, c7, c15) from t1; ++-------------------------------+ +| timestampadd(second, c7, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c7], [t1.c15]), partitions(p0) + +select timestampadd(year, c7, c15) from t1; ++-----------------------------+ +| timestampadd(year, c7, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c7], [t1.c16]), partitions(p0) + +select timestampadd(second, c7, c16) from t1; ++-------------------------------+ +| timestampadd(second, c7, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c7], [t1.c16]), partitions(p0) + +select timestampadd(year, c7, c16) from t1; ++-----------------------------+ +| timestampadd(year, c7, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c7], [t1.c17]), partitions(p0) + +select timestampadd(second, c7, c17) from t1; ++-------------------------------+ +| timestampadd(second, c7, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c7], [t1.c17]), partitions(p0) + +select timestampadd(year, c7, c17) from t1; ++-----------------------------+ +| timestampadd(year, c7, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c7], [t1.c18]), partitions(p0) + +select timestampadd(second, c7, c18) from t1; ++-------------------------------+ +| timestampadd(second, c7, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c7], [t1.c18]), partitions(p0) + +select timestampadd(year, c7, c18) from t1; ++-----------------------------+ +| timestampadd(year, c7, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c7], [t1.c19]), partitions(p0) + +select timestampadd(second, c7, c19) from t1; ++-------------------------------+ +| timestampadd(second, c7, c19) | ++-------------------------------+ +| 2019-12-01 12:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c7], [t1.c19]), partitions(p0) + +select timestampadd(year, c7, c19) from t1; ++-----------------------------+ +| timestampadd(year, c7, c19) | ++-----------------------------+ +| 2020-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c7], [t1.c20]), partitions(p0) + +select timestampadd(second, c7, c20) from t1; ++-------------------------------+ +| timestampadd(second, c7, c20) | ++-------------------------------+ +| 2019-12-03 06:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c7], [t1.c20]), partitions(p0) + +select timestampadd(year, c7, c20) from t1; ++-----------------------------+ +| timestampadd(year, c7, c20) | ++-----------------------------+ +| 2020-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c7], [t1.c21]), partitions(p0) + +select timestampadd(second, c7, c21) from t1; ++-------------------------------+ +| timestampadd(second, c7, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c7], [t1.c21]), partitions(p0) + +select timestampadd(year, c7, c21) from t1; ++-----------------------------+ +| timestampadd(year, c7, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c7, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c7, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c7], [t1.c22]), partitions(p0) + +select timestampadd(second, c7, c22) from t1; ++-------------------------------+ +| timestampadd(second, c7, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c7, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c7, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c7], [t1.c22]), partitions(p0) + +select timestampadd(year, c7, c22) from t1; ++-----------------------------+ +| timestampadd(year, c7, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c8], [t1.c1]), partitions(p0) + +select timestampadd(second, c8, c1) from t1; ++------------------------------+ +| timestampadd(second, c8, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c8], [t1.c1]), partitions(p0) + +select timestampadd(year, c8, c1) from t1; ++----------------------------+ +| timestampadd(year, c8, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c8], [t1.c2]), partitions(p0) + +select timestampadd(second, c8, c2) from t1; ++------------------------------+ +| timestampadd(second, c8, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c8], [t1.c2]), partitions(p0) + +select timestampadd(year, c8, c2) from t1; ++----------------------------+ +| timestampadd(year, c8, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c8], [t1.c3]), partitions(p0) + +select timestampadd(second, c8, c3) from t1; ++------------------------------+ +| timestampadd(second, c8, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c8], [t1.c3]), partitions(p0) + +select timestampadd(year, c8, c3) from t1; ++----------------------------+ +| timestampadd(year, c8, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c8], [t1.c4]), partitions(p0) + +select timestampadd(second, c8, c4) from t1; ++------------------------------+ +| timestampadd(second, c8, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c8], [t1.c4]), partitions(p0) + +select timestampadd(year, c8, c4) from t1; ++----------------------------+ +| timestampadd(year, c8, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c8], [t1.c5]), partitions(p0) + +select timestampadd(second, c8, c5) from t1; ++------------------------------+ +| timestampadd(second, c8, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c8], [t1.c5]), partitions(p0) + +select timestampadd(year, c8, c5) from t1; ++----------------------------+ +| timestampadd(year, c8, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c8], [t1.c6]), partitions(p0) + +select timestampadd(second, c8, c6) from t1; ++------------------------------+ +| timestampadd(second, c8, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c8], [t1.c6]), partitions(p0) + +select timestampadd(year, c8, c6) from t1; ++----------------------------+ +| timestampadd(year, c8, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c8], [t1.c7]), partitions(p0) + +select timestampadd(second, c8, c7) from t1; ++------------------------------+ +| timestampadd(second, c8, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c8], [t1.c7]), partitions(p0) + +select timestampadd(year, c8, c7) from t1; ++----------------------------+ +| timestampadd(year, c8, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, c8, c8) from t1; ++------------------------------+ +| timestampadd(second, c8, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(year, c8, c8) from t1; ++----------------------------+ +| timestampadd(year, c8, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c8, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c8], [t1.c9]), partitions(p0) + +select timestampadd(second, c8, c9) from t1; ++------------------------------+ +| timestampadd(second, c8, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c8, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c8], [t1.c9]), partitions(p0) + +select timestampadd(year, c8, c9) from t1; ++----------------------------+ +| timestampadd(year, c8, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c8], [t1.c10]), partitions(p0) + +select timestampadd(second, c8, c10) from t1; ++-------------------------------+ +| timestampadd(second, c8, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c8], [t1.c10]), partitions(p0) + +select timestampadd(year, c8, c10) from t1; ++-----------------------------+ +| timestampadd(year, c8, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c8], [t1.c11]), partitions(p0) + +select timestampadd(second, c8, c11) from t1; ++-------------------------------+ +| timestampadd(second, c8, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c8], [t1.c11]), partitions(p0) + +select timestampadd(year, c8, c11) from t1; ++-----------------------------+ +| timestampadd(year, c8, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c8], [t1.c12]), partitions(p0) + +select timestampadd(second, c8, c12) from t1; ++-------------------------------+ +| timestampadd(second, c8, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c8], [t1.c12]), partitions(p0) + +select timestampadd(year, c8, c12) from t1; ++-----------------------------+ +| timestampadd(year, c8, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c8], [t1.c13]), partitions(p0) + +select timestampadd(second, c8, c13) from t1; ++-------------------------------+ +| timestampadd(second, c8, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c8], [t1.c13]), partitions(p0) + +select timestampadd(year, c8, c13) from t1; ++-----------------------------+ +| timestampadd(year, c8, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c8], [t1.c14]), partitions(p0) + +select timestampadd(second, c8, c14) from t1; ++-------------------------------+ +| timestampadd(second, c8, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c8], [t1.c14]), partitions(p0) + +select timestampadd(year, c8, c14) from t1; ++-----------------------------+ +| timestampadd(year, c8, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c8], [t1.c15]), partitions(p0) + +select timestampadd(second, c8, c15) from t1; ++-------------------------------+ +| timestampadd(second, c8, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c8], [t1.c15]), partitions(p0) + +select timestampadd(year, c8, c15) from t1; ++-----------------------------+ +| timestampadd(year, c8, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c8], [t1.c16]), partitions(p0) + +select timestampadd(second, c8, c16) from t1; ++-------------------------------+ +| timestampadd(second, c8, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c8], [t1.c16]), partitions(p0) + +select timestampadd(year, c8, c16) from t1; ++-----------------------------+ +| timestampadd(year, c8, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c8], [t1.c17]), partitions(p0) + +select timestampadd(second, c8, c17) from t1; ++-------------------------------+ +| timestampadd(second, c8, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c8], [t1.c17]), partitions(p0) + +select timestampadd(year, c8, c17) from t1; ++-----------------------------+ +| timestampadd(year, c8, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c8], [t1.c18]), partitions(p0) + +select timestampadd(second, c8, c18) from t1; ++-------------------------------+ +| timestampadd(second, c8, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c8], [t1.c18]), partitions(p0) + +select timestampadd(year, c8, c18) from t1; ++-----------------------------+ +| timestampadd(year, c8, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c8], [t1.c19]), partitions(p0) + +select timestampadd(second, c8, c19) from t1; ++-------------------------------+ +| timestampadd(second, c8, c19) | ++-------------------------------+ +| 2019-12-01 12:00:02 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c8], [t1.c19]), partitions(p0) + +select timestampadd(year, c8, c19) from t1; ++-----------------------------+ +| timestampadd(year, c8, c19) | ++-----------------------------+ +| 2021-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c8], [t1.c20]), partitions(p0) + +select timestampadd(second, c8, c20) from t1; ++-------------------------------+ +| timestampadd(second, c8, c20) | ++-------------------------------+ +| 2019-12-03 06:00:02 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c8], [t1.c20]), partitions(p0) + +select timestampadd(year, c8, c20) from t1; ++-----------------------------+ +| timestampadd(year, c8, c20) | ++-----------------------------+ +| 2021-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c8], [t1.c21]), partitions(p0) + +select timestampadd(second, c8, c21) from t1; ++-------------------------------+ +| timestampadd(second, c8, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c8], [t1.c21]), partitions(p0) + +select timestampadd(year, c8, c21) from t1; ++-----------------------------+ +| timestampadd(year, c8, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c8, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c8, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c8], [t1.c22]), partitions(p0) + +select timestampadd(second, c8, c22) from t1; ++-------------------------------+ +| timestampadd(second, c8, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c8, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c8, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c8], [t1.c22]), partitions(p0) + +select timestampadd(year, c8, c22) from t1; ++-----------------------------+ +| timestampadd(year, c8, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c9], [t1.c1]), partitions(p0) + +select timestampadd(second, c9, c1) from t1; ++------------------------------+ +| timestampadd(second, c9, c1) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c9], [t1.c1]), partitions(p0) + +select timestampadd(year, c9, c1) from t1; ++----------------------------+ +| timestampadd(year, c9, c1) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c9], [t1.c2]), partitions(p0) + +select timestampadd(second, c9, c2) from t1; ++------------------------------+ +| timestampadd(second, c9, c2) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c9], [t1.c2]), partitions(p0) + +select timestampadd(year, c9, c2) from t1; ++----------------------------+ +| timestampadd(year, c9, c2) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c9], [t1.c3]), partitions(p0) + +select timestampadd(second, c9, c3) from t1; ++------------------------------+ +| timestampadd(second, c9, c3) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c9], [t1.c3]), partitions(p0) + +select timestampadd(year, c9, c3) from t1; ++----------------------------+ +| timestampadd(year, c9, c3) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c9], [t1.c4]), partitions(p0) + +select timestampadd(second, c9, c4) from t1; ++------------------------------+ +| timestampadd(second, c9, c4) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c9], [t1.c4]), partitions(p0) + +select timestampadd(year, c9, c4) from t1; ++----------------------------+ +| timestampadd(year, c9, c4) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c9], [t1.c5]), partitions(p0) + +select timestampadd(second, c9, c5) from t1; ++------------------------------+ +| timestampadd(second, c9, c5) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c9], [t1.c5]), partitions(p0) + +select timestampadd(year, c9, c5) from t1; ++----------------------------+ +| timestampadd(year, c9, c5) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c9], [t1.c6]), partitions(p0) + +select timestampadd(second, c9, c6) from t1; ++------------------------------+ +| timestampadd(second, c9, c6) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c9], [t1.c6]), partitions(p0) + +select timestampadd(year, c9, c6) from t1; ++----------------------------+ +| timestampadd(year, c9, c6) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c9], [t1.c7]), partitions(p0) + +select timestampadd(second, c9, c7) from t1; ++------------------------------+ +| timestampadd(second, c9, c7) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c9], [t1.c7]), partitions(p0) + +select timestampadd(year, c9, c7) from t1; ++----------------------------+ +| timestampadd(year, c9, c7) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c9], [t1.c8]), partitions(p0) + +select timestampadd(second, c9, c8) from t1; ++------------------------------+ +| timestampadd(second, c9, c8) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c9], [t1.c8]), partitions(p0) + +select timestampadd(year, c9, c8) from t1; ++----------------------------+ +| timestampadd(year, c9, c8) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c9, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, c9, c9) from t1; ++------------------------------+ +| timestampadd(second, c9, c9) | ++------------------------------+ +| NULL | ++------------------------------+ +EXPLAIN select timestampadd(year, c9, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(year, c9, c9) from t1; ++----------------------------+ +| timestampadd(year, c9, c9) | ++----------------------------+ +| NULL | ++----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c9], [t1.c10]), partitions(p0) + +select timestampadd(second, c9, c10) from t1; ++-------------------------------+ +| timestampadd(second, c9, c10) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c9], [t1.c10]), partitions(p0) + +select timestampadd(year, c9, c10) from t1; ++-----------------------------+ +| timestampadd(year, c9, c10) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c9], [t1.c11]), partitions(p0) + +select timestampadd(second, c9, c11) from t1; ++-------------------------------+ +| timestampadd(second, c9, c11) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c9], [t1.c11]), partitions(p0) + +select timestampadd(year, c9, c11) from t1; ++-----------------------------+ +| timestampadd(year, c9, c11) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c9], [t1.c12]), partitions(p0) + +select timestampadd(second, c9, c12) from t1; ++-------------------------------+ +| timestampadd(second, c9, c12) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c9], [t1.c12]), partitions(p0) + +select timestampadd(year, c9, c12) from t1; ++-----------------------------+ +| timestampadd(year, c9, c12) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c9], [t1.c13]), partitions(p0) + +select timestampadd(second, c9, c13) from t1; ++-------------------------------+ +| timestampadd(second, c9, c13) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c9], [t1.c13]), partitions(p0) + +select timestampadd(year, c9, c13) from t1; ++-----------------------------+ +| timestampadd(year, c9, c13) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c9], [t1.c14]), partitions(p0) + +select timestampadd(second, c9, c14) from t1; ++-------------------------------+ +| timestampadd(second, c9, c14) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c9], [t1.c14]), partitions(p0) + +select timestampadd(year, c9, c14) from t1; ++-----------------------------+ +| timestampadd(year, c9, c14) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c9], [t1.c15]), partitions(p0) + +select timestampadd(second, c9, c15) from t1; ++-------------------------------+ +| timestampadd(second, c9, c15) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c9], [t1.c15]), partitions(p0) + +select timestampadd(year, c9, c15) from t1; ++-----------------------------+ +| timestampadd(year, c9, c15) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c9], [t1.c16]), partitions(p0) + +select timestampadd(second, c9, c16) from t1; ++-------------------------------+ +| timestampadd(second, c9, c16) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c9], [t1.c16]), partitions(p0) + +select timestampadd(year, c9, c16) from t1; ++-----------------------------+ +| timestampadd(year, c9, c16) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c9], [t1.c17]), partitions(p0) + +select timestampadd(second, c9, c17) from t1; ++-------------------------------+ +| timestampadd(second, c9, c17) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c9], [t1.c17]), partitions(p0) + +select timestampadd(year, c9, c17) from t1; ++-----------------------------+ +| timestampadd(year, c9, c17) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c9], [t1.c18]), partitions(p0) + +select timestampadd(second, c9, c18) from t1; ++-------------------------------+ +| timestampadd(second, c9, c18) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c9], [t1.c18]), partitions(p0) + +select timestampadd(year, c9, c18) from t1; ++-----------------------------+ +| timestampadd(year, c9, c18) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c9], [t1.c19]), partitions(p0) + +select timestampadd(second, c9, c19) from t1; ++-------------------------------+ +| timestampadd(second, c9, c19) | ++-------------------------------+ +| 2019-12-01 12:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c9], [t1.c19]), partitions(p0) + +select timestampadd(year, c9, c19) from t1; ++-----------------------------+ +| timestampadd(year, c9, c19) | ++-----------------------------+ +| 2020-12-01 12:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c9], [t1.c20]), partitions(p0) + +select timestampadd(second, c9, c20) from t1; ++-------------------------------+ +| timestampadd(second, c9, c20) | ++-------------------------------+ +| 2019-12-03 06:00:01 | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c9], [t1.c20]), partitions(p0) + +select timestampadd(year, c9, c20) from t1; ++-----------------------------+ +| timestampadd(year, c9, c20) | ++-----------------------------+ +| 2020-12-03 06:00:00 | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c9], [t1.c21]), partitions(p0) + +select timestampadd(second, c9, c21) from t1; ++-------------------------------+ +| timestampadd(second, c9, c21) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c9], [t1.c21]), partitions(p0) + +select timestampadd(year, c9, c21) from t1; ++-----------------------------+ +| timestampadd(year, c9, c21) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c9, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c9, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c9], [t1.c22]), partitions(p0) + +select timestampadd(second, c9, c22) from t1; ++-------------------------------+ +| timestampadd(second, c9, c22) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c9, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c9, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c9], [t1.c22]), partitions(p0) + +select timestampadd(year, c9, c22) from t1; ++-----------------------------+ +| timestampadd(year, c9, c22) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c10], [t1.c1]), partitions(p0) + +select timestampadd(second, c10, c1) from t1; ++-------------------------------+ +| timestampadd(second, c10, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c10], [t1.c1]), partitions(p0) + +select timestampadd(year, c10, c1) from t1; ++-----------------------------+ +| timestampadd(year, c10, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c10], [t1.c2]), partitions(p0) + +select timestampadd(second, c10, c2) from t1; ++-------------------------------+ +| timestampadd(second, c10, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c10], [t1.c2]), partitions(p0) + +select timestampadd(year, c10, c2) from t1; ++-----------------------------+ +| timestampadd(year, c10, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c10], [t1.c3]), partitions(p0) + +select timestampadd(second, c10, c3) from t1; ++-------------------------------+ +| timestampadd(second, c10, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c10], [t1.c3]), partitions(p0) + +select timestampadd(year, c10, c3) from t1; ++-----------------------------+ +| timestampadd(year, c10, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c10], [t1.c4]), partitions(p0) + +select timestampadd(second, c10, c4) from t1; ++-------------------------------+ +| timestampadd(second, c10, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c10], [t1.c4]), partitions(p0) + +select timestampadd(year, c10, c4) from t1; ++-----------------------------+ +| timestampadd(year, c10, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c10], [t1.c5]), partitions(p0) + +select timestampadd(second, c10, c5) from t1; ++-------------------------------+ +| timestampadd(second, c10, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c10], [t1.c5]), partitions(p0) + +select timestampadd(year, c10, c5) from t1; ++-----------------------------+ +| timestampadd(year, c10, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c10], [t1.c6]), partitions(p0) + +select timestampadd(second, c10, c6) from t1; ++-------------------------------+ +| timestampadd(second, c10, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c10], [t1.c6]), partitions(p0) + +select timestampadd(year, c10, c6) from t1; ++-----------------------------+ +| timestampadd(year, c10, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c10], [t1.c7]), partitions(p0) + +select timestampadd(second, c10, c7) from t1; ++-------------------------------+ +| timestampadd(second, c10, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c10], [t1.c7]), partitions(p0) + +select timestampadd(year, c10, c7) from t1; ++-----------------------------+ +| timestampadd(year, c10, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c10], [t1.c8]), partitions(p0) + +select timestampadd(second, c10, c8) from t1; ++-------------------------------+ +| timestampadd(second, c10, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c10], [t1.c8]), partitions(p0) + +select timestampadd(year, c10, c8) from t1; ++-----------------------------+ +| timestampadd(year, c10, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c10, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c10], [t1.c9]), partitions(p0) + +select timestampadd(second, c10, c9) from t1; ++-------------------------------+ +| timestampadd(second, c10, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c10, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c10], [t1.c9]), partitions(p0) + +select timestampadd(year, c10, c9) from t1; ++-----------------------------+ +| timestampadd(year, c10, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, c10, c10) from t1; ++--------------------------------+ +| timestampadd(second, c10, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(year, c10, c10) from t1; ++------------------------------+ +| timestampadd(year, c10, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c10], [t1.c11]), partitions(p0) + +select timestampadd(second, c10, c11) from t1; ++--------------------------------+ +| timestampadd(second, c10, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c10], [t1.c11]), partitions(p0) + +select timestampadd(year, c10, c11) from t1; ++------------------------------+ +| timestampadd(year, c10, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c10], [t1.c12]), partitions(p0) + +select timestampadd(second, c10, c12) from t1; ++--------------------------------+ +| timestampadd(second, c10, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c10], [t1.c12]), partitions(p0) + +select timestampadd(year, c10, c12) from t1; ++------------------------------+ +| timestampadd(year, c10, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c10], [t1.c13]), partitions(p0) + +select timestampadd(second, c10, c13) from t1; ++--------------------------------+ +| timestampadd(second, c10, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c10], [t1.c13]), partitions(p0) + +select timestampadd(year, c10, c13) from t1; ++------------------------------+ +| timestampadd(year, c10, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c10], [t1.c14]), partitions(p0) + +select timestampadd(second, c10, c14) from t1; ++--------------------------------+ +| timestampadd(second, c10, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c10], [t1.c14]), partitions(p0) + +select timestampadd(year, c10, c14) from t1; ++------------------------------+ +| timestampadd(year, c10, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c10], [t1.c15]), partitions(p0) + +select timestampadd(second, c10, c15) from t1; ++--------------------------------+ +| timestampadd(second, c10, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c10], [t1.c15]), partitions(p0) + +select timestampadd(year, c10, c15) from t1; ++------------------------------+ +| timestampadd(year, c10, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c10], [t1.c16]), partitions(p0) + +select timestampadd(second, c10, c16) from t1; ++--------------------------------+ +| timestampadd(second, c10, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c10], [t1.c16]), partitions(p0) + +select timestampadd(year, c10, c16) from t1; ++------------------------------+ +| timestampadd(year, c10, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c10], [t1.c17]), partitions(p0) + +select timestampadd(second, c10, c17) from t1; ++--------------------------------+ +| timestampadd(second, c10, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c10], [t1.c17]), partitions(p0) + +select timestampadd(year, c10, c17) from t1; ++------------------------------+ +| timestampadd(year, c10, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c10], [t1.c18]), partitions(p0) + +select timestampadd(second, c10, c18) from t1; ++--------------------------------+ +| timestampadd(second, c10, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c10], [t1.c18]), partitions(p0) + +select timestampadd(year, c10, c18) from t1; ++------------------------------+ +| timestampadd(year, c10, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c10], [t1.c19]), partitions(p0) + +select timestampadd(second, c10, c19) from t1; ++--------------------------------+ +| timestampadd(second, c10, c19) | ++--------------------------------+ +| 2019-12-01 12:00:02 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c10], [t1.c19]), partitions(p0) + +select timestampadd(year, c10, c19) from t1; ++------------------------------+ +| timestampadd(year, c10, c19) | ++------------------------------+ +| 2021-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c10], [t1.c20]), partitions(p0) + +select timestampadd(second, c10, c20) from t1; ++--------------------------------+ +| timestampadd(second, c10, c20) | ++--------------------------------+ +| 2019-12-03 06:00:02 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c10], [t1.c20]), partitions(p0) + +select timestampadd(year, c10, c20) from t1; ++------------------------------+ +| timestampadd(year, c10, c20) | ++------------------------------+ +| 2021-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c10], [t1.c21]), partitions(p0) + +select timestampadd(second, c10, c21) from t1; ++--------------------------------+ +| timestampadd(second, c10, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c10], [t1.c21]), partitions(p0) + +select timestampadd(year, c10, c21) from t1; ++------------------------------+ +| timestampadd(year, c10, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c10, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c10, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c10], [t1.c22]), partitions(p0) + +select timestampadd(second, c10, c22) from t1; ++--------------------------------+ +| timestampadd(second, c10, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c10, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c10, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c10], [t1.c22]), partitions(p0) + +select timestampadd(year, c10, c22) from t1; ++------------------------------+ +| timestampadd(year, c10, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c1)]), filter(nil), + access([t1.c11], [t1.c1]), partitions(p0) + +select timestampadd(second, c11, c1) from t1; ++-------------------------------+ +| timestampadd(second, c11, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c1)]), filter(nil), + access([t1.c11], [t1.c1]), partitions(p0) + +select timestampadd(year, c11, c1) from t1; ++-----------------------------+ +| timestampadd(year, c11, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c2)]), filter(nil), + access([t1.c11], [t1.c2]), partitions(p0) + +select timestampadd(second, c11, c2) from t1; ++-------------------------------+ +| timestampadd(second, c11, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c2)]), filter(nil), + access([t1.c11], [t1.c2]), partitions(p0) + +select timestampadd(year, c11, c2) from t1; ++-----------------------------+ +| timestampadd(year, c11, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c3)]), filter(nil), + access([t1.c11], [t1.c3]), partitions(p0) + +select timestampadd(second, c11, c3) from t1; ++-------------------------------+ +| timestampadd(second, c11, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c3)]), filter(nil), + access([t1.c11], [t1.c3]), partitions(p0) + +select timestampadd(year, c11, c3) from t1; ++-----------------------------+ +| timestampadd(year, c11, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c4)]), filter(nil), + access([t1.c11], [t1.c4]), partitions(p0) + +select timestampadd(second, c11, c4) from t1; ++-------------------------------+ +| timestampadd(second, c11, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c4)]), filter(nil), + access([t1.c11], [t1.c4]), partitions(p0) + +select timestampadd(year, c11, c4) from t1; ++-----------------------------+ +| timestampadd(year, c11, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c5)]), filter(nil), + access([t1.c11], [t1.c5]), partitions(p0) + +select timestampadd(second, c11, c5) from t1; ++-------------------------------+ +| timestampadd(second, c11, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c5)]), filter(nil), + access([t1.c11], [t1.c5]), partitions(p0) + +select timestampadd(year, c11, c5) from t1; ++-----------------------------+ +| timestampadd(year, c11, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c6)]), filter(nil), + access([t1.c11], [t1.c6]), partitions(p0) + +select timestampadd(second, c11, c6) from t1; ++-------------------------------+ +| timestampadd(second, c11, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c6)]), filter(nil), + access([t1.c11], [t1.c6]), partitions(p0) + +select timestampadd(year, c11, c6) from t1; ++-----------------------------+ +| timestampadd(year, c11, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c7)]), filter(nil), + access([t1.c11], [t1.c7]), partitions(p0) + +select timestampadd(second, c11, c7) from t1; ++-------------------------------+ +| timestampadd(second, c11, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c7)]), filter(nil), + access([t1.c11], [t1.c7]), partitions(p0) + +select timestampadd(year, c11, c7) from t1; ++-----------------------------+ +| timestampadd(year, c11, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c8)]), filter(nil), + access([t1.c11], [t1.c8]), partitions(p0) + +select timestampadd(second, c11, c8) from t1; ++-------------------------------+ +| timestampadd(second, c11, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c8)]), filter(nil), + access([t1.c11], [t1.c8]), partitions(p0) + +select timestampadd(year, c11, c8) from t1; ++-----------------------------+ +| timestampadd(year, c11, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c11, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c9)]), filter(nil), + access([t1.c11], [t1.c9]), partitions(p0) + +select timestampadd(second, c11, c9) from t1; ++-------------------------------+ +| timestampadd(second, c11, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c11, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c9)]), filter(nil), + access([t1.c11], [t1.c9]), partitions(p0) + +select timestampadd(year, c11, c9) from t1; ++-----------------------------+ +| timestampadd(year, c11, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c10)]), filter(nil), + access([t1.c11], [t1.c10]), partitions(p0) + +select timestampadd(second, c11, c10) from t1; ++--------------------------------+ +| timestampadd(second, c11, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c10)]), filter(nil), + access([t1.c11], [t1.c10]), partitions(p0) + +select timestampadd(year, c11, c10) from t1; ++------------------------------+ +| timestampadd(year, c11, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, c11, c11) from t1; ++--------------------------------+ +| timestampadd(second, c11, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(year, c11, c11) from t1; ++------------------------------+ +| timestampadd(year, c11, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c12)]), filter(nil), + access([t1.c11], [t1.c12]), partitions(p0) + +select timestampadd(second, c11, c12) from t1; ++--------------------------------+ +| timestampadd(second, c11, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c12)]), filter(nil), + access([t1.c11], [t1.c12]), partitions(p0) + +select timestampadd(year, c11, c12) from t1; ++------------------------------+ +| timestampadd(year, c11, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c13)]), filter(nil), + access([t1.c11], [t1.c13]), partitions(p0) + +select timestampadd(second, c11, c13) from t1; ++--------------------------------+ +| timestampadd(second, c11, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c13)]), filter(nil), + access([t1.c11], [t1.c13]), partitions(p0) + +select timestampadd(year, c11, c13) from t1; ++------------------------------+ +| timestampadd(year, c11, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c14)]), filter(nil), + access([t1.c11], [t1.c14]), partitions(p0) + +select timestampadd(second, c11, c14) from t1; ++--------------------------------+ +| timestampadd(second, c11, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c14)]), filter(nil), + access([t1.c11], [t1.c14]), partitions(p0) + +select timestampadd(year, c11, c14) from t1; ++------------------------------+ +| timestampadd(year, c11, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c15)]), filter(nil), + access([t1.c11], [t1.c15]), partitions(p0) + +select timestampadd(second, c11, c15) from t1; ++--------------------------------+ +| timestampadd(second, c11, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c15)]), filter(nil), + access([t1.c11], [t1.c15]), partitions(p0) + +select timestampadd(year, c11, c15) from t1; ++------------------------------+ +| timestampadd(year, c11, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c16)]), filter(nil), + access([t1.c11], [t1.c16]), partitions(p0) + +select timestampadd(second, c11, c16) from t1; ++--------------------------------+ +| timestampadd(second, c11, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c16)]), filter(nil), + access([t1.c11], [t1.c16]), partitions(p0) + +select timestampadd(year, c11, c16) from t1; ++------------------------------+ +| timestampadd(year, c11, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c17)]), filter(nil), + access([t1.c11], [t1.c17]), partitions(p0) + +select timestampadd(second, c11, c17) from t1; ++--------------------------------+ +| timestampadd(second, c11, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c17)]), filter(nil), + access([t1.c11], [t1.c17]), partitions(p0) + +select timestampadd(year, c11, c17) from t1; ++------------------------------+ +| timestampadd(year, c11, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c18)]), filter(nil), + access([t1.c11], [t1.c18]), partitions(p0) + +select timestampadd(second, c11, c18) from t1; ++--------------------------------+ +| timestampadd(second, c11, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c18)]), filter(nil), + access([t1.c11], [t1.c18]), partitions(p0) + +select timestampadd(year, c11, c18) from t1; ++------------------------------+ +| timestampadd(year, c11, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c19)]), filter(nil), + access([t1.c11], [t1.c19]), partitions(p0) + +select timestampadd(second, c11, c19) from t1; ++--------------------------------+ +| timestampadd(second, c11, c19) | ++--------------------------------+ +| 2019-12-01 12:00:01 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c19)]), filter(nil), + access([t1.c11], [t1.c19]), partitions(p0) + +select timestampadd(year, c11, c19) from t1; ++------------------------------+ +| timestampadd(year, c11, c19) | ++------------------------------+ +| 2020-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c20)]), filter(nil), + access([t1.c11], [t1.c20]), partitions(p0) + +select timestampadd(second, c11, c20) from t1; ++--------------------------------+ +| timestampadd(second, c11, c20) | ++--------------------------------+ +| 2019-12-03 06:00:01 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c20)]), filter(nil), + access([t1.c11], [t1.c20]), partitions(p0) + +select timestampadd(year, c11, c20) from t1; ++------------------------------+ +| timestampadd(year, c11, c20) | ++------------------------------+ +| 2020-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c21)]), filter(nil), + access([t1.c11], [t1.c21]), partitions(p0) + +select timestampadd(second, c11, c21) from t1; ++--------------------------------+ +| timestampadd(second, c11, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c21)]), filter(nil), + access([t1.c11], [t1.c21]), partitions(p0) + +select timestampadd(year, c11, c21) from t1; ++------------------------------+ +| timestampadd(year, c11, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c11, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, t1.c11, t1.c22)]), filter(nil), + access([t1.c11], [t1.c22]), partitions(p0) + +select timestampadd(second, c11, c22) from t1; ++--------------------------------+ +| timestampadd(second, c11, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c11, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, t1.c11, t1.c22)]), filter(nil), + access([t1.c11], [t1.c22]), partitions(p0) + +select timestampadd(year, c11, c22) from t1; ++------------------------------+ +| timestampadd(year, c11, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c12], [t1.c1]), partitions(p0) + +select timestampadd(second, c12, c1) from t1; ++-------------------------------+ +| timestampadd(second, c12, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c12], [t1.c1]), partitions(p0) + +select timestampadd(year, c12, c1) from t1; ++-----------------------------+ +| timestampadd(year, c12, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c12], [t1.c2]), partitions(p0) + +select timestampadd(second, c12, c2) from t1; ++-------------------------------+ +| timestampadd(second, c12, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c12], [t1.c2]), partitions(p0) + +select timestampadd(year, c12, c2) from t1; ++-----------------------------+ +| timestampadd(year, c12, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c12], [t1.c3]), partitions(p0) + +select timestampadd(second, c12, c3) from t1; ++-------------------------------+ +| timestampadd(second, c12, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c12], [t1.c3]), partitions(p0) + +select timestampadd(year, c12, c3) from t1; ++-----------------------------+ +| timestampadd(year, c12, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c12], [t1.c4]), partitions(p0) + +select timestampadd(second, c12, c4) from t1; ++-------------------------------+ +| timestampadd(second, c12, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c12], [t1.c4]), partitions(p0) + +select timestampadd(year, c12, c4) from t1; ++-----------------------------+ +| timestampadd(year, c12, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c12], [t1.c5]), partitions(p0) + +select timestampadd(second, c12, c5) from t1; ++-------------------------------+ +| timestampadd(second, c12, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c12], [t1.c5]), partitions(p0) + +select timestampadd(year, c12, c5) from t1; ++-----------------------------+ +| timestampadd(year, c12, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c12], [t1.c6]), partitions(p0) + +select timestampadd(second, c12, c6) from t1; ++-------------------------------+ +| timestampadd(second, c12, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c12], [t1.c6]), partitions(p0) + +select timestampadd(year, c12, c6) from t1; ++-----------------------------+ +| timestampadd(year, c12, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c12], [t1.c7]), partitions(p0) + +select timestampadd(second, c12, c7) from t1; ++-------------------------------+ +| timestampadd(second, c12, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c12], [t1.c7]), partitions(p0) + +select timestampadd(year, c12, c7) from t1; ++-----------------------------+ +| timestampadd(year, c12, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c12], [t1.c8]), partitions(p0) + +select timestampadd(second, c12, c8) from t1; ++-------------------------------+ +| timestampadd(second, c12, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c12], [t1.c8]), partitions(p0) + +select timestampadd(year, c12, c8) from t1; ++-----------------------------+ +| timestampadd(year, c12, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c12, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c12], [t1.c9]), partitions(p0) + +select timestampadd(second, c12, c9) from t1; ++-------------------------------+ +| timestampadd(second, c12, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c12, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c12], [t1.c9]), partitions(p0) + +select timestampadd(year, c12, c9) from t1; ++-----------------------------+ +| timestampadd(year, c12, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c12], [t1.c10]), partitions(p0) + +select timestampadd(second, c12, c10) from t1; ++--------------------------------+ +| timestampadd(second, c12, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c12], [t1.c10]), partitions(p0) + +select timestampadd(year, c12, c10) from t1; ++------------------------------+ +| timestampadd(year, c12, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c12], [t1.c11]), partitions(p0) + +select timestampadd(second, c12, c11) from t1; ++--------------------------------+ +| timestampadd(second, c12, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c12], [t1.c11]), partitions(p0) + +select timestampadd(year, c12, c11) from t1; ++------------------------------+ +| timestampadd(year, c12, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, c12, c12) from t1; ++--------------------------------+ +| timestampadd(second, c12, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(year, c12, c12) from t1; ++------------------------------+ +| timestampadd(year, c12, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c12], [t1.c13]), partitions(p0) + +select timestampadd(second, c12, c13) from t1; ++--------------------------------+ +| timestampadd(second, c12, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c12], [t1.c13]), partitions(p0) + +select timestampadd(year, c12, c13) from t1; ++------------------------------+ +| timestampadd(year, c12, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c12], [t1.c14]), partitions(p0) + +select timestampadd(second, c12, c14) from t1; ++--------------------------------+ +| timestampadd(second, c12, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c12], [t1.c14]), partitions(p0) + +select timestampadd(year, c12, c14) from t1; ++------------------------------+ +| timestampadd(year, c12, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c12], [t1.c15]), partitions(p0) + +select timestampadd(second, c12, c15) from t1; ++--------------------------------+ +| timestampadd(second, c12, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c12], [t1.c15]), partitions(p0) + +select timestampadd(year, c12, c15) from t1; ++------------------------------+ +| timestampadd(year, c12, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c12], [t1.c16]), partitions(p0) + +select timestampadd(second, c12, c16) from t1; ++--------------------------------+ +| timestampadd(second, c12, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c12], [t1.c16]), partitions(p0) + +select timestampadd(year, c12, c16) from t1; ++------------------------------+ +| timestampadd(year, c12, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c12], [t1.c17]), partitions(p0) + +select timestampadd(second, c12, c17) from t1; ++--------------------------------+ +| timestampadd(second, c12, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c12], [t1.c17]), partitions(p0) + +select timestampadd(year, c12, c17) from t1; ++------------------------------+ +| timestampadd(year, c12, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c12], [t1.c18]), partitions(p0) + +select timestampadd(second, c12, c18) from t1; ++--------------------------------+ +| timestampadd(second, c12, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c12], [t1.c18]), partitions(p0) + +select timestampadd(year, c12, c18) from t1; ++------------------------------+ +| timestampadd(year, c12, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c12], [t1.c19]), partitions(p0) + +select timestampadd(second, c12, c19) from t1; ++--------------------------------+ +| timestampadd(second, c12, c19) | ++--------------------------------+ +| 2019-12-01 12:00:02 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c12], [t1.c19]), partitions(p0) + +select timestampadd(year, c12, c19) from t1; ++------------------------------+ +| timestampadd(year, c12, c19) | ++------------------------------+ +| 2021-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c12], [t1.c20]), partitions(p0) + +select timestampadd(second, c12, c20) from t1; ++--------------------------------+ +| timestampadd(second, c12, c20) | ++--------------------------------+ +| 2019-12-03 06:00:02 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c12], [t1.c20]), partitions(p0) + +select timestampadd(year, c12, c20) from t1; ++------------------------------+ +| timestampadd(year, c12, c20) | ++------------------------------+ +| 2021-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c12], [t1.c21]), partitions(p0) + +select timestampadd(second, c12, c21) from t1; ++--------------------------------+ +| timestampadd(second, c12, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c12], [t1.c21]), partitions(p0) + +select timestampadd(year, c12, c21) from t1; ++------------------------------+ +| timestampadd(year, c12, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c12, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c12, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c12], [t1.c22]), partitions(p0) + +select timestampadd(second, c12, c22) from t1; ++--------------------------------+ +| timestampadd(second, c12, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c12, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c12, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c12], [t1.c22]), partitions(p0) + +select timestampadd(year, c12, c22) from t1; ++------------------------------+ +| timestampadd(year, c12, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c13], [t1.c1]), partitions(p0) + +select timestampadd(second, c13, c1) from t1; ++-------------------------------+ +| timestampadd(second, c13, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c13], [t1.c1]), partitions(p0) + +select timestampadd(year, c13, c1) from t1; ++-----------------------------+ +| timestampadd(year, c13, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c13], [t1.c2]), partitions(p0) + +select timestampadd(second, c13, c2) from t1; ++-------------------------------+ +| timestampadd(second, c13, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c13], [t1.c2]), partitions(p0) + +select timestampadd(year, c13, c2) from t1; ++-----------------------------+ +| timestampadd(year, c13, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c13], [t1.c3]), partitions(p0) + +select timestampadd(second, c13, c3) from t1; ++-------------------------------+ +| timestampadd(second, c13, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c13], [t1.c3]), partitions(p0) + +select timestampadd(year, c13, c3) from t1; ++-----------------------------+ +| timestampadd(year, c13, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c13], [t1.c4]), partitions(p0) + +select timestampadd(second, c13, c4) from t1; ++-------------------------------+ +| timestampadd(second, c13, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c13], [t1.c4]), partitions(p0) + +select timestampadd(year, c13, c4) from t1; ++-----------------------------+ +| timestampadd(year, c13, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c13], [t1.c5]), partitions(p0) + +select timestampadd(second, c13, c5) from t1; ++-------------------------------+ +| timestampadd(second, c13, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c13], [t1.c5]), partitions(p0) + +select timestampadd(year, c13, c5) from t1; ++-----------------------------+ +| timestampadd(year, c13, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c13], [t1.c6]), partitions(p0) + +select timestampadd(second, c13, c6) from t1; ++-------------------------------+ +| timestampadd(second, c13, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c13], [t1.c6]), partitions(p0) + +select timestampadd(year, c13, c6) from t1; ++-----------------------------+ +| timestampadd(year, c13, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c13], [t1.c7]), partitions(p0) + +select timestampadd(second, c13, c7) from t1; ++-------------------------------+ +| timestampadd(second, c13, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c13], [t1.c7]), partitions(p0) + +select timestampadd(year, c13, c7) from t1; ++-----------------------------+ +| timestampadd(year, c13, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c13], [t1.c8]), partitions(p0) + +select timestampadd(second, c13, c8) from t1; ++-------------------------------+ +| timestampadd(second, c13, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c13], [t1.c8]), partitions(p0) + +select timestampadd(year, c13, c8) from t1; ++-----------------------------+ +| timestampadd(year, c13, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c13, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c13], [t1.c9]), partitions(p0) + +select timestampadd(second, c13, c9) from t1; ++-------------------------------+ +| timestampadd(second, c13, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c13, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c13], [t1.c9]), partitions(p0) + +select timestampadd(year, c13, c9) from t1; ++-----------------------------+ +| timestampadd(year, c13, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c13], [t1.c10]), partitions(p0) + +select timestampadd(second, c13, c10) from t1; ++--------------------------------+ +| timestampadd(second, c13, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c13], [t1.c10]), partitions(p0) + +select timestampadd(year, c13, c10) from t1; ++------------------------------+ +| timestampadd(year, c13, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c13], [t1.c11]), partitions(p0) + +select timestampadd(second, c13, c11) from t1; ++--------------------------------+ +| timestampadd(second, c13, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c13], [t1.c11]), partitions(p0) + +select timestampadd(year, c13, c11) from t1; ++------------------------------+ +| timestampadd(year, c13, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c13], [t1.c12]), partitions(p0) + +select timestampadd(second, c13, c12) from t1; ++--------------------------------+ +| timestampadd(second, c13, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c13], [t1.c12]), partitions(p0) + +select timestampadd(year, c13, c12) from t1; ++------------------------------+ +| timestampadd(year, c13, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, c13, c13) from t1; ++--------------------------------+ +| timestampadd(second, c13, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(year, c13, c13) from t1; ++------------------------------+ +| timestampadd(year, c13, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c13], [t1.c14]), partitions(p0) + +select timestampadd(second, c13, c14) from t1; ++--------------------------------+ +| timestampadd(second, c13, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c13], [t1.c14]), partitions(p0) + +select timestampadd(year, c13, c14) from t1; ++------------------------------+ +| timestampadd(year, c13, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c13], [t1.c15]), partitions(p0) + +select timestampadd(second, c13, c15) from t1; ++--------------------------------+ +| timestampadd(second, c13, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c13], [t1.c15]), partitions(p0) + +select timestampadd(year, c13, c15) from t1; ++------------------------------+ +| timestampadd(year, c13, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c13], [t1.c16]), partitions(p0) + +select timestampadd(second, c13, c16) from t1; ++--------------------------------+ +| timestampadd(second, c13, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c13], [t1.c16]), partitions(p0) + +select timestampadd(year, c13, c16) from t1; ++------------------------------+ +| timestampadd(year, c13, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c13], [t1.c17]), partitions(p0) + +select timestampadd(second, c13, c17) from t1; ++--------------------------------+ +| timestampadd(second, c13, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c13], [t1.c17]), partitions(p0) + +select timestampadd(year, c13, c17) from t1; ++------------------------------+ +| timestampadd(year, c13, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c13], [t1.c18]), partitions(p0) + +select timestampadd(second, c13, c18) from t1; ++--------------------------------+ +| timestampadd(second, c13, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c13], [t1.c18]), partitions(p0) + +select timestampadd(year, c13, c18) from t1; ++------------------------------+ +| timestampadd(year, c13, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c13], [t1.c19]), partitions(p0) + +select timestampadd(second, c13, c19) from t1; ++--------------------------------+ +| timestampadd(second, c13, c19) | ++--------------------------------+ +| 2019-12-01 12:00:04 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c13], [t1.c19]), partitions(p0) + +select timestampadd(year, c13, c19) from t1; ++------------------------------+ +| timestampadd(year, c13, c19) | ++------------------------------+ +| 2023-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c13], [t1.c20]), partitions(p0) + +select timestampadd(second, c13, c20) from t1; ++--------------------------------+ +| timestampadd(second, c13, c20) | ++--------------------------------+ +| 2019-12-03 06:00:04 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c13], [t1.c20]), partitions(p0) + +select timestampadd(year, c13, c20) from t1; ++------------------------------+ +| timestampadd(year, c13, c20) | ++------------------------------+ +| 2023-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c13], [t1.c21]), partitions(p0) + +select timestampadd(second, c13, c21) from t1; ++--------------------------------+ +| timestampadd(second, c13, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c13], [t1.c21]), partitions(p0) + +select timestampadd(year, c13, c21) from t1; ++------------------------------+ +| timestampadd(year, c13, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c13, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c13, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c13], [t1.c22]), partitions(p0) + +select timestampadd(second, c13, c22) from t1; ++--------------------------------+ +| timestampadd(second, c13, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c13, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c13, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c13], [t1.c22]), partitions(p0) + +select timestampadd(year, c13, c22) from t1; ++------------------------------+ +| timestampadd(year, c13, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c14], [t1.c1]), partitions(p0) + +select timestampadd(second, c14, c1) from t1; ++-------------------------------+ +| timestampadd(second, c14, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c14], [t1.c1]), partitions(p0) + +select timestampadd(year, c14, c1) from t1; ++-----------------------------+ +| timestampadd(year, c14, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c14], [t1.c2]), partitions(p0) + +select timestampadd(second, c14, c2) from t1; ++-------------------------------+ +| timestampadd(second, c14, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c14], [t1.c2]), partitions(p0) + +select timestampadd(year, c14, c2) from t1; ++-----------------------------+ +| timestampadd(year, c14, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c14], [t1.c3]), partitions(p0) + +select timestampadd(second, c14, c3) from t1; ++-------------------------------+ +| timestampadd(second, c14, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c14], [t1.c3]), partitions(p0) + +select timestampadd(year, c14, c3) from t1; ++-----------------------------+ +| timestampadd(year, c14, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c14], [t1.c4]), partitions(p0) + +select timestampadd(second, c14, c4) from t1; ++-------------------------------+ +| timestampadd(second, c14, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c14], [t1.c4]), partitions(p0) + +select timestampadd(year, c14, c4) from t1; ++-----------------------------+ +| timestampadd(year, c14, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c14], [t1.c5]), partitions(p0) + +select timestampadd(second, c14, c5) from t1; ++-------------------------------+ +| timestampadd(second, c14, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c14], [t1.c5]), partitions(p0) + +select timestampadd(year, c14, c5) from t1; ++-----------------------------+ +| timestampadd(year, c14, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c14], [t1.c6]), partitions(p0) + +select timestampadd(second, c14, c6) from t1; ++-------------------------------+ +| timestampadd(second, c14, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c14], [t1.c6]), partitions(p0) + +select timestampadd(year, c14, c6) from t1; ++-----------------------------+ +| timestampadd(year, c14, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c14], [t1.c7]), partitions(p0) + +select timestampadd(second, c14, c7) from t1; ++-------------------------------+ +| timestampadd(second, c14, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c14], [t1.c7]), partitions(p0) + +select timestampadd(year, c14, c7) from t1; ++-----------------------------+ +| timestampadd(year, c14, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c14], [t1.c8]), partitions(p0) + +select timestampadd(second, c14, c8) from t1; ++-------------------------------+ +| timestampadd(second, c14, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c14], [t1.c8]), partitions(p0) + +select timestampadd(year, c14, c8) from t1; ++-----------------------------+ +| timestampadd(year, c14, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c14, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c14], [t1.c9]), partitions(p0) + +select timestampadd(second, c14, c9) from t1; ++-------------------------------+ +| timestampadd(second, c14, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c14, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c14], [t1.c9]), partitions(p0) + +select timestampadd(year, c14, c9) from t1; ++-----------------------------+ +| timestampadd(year, c14, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c14], [t1.c10]), partitions(p0) + +select timestampadd(second, c14, c10) from t1; ++--------------------------------+ +| timestampadd(second, c14, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c14], [t1.c10]), partitions(p0) + +select timestampadd(year, c14, c10) from t1; ++------------------------------+ +| timestampadd(year, c14, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c14], [t1.c11]), partitions(p0) + +select timestampadd(second, c14, c11) from t1; ++--------------------------------+ +| timestampadd(second, c14, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c14], [t1.c11]), partitions(p0) + +select timestampadd(year, c14, c11) from t1; ++------------------------------+ +| timestampadd(year, c14, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c14], [t1.c12]), partitions(p0) + +select timestampadd(second, c14, c12) from t1; ++--------------------------------+ +| timestampadd(second, c14, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c14], [t1.c12]), partitions(p0) + +select timestampadd(year, c14, c12) from t1; ++------------------------------+ +| timestampadd(year, c14, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c14], [t1.c13]), partitions(p0) + +select timestampadd(second, c14, c13) from t1; ++--------------------------------+ +| timestampadd(second, c14, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c14], [t1.c13]), partitions(p0) + +select timestampadd(year, c14, c13) from t1; ++------------------------------+ +| timestampadd(year, c14, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, c14, c14) from t1; ++--------------------------------+ +| timestampadd(second, c14, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(year, c14, c14) from t1; ++------------------------------+ +| timestampadd(year, c14, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c14], [t1.c15]), partitions(p0) + +select timestampadd(second, c14, c15) from t1; ++--------------------------------+ +| timestampadd(second, c14, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c14], [t1.c15]), partitions(p0) + +select timestampadd(year, c14, c15) from t1; ++------------------------------+ +| timestampadd(year, c14, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c14], [t1.c16]), partitions(p0) + +select timestampadd(second, c14, c16) from t1; ++--------------------------------+ +| timestampadd(second, c14, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c14], [t1.c16]), partitions(p0) + +select timestampadd(year, c14, c16) from t1; ++------------------------------+ +| timestampadd(year, c14, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c14], [t1.c17]), partitions(p0) + +select timestampadd(second, c14, c17) from t1; ++--------------------------------+ +| timestampadd(second, c14, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c14], [t1.c17]), partitions(p0) + +select timestampadd(year, c14, c17) from t1; ++------------------------------+ +| timestampadd(year, c14, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c14], [t1.c18]), partitions(p0) + +select timestampadd(second, c14, c18) from t1; ++--------------------------------+ +| timestampadd(second, c14, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c14], [t1.c18]), partitions(p0) + +select timestampadd(year, c14, c18) from t1; ++------------------------------+ +| timestampadd(year, c14, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c14], [t1.c19]), partitions(p0) + +select timestampadd(second, c14, c19) from t1; ++--------------------------------+ +| timestampadd(second, c14, c19) | ++--------------------------------+ +| 2019-12-01 12:00:04 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c14], [t1.c19]), partitions(p0) + +select timestampadd(year, c14, c19) from t1; ++------------------------------+ +| timestampadd(year, c14, c19) | ++------------------------------+ +| 2023-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c14], [t1.c20]), partitions(p0) + +select timestampadd(second, c14, c20) from t1; ++--------------------------------+ +| timestampadd(second, c14, c20) | ++--------------------------------+ +| 2019-12-03 06:00:04 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c14], [t1.c20]), partitions(p0) + +select timestampadd(year, c14, c20) from t1; ++------------------------------+ +| timestampadd(year, c14, c20) | ++------------------------------+ +| 2023-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c14], [t1.c21]), partitions(p0) + +select timestampadd(second, c14, c21) from t1; ++--------------------------------+ +| timestampadd(second, c14, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c14], [t1.c21]), partitions(p0) + +select timestampadd(year, c14, c21) from t1; ++------------------------------+ +| timestampadd(year, c14, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c14, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c14, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c14], [t1.c22]), partitions(p0) + +select timestampadd(second, c14, c22) from t1; ++--------------------------------+ +| timestampadd(second, c14, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c14, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c14, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c14], [t1.c22]), partitions(p0) + +select timestampadd(year, c14, c22) from t1; ++------------------------------+ +| timestampadd(year, c14, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c15], [t1.c1]), partitions(p0) + +select timestampadd(second, c15, c1) from t1; ++-------------------------------+ +| timestampadd(second, c15, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c15], [t1.c1]), partitions(p0) + +select timestampadd(year, c15, c1) from t1; ++-----------------------------+ +| timestampadd(year, c15, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c15], [t1.c2]), partitions(p0) + +select timestampadd(second, c15, c2) from t1; ++-------------------------------+ +| timestampadd(second, c15, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c15], [t1.c2]), partitions(p0) + +select timestampadd(year, c15, c2) from t1; ++-----------------------------+ +| timestampadd(year, c15, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c15], [t1.c3]), partitions(p0) + +select timestampadd(second, c15, c3) from t1; ++-------------------------------+ +| timestampadd(second, c15, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c15], [t1.c3]), partitions(p0) + +select timestampadd(year, c15, c3) from t1; ++-----------------------------+ +| timestampadd(year, c15, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c15], [t1.c4]), partitions(p0) + +select timestampadd(second, c15, c4) from t1; ++-------------------------------+ +| timestampadd(second, c15, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c15], [t1.c4]), partitions(p0) + +select timestampadd(year, c15, c4) from t1; ++-----------------------------+ +| timestampadd(year, c15, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c15], [t1.c5]), partitions(p0) + +select timestampadd(second, c15, c5) from t1; ++-------------------------------+ +| timestampadd(second, c15, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c15], [t1.c5]), partitions(p0) + +select timestampadd(year, c15, c5) from t1; ++-----------------------------+ +| timestampadd(year, c15, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c15], [t1.c6]), partitions(p0) + +select timestampadd(second, c15, c6) from t1; ++-------------------------------+ +| timestampadd(second, c15, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c15], [t1.c6]), partitions(p0) + +select timestampadd(year, c15, c6) from t1; ++-----------------------------+ +| timestampadd(year, c15, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c15], [t1.c7]), partitions(p0) + +select timestampadd(second, c15, c7) from t1; ++-------------------------------+ +| timestampadd(second, c15, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c15], [t1.c7]), partitions(p0) + +select timestampadd(year, c15, c7) from t1; ++-----------------------------+ +| timestampadd(year, c15, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c15], [t1.c8]), partitions(p0) + +select timestampadd(second, c15, c8) from t1; ++-------------------------------+ +| timestampadd(second, c15, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c15], [t1.c8]), partitions(p0) + +select timestampadd(year, c15, c8) from t1; ++-----------------------------+ +| timestampadd(year, c15, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c15, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c15], [t1.c9]), partitions(p0) + +select timestampadd(second, c15, c9) from t1; ++-------------------------------+ +| timestampadd(second, c15, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c15, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c15], [t1.c9]), partitions(p0) + +select timestampadd(year, c15, c9) from t1; ++-----------------------------+ +| timestampadd(year, c15, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c15], [t1.c10]), partitions(p0) + +select timestampadd(second, c15, c10) from t1; ++--------------------------------+ +| timestampadd(second, c15, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c15], [t1.c10]), partitions(p0) + +select timestampadd(year, c15, c10) from t1; ++------------------------------+ +| timestampadd(year, c15, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c15], [t1.c11]), partitions(p0) + +select timestampadd(second, c15, c11) from t1; ++--------------------------------+ +| timestampadd(second, c15, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c15], [t1.c11]), partitions(p0) + +select timestampadd(year, c15, c11) from t1; ++------------------------------+ +| timestampadd(year, c15, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c15], [t1.c12]), partitions(p0) + +select timestampadd(second, c15, c12) from t1; ++--------------------------------+ +| timestampadd(second, c15, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c15], [t1.c12]), partitions(p0) + +select timestampadd(year, c15, c12) from t1; ++------------------------------+ +| timestampadd(year, c15, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c15], [t1.c13]), partitions(p0) + +select timestampadd(second, c15, c13) from t1; ++--------------------------------+ +| timestampadd(second, c15, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c15], [t1.c13]), partitions(p0) + +select timestampadd(year, c15, c13) from t1; ++------------------------------+ +| timestampadd(year, c15, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c15], [t1.c14]), partitions(p0) + +select timestampadd(second, c15, c14) from t1; ++--------------------------------+ +| timestampadd(second, c15, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c15], [t1.c14]), partitions(p0) + +select timestampadd(year, c15, c14) from t1; ++------------------------------+ +| timestampadd(year, c15, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, c15, c15) from t1; ++--------------------------------+ +| timestampadd(second, c15, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(year, c15, c15) from t1; ++------------------------------+ +| timestampadd(year, c15, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c15], [t1.c16]), partitions(p0) + +select timestampadd(second, c15, c16) from t1; ++--------------------------------+ +| timestampadd(second, c15, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c15], [t1.c16]), partitions(p0) + +select timestampadd(year, c15, c16) from t1; ++------------------------------+ +| timestampadd(year, c15, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c15], [t1.c17]), partitions(p0) + +select timestampadd(second, c15, c17) from t1; ++--------------------------------+ +| timestampadd(second, c15, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c15], [t1.c17]), partitions(p0) + +select timestampadd(year, c15, c17) from t1; ++------------------------------+ +| timestampadd(year, c15, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c15], [t1.c18]), partitions(p0) + +select timestampadd(second, c15, c18) from t1; ++--------------------------------+ +| timestampadd(second, c15, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c15], [t1.c18]), partitions(p0) + +select timestampadd(year, c15, c18) from t1; ++------------------------------+ +| timestampadd(year, c15, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c15], [t1.c19]), partitions(p0) + +select timestampadd(second, c15, c19) from t1; ++--------------------------------+ +| timestampadd(second, c15, c19) | ++--------------------------------+ +| 2019-12-01 12:00:06 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c15], [t1.c19]), partitions(p0) + +select timestampadd(year, c15, c19) from t1; ++------------------------------+ +| timestampadd(year, c15, c19) | ++------------------------------+ +| 2025-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c15], [t1.c20]), partitions(p0) + +select timestampadd(second, c15, c20) from t1; ++--------------------------------+ +| timestampadd(second, c15, c20) | ++--------------------------------+ +| 2019-12-03 06:00:06 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c15], [t1.c20]), partitions(p0) + +select timestampadd(year, c15, c20) from t1; ++------------------------------+ +| timestampadd(year, c15, c20) | ++------------------------------+ +| 2025-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c15], [t1.c21]), partitions(p0) + +select timestampadd(second, c15, c21) from t1; ++--------------------------------+ +| timestampadd(second, c15, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c15], [t1.c21]), partitions(p0) + +select timestampadd(year, c15, c21) from t1; ++------------------------------+ +| timestampadd(year, c15, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c15, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c15, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c15], [t1.c22]), partitions(p0) + +select timestampadd(second, c15, c22) from t1; ++--------------------------------+ +| timestampadd(second, c15, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c15, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c15, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c15], [t1.c22]), partitions(p0) + +select timestampadd(year, c15, c22) from t1; ++------------------------------+ +| timestampadd(year, c15, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c16], [t1.c1]), partitions(p0) + +select timestampadd(second, c16, c1) from t1; ++-------------------------------+ +| timestampadd(second, c16, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c16], [t1.c1]), partitions(p0) + +select timestampadd(year, c16, c1) from t1; ++-----------------------------+ +| timestampadd(year, c16, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c16], [t1.c2]), partitions(p0) + +select timestampadd(second, c16, c2) from t1; ++-------------------------------+ +| timestampadd(second, c16, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c16], [t1.c2]), partitions(p0) + +select timestampadd(year, c16, c2) from t1; ++-----------------------------+ +| timestampadd(year, c16, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c16], [t1.c3]), partitions(p0) + +select timestampadd(second, c16, c3) from t1; ++-------------------------------+ +| timestampadd(second, c16, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c16], [t1.c3]), partitions(p0) + +select timestampadd(year, c16, c3) from t1; ++-----------------------------+ +| timestampadd(year, c16, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c16], [t1.c4]), partitions(p0) + +select timestampadd(second, c16, c4) from t1; ++-------------------------------+ +| timestampadd(second, c16, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c16], [t1.c4]), partitions(p0) + +select timestampadd(year, c16, c4) from t1; ++-----------------------------+ +| timestampadd(year, c16, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c16], [t1.c5]), partitions(p0) + +select timestampadd(second, c16, c5) from t1; ++-------------------------------+ +| timestampadd(second, c16, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c16], [t1.c5]), partitions(p0) + +select timestampadd(year, c16, c5) from t1; ++-----------------------------+ +| timestampadd(year, c16, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c16], [t1.c6]), partitions(p0) + +select timestampadd(second, c16, c6) from t1; ++-------------------------------+ +| timestampadd(second, c16, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c16], [t1.c6]), partitions(p0) + +select timestampadd(year, c16, c6) from t1; ++-----------------------------+ +| timestampadd(year, c16, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c16], [t1.c7]), partitions(p0) + +select timestampadd(second, c16, c7) from t1; ++-------------------------------+ +| timestampadd(second, c16, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c16], [t1.c7]), partitions(p0) + +select timestampadd(year, c16, c7) from t1; ++-----------------------------+ +| timestampadd(year, c16, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c16], [t1.c8]), partitions(p0) + +select timestampadd(second, c16, c8) from t1; ++-------------------------------+ +| timestampadd(second, c16, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c16], [t1.c8]), partitions(p0) + +select timestampadd(year, c16, c8) from t1; ++-----------------------------+ +| timestampadd(year, c16, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c16, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c16], [t1.c9]), partitions(p0) + +select timestampadd(second, c16, c9) from t1; ++-------------------------------+ +| timestampadd(second, c16, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c16, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c16], [t1.c9]), partitions(p0) + +select timestampadd(year, c16, c9) from t1; ++-----------------------------+ +| timestampadd(year, c16, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c16], [t1.c10]), partitions(p0) + +select timestampadd(second, c16, c10) from t1; ++--------------------------------+ +| timestampadd(second, c16, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c16], [t1.c10]), partitions(p0) + +select timestampadd(year, c16, c10) from t1; ++------------------------------+ +| timestampadd(year, c16, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c16], [t1.c11]), partitions(p0) + +select timestampadd(second, c16, c11) from t1; ++--------------------------------+ +| timestampadd(second, c16, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c16], [t1.c11]), partitions(p0) + +select timestampadd(year, c16, c11) from t1; ++------------------------------+ +| timestampadd(year, c16, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c16], [t1.c12]), partitions(p0) + +select timestampadd(second, c16, c12) from t1; ++--------------------------------+ +| timestampadd(second, c16, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c16], [t1.c12]), partitions(p0) + +select timestampadd(year, c16, c12) from t1; ++------------------------------+ +| timestampadd(year, c16, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c16], [t1.c13]), partitions(p0) + +select timestampadd(second, c16, c13) from t1; ++--------------------------------+ +| timestampadd(second, c16, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c16], [t1.c13]), partitions(p0) + +select timestampadd(year, c16, c13) from t1; ++------------------------------+ +| timestampadd(year, c16, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c16], [t1.c14]), partitions(p0) + +select timestampadd(second, c16, c14) from t1; ++--------------------------------+ +| timestampadd(second, c16, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c16], [t1.c14]), partitions(p0) + +select timestampadd(year, c16, c14) from t1; ++------------------------------+ +| timestampadd(year, c16, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c16], [t1.c15]), partitions(p0) + +select timestampadd(second, c16, c15) from t1; ++--------------------------------+ +| timestampadd(second, c16, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c16], [t1.c15]), partitions(p0) + +select timestampadd(year, c16, c15) from t1; ++------------------------------+ +| timestampadd(year, c16, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, c16, c16) from t1; ++--------------------------------+ +| timestampadd(second, c16, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(year, c16, c16) from t1; ++------------------------------+ +| timestampadd(year, c16, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c16], [t1.c17]), partitions(p0) + +select timestampadd(second, c16, c17) from t1; ++--------------------------------+ +| timestampadd(second, c16, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c16], [t1.c17]), partitions(p0) + +select timestampadd(year, c16, c17) from t1; ++------------------------------+ +| timestampadd(year, c16, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c16], [t1.c18]), partitions(p0) + +select timestampadd(second, c16, c18) from t1; ++--------------------------------+ +| timestampadd(second, c16, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c16], [t1.c18]), partitions(p0) + +select timestampadd(year, c16, c18) from t1; ++------------------------------+ +| timestampadd(year, c16, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c16], [t1.c19]), partitions(p0) + +select timestampadd(second, c16, c19) from t1; ++--------------------------------+ +| timestampadd(second, c16, c19) | ++--------------------------------+ +| 2019-12-01 12:00:06 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c16], [t1.c19]), partitions(p0) + +select timestampadd(year, c16, c19) from t1; ++------------------------------+ +| timestampadd(year, c16, c19) | ++------------------------------+ +| 2025-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c16], [t1.c20]), partitions(p0) + +select timestampadd(second, c16, c20) from t1; ++--------------------------------+ +| timestampadd(second, c16, c20) | ++--------------------------------+ +| 2019-12-03 06:00:06 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c16], [t1.c20]), partitions(p0) + +select timestampadd(year, c16, c20) from t1; ++------------------------------+ +| timestampadd(year, c16, c20) | ++------------------------------+ +| 2025-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c16], [t1.c21]), partitions(p0) + +select timestampadd(second, c16, c21) from t1; ++--------------------------------+ +| timestampadd(second, c16, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c16], [t1.c21]), partitions(p0) + +select timestampadd(year, c16, c21) from t1; ++------------------------------+ +| timestampadd(year, c16, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c16, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c16, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c16], [t1.c22]), partitions(p0) + +select timestampadd(second, c16, c22) from t1; ++--------------------------------+ +| timestampadd(second, c16, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c16, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c16, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c16], [t1.c22]), partitions(p0) + +select timestampadd(year, c16, c22) from t1; ++------------------------------+ +| timestampadd(year, c16, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c17], [t1.c1]), partitions(p0) + +select timestampadd(second, c17, c1) from t1; ++-------------------------------+ +| timestampadd(second, c17, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c17], [t1.c1]), partitions(p0) + +select timestampadd(year, c17, c1) from t1; ++-----------------------------+ +| timestampadd(year, c17, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c17], [t1.c2]), partitions(p0) + +select timestampadd(second, c17, c2) from t1; ++-------------------------------+ +| timestampadd(second, c17, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c17], [t1.c2]), partitions(p0) + +select timestampadd(year, c17, c2) from t1; ++-----------------------------+ +| timestampadd(year, c17, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c17], [t1.c3]), partitions(p0) + +select timestampadd(second, c17, c3) from t1; ++-------------------------------+ +| timestampadd(second, c17, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c17], [t1.c3]), partitions(p0) + +select timestampadd(year, c17, c3) from t1; ++-----------------------------+ +| timestampadd(year, c17, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c17], [t1.c4]), partitions(p0) + +select timestampadd(second, c17, c4) from t1; ++-------------------------------+ +| timestampadd(second, c17, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c17], [t1.c4]), partitions(p0) + +select timestampadd(year, c17, c4) from t1; ++-----------------------------+ +| timestampadd(year, c17, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c17], [t1.c5]), partitions(p0) + +select timestampadd(second, c17, c5) from t1; ++-------------------------------+ +| timestampadd(second, c17, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c17], [t1.c5]), partitions(p0) + +select timestampadd(year, c17, c5) from t1; ++-----------------------------+ +| timestampadd(year, c17, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c17], [t1.c6]), partitions(p0) + +select timestampadd(second, c17, c6) from t1; ++-------------------------------+ +| timestampadd(second, c17, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c17], [t1.c6]), partitions(p0) + +select timestampadd(year, c17, c6) from t1; ++-----------------------------+ +| timestampadd(year, c17, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c17], [t1.c7]), partitions(p0) + +select timestampadd(second, c17, c7) from t1; ++-------------------------------+ +| timestampadd(second, c17, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c17], [t1.c7]), partitions(p0) + +select timestampadd(year, c17, c7) from t1; ++-----------------------------+ +| timestampadd(year, c17, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c17], [t1.c8]), partitions(p0) + +select timestampadd(second, c17, c8) from t1; ++-------------------------------+ +| timestampadd(second, c17, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c17], [t1.c8]), partitions(p0) + +select timestampadd(year, c17, c8) from t1; ++-----------------------------+ +| timestampadd(year, c17, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c17, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c17], [t1.c9]), partitions(p0) + +select timestampadd(second, c17, c9) from t1; ++-------------------------------+ +| timestampadd(second, c17, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c17, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c17], [t1.c9]), partitions(p0) + +select timestampadd(year, c17, c9) from t1; ++-----------------------------+ +| timestampadd(year, c17, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c17], [t1.c10]), partitions(p0) + +select timestampadd(second, c17, c10) from t1; ++--------------------------------+ +| timestampadd(second, c17, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c17], [t1.c10]), partitions(p0) + +select timestampadd(year, c17, c10) from t1; ++------------------------------+ +| timestampadd(year, c17, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c17], [t1.c11]), partitions(p0) + +select timestampadd(second, c17, c11) from t1; ++--------------------------------+ +| timestampadd(second, c17, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c17], [t1.c11]), partitions(p0) + +select timestampadd(year, c17, c11) from t1; ++------------------------------+ +| timestampadd(year, c17, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c17], [t1.c12]), partitions(p0) + +select timestampadd(second, c17, c12) from t1; ++--------------------------------+ +| timestampadd(second, c17, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c17], [t1.c12]), partitions(p0) + +select timestampadd(year, c17, c12) from t1; ++------------------------------+ +| timestampadd(year, c17, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c17], [t1.c13]), partitions(p0) + +select timestampadd(second, c17, c13) from t1; ++--------------------------------+ +| timestampadd(second, c17, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c17], [t1.c13]), partitions(p0) + +select timestampadd(year, c17, c13) from t1; ++------------------------------+ +| timestampadd(year, c17, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c17], [t1.c14]), partitions(p0) + +select timestampadd(second, c17, c14) from t1; ++--------------------------------+ +| timestampadd(second, c17, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c17], [t1.c14]), partitions(p0) + +select timestampadd(year, c17, c14) from t1; ++------------------------------+ +| timestampadd(year, c17, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c17], [t1.c15]), partitions(p0) + +select timestampadd(second, c17, c15) from t1; ++--------------------------------+ +| timestampadd(second, c17, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c17], [t1.c15]), partitions(p0) + +select timestampadd(year, c17, c15) from t1; ++------------------------------+ +| timestampadd(year, c17, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c17], [t1.c16]), partitions(p0) + +select timestampadd(second, c17, c16) from t1; ++--------------------------------+ +| timestampadd(second, c17, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c17], [t1.c16]), partitions(p0) + +select timestampadd(year, c17, c16) from t1; ++------------------------------+ +| timestampadd(year, c17, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, c17, c17) from t1; ++--------------------------------+ +| timestampadd(second, c17, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(year, c17, c17) from t1; ++------------------------------+ +| timestampadd(year, c17, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c17], [t1.c18]), partitions(p0) + +select timestampadd(second, c17, c18) from t1; ++--------------------------------+ +| timestampadd(second, c17, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c17], [t1.c18]), partitions(p0) + +select timestampadd(year, c17, c18) from t1; ++------------------------------+ +| timestampadd(year, c17, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c17], [t1.c19]), partitions(p0) + +select timestampadd(second, c17, c19) from t1; ++--------------------------------+ +| timestampadd(second, c17, c19) | ++--------------------------------+ +| 2019-12-01 12:00:08 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c17], [t1.c19]), partitions(p0) + +select timestampadd(year, c17, c19) from t1; ++------------------------------+ +| timestampadd(year, c17, c19) | ++------------------------------+ +| 2027-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c17], [t1.c20]), partitions(p0) + +select timestampadd(second, c17, c20) from t1; ++--------------------------------+ +| timestampadd(second, c17, c20) | ++--------------------------------+ +| 2019-12-03 06:00:08 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c17], [t1.c20]), partitions(p0) + +select timestampadd(year, c17, c20) from t1; ++------------------------------+ +| timestampadd(year, c17, c20) | ++------------------------------+ +| 2027-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c17], [t1.c21]), partitions(p0) + +select timestampadd(second, c17, c21) from t1; ++--------------------------------+ +| timestampadd(second, c17, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c17], [t1.c21]), partitions(p0) + +select timestampadd(year, c17, c21) from t1; ++------------------------------+ +| timestampadd(year, c17, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c17, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c17, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c17], [t1.c22]), partitions(p0) + +select timestampadd(second, c17, c22) from t1; ++--------------------------------+ +| timestampadd(second, c17, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c17, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c17, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c17], [t1.c22]), partitions(p0) + +select timestampadd(year, c17, c22) from t1; ++------------------------------+ +| timestampadd(year, c17, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c18], [t1.c1]), partitions(p0) + +select timestampadd(second, c18, c1) from t1; ++-------------------------------+ +| timestampadd(second, c18, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c18], [t1.c1]), partitions(p0) + +select timestampadd(year, c18, c1) from t1; ++-----------------------------+ +| timestampadd(year, c18, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c18], [t1.c2]), partitions(p0) + +select timestampadd(second, c18, c2) from t1; ++-------------------------------+ +| timestampadd(second, c18, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c18], [t1.c2]), partitions(p0) + +select timestampadd(year, c18, c2) from t1; ++-----------------------------+ +| timestampadd(year, c18, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c18], [t1.c3]), partitions(p0) + +select timestampadd(second, c18, c3) from t1; ++-------------------------------+ +| timestampadd(second, c18, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c18], [t1.c3]), partitions(p0) + +select timestampadd(year, c18, c3) from t1; ++-----------------------------+ +| timestampadd(year, c18, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c18], [t1.c4]), partitions(p0) + +select timestampadd(second, c18, c4) from t1; ++-------------------------------+ +| timestampadd(second, c18, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c18], [t1.c4]), partitions(p0) + +select timestampadd(year, c18, c4) from t1; ++-----------------------------+ +| timestampadd(year, c18, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c18], [t1.c5]), partitions(p0) + +select timestampadd(second, c18, c5) from t1; ++-------------------------------+ +| timestampadd(second, c18, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c18], [t1.c5]), partitions(p0) + +select timestampadd(year, c18, c5) from t1; ++-----------------------------+ +| timestampadd(year, c18, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c18], [t1.c6]), partitions(p0) + +select timestampadd(second, c18, c6) from t1; ++-------------------------------+ +| timestampadd(second, c18, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c18], [t1.c6]), partitions(p0) + +select timestampadd(year, c18, c6) from t1; ++-----------------------------+ +| timestampadd(year, c18, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c18], [t1.c7]), partitions(p0) + +select timestampadd(second, c18, c7) from t1; ++-------------------------------+ +| timestampadd(second, c18, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c18], [t1.c7]), partitions(p0) + +select timestampadd(year, c18, c7) from t1; ++-----------------------------+ +| timestampadd(year, c18, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c18], [t1.c8]), partitions(p0) + +select timestampadd(second, c18, c8) from t1; ++-------------------------------+ +| timestampadd(second, c18, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c18], [t1.c8]), partitions(p0) + +select timestampadd(year, c18, c8) from t1; ++-----------------------------+ +| timestampadd(year, c18, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c18, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c18], [t1.c9]), partitions(p0) + +select timestampadd(second, c18, c9) from t1; ++-------------------------------+ +| timestampadd(second, c18, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c18, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c18], [t1.c9]), partitions(p0) + +select timestampadd(year, c18, c9) from t1; ++-----------------------------+ +| timestampadd(year, c18, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c18], [t1.c10]), partitions(p0) + +select timestampadd(second, c18, c10) from t1; ++--------------------------------+ +| timestampadd(second, c18, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c18], [t1.c10]), partitions(p0) + +select timestampadd(year, c18, c10) from t1; ++------------------------------+ +| timestampadd(year, c18, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c18], [t1.c11]), partitions(p0) + +select timestampadd(second, c18, c11) from t1; ++--------------------------------+ +| timestampadd(second, c18, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c18], [t1.c11]), partitions(p0) + +select timestampadd(year, c18, c11) from t1; ++------------------------------+ +| timestampadd(year, c18, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c18], [t1.c12]), partitions(p0) + +select timestampadd(second, c18, c12) from t1; ++--------------------------------+ +| timestampadd(second, c18, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c18], [t1.c12]), partitions(p0) + +select timestampadd(year, c18, c12) from t1; ++------------------------------+ +| timestampadd(year, c18, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c18], [t1.c13]), partitions(p0) + +select timestampadd(second, c18, c13) from t1; ++--------------------------------+ +| timestampadd(second, c18, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c18], [t1.c13]), partitions(p0) + +select timestampadd(year, c18, c13) from t1; ++------------------------------+ +| timestampadd(year, c18, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c18], [t1.c14]), partitions(p0) + +select timestampadd(second, c18, c14) from t1; ++--------------------------------+ +| timestampadd(second, c18, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c18], [t1.c14]), partitions(p0) + +select timestampadd(year, c18, c14) from t1; ++------------------------------+ +| timestampadd(year, c18, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c18], [t1.c15]), partitions(p0) + +select timestampadd(second, c18, c15) from t1; ++--------------------------------+ +| timestampadd(second, c18, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c18], [t1.c15]), partitions(p0) + +select timestampadd(year, c18, c15) from t1; ++------------------------------+ +| timestampadd(year, c18, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c18], [t1.c16]), partitions(p0) + +select timestampadd(second, c18, c16) from t1; ++--------------------------------+ +| timestampadd(second, c18, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c18], [t1.c16]), partitions(p0) + +select timestampadd(year, c18, c16) from t1; ++------------------------------+ +| timestampadd(year, c18, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c18], [t1.c17]), partitions(p0) + +select timestampadd(second, c18, c17) from t1; ++--------------------------------+ +| timestampadd(second, c18, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c18], [t1.c17]), partitions(p0) + +select timestampadd(year, c18, c17) from t1; ++------------------------------+ +| timestampadd(year, c18, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, c18, c18) from t1; ++--------------------------------+ +| timestampadd(second, c18, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(year, c18, c18) from t1; ++------------------------------+ +| timestampadd(year, c18, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c18], [t1.c19]), partitions(p0) + +select timestampadd(second, c18, c19) from t1; ++--------------------------------+ +| timestampadd(second, c18, c19) | ++--------------------------------+ +| 2019-12-01 12:00:09 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c18], [t1.c19]), partitions(p0) + +select timestampadd(year, c18, c19) from t1; ++------------------------------+ +| timestampadd(year, c18, c19) | ++------------------------------+ +| 2028-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c18], [t1.c20]), partitions(p0) + +select timestampadd(second, c18, c20) from t1; ++--------------------------------+ +| timestampadd(second, c18, c20) | ++--------------------------------+ +| 2019-12-03 06:00:09 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c18], [t1.c20]), partitions(p0) + +select timestampadd(year, c18, c20) from t1; ++------------------------------+ +| timestampadd(year, c18, c20) | ++------------------------------+ +| 2028-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c18], [t1.c21]), partitions(p0) + +select timestampadd(second, c18, c21) from t1; ++--------------------------------+ +| timestampadd(second, c18, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c18], [t1.c21]), partitions(p0) + +select timestampadd(year, c18, c21) from t1; ++------------------------------+ +| timestampadd(year, c18, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c18, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c18, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c18], [t1.c22]), partitions(p0) + +select timestampadd(second, c18, c22) from t1; ++--------------------------------+ +| timestampadd(second, c18, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c18, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c18, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c18], [t1.c22]), partitions(p0) + +select timestampadd(year, c18, c22) from t1; ++------------------------------+ +| timestampadd(year, c18, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c19], [t1.c1]), partitions(p0) + +select timestampadd(second, c19, c1) from t1; ++-------------------------------+ +| timestampadd(second, c19, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c19], [t1.c1]), partitions(p0) + +select timestampadd(year, c19, c1) from t1; ++-----------------------------+ +| timestampadd(year, c19, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c19], [t1.c2]), partitions(p0) + +select timestampadd(second, c19, c2) from t1; ++-------------------------------+ +| timestampadd(second, c19, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c19], [t1.c2]), partitions(p0) + +select timestampadd(year, c19, c2) from t1; ++-----------------------------+ +| timestampadd(year, c19, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c19], [t1.c3]), partitions(p0) + +select timestampadd(second, c19, c3) from t1; ++-------------------------------+ +| timestampadd(second, c19, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c19], [t1.c3]), partitions(p0) + +select timestampadd(year, c19, c3) from t1; ++-----------------------------+ +| timestampadd(year, c19, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c19], [t1.c4]), partitions(p0) + +select timestampadd(second, c19, c4) from t1; ++-------------------------------+ +| timestampadd(second, c19, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c19], [t1.c4]), partitions(p0) + +select timestampadd(year, c19, c4) from t1; ++-----------------------------+ +| timestampadd(year, c19, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c19], [t1.c5]), partitions(p0) + +select timestampadd(second, c19, c5) from t1; ++-------------------------------+ +| timestampadd(second, c19, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c19], [t1.c5]), partitions(p0) + +select timestampadd(year, c19, c5) from t1; ++-----------------------------+ +| timestampadd(year, c19, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c19], [t1.c6]), partitions(p0) + +select timestampadd(second, c19, c6) from t1; ++-------------------------------+ +| timestampadd(second, c19, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c19], [t1.c6]), partitions(p0) + +select timestampadd(year, c19, c6) from t1; ++-----------------------------+ +| timestampadd(year, c19, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c19], [t1.c7]), partitions(p0) + +select timestampadd(second, c19, c7) from t1; ++-------------------------------+ +| timestampadd(second, c19, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c19], [t1.c7]), partitions(p0) + +select timestampadd(year, c19, c7) from t1; ++-----------------------------+ +| timestampadd(year, c19, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c19], [t1.c8]), partitions(p0) + +select timestampadd(second, c19, c8) from t1; ++-------------------------------+ +| timestampadd(second, c19, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c19], [t1.c8]), partitions(p0) + +select timestampadd(year, c19, c8) from t1; ++-----------------------------+ +| timestampadd(year, c19, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c19, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c19], [t1.c9]), partitions(p0) + +select timestampadd(second, c19, c9) from t1; ++-------------------------------+ +| timestampadd(second, c19, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c19, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c19], [t1.c9]), partitions(p0) + +select timestampadd(year, c19, c9) from t1; ++-----------------------------+ +| timestampadd(year, c19, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c19], [t1.c10]), partitions(p0) + +select timestampadd(second, c19, c10) from t1; ++--------------------------------+ +| timestampadd(second, c19, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c19], [t1.c10]), partitions(p0) + +select timestampadd(year, c19, c10) from t1; ++------------------------------+ +| timestampadd(year, c19, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c19], [t1.c11]), partitions(p0) + +select timestampadd(second, c19, c11) from t1; ++--------------------------------+ +| timestampadd(second, c19, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c19], [t1.c11]), partitions(p0) + +select timestampadd(year, c19, c11) from t1; ++------------------------------+ +| timestampadd(year, c19, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c19], [t1.c12]), partitions(p0) + +select timestampadd(second, c19, c12) from t1; ++--------------------------------+ +| timestampadd(second, c19, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c19], [t1.c12]), partitions(p0) + +select timestampadd(year, c19, c12) from t1; ++------------------------------+ +| timestampadd(year, c19, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c19], [t1.c13]), partitions(p0) + +select timestampadd(second, c19, c13) from t1; ++--------------------------------+ +| timestampadd(second, c19, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c19], [t1.c13]), partitions(p0) + +select timestampadd(year, c19, c13) from t1; ++------------------------------+ +| timestampadd(year, c19, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c19], [t1.c14]), partitions(p0) + +select timestampadd(second, c19, c14) from t1; ++--------------------------------+ +| timestampadd(second, c19, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c19], [t1.c14]), partitions(p0) + +select timestampadd(year, c19, c14) from t1; ++------------------------------+ +| timestampadd(year, c19, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c19], [t1.c15]), partitions(p0) + +select timestampadd(second, c19, c15) from t1; ++--------------------------------+ +| timestampadd(second, c19, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c19], [t1.c15]), partitions(p0) + +select timestampadd(year, c19, c15) from t1; ++------------------------------+ +| timestampadd(year, c19, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c19], [t1.c16]), partitions(p0) + +select timestampadd(second, c19, c16) from t1; ++--------------------------------+ +| timestampadd(second, c19, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c19], [t1.c16]), partitions(p0) + +select timestampadd(year, c19, c16) from t1; ++------------------------------+ +| timestampadd(year, c19, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c19], [t1.c17]), partitions(p0) + +select timestampadd(second, c19, c17) from t1; ++--------------------------------+ +| timestampadd(second, c19, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c19], [t1.c17]), partitions(p0) + +select timestampadd(year, c19, c17) from t1; ++------------------------------+ +| timestampadd(year, c19, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c19], [t1.c18]), partitions(p0) + +select timestampadd(second, c19, c18) from t1; ++--------------------------------+ +| timestampadd(second, c19, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c19], [t1.c18]), partitions(p0) + +select timestampadd(year, c19, c18) from t1; ++------------------------------+ +| timestampadd(year, c19, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, c19, c19) from t1; ++--------------------------------+ +| timestampadd(second, c19, c19) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(year, c19, c19) from t1; ++------------------------------+ +| timestampadd(year, c19, c19) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c19], [t1.c20]), partitions(p0) + +select timestampadd(second, c19, c20) from t1; ++--------------------------------+ +| timestampadd(second, c19, c20) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c19], [t1.c20]), partitions(p0) + +select timestampadd(year, c19, c20) from t1; ++------------------------------+ +| timestampadd(year, c19, c20) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c19], [t1.c21]), partitions(p0) + +select timestampadd(second, c19, c21) from t1; ++--------------------------------+ +| timestampadd(second, c19, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c19], [t1.c21]), partitions(p0) + +select timestampadd(year, c19, c21) from t1; ++------------------------------+ +| timestampadd(year, c19, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c19, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c19, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c19], [t1.c22]), partitions(p0) + +select timestampadd(second, c19, c22) from t1; ++--------------------------------+ +| timestampadd(second, c19, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c19, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c19, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c19], [t1.c22]), partitions(p0) + +select timestampadd(year, c19, c22) from t1; ++------------------------------+ +| timestampadd(year, c19, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c20], [t1.c1]), partitions(p0) + +select timestampadd(second, c20, c1) from t1; ++-------------------------------+ +| timestampadd(second, c20, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c20], [t1.c1]), partitions(p0) + +select timestampadd(year, c20, c1) from t1; ++-----------------------------+ +| timestampadd(year, c20, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c20], [t1.c2]), partitions(p0) + +select timestampadd(second, c20, c2) from t1; ++-------------------------------+ +| timestampadd(second, c20, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c20], [t1.c2]), partitions(p0) + +select timestampadd(year, c20, c2) from t1; ++-----------------------------+ +| timestampadd(year, c20, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c20], [t1.c3]), partitions(p0) + +select timestampadd(second, c20, c3) from t1; ++-------------------------------+ +| timestampadd(second, c20, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c20], [t1.c3]), partitions(p0) + +select timestampadd(year, c20, c3) from t1; ++-----------------------------+ +| timestampadd(year, c20, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c20], [t1.c4]), partitions(p0) + +select timestampadd(second, c20, c4) from t1; ++-------------------------------+ +| timestampadd(second, c20, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c20], [t1.c4]), partitions(p0) + +select timestampadd(year, c20, c4) from t1; ++-----------------------------+ +| timestampadd(year, c20, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c20], [t1.c5]), partitions(p0) + +select timestampadd(second, c20, c5) from t1; ++-------------------------------+ +| timestampadd(second, c20, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c20], [t1.c5]), partitions(p0) + +select timestampadd(year, c20, c5) from t1; ++-----------------------------+ +| timestampadd(year, c20, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c20], [t1.c6]), partitions(p0) + +select timestampadd(second, c20, c6) from t1; ++-------------------------------+ +| timestampadd(second, c20, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c20], [t1.c6]), partitions(p0) + +select timestampadd(year, c20, c6) from t1; ++-----------------------------+ +| timestampadd(year, c20, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c20], [t1.c7]), partitions(p0) + +select timestampadd(second, c20, c7) from t1; ++-------------------------------+ +| timestampadd(second, c20, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c20], [t1.c7]), partitions(p0) + +select timestampadd(year, c20, c7) from t1; ++-----------------------------+ +| timestampadd(year, c20, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c20], [t1.c8]), partitions(p0) + +select timestampadd(second, c20, c8) from t1; ++-------------------------------+ +| timestampadd(second, c20, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c20], [t1.c8]), partitions(p0) + +select timestampadd(year, c20, c8) from t1; ++-----------------------------+ +| timestampadd(year, c20, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c20, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c20], [t1.c9]), partitions(p0) + +select timestampadd(second, c20, c9) from t1; ++-------------------------------+ +| timestampadd(second, c20, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c20, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c20], [t1.c9]), partitions(p0) + +select timestampadd(year, c20, c9) from t1; ++-----------------------------+ +| timestampadd(year, c20, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c20], [t1.c10]), partitions(p0) + +select timestampadd(second, c20, c10) from t1; ++--------------------------------+ +| timestampadd(second, c20, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c20], [t1.c10]), partitions(p0) + +select timestampadd(year, c20, c10) from t1; ++------------------------------+ +| timestampadd(year, c20, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c20], [t1.c11]), partitions(p0) + +select timestampadd(second, c20, c11) from t1; ++--------------------------------+ +| timestampadd(second, c20, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c20], [t1.c11]), partitions(p0) + +select timestampadd(year, c20, c11) from t1; ++------------------------------+ +| timestampadd(year, c20, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c20], [t1.c12]), partitions(p0) + +select timestampadd(second, c20, c12) from t1; ++--------------------------------+ +| timestampadd(second, c20, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c20], [t1.c12]), partitions(p0) + +select timestampadd(year, c20, c12) from t1; ++------------------------------+ +| timestampadd(year, c20, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c20], [t1.c13]), partitions(p0) + +select timestampadd(second, c20, c13) from t1; ++--------------------------------+ +| timestampadd(second, c20, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c20], [t1.c13]), partitions(p0) + +select timestampadd(year, c20, c13) from t1; ++------------------------------+ +| timestampadd(year, c20, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c20], [t1.c14]), partitions(p0) + +select timestampadd(second, c20, c14) from t1; ++--------------------------------+ +| timestampadd(second, c20, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c20], [t1.c14]), partitions(p0) + +select timestampadd(year, c20, c14) from t1; ++------------------------------+ +| timestampadd(year, c20, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c20], [t1.c15]), partitions(p0) + +select timestampadd(second, c20, c15) from t1; ++--------------------------------+ +| timestampadd(second, c20, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c20], [t1.c15]), partitions(p0) + +select timestampadd(year, c20, c15) from t1; ++------------------------------+ +| timestampadd(year, c20, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c20], [t1.c16]), partitions(p0) + +select timestampadd(second, c20, c16) from t1; ++--------------------------------+ +| timestampadd(second, c20, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c20], [t1.c16]), partitions(p0) + +select timestampadd(year, c20, c16) from t1; ++------------------------------+ +| timestampadd(year, c20, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c20], [t1.c17]), partitions(p0) + +select timestampadd(second, c20, c17) from t1; ++--------------------------------+ +| timestampadd(second, c20, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c20], [t1.c17]), partitions(p0) + +select timestampadd(year, c20, c17) from t1; ++------------------------------+ +| timestampadd(year, c20, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c20], [t1.c18]), partitions(p0) + +select timestampadd(second, c20, c18) from t1; ++--------------------------------+ +| timestampadd(second, c20, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c20], [t1.c18]), partitions(p0) + +select timestampadd(year, c20, c18) from t1; ++------------------------------+ +| timestampadd(year, c20, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c20], [t1.c19]), partitions(p0) + +select timestampadd(second, c20, c19) from t1; ++--------------------------------+ +| timestampadd(second, c20, c19) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c20], [t1.c19]), partitions(p0) + +select timestampadd(year, c20, c19) from t1; ++------------------------------+ +| timestampadd(year, c20, c19) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, c20, c20) from t1; ++--------------------------------+ +| timestampadd(second, c20, c20) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(year, c20, c20) from t1; ++------------------------------+ +| timestampadd(year, c20, c20) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c20], [t1.c21]), partitions(p0) + +select timestampadd(second, c20, c21) from t1; ++--------------------------------+ +| timestampadd(second, c20, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c20], [t1.c21]), partitions(p0) + +select timestampadd(year, c20, c21) from t1; ++------------------------------+ +| timestampadd(year, c20, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c20, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c20, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c20], [t1.c22]), partitions(p0) + +select timestampadd(second, c20, c22) from t1; ++--------------------------------+ +| timestampadd(second, c20, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c20, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c20, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c20], [t1.c22]), partitions(p0) + +select timestampadd(year, c20, c22) from t1; ++------------------------------+ +| timestampadd(year, c20, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c21], [t1.c1]), partitions(p0) + +select timestampadd(second, c21, c1) from t1; ++-------------------------------+ +| timestampadd(second, c21, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c21], [t1.c1]), partitions(p0) + +select timestampadd(year, c21, c1) from t1; ++-----------------------------+ +| timestampadd(year, c21, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c21], [t1.c2]), partitions(p0) + +select timestampadd(second, c21, c2) from t1; ++-------------------------------+ +| timestampadd(second, c21, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c21], [t1.c2]), partitions(p0) + +select timestampadd(year, c21, c2) from t1; ++-----------------------------+ +| timestampadd(year, c21, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c21], [t1.c3]), partitions(p0) + +select timestampadd(second, c21, c3) from t1; ++-------------------------------+ +| timestampadd(second, c21, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c21], [t1.c3]), partitions(p0) + +select timestampadd(year, c21, c3) from t1; ++-----------------------------+ +| timestampadd(year, c21, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c21], [t1.c4]), partitions(p0) + +select timestampadd(second, c21, c4) from t1; ++-------------------------------+ +| timestampadd(second, c21, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c21], [t1.c4]), partitions(p0) + +select timestampadd(year, c21, c4) from t1; ++-----------------------------+ +| timestampadd(year, c21, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c21], [t1.c5]), partitions(p0) + +select timestampadd(second, c21, c5) from t1; ++-------------------------------+ +| timestampadd(second, c21, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c21], [t1.c5]), partitions(p0) + +select timestampadd(year, c21, c5) from t1; ++-----------------------------+ +| timestampadd(year, c21, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c21], [t1.c6]), partitions(p0) + +select timestampadd(second, c21, c6) from t1; ++-------------------------------+ +| timestampadd(second, c21, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c21], [t1.c6]), partitions(p0) + +select timestampadd(year, c21, c6) from t1; ++-----------------------------+ +| timestampadd(year, c21, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c21], [t1.c7]), partitions(p0) + +select timestampadd(second, c21, c7) from t1; ++-------------------------------+ +| timestampadd(second, c21, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c21], [t1.c7]), partitions(p0) + +select timestampadd(year, c21, c7) from t1; ++-----------------------------+ +| timestampadd(year, c21, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c21], [t1.c8]), partitions(p0) + +select timestampadd(second, c21, c8) from t1; ++-------------------------------+ +| timestampadd(second, c21, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c21], [t1.c8]), partitions(p0) + +select timestampadd(year, c21, c8) from t1; ++-----------------------------+ +| timestampadd(year, c21, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c21, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c21], [t1.c9]), partitions(p0) + +select timestampadd(second, c21, c9) from t1; ++-------------------------------+ +| timestampadd(second, c21, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c21, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c21], [t1.c9]), partitions(p0) + +select timestampadd(year, c21, c9) from t1; ++-----------------------------+ +| timestampadd(year, c21, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c21], [t1.c10]), partitions(p0) + +select timestampadd(second, c21, c10) from t1; ++--------------------------------+ +| timestampadd(second, c21, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c21], [t1.c10]), partitions(p0) + +select timestampadd(year, c21, c10) from t1; ++------------------------------+ +| timestampadd(year, c21, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c21], [t1.c11]), partitions(p0) + +select timestampadd(second, c21, c11) from t1; ++--------------------------------+ +| timestampadd(second, c21, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c21], [t1.c11]), partitions(p0) + +select timestampadd(year, c21, c11) from t1; ++------------------------------+ +| timestampadd(year, c21, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c21], [t1.c12]), partitions(p0) + +select timestampadd(second, c21, c12) from t1; ++--------------------------------+ +| timestampadd(second, c21, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c21], [t1.c12]), partitions(p0) + +select timestampadd(year, c21, c12) from t1; ++------------------------------+ +| timestampadd(year, c21, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c21], [t1.c13]), partitions(p0) + +select timestampadd(second, c21, c13) from t1; ++--------------------------------+ +| timestampadd(second, c21, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c21], [t1.c13]), partitions(p0) + +select timestampadd(year, c21, c13) from t1; ++------------------------------+ +| timestampadd(year, c21, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c21], [t1.c14]), partitions(p0) + +select timestampadd(second, c21, c14) from t1; ++--------------------------------+ +| timestampadd(second, c21, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c21], [t1.c14]), partitions(p0) + +select timestampadd(year, c21, c14) from t1; ++------------------------------+ +| timestampadd(year, c21, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c21], [t1.c15]), partitions(p0) + +select timestampadd(second, c21, c15) from t1; ++--------------------------------+ +| timestampadd(second, c21, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c21], [t1.c15]), partitions(p0) + +select timestampadd(year, c21, c15) from t1; ++------------------------------+ +| timestampadd(year, c21, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c21], [t1.c16]), partitions(p0) + +select timestampadd(second, c21, c16) from t1; ++--------------------------------+ +| timestampadd(second, c21, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c21], [t1.c16]), partitions(p0) + +select timestampadd(year, c21, c16) from t1; ++------------------------------+ +| timestampadd(year, c21, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c21], [t1.c17]), partitions(p0) + +select timestampadd(second, c21, c17) from t1; ++--------------------------------+ +| timestampadd(second, c21, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c21], [t1.c17]), partitions(p0) + +select timestampadd(year, c21, c17) from t1; ++------------------------------+ +| timestampadd(year, c21, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c21], [t1.c18]), partitions(p0) + +select timestampadd(second, c21, c18) from t1; ++--------------------------------+ +| timestampadd(second, c21, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c21], [t1.c18]), partitions(p0) + +select timestampadd(year, c21, c18) from t1; ++------------------------------+ +| timestampadd(year, c21, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c21], [t1.c19]), partitions(p0) + +select timestampadd(second, c21, c19) from t1; ++--------------------------------+ +| timestampadd(second, c21, c19) | ++--------------------------------+ +| 2019-12-01 12:00:10 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c21], [t1.c19]), partitions(p0) + +select timestampadd(year, c21, c19) from t1; ++------------------------------+ +| timestampadd(year, c21, c19) | ++------------------------------+ +| 2029-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c21], [t1.c20]), partitions(p0) + +select timestampadd(second, c21, c20) from t1; ++--------------------------------+ +| timestampadd(second, c21, c20) | ++--------------------------------+ +| 2019-12-03 06:00:10 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c21], [t1.c20]), partitions(p0) + +select timestampadd(year, c21, c20) from t1; ++------------------------------+ +| timestampadd(year, c21, c20) | ++------------------------------+ +| 2029-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, c21, c21) from t1; ++--------------------------------+ +| timestampadd(second, c21, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(year, c21, c21) from t1; ++------------------------------+ +| timestampadd(year, c21, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c21, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c21, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c21], [t1.c22]), partitions(p0) + +select timestampadd(second, c21, c22) from t1; ++--------------------------------+ +| timestampadd(second, c21, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c21, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c21, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c21], [t1.c22]), partitions(p0) + +select timestampadd(year, c21, c22) from t1; ++------------------------------+ +| timestampadd(year, c21, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c1)]), filter(nil), + access([t1.c1]), partitions(p0) + +select timestampadd(second, null, c1) from t1; ++--------------------------------+ +| timestampadd(second, null, c1) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c22], [t1.c1]), partitions(p0) + +select timestampadd(second, c22, c1) from t1; ++-------------------------------+ +| timestampadd(second, c22, c1) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c1)]), filter(nil), + access([t1.c22], [t1.c1]), partitions(p0) + +select timestampadd(year, c22, c1) from t1; ++-----------------------------+ +| timestampadd(year, c22, c1) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c2)]), filter(nil), + access([t1.c2]), partitions(p0) + +select timestampadd(second, null, c2) from t1; ++--------------------------------+ +| timestampadd(second, null, c2) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c22], [t1.c2]), partitions(p0) + +select timestampadd(second, c22, c2) from t1; ++-------------------------------+ +| timestampadd(second, c22, c2) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c2)]), filter(nil), + access([t1.c22], [t1.c2]), partitions(p0) + +select timestampadd(year, c22, c2) from t1; ++-----------------------------+ +| timestampadd(year, c22, c2) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c3)]), filter(nil), + access([t1.c3]), partitions(p0) + +select timestampadd(second, null, c3) from t1; ++--------------------------------+ +| timestampadd(second, null, c3) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c22], [t1.c3]), partitions(p0) + +select timestampadd(second, c22, c3) from t1; ++-------------------------------+ +| timestampadd(second, c22, c3) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c3)]), filter(nil), + access([t1.c22], [t1.c3]), partitions(p0) + +select timestampadd(year, c22, c3) from t1; ++-----------------------------+ +| timestampadd(year, c22, c3) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select timestampadd(second, null, c4) from t1; ++--------------------------------+ +| timestampadd(second, null, c4) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c22], [t1.c4]), partitions(p0) + +select timestampadd(second, c22, c4) from t1; ++-------------------------------+ +| timestampadd(second, c22, c4) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c4)]), filter(nil), + access([t1.c22], [t1.c4]), partitions(p0) + +select timestampadd(year, c22, c4) from t1; ++-----------------------------+ +| timestampadd(year, c22, c4) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c5)]), filter(nil), + access([t1.c5]), partitions(p0) + +select timestampadd(second, null, c5) from t1; ++--------------------------------+ +| timestampadd(second, null, c5) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c22], [t1.c5]), partitions(p0) + +select timestampadd(second, c22, c5) from t1; ++-------------------------------+ +| timestampadd(second, c22, c5) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c5)]), filter(nil), + access([t1.c22], [t1.c5]), partitions(p0) + +select timestampadd(year, c22, c5) from t1; ++-----------------------------+ +| timestampadd(year, c22, c5) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c6)]), filter(nil), + access([t1.c6]), partitions(p0) + +select timestampadd(second, null, c6) from t1; ++--------------------------------+ +| timestampadd(second, null, c6) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c22], [t1.c6]), partitions(p0) + +select timestampadd(second, c22, c6) from t1; ++-------------------------------+ +| timestampadd(second, c22, c6) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c6)]), filter(nil), + access([t1.c22], [t1.c6]), partitions(p0) + +select timestampadd(year, c22, c6) from t1; ++-----------------------------+ +| timestampadd(year, c22, c6) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c7)]), filter(nil), + access([t1.c7]), partitions(p0) + +select timestampadd(second, null, c7) from t1; ++--------------------------------+ +| timestampadd(second, null, c7) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c22], [t1.c7]), partitions(p0) + +select timestampadd(second, c22, c7) from t1; ++-------------------------------+ +| timestampadd(second, c22, c7) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c7)]), filter(nil), + access([t1.c22], [t1.c7]), partitions(p0) + +select timestampadd(year, c22, c7) from t1; ++-----------------------------+ +| timestampadd(year, c22, c7) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c8)]), filter(nil), + access([t1.c8]), partitions(p0) + +select timestampadd(second, null, c8) from t1; ++--------------------------------+ +| timestampadd(second, null, c8) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c22], [t1.c8]), partitions(p0) + +select timestampadd(second, c22, c8) from t1; ++-------------------------------+ +| timestampadd(second, c22, c8) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c8)]), filter(nil), + access([t1.c22], [t1.c8]), partitions(p0) + +select timestampadd(year, c22, c8) from t1; ++-----------------------------+ +| timestampadd(year, c22, c8) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c9)]), filter(nil), + access([t1.c9]), partitions(p0) + +select timestampadd(second, null, c9) from t1; ++--------------------------------+ +| timestampadd(second, null, c9) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, c22, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c22], [t1.c9]), partitions(p0) + +select timestampadd(second, c22, c9) from t1; ++-------------------------------+ +| timestampadd(second, c22, c9) | ++-------------------------------+ +| NULL | ++-------------------------------+ +EXPLAIN select timestampadd(year, c22, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c9)]), filter(nil), + access([t1.c22], [t1.c9]), partitions(p0) + +select timestampadd(year, c22, c9) from t1; ++-----------------------------+ +| timestampadd(year, c22, c9) | ++-----------------------------+ +| NULL | ++-----------------------------+ + +EXPLAIN select timestampadd(second, null, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c10)]), filter(nil), + access([t1.c10]), partitions(p0) + +select timestampadd(second, null, c10) from t1; ++---------------------------------+ +| timestampadd(second, null, c10) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c22], [t1.c10]), partitions(p0) + +select timestampadd(second, c22, c10) from t1; ++--------------------------------+ +| timestampadd(second, c22, c10) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c10)]), filter(nil), + access([t1.c22], [t1.c10]), partitions(p0) + +select timestampadd(year, c22, c10) from t1; ++------------------------------+ +| timestampadd(year, c22, c10) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select timestampadd(second, null, c11) from t1; ++---------------------------------+ +| timestampadd(second, null, c11) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c22], [t1.c11]), partitions(p0) + +select timestampadd(second, c22, c11) from t1; ++--------------------------------+ +| timestampadd(second, c22, c11) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c11)]), filter(nil), + access([t1.c22], [t1.c11]), partitions(p0) + +select timestampadd(year, c22, c11) from t1; ++------------------------------+ +| timestampadd(year, c22, c11) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c12)]), filter(nil), + access([t1.c12]), partitions(p0) + +select timestampadd(second, null, c12) from t1; ++---------------------------------+ +| timestampadd(second, null, c12) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c22], [t1.c12]), partitions(p0) + +select timestampadd(second, c22, c12) from t1; ++--------------------------------+ +| timestampadd(second, c22, c12) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c12)]), filter(nil), + access([t1.c22], [t1.c12]), partitions(p0) + +select timestampadd(year, c22, c12) from t1; ++------------------------------+ +| timestampadd(year, c22, c12) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c13)]), filter(nil), + access([t1.c13]), partitions(p0) + +select timestampadd(second, null, c13) from t1; ++---------------------------------+ +| timestampadd(second, null, c13) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c22], [t1.c13]), partitions(p0) + +select timestampadd(second, c22, c13) from t1; ++--------------------------------+ +| timestampadd(second, c22, c13) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c13)]), filter(nil), + access([t1.c22], [t1.c13]), partitions(p0) + +select timestampadd(year, c22, c13) from t1; ++------------------------------+ +| timestampadd(year, c22, c13) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c14)]), filter(nil), + access([t1.c14]), partitions(p0) + +select timestampadd(second, null, c14) from t1; ++---------------------------------+ +| timestampadd(second, null, c14) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c22], [t1.c14]), partitions(p0) + +select timestampadd(second, c22, c14) from t1; ++--------------------------------+ +| timestampadd(second, c22, c14) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c14)]), filter(nil), + access([t1.c22], [t1.c14]), partitions(p0) + +select timestampadd(year, c22, c14) from t1; ++------------------------------+ +| timestampadd(year, c22, c14) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c15)]), filter(nil), + access([t1.c15]), partitions(p0) + +select timestampadd(second, null, c15) from t1; ++---------------------------------+ +| timestampadd(second, null, c15) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c22], [t1.c15]), partitions(p0) + +select timestampadd(second, c22, c15) from t1; ++--------------------------------+ +| timestampadd(second, c22, c15) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c15)]), filter(nil), + access([t1.c22], [t1.c15]), partitions(p0) + +select timestampadd(year, c22, c15) from t1; ++------------------------------+ +| timestampadd(year, c22, c15) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c16)]), filter(nil), + access([t1.c16]), partitions(p0) + +select timestampadd(second, null, c16) from t1; ++---------------------------------+ +| timestampadd(second, null, c16) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c22], [t1.c16]), partitions(p0) + +select timestampadd(second, c22, c16) from t1; ++--------------------------------+ +| timestampadd(second, c22, c16) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c16)]), filter(nil), + access([t1.c22], [t1.c16]), partitions(p0) + +select timestampadd(year, c22, c16) from t1; ++------------------------------+ +| timestampadd(year, c22, c16) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c17)]), filter(nil), + access([t1.c17]), partitions(p0) + +select timestampadd(second, null, c17) from t1; ++---------------------------------+ +| timestampadd(second, null, c17) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c22], [t1.c17]), partitions(p0) + +select timestampadd(second, c22, c17) from t1; ++--------------------------------+ +| timestampadd(second, c22, c17) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c17)]), filter(nil), + access([t1.c22], [t1.c17]), partitions(p0) + +select timestampadd(year, c22, c17) from t1; ++------------------------------+ +| timestampadd(year, c22, c17) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c18)]), filter(nil), + access([t1.c18]), partitions(p0) + +select timestampadd(second, null, c18) from t1; ++---------------------------------+ +| timestampadd(second, null, c18) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c22], [t1.c18]), partitions(p0) + +select timestampadd(second, c22, c18) from t1; ++--------------------------------+ +| timestampadd(second, c22, c18) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c18)]), filter(nil), + access([t1.c22], [t1.c18]), partitions(p0) + +select timestampadd(year, c22, c18) from t1; ++------------------------------+ +| timestampadd(year, c22, c18) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c19)]), filter(nil), + access([t1.c19]), partitions(p0) + +select timestampadd(second, null, c19) from t1; ++---------------------------------+ +| timestampadd(second, null, c19) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c22], [t1.c19]), partitions(p0) + +select timestampadd(second, c22, c19) from t1; ++--------------------------------+ +| timestampadd(second, c22, c19) | ++--------------------------------+ +| 2019-12-01 12:00:11 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c19)]), filter(nil), + access([t1.c22], [t1.c19]), partitions(p0) + +select timestampadd(year, c22, c19) from t1; ++------------------------------+ +| timestampadd(year, c22, c19) | ++------------------------------+ +| 2030-12-01 12:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c20)]), filter(nil), + access([t1.c20]), partitions(p0) + +select timestampadd(second, null, c20) from t1; ++---------------------------------+ +| timestampadd(second, null, c20) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c22], [t1.c20]), partitions(p0) + +select timestampadd(second, c22, c20) from t1; ++--------------------------------+ +| timestampadd(second, c22, c20) | ++--------------------------------+ +| 2019-12-03 06:00:11 | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c20)]), filter(nil), + access([t1.c22], [t1.c20]), partitions(p0) + +select timestampadd(year, c22, c20) from t1; ++------------------------------+ +| timestampadd(year, c22, c20) | ++------------------------------+ +| 2030-12-03 06:00:00 | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c21)]), filter(nil), + access([t1.c21]), partitions(p0) + +select timestampadd(second, null, c21) from t1; ++---------------------------------+ +| timestampadd(second, null, c21) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c22], [t1.c21]), partitions(p0) + +select timestampadd(second, c22, c21) from t1; ++--------------------------------+ +| timestampadd(second, c22, c21) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c21)]), filter(nil), + access([t1.c22], [t1.c21]), partitions(p0) + +select timestampadd(year, c22, c21) from t1; ++------------------------------+ +| timestampadd(year, c22, c21) | ++------------------------------+ +| NULL | ++------------------------------+ + +EXPLAIN select timestampadd(second, null, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, ?, t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, null, c22) from t1; ++---------------------------------+ +| timestampadd(second, null, c22) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, c22, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(1, cast(t1.c22, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(second, c22, c22) from t1; ++--------------------------------+ +| timestampadd(second, c22, c22) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(year, c22, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(8, cast(t1.c22, BIGINT(-1, 0)), t1.c22)]), filter(nil), + access([t1.c22]), partitions(p0) + +select timestampadd(year, c22, c22) from t1; ++------------------------------+ +| timestampadd(year, c22, c22) | ++------------------------------+ +| NULL | ++------------------------------+ + + +Case2: copied from timestampadd.test +EXPLAIN select timestampadd(second,NULL,NULL); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(second,NULL,NULL); ++--------------------------------+ +| timestampadd(second,NULL,NULL) | ++--------------------------------+ +| NULL | ++--------------------------------+ +EXPLAIN select timestampadd(second, 123,"2011-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(second, 123,"2011-05-09 13:45:55"); ++-------------------------------------------------+ +| timestampadd(second, 123,"2011-05-09 13:45:55") | ++-------------------------------------------------+ +| 2011-05-09 13:47:58 | ++-------------------------------------------------+ +EXPLAIN select timestampadd(second, -123,"2011-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(second, -123,"2011-05-09 13:45:55"); ++--------------------------------------------------+ +| timestampadd(second, -123,"2011-05-09 13:45:55") | ++--------------------------------------------------+ +| 2011-05-09 13:43:52 | ++--------------------------------------------------+ +EXPLAIN select timestampadd(second, 123, NULL); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(second, 123, NULL); ++---------------------------------+ +| timestampadd(second, 123, NULL) | ++---------------------------------+ +| NULL | ++---------------------------------+ +EXPLAIN select timestampadd(second, 1,"2011-12-31 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(second, 1,"2011-12-31 23:59:59"); ++-----------------------------------------------+ +| timestampadd(second, 1,"2011-12-31 23:59:59") | ++-----------------------------------------------+ +| 2012-01-01 00:00:00 | ++-----------------------------------------------+ +EXPLAIN select timestampadd(minute,46,"2011-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute,46,"2011-05-09 13:45:55"); ++-----------------------------------------------+ +| timestampadd(minute,46,"2011-05-09 13:45:55") | ++-----------------------------------------------+ +| 2011-05-09 14:31:55 | ++-----------------------------------------------+ +EXPLAIN select timestampadd(minute,-46,"2010-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute,-46,"2010-05-09 13:45:55"); ++------------------------------------------------+ +| timestampadd(minute,-46,"2010-05-09 13:45:55") | ++------------------------------------------------+ +| 2010-05-09 12:59:55 | ++------------------------------------------------+ +EXPLAIN select timestampadd(minute,45,"2011-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute,45,"2011-05-09 13:45:55"); ++-----------------------------------------------+ +| timestampadd(minute,45,"2011-05-09 13:45:55") | ++-----------------------------------------------+ +| 2011-05-09 14:30:55 | ++-----------------------------------------------+ +EXPLAIN select timestampadd(minute,-45,"2010-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute,-45,"2010-05-09 13:45:55"); ++------------------------------------------------+ +| timestampadd(minute,-45,"2010-05-09 13:45:55") | ++------------------------------------------------+ +| 2010-05-09 13:00:55 | ++------------------------------------------------+ +EXPLAIN select timestampadd(minute, 1,"2011-12-31 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute, 1,"2011-12-31 23:59:59"); ++-----------------------------------------------+ +| timestampadd(minute, 1,"2011-12-31 23:59:59") | ++-----------------------------------------------+ +| 2012-01-01 00:00:59 | ++-----------------------------------------------+ +EXPLAIN select timestampadd(hour,5,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(hour,5,"2011-05-09 00:00:00"); ++--------------------------------------------+ +| timestampadd(hour,5,"2011-05-09 00:00:00") | ++--------------------------------------------+ +| 2011-05-09 05:00:00 | ++--------------------------------------------+ +EXPLAIN select timestampadd(hour,-5,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(hour,-5,"2012-04-08 23:59:59"); ++---------------------------------------------+ +| timestampadd(hour,-5,"2012-04-08 23:59:59") | ++---------------------------------------------+ +| 2012-04-08 18:59:59 | ++---------------------------------------------+ +EXPLAIN select timestampadd(hour, 1,"2011-12-31 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(hour, 1,"2011-12-31 23:59:59"); ++---------------------------------------------+ +| timestampadd(hour, 1,"2011-12-31 23:59:59") | ++---------------------------------------------+ +| 2012-01-01 00:59:59 | ++---------------------------------------------+ +EXPLAIN select timestampadd(day,1,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(day,1,"2011-05-09 00:00:00"); ++-------------------------------------------+ +| timestampadd(day,1,"2011-05-09 00:00:00") | ++-------------------------------------------+ +| 2011-05-10 00:00:00 | ++-------------------------------------------+ +EXPLAIN select timestampadd(day,-10,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(day,-10,"2012-04-08 23:59:59"); ++---------------------------------------------+ +| timestampadd(day,-10,"2012-04-08 23:59:59") | ++---------------------------------------------+ +| 2012-03-29 23:59:59 | ++---------------------------------------------+ +EXPLAIN select timestampadd(day, 1,"2011-12-31 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(day, 1,"2011-12-31 23:59:59"); ++--------------------------------------------+ +| timestampadd(day, 1,"2011-12-31 23:59:59") | ++--------------------------------------------+ +| 2012-01-01 23:59:59 | ++--------------------------------------------+ +EXPLAIN select timestampadd(week,1,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,1,"2011-05-09 00:00:00"); ++--------------------------------------------+ +| timestampadd(week,1,"2011-05-09 00:00:00") | ++--------------------------------------------+ +| 2011-05-16 00:00:00 | ++--------------------------------------------+ +EXPLAIN select timestampadd(week,2,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,2,"2012-04-08 23:59:59"); ++--------------------------------------------+ +| timestampadd(week,2,"2012-04-08 23:59:59") | ++--------------------------------------------+ +| 2012-04-22 23:59:59 | ++--------------------------------------------+ +EXPLAIN select timestampadd(week,3,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,3,"2011-05-09 00:00:00"); ++--------------------------------------------+ +| timestampadd(week,3,"2011-05-09 00:00:00") | ++--------------------------------------------+ +| 2011-05-30 00:00:00 | ++--------------------------------------------+ +EXPLAIN select timestampadd(week,4,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,4,"2012-04-08 23:59:59"); ++--------------------------------------------+ +| timestampadd(week,4,"2012-04-08 23:59:59") | ++--------------------------------------------+ +| 2012-05-06 23:59:59 | ++--------------------------------------------+ +EXPLAIN select timestampadd(week,-1,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,-1,"2011-05-09 00:00:00"); ++---------------------------------------------+ +| timestampadd(week,-1,"2011-05-09 00:00:00") | ++---------------------------------------------+ +| 2011-05-02 00:00:00 | ++---------------------------------------------+ +EXPLAIN select timestampadd(week,-2,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,-2,"2012-04-08 23:59:59"); ++---------------------------------------------+ +| timestampadd(week,-2,"2012-04-08 23:59:59") | ++---------------------------------------------+ +| 2012-03-25 23:59:59 | ++---------------------------------------------+ +EXPLAIN select timestampadd(week,-3,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,-3,"2011-05-09 00:00:00"); ++---------------------------------------------+ +| timestampadd(week,-3,"2011-05-09 00:00:00") | ++---------------------------------------------+ +| 2011-04-18 00:00:00 | ++---------------------------------------------+ +EXPLAIN select timestampadd(week,-4,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,-4,"2012-04-08 23:59:59"); ++---------------------------------------------+ +| timestampadd(week,-4,"2012-04-08 23:59:59") | ++---------------------------------------------+ +| 2012-03-11 23:59:59 | ++---------------------------------------------+ +EXPLAIN select timestampadd(week,1,"2011-12-25 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,1,"2011-12-25 00:00:00"); ++--------------------------------------------+ +| timestampadd(week,1,"2011-12-25 00:00:00") | ++--------------------------------------------+ +| 2012-01-01 00:00:00 | ++--------------------------------------------+ +EXPLAIN select timestampadd(month,1,"2011-05-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,1,"2011-05-07 02:00:00"); ++---------------------------------------------+ +| timestampadd(month,1,"2011-05-07 02:00:00") | ++---------------------------------------------+ +| 2011-06-07 02:00:00 | ++---------------------------------------------+ +EXPLAIN select timestampadd(month,3,"2011-10-07 01:11:11"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,3,"2011-10-07 01:11:11"); ++---------------------------------------------+ +| timestampadd(month,3,"2011-10-07 01:11:11") | ++---------------------------------------------+ +| 2012-01-07 01:11:11 | ++---------------------------------------------+ +EXPLAIN select timestampadd(month,5,"2015-09-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,5,"2015-09-07 02:00:00"); ++---------------------------------------------+ +| timestampadd(month,5,"2015-09-07 02:00:00") | ++---------------------------------------------+ +| 2016-02-07 02:00:00 | ++---------------------------------------------+ +EXPLAIN select timestampadd(month,-6,"2011-05-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,-6,"2011-05-07 02:00:00"); ++----------------------------------------------+ +| timestampadd(month,-6,"2011-05-07 02:00:00") | ++----------------------------------------------+ +| 2010-11-07 02:00:00 | ++----------------------------------------------+ +EXPLAIN select timestampadd(month,-12,"2011-10-07 01:11:11"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,-12,"2011-10-07 01:11:11"); ++-----------------------------------------------+ +| timestampadd(month,-12,"2011-10-07 01:11:11") | ++-----------------------------------------------+ +| 2010-10-07 01:11:11 | ++-----------------------------------------------+ +EXPLAIN select timestampadd(month,-54,"2015-09-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,-54,"2015-09-07 02:00:00"); ++-----------------------------------------------+ +| timestampadd(month,-54,"2015-09-07 02:00:00") | ++-----------------------------------------------+ +| 2011-03-07 02:00:00 | ++-----------------------------------------------+ +EXPLAIN select timestampadd(month,1,"2015-12-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,1,"2015-12-07 02:00:00"); ++---------------------------------------------+ +| timestampadd(month,1,"2015-12-07 02:00:00") | ++---------------------------------------------+ +| 2016-01-07 02:00:00 | ++---------------------------------------------+ +EXPLAIN select timestampadd(quarter,1,"2015-05-09"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,1,"2015-05-09"); ++--------------------------------------+ +| timestampadd(quarter,1,"2015-05-09") | ++--------------------------------------+ +| 2015-08-09 00:00:00 | ++--------------------------------------+ +EXPLAIN select timestampadd(quarter,2,"2015-04-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,2,"2015-04-07"); ++--------------------------------------+ +| timestampadd(quarter,2,"2015-04-07") | ++--------------------------------------+ +| 2015-10-07 00:00:00 | ++--------------------------------------+ +EXPLAIN select timestampadd(quarter,3,"2015-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,3,"2015-05-07"); ++--------------------------------------+ +| timestampadd(quarter,3,"2015-05-07") | ++--------------------------------------+ +| 2016-02-07 00:00:00 | ++--------------------------------------+ +EXPLAIN select timestampadd(quarter,-1,"2015-05-09"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,-1,"2015-05-09"); ++---------------------------------------+ +| timestampadd(quarter,-1,"2015-05-09") | ++---------------------------------------+ +| 2015-02-09 00:00:00 | ++---------------------------------------+ +EXPLAIN select timestampadd(quarter,-2,"2015-04-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,-2,"2015-04-07"); ++---------------------------------------+ +| timestampadd(quarter,-2,"2015-04-07") | ++---------------------------------------+ +| 2014-10-07 00:00:00 | ++---------------------------------------+ +EXPLAIN select timestampadd(quarter,-3,"2015-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,-3,"2015-05-07"); ++---------------------------------------+ +| timestampadd(quarter,-3,"2015-05-07") | ++---------------------------------------+ +| 2014-08-07 00:00:00 | ++---------------------------------------+ +EXPLAIN select timestampadd(quarter,1,"2015-11-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,1,"2015-11-07"); ++--------------------------------------+ +| timestampadd(quarter,1,"2015-11-07") | ++--------------------------------------+ +| 2016-02-07 00:00:00 | ++--------------------------------------+ +EXPLAIN select timestampadd(year,1,"2015-05-09"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,1,"2015-05-09"); ++-----------------------------------+ +| timestampadd(year,1,"2015-05-09") | ++-----------------------------------+ +| 2016-05-09 00:00:00 | ++-----------------------------------+ +EXPLAIN select timestampadd(year,2,"2015-04-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,2,"2015-04-07"); ++-----------------------------------+ +| timestampadd(year,2,"2015-04-07") | ++-----------------------------------+ +| 2017-04-07 00:00:00 | ++-----------------------------------+ +EXPLAIN select timestampadd(year,3,"2015-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,3,"2015-05-07"); ++-----------------------------------+ +| timestampadd(year,3,"2015-05-07") | ++-----------------------------------+ +| 2018-05-07 00:00:00 | ++-----------------------------------+ +EXPLAIN select timestampadd(year,-1,"2015-05-09"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,-1,"2015-05-09"); ++------------------------------------+ +| timestampadd(year,-1,"2015-05-09") | ++------------------------------------+ +| 2014-05-09 00:00:00 | ++------------------------------------+ +EXPLAIN select timestampadd(year,-2,"2015-04-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,-2,"2015-04-07"); ++------------------------------------+ +| timestampadd(year,-2,"2015-04-07") | ++------------------------------------+ +| 2013-04-07 00:00:00 | ++------------------------------------+ +EXPLAIN select timestampadd(year,-3,"2015-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,-3,"2015-05-07"); ++------------------------------------+ +| timestampadd(year,-3,"2015-05-07") | ++------------------------------------+ +| 2012-05-07 00:00:00 | ++------------------------------------+ +EXPLAIN select timestampadd(year,1,"2036-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,1,"2036-05-07"); ++-----------------------------------+ +| timestampadd(year,1,"2036-05-07") | ++-----------------------------------+ +| 2037-05-07 00:00:00 | ++-----------------------------------+ +EXPLAIN select timestampadd(second, 123456789,"2011-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(second, 123456789,"2011-05-09 13:45:55"); ++-------------------------------------------------------+ +| timestampadd(second, 123456789,"2011-05-09 13:45:55") | ++-------------------------------------------------------+ +| 2015-04-07 11:19:04 | ++-------------------------------------------------------+ +EXPLAIN select timestampadd(second, -123456789,"2011-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(second, -123456789,"2011-05-09 13:45:55"); ++--------------------------------------------------------+ +| timestampadd(second, -123456789,"2011-05-09 13:45:55") | ++--------------------------------------------------------+ +| 2007-06-10 16:12:46 | ++--------------------------------------------------------+ +EXPLAIN select timestampadd(second, 123456789, NULL); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(second, 123456789, NULL); ++---------------------------------------+ +| timestampadd(second, 123456789, NULL) | ++---------------------------------------+ +| NULL | ++---------------------------------------+ +EXPLAIN select timestampadd(minute,123456789,"2011-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute,123456789,"2011-05-09 13:45:55"); ++------------------------------------------------------+ +| timestampadd(minute,123456789,"2011-05-09 13:45:55") | ++------------------------------------------------------+ +| 2246-01-31 10:54:55 | ++------------------------------------------------------+ +EXPLAIN select timestampadd(minute,-123456789,"2010-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute,-123456789,"2010-05-09 13:45:55"); ++-------------------------------------------------------+ +| timestampadd(minute,-123456789,"2010-05-09 13:45:55") | ++-------------------------------------------------------+ +| 1775-08-15 16:36:55 | ++-------------------------------------------------------+ +EXPLAIN select timestampadd(minute,123456789,"2011-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute,123456789,"2011-05-09 13:45:55"); ++------------------------------------------------------+ +| timestampadd(minute,123456789,"2011-05-09 13:45:55") | ++------------------------------------------------------+ +| 2246-01-31 10:54:55 | ++------------------------------------------------------+ +EXPLAIN select timestampadd(minute,-123456789,"2010-05-09 13:45:55"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(minute,-123456789,"2010-05-09 13:45:55"); ++-------------------------------------------------------+ +| timestampadd(minute,-123456789,"2010-05-09 13:45:55") | ++-------------------------------------------------------+ +| 1775-08-15 16:36:55 | ++-------------------------------------------------------+ +EXPLAIN select timestampadd(hour,123456789,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(hour,123456789,"2011-05-09 00:00:00"); ++----------------------------------------------------+ +| timestampadd(hour,123456789,"2011-05-09 00:00:00") | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ +EXPLAIN select timestampadd(hour,-123456789,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(hour,-123456789,"2012-04-08 23:59:59"); ++-----------------------------------------------------+ +| timestampadd(hour,-123456789,"2012-04-08 23:59:59") | ++-----------------------------------------------------+ +| NULL | ++-----------------------------------------------------+ +EXPLAIN select timestampadd(day,123456789,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(day,123456789,"2011-05-09 00:00:00"); ++---------------------------------------------------+ +| timestampadd(day,123456789,"2011-05-09 00:00:00") | ++---------------------------------------------------+ +| NULL | ++---------------------------------------------------+ +EXPLAIN select timestampadd(day,-123456789,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(day,-123456789,"2012-04-08 23:59:59"); ++----------------------------------------------------+ +| timestampadd(day,-123456789,"2012-04-08 23:59:59") | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ +EXPLAIN select timestampadd(week,123456789,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,123456789,"2011-05-09 00:00:00"); ++----------------------------------------------------+ +| timestampadd(week,123456789,"2011-05-09 00:00:00") | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ +EXPLAIN select timestampadd(week,123456789,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,123456789,"2012-04-08 23:59:59"); ++----------------------------------------------------+ +| timestampadd(week,123456789,"2012-04-08 23:59:59") | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ +EXPLAIN select timestampadd(week,123456789,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,123456789,"2011-05-09 00:00:00"); ++----------------------------------------------------+ +| timestampadd(week,123456789,"2011-05-09 00:00:00") | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ +EXPLAIN select timestampadd(week,123456789,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,123456789,"2012-04-08 23:59:59"); ++----------------------------------------------------+ +| timestampadd(week,123456789,"2012-04-08 23:59:59") | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ +EXPLAIN select timestampadd(week,-123456789,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,-123456789,"2011-05-09 00:00:00"); ++-----------------------------------------------------+ +| timestampadd(week,-123456789,"2011-05-09 00:00:00") | ++-----------------------------------------------------+ +| NULL | ++-----------------------------------------------------+ +EXPLAIN select timestampadd(week,-123456789,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,-123456789,"2012-04-08 23:59:59"); ++-----------------------------------------------------+ +| timestampadd(week,-123456789,"2012-04-08 23:59:59") | ++-----------------------------------------------------+ +| NULL | ++-----------------------------------------------------+ +EXPLAIN select timestampadd(week,-123456789,"2011-05-09 00:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,-123456789,"2011-05-09 00:00:00"); ++-----------------------------------------------------+ +| timestampadd(week,-123456789,"2011-05-09 00:00:00") | ++-----------------------------------------------------+ +| NULL | ++-----------------------------------------------------+ +EXPLAIN select timestampadd(week,-123456789,"2012-04-08 23:59:59"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(week,-123456789,"2012-04-08 23:59:59"); ++-----------------------------------------------------+ +| timestampadd(week,-123456789,"2012-04-08 23:59:59") | ++-----------------------------------------------------+ +| NULL | ++-----------------------------------------------------+ +EXPLAIN select timestampadd(month,123456789,"2011-05-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,123456789,"2011-05-07 02:00:00"); ++-----------------------------------------------------+ +| timestampadd(month,123456789,"2011-05-07 02:00:00") | ++-----------------------------------------------------+ +| NULL | ++-----------------------------------------------------+ +EXPLAIN select timestampadd(month,123456789,"2011-10-07 01:11:11"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,123456789,"2011-10-07 01:11:11"); ++-----------------------------------------------------+ +| timestampadd(month,123456789,"2011-10-07 01:11:11") | ++-----------------------------------------------------+ +| NULL | ++-----------------------------------------------------+ +EXPLAIN select timestampadd(month,123456789,"2015-09-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,123456789,"2015-09-07 02:00:00"); ++-----------------------------------------------------+ +| timestampadd(month,123456789,"2015-09-07 02:00:00") | ++-----------------------------------------------------+ +| NULL | ++-----------------------------------------------------+ +EXPLAIN select timestampadd(month,-123456789,"2011-05-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,-123456789,"2011-05-07 02:00:00"); ++------------------------------------------------------+ +| timestampadd(month,-123456789,"2011-05-07 02:00:00") | ++------------------------------------------------------+ +| NULL | ++------------------------------------------------------+ +EXPLAIN select timestampadd(month,-123456789,"2011-10-07 01:11:11"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,-123456789,"2011-10-07 01:11:11"); ++------------------------------------------------------+ +| timestampadd(month,-123456789,"2011-10-07 01:11:11") | ++------------------------------------------------------+ +| NULL | ++------------------------------------------------------+ +EXPLAIN select timestampadd(month,-123456789,"2015-09-07 02:00:00"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(month,-123456789,"2015-09-07 02:00:00"); ++------------------------------------------------------+ +| timestampadd(month,-123456789,"2015-09-07 02:00:00") | ++------------------------------------------------------+ +| NULL | ++------------------------------------------------------+ +EXPLAIN select timestampadd(quarter,123456789,"2015-05-09"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,123456789,"2015-05-09"); ++----------------------------------------------+ +| timestampadd(quarter,123456789,"2015-05-09") | ++----------------------------------------------+ +| NULL | ++----------------------------------------------+ +EXPLAIN select timestampadd(quarter,123456789,"2015-04-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,123456789,"2015-04-07"); ++----------------------------------------------+ +| timestampadd(quarter,123456789,"2015-04-07") | ++----------------------------------------------+ +| NULL | ++----------------------------------------------+ +EXPLAIN select timestampadd(quarter,123456789,"2015-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,123456789,"2015-05-07"); ++----------------------------------------------+ +| timestampadd(quarter,123456789,"2015-05-07") | ++----------------------------------------------+ +| NULL | ++----------------------------------------------+ +EXPLAIN select timestampadd(quarter,-123456789,"2015-05-09"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,-123456789,"2015-05-09"); ++-----------------------------------------------+ +| timestampadd(quarter,-123456789,"2015-05-09") | ++-----------------------------------------------+ +| NULL | ++-----------------------------------------------+ +EXPLAIN select timestampadd(quarter,-123456789,"2015-04-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,-123456789,"2015-04-07"); ++-----------------------------------------------+ +| timestampadd(quarter,-123456789,"2015-04-07") | ++-----------------------------------------------+ +| NULL | ++-----------------------------------------------+ +EXPLAIN select timestampadd(quarter,-123456789,"2015-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(quarter,-123456789,"2015-05-07"); ++-----------------------------------------------+ +| timestampadd(quarter,-123456789,"2015-05-07") | ++-----------------------------------------------+ +| NULL | ++-----------------------------------------------+ +EXPLAIN select timestampadd(year,123456789,"2015-05-09"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,123456789,"2015-05-09"); ++-------------------------------------------+ +| timestampadd(year,123456789,"2015-05-09") | ++-------------------------------------------+ +| NULL | ++-------------------------------------------+ +EXPLAIN select timestampadd(year,123456789,"2015-04-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,123456789,"2015-04-07"); ++-------------------------------------------+ +| timestampadd(year,123456789,"2015-04-07") | ++-------------------------------------------+ +| NULL | ++-------------------------------------------+ +EXPLAIN select timestampadd(year,123456789,"2015-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,123456789,"2015-05-07"); ++-------------------------------------------+ +| timestampadd(year,123456789,"2015-05-07") | ++-------------------------------------------+ +| NULL | ++-------------------------------------------+ +EXPLAIN select timestampadd(year,-123456789,"2015-05-09"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,-123456789,"2015-05-09"); ++--------------------------------------------+ +| timestampadd(year,-123456789,"2015-05-09") | ++--------------------------------------------+ +| NULL | ++--------------------------------------------+ +EXPLAIN select timestampadd(year,-123456789,"2015-04-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,-123456789,"2015-04-07"); ++--------------------------------------------+ +| timestampadd(year,-123456789,"2015-04-07") | ++--------------------------------------------+ +| NULL | ++--------------------------------------------+ +EXPLAIN select timestampadd(year,-123456789,"2015-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,-123456789,"2015-05-07"); ++--------------------------------------------+ +| timestampadd(year,-123456789,"2015-05-07") | ++--------------------------------------------+ +| NULL | ++--------------------------------------------+ +EXPLAIN select timestampadd(year,1,"9999-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,1,"9999-05-07"); ++-----------------------------------+ +| timestampadd(year,1,"9999-05-07") | ++-----------------------------------+ +| NULL | ++-----------------------------------+ +EXPLAIN select timestampadd(year,1,"2036-05-07"); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select timestampadd(year,1,"2036-05-07"); ++-----------------------------------+ +| timestampadd(year,1,"2036-05-07") | ++-----------------------------------+ +| 2037-05-07 00:00:00 | ++-----------------------------------+ + +explain_protocol: 0 +set time_zone='-5:00'; +create table sb(a timestamp); +insert into sb values ("2010-01-01 00:00:00"); +set time_zone='-5:00'; +alter system flush plan cache global; +explain_protocol: 2 +set @@ob_enable_plan_cache = 0; +EXPLAIN select timestampadd(hour,1,a) from sb; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|sb |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(3, 1, sb.a)]), filter(nil), + access([sb.a]), partitions(p0) + +select timestampadd(hour,1,a) from sb; ++------------------------+ +| timestampadd(hour,1,a) | ++------------------------+ +| 2010-01-01 01:00:00 | ++------------------------+ +EXPLAIN select timestampadd(hour,-1,a) from sb; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|sb |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(3, -1, sb.a)]), filter(nil), + access([sb.a]), partitions(p0) + +select timestampadd(hour,-1,a) from sb; ++-------------------------+ +| timestampadd(hour,-1,a) | ++-------------------------+ +| 2009-12-31 23:00:00 | ++-------------------------+ +drop table sb; + +explain_protocol: 0 +set time_zone='+6:00'; +create table sb(a datetime); +insert into sb values ("2010-08-06 12:34:56"); +set time_zone='-7:00'; +alter system flush plan cache global; +explain_protocol: 2 +EXPLAIN select timestampadd(hour,1,a) from sb; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|sb |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(3, 1, sb.a)]), filter(nil), + access([sb.a]), partitions(p0) + +select timestampadd(hour,1,a) from sb; ++------------------------+ +| timestampadd(hour,1,a) | ++------------------------+ +| 2010-08-06 13:34:56 | ++------------------------+ +EXPLAIN select timestampadd(hour,-1,a) from sb; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|sb |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([timestampadd(3, -1, sb.a)]), filter(nil), + access([sb.a]), partitions(p0) + +select timestampadd(hour,-1,a) from sb; ++-------------------------+ +| timestampadd(hour,-1,a) | ++-------------------------+ +| 2010-08-06 11:34:56 | ++-------------------------+ + +drop table sb; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_todays.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_todays.result new file mode 100644 index 000000000..70d4cab60 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_todays.result @@ -0,0 +1,4787 @@ +result_format: 4 +set @@ob_enable_plan_cache = 0; +// sleep 2 +drop table if exists t1, t2; +create table t1(col_int int, col_decimal decimal, col_varchar varchar(100), + col_date date, col_datetime datetime, col_timestamp timestamp, + col_null int); +insert into t1 values(123, 123.123, 'invalid char', '2020-01-01 12:12:12', '0000-00-00 00:00:00.000', '2020-01-01 12:12:12.1234', null); +insert into t1 values(123, 123.123, '2020-01-01', '2019-01-01', '0000-00-00', '2020-01-01', null); + +// to check type +create table t2 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30)); +insert into t2 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5'); +insert into t2 values(-1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -3.5, 4.5, + -5.5, 6.5, + -7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5'); + +// sleep 2 +select col_int, to_days(col_int) from t1; ++---------+------------------+ +| col_int | to_days(col_int) | ++---------+------------------+ +| 123 | 730507 | +| 123 | 730507 | ++---------+------------------+ +select col_decimal, to_days(col_decimal) from t1; ++-------------+----------------------+ +| col_decimal | to_days(col_decimal) | ++-------------+----------------------+ +| 123 | 730507 | +| 123 | 730507 | ++-------------+----------------------+ +select col_varchar, to_days(col_varchar) from t1; ++--------------+----------------------+ +| col_varchar | to_days(col_varchar) | ++--------------+----------------------+ +| invalid char | NULL | +| 2020-01-01 | 737790 | ++--------------+----------------------+ +select col_date, to_days(col_date) from t1; ++------------+-------------------+ +| col_date | to_days(col_date) | ++------------+-------------------+ +| 2020-01-01 | 737790 | +| 2019-01-01 | 737425 | ++------------+-------------------+ +select col_datetime, to_days(col_datetime) from t1; ++---------------------+-----------------------+ +| col_datetime | to_days(col_datetime) | ++---------------------+-----------------------+ +| 0000-00-00 00:00:00 | NULL | +| 0000-00-00 00:00:00 | NULL | ++---------------------+-----------------------+ +select col_timestamp, to_days(col_timestamp) from t1; ++---------------------+------------------------+ +| col_timestamp | to_days(col_timestamp) | ++---------------------+------------------------+ +| 2020-01-01 12:12:12 | 737790 | +| 2020-01-01 00:00:00 | 737790 | ++---------------------+------------------------+ +select to_days(col_null) from t1; ++-------------------+ +| to_days(col_null) | ++-------------------+ +| NULL | +| NULL | ++-------------------+ + +select col_int, time_to_usec(col_int) from t1; +ERROR 42000: Invalid argument for time_to_usec() +select col_decimal, time_to_usec(col_decimal) from t1; +ERROR 42000: Invalid argument for time_to_usec() +select col_varchar, time_to_usec(col_varchar) from t1; ++--------------+---------------------------+ +| col_varchar | time_to_usec(col_varchar) | ++--------------+---------------------------+ +| invalid char | -9223372022400000000 | +| 2020-01-01 | 1577808000000000 | ++--------------+---------------------------+ +select col_date, time_to_usec(col_date) from t1; ++------------+------------------------+ +| col_date | time_to_usec(col_date) | ++------------+------------------------+ +| 2020-01-01 | 1577808000000000 | +| 2019-01-01 | 1546272000000000 | ++------------+------------------------+ +select col_datetime, time_to_usec(col_datetime) from t1; ++---------------------+----------------------------+ +| col_datetime | time_to_usec(col_datetime) | ++---------------------+----------------------------+ +| 0000-00-00 00:00:00 | -9223372022400000000 | +| 0000-00-00 00:00:00 | -9223372022400000000 | ++---------------------+----------------------------+ +select col_timestamp, time_to_usec(col_timestamp) from t1; ++---------------------+-----------------------------+ +| col_timestamp | time_to_usec(col_timestamp) | ++---------------------+-----------------------------+ +| 2020-01-01 12:12:12 | 1577851932000000 | +| 2020-01-01 00:00:00 | 1577808000000000 | ++---------------------+-----------------------------+ +select time_to_usec(col_null) from t1; +ERROR 42000: Invalid argument for time_to_usec() + +select col_int, usec_to_time(col_int) from t1; ++---------+----------------------------+ +| col_int | usec_to_time(col_int) | ++---------+----------------------------+ +| 123 | 1970-01-01 08:00:00.000123 | +| 123 | 1970-01-01 08:00:00.000123 | ++---------+----------------------------+ +select col_decimal, usec_to_time(col_decimal) from t1; ++-------------+----------------------------+ +| col_decimal | usec_to_time(col_decimal) | ++-------------+----------------------------+ +| 123 | 1970-01-01 08:00:00.000123 | +| 123 | 1970-01-01 08:00:00.000123 | ++-------------+----------------------------+ +select col_varchar, usec_to_time(col_varchar) from t1; ++--------------+----------------------------+ +| col_varchar | usec_to_time(col_varchar) | ++--------------+----------------------------+ +| invalid char | 1970-01-01 08:00:00.000000 | +| 2020-01-01 | 1970-01-01 08:00:00.002020 | ++--------------+----------------------------+ +select col_date, usec_to_time(col_date) from t1; ++------------+----------------------------+ +| col_date | usec_to_time(col_date) | ++------------+----------------------------+ +| 2020-01-01 | 1970-01-01 08:00:20.200101 | +| 2019-01-01 | 1970-01-01 08:00:20.190101 | ++------------+----------------------------+ +select col_datetime, usec_to_time(col_datetime) from t1; ++---------------------+----------------------------+ +| col_datetime | usec_to_time(col_datetime) | ++---------------------+----------------------------+ +| 0000-00-00 00:00:00 | 1970-01-01 08:00:00.000000 | +| 0000-00-00 00:00:00 | 1970-01-01 08:00:00.000000 | ++---------------------+----------------------------+ +select col_timestamp, usec_to_time(col_timestamp) from t1; ++---------------------+-----------------------------+ +| col_timestamp | usec_to_time(col_timestamp) | ++---------------------+-----------------------------+ +| 2020-01-01 12:12:12 | 1970-08-23 03:08:21.121212 | +| 2020-01-01 00:00:00 | 1970-08-23 03:08:21.000000 | ++---------------------+-----------------------------+ +select usec_to_time(col_null) from t1; ++------------------------+ +| usec_to_time(col_null) | ++------------------------+ +| NULL | +| NULL | ++------------------------+ + +select str_to_date(null, null); ++-------------------------+ +| str_to_date(null, null) | ++-------------------------+ +| NULL | ++-------------------------+ +select str_to_date('2019-01-01 10:10:10', null); ++------------------------------------------+ +| str_to_date('2019-01-01 10:10:10', null) | ++------------------------------------------+ +| NULL | ++------------------------------------------+ +select str_to_date(null, '%Y-%c-%d %T'); ++----------------------------------+ +| str_to_date(null, '%Y-%c-%d %T') | ++----------------------------------+ +| NULL | ++----------------------------------+ +select str_to_date('2019-01-01 10:10:10', '%Y-%c-%d %T'); ++---------------------------------------------------+ +| str_to_date('2019-01-01 10:10:10', '%Y-%c-%d %T') | ++---------------------------------------------------+ +| 2019-01-01 10:10:10 | ++---------------------------------------------------+ +select str_to_date('invalid char', '%Y-%c-%d %T'); ++--------------------------------------------+ +| str_to_date('invalid char', '%Y-%c-%d %T') | ++--------------------------------------------+ +| NULL | ++--------------------------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: 'invalid char' for function str_to_date +select str_to_date('2019-01-01 10:10:10', 'invalid char'); ++----------------------------------------------------+ +| str_to_date('2019-01-01 10:10:10', 'invalid char') | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-01-01 10:10:10' for function str_to_date + +select to_days(c1), time_to_usec(c1), usec_to_time(c1) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c1, c1) from t2; ++----------------------------+ +| str_to_date(c1, c1) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c1, c2) from t2; ++---------------------+ +| str_to_date(c1, c2) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c3) from t2; ++----------------------------+ +| str_to_date(c1, c3) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c1, c4) from t2; ++---------------------+ +| str_to_date(c1, c4) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c5) from t2; ++----------------------------+ +| str_to_date(c1, c5) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c1, c6) from t2; ++---------------------+ +| str_to_date(c1, c6) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c7) from t2; ++----------------------------+ +| str_to_date(c1, c7) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c1, c8) from t2; ++---------------------+ +| str_to_date(c1, c8) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c9) from t2; ++----------------------------+ +| str_to_date(c1, c9) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c1, c10) from t2; ++----------------------+ +| str_to_date(c1, c10) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c11) from t2; ++----------------------------+ +| str_to_date(c1, c11) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c1, c12) from t2; ++----------------------+ +| str_to_date(c1, c12) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c13) from t2; ++----------------------+ +| str_to_date(c1, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c14) from t2; ++----------------------+ +| str_to_date(c1, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c15) from t2; ++----------------------+ +| str_to_date(c1, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c16) from t2; ++----------------------+ +| str_to_date(c1, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c17) from t2; ++----------------------+ +| str_to_date(c1, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c18) from t2; ++----------------------+ +| str_to_date(c1, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c19) from t2; ++----------------------+ +| str_to_date(c1, c19) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c20) from t2; ++----------------------+ +| str_to_date(c1, c20) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c21) from t2; ++----------------------+ +| str_to_date(c1, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c1, c22) from t2; ++----------------------------+ +| str_to_date(c1, c22) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select to_days(c2), time_to_usec(c2), usec_to_time(c2) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c2, c1) from t2; ++---------------------+ +| str_to_date(c2, c1) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c2) from t2; ++----------------------------+ +| str_to_date(c2, c2) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c2, c3) from t2; ++---------------------+ +| str_to_date(c2, c3) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c4) from t2; ++----------------------------+ +| str_to_date(c2, c4) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c2, c5) from t2; ++---------------------+ +| str_to_date(c2, c5) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c6) from t2; ++----------------------------+ +| str_to_date(c2, c6) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c2, c7) from t2; ++---------------------+ +| str_to_date(c2, c7) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c8) from t2; ++----------------------------+ +| str_to_date(c2, c8) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c2, c9) from t2; ++---------------------+ +| str_to_date(c2, c9) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c10) from t2; ++----------------------------+ +| str_to_date(c2, c10) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c2, c11) from t2; ++----------------------+ +| str_to_date(c2, c11) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c12) from t2; ++----------------------------+ +| str_to_date(c2, c12) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c2, c13) from t2; ++----------------------+ +| str_to_date(c2, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c14) from t2; ++----------------------+ +| str_to_date(c2, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c15) from t2; ++----------------------+ +| str_to_date(c2, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c16) from t2; ++----------------------+ +| str_to_date(c2, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c17) from t2; ++----------------------+ +| str_to_date(c2, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c18) from t2; ++----------------------+ +| str_to_date(c2, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c19) from t2; ++----------------------------+ +| str_to_date(c2, c19) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c2, c20) from t2; ++----------------------------+ +| str_to_date(c2, c20) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c2, c21) from t2; ++----------------------+ +| str_to_date(c2, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c2, c22) from t2; ++----------------------+ +| str_to_date(c2, c22) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select to_days(c3), time_to_usec(c3), usec_to_time(c3) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c3, c1) from t2; ++----------------------------+ +| str_to_date(c3, c1) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c3, c2) from t2; ++---------------------+ +| str_to_date(c3, c2) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c3) from t2; ++----------------------------+ +| str_to_date(c3, c3) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c3, c4) from t2; ++---------------------+ +| str_to_date(c3, c4) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c5) from t2; ++----------------------------+ +| str_to_date(c3, c5) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c3, c6) from t2; ++---------------------+ +| str_to_date(c3, c6) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c7) from t2; ++----------------------------+ +| str_to_date(c3, c7) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c3, c8) from t2; ++---------------------+ +| str_to_date(c3, c8) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c9) from t2; ++----------------------------+ +| str_to_date(c3, c9) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c3, c10) from t2; ++----------------------+ +| str_to_date(c3, c10) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c11) from t2; ++----------------------------+ +| str_to_date(c3, c11) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c3, c12) from t2; ++----------------------+ +| str_to_date(c3, c12) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c13) from t2; ++----------------------+ +| str_to_date(c3, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c14) from t2; ++----------------------+ +| str_to_date(c3, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c15) from t2; ++----------------------+ +| str_to_date(c3, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c16) from t2; ++----------------------+ +| str_to_date(c3, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c17) from t2; ++----------------------+ +| str_to_date(c3, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c18) from t2; ++----------------------+ +| str_to_date(c3, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c19) from t2; ++----------------------+ +| str_to_date(c3, c19) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c20) from t2; ++----------------------+ +| str_to_date(c3, c20) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c21) from t2; ++----------------------+ +| str_to_date(c3, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c3, c22) from t2; ++----------------------------+ +| str_to_date(c3, c22) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select to_days(c4), time_to_usec(c4), usec_to_time(c4) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c4, c1) from t2; ++---------------------+ +| str_to_date(c4, c1) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c2) from t2; ++----------------------------+ +| str_to_date(c4, c2) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c4, c3) from t2; ++---------------------+ +| str_to_date(c4, c3) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c4) from t2; ++----------------------------+ +| str_to_date(c4, c4) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c4, c5) from t2; ++---------------------+ +| str_to_date(c4, c5) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c6) from t2; ++----------------------------+ +| str_to_date(c4, c6) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c4, c7) from t2; ++---------------------+ +| str_to_date(c4, c7) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c8) from t2; ++----------------------------+ +| str_to_date(c4, c8) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c4, c9) from t2; ++---------------------+ +| str_to_date(c4, c9) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c10) from t2; ++----------------------------+ +| str_to_date(c4, c10) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c4, c11) from t2; ++----------------------+ +| str_to_date(c4, c11) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c12) from t2; ++----------------------------+ +| str_to_date(c4, c12) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c4, c13) from t2; ++----------------------+ +| str_to_date(c4, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c14) from t2; ++----------------------+ +| str_to_date(c4, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c15) from t2; ++----------------------+ +| str_to_date(c4, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c16) from t2; ++----------------------+ +| str_to_date(c4, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c17) from t2; ++----------------------+ +| str_to_date(c4, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c18) from t2; ++----------------------+ +| str_to_date(c4, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c19) from t2; ++----------------------------+ +| str_to_date(c4, c19) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c4, c20) from t2; ++----------------------------+ +| str_to_date(c4, c20) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c4, c21) from t2; ++----------------------+ +| str_to_date(c4, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c4, c22) from t2; ++----------------------+ +| str_to_date(c4, c22) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select to_days(c5), time_to_usec(c5), usec_to_time(c5) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c5, c1) from t2; ++----------------------------+ +| str_to_date(c5, c1) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c5, c2) from t2; ++---------------------+ +| str_to_date(c5, c2) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c3) from t2; ++----------------------------+ +| str_to_date(c5, c3) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c5, c4) from t2; ++---------------------+ +| str_to_date(c5, c4) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c5) from t2; ++----------------------------+ +| str_to_date(c5, c5) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c5, c6) from t2; ++---------------------+ +| str_to_date(c5, c6) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c7) from t2; ++----------------------------+ +| str_to_date(c5, c7) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c5, c8) from t2; ++---------------------+ +| str_to_date(c5, c8) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c9) from t2; ++----------------------------+ +| str_to_date(c5, c9) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c5, c10) from t2; ++----------------------+ +| str_to_date(c5, c10) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c11) from t2; ++----------------------------+ +| str_to_date(c5, c11) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c5, c12) from t2; ++----------------------+ +| str_to_date(c5, c12) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c13) from t2; ++----------------------+ +| str_to_date(c5, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c14) from t2; ++----------------------+ +| str_to_date(c5, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c15) from t2; ++----------------------+ +| str_to_date(c5, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c16) from t2; ++----------------------+ +| str_to_date(c5, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c17) from t2; ++----------------------+ +| str_to_date(c5, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c18) from t2; ++----------------------+ +| str_to_date(c5, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c19) from t2; ++----------------------+ +| str_to_date(c5, c19) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c20) from t2; ++----------------------+ +| str_to_date(c5, c20) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c21) from t2; ++----------------------+ +| str_to_date(c5, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c5, c22) from t2; ++----------------------------+ +| str_to_date(c5, c22) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select to_days(c6), time_to_usec(c6), usec_to_time(c6) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c6, c1) from t2; ++---------------------+ +| str_to_date(c6, c1) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c2) from t2; ++----------------------------+ +| str_to_date(c6, c2) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c6, c3) from t2; ++---------------------+ +| str_to_date(c6, c3) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c4) from t2; ++----------------------------+ +| str_to_date(c6, c4) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c6, c5) from t2; ++---------------------+ +| str_to_date(c6, c5) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c6) from t2; ++----------------------------+ +| str_to_date(c6, c6) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c6, c7) from t2; ++---------------------+ +| str_to_date(c6, c7) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c8) from t2; ++----------------------------+ +| str_to_date(c6, c8) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c6, c9) from t2; ++---------------------+ +| str_to_date(c6, c9) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c10) from t2; ++----------------------------+ +| str_to_date(c6, c10) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c6, c11) from t2; ++----------------------+ +| str_to_date(c6, c11) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c12) from t2; ++----------------------------+ +| str_to_date(c6, c12) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c6, c13) from t2; ++----------------------+ +| str_to_date(c6, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c14) from t2; ++----------------------+ +| str_to_date(c6, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c15) from t2; ++----------------------+ +| str_to_date(c6, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c16) from t2; ++----------------------+ +| str_to_date(c6, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c17) from t2; ++----------------------+ +| str_to_date(c6, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c18) from t2; ++----------------------+ +| str_to_date(c6, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c19) from t2; ++----------------------------+ +| str_to_date(c6, c19) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c6, c20) from t2; ++----------------------------+ +| str_to_date(c6, c20) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c6, c21) from t2; ++----------------------+ +| str_to_date(c6, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c6, c22) from t2; ++----------------------+ +| str_to_date(c6, c22) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select to_days(c7), time_to_usec(c7), usec_to_time(c7) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c7, c1) from t2; ++----------------------------+ +| str_to_date(c7, c1) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c7, c2) from t2; ++---------------------+ +| str_to_date(c7, c2) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c3) from t2; ++----------------------------+ +| str_to_date(c7, c3) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c7, c4) from t2; ++---------------------+ +| str_to_date(c7, c4) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c5) from t2; ++----------------------------+ +| str_to_date(c7, c5) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c7, c6) from t2; ++---------------------+ +| str_to_date(c7, c6) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c7) from t2; ++----------------------------+ +| str_to_date(c7, c7) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c7, c8) from t2; ++---------------------+ +| str_to_date(c7, c8) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c9) from t2; ++----------------------------+ +| str_to_date(c7, c9) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c7, c10) from t2; ++----------------------+ +| str_to_date(c7, c10) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c11) from t2; ++----------------------------+ +| str_to_date(c7, c11) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c7, c12) from t2; ++----------------------+ +| str_to_date(c7, c12) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c13) from t2; ++----------------------+ +| str_to_date(c7, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c14) from t2; ++----------------------+ +| str_to_date(c7, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c15) from t2; ++----------------------+ +| str_to_date(c7, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c16) from t2; ++----------------------+ +| str_to_date(c7, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c17) from t2; ++----------------------+ +| str_to_date(c7, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c18) from t2; ++----------------------+ +| str_to_date(c7, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c19) from t2; ++----------------------+ +| str_to_date(c7, c19) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c20) from t2; ++----------------------+ +| str_to_date(c7, c20) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c21) from t2; ++----------------------+ +| str_to_date(c7, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c7, c22) from t2; ++----------------------------+ +| str_to_date(c7, c22) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select to_days(c8), time_to_usec(c8), usec_to_time(c8) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c8, c1) from t2; ++---------------------+ +| str_to_date(c8, c1) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c2) from t2; ++----------------------------+ +| str_to_date(c8, c2) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c8, c3) from t2; ++---------------------+ +| str_to_date(c8, c3) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c4) from t2; ++----------------------------+ +| str_to_date(c8, c4) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c8, c5) from t2; ++---------------------+ +| str_to_date(c8, c5) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c6) from t2; ++----------------------------+ +| str_to_date(c8, c6) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c8, c7) from t2; ++---------------------+ +| str_to_date(c8, c7) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c8) from t2; ++----------------------------+ +| str_to_date(c8, c8) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c8, c9) from t2; ++---------------------+ +| str_to_date(c8, c9) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c10) from t2; ++----------------------------+ +| str_to_date(c8, c10) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c8, c11) from t2; ++----------------------+ +| str_to_date(c8, c11) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c12) from t2; ++----------------------------+ +| str_to_date(c8, c12) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c8, c13) from t2; ++----------------------+ +| str_to_date(c8, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c14) from t2; ++----------------------+ +| str_to_date(c8, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c15) from t2; ++----------------------+ +| str_to_date(c8, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c16) from t2; ++----------------------+ +| str_to_date(c8, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c17) from t2; ++----------------------+ +| str_to_date(c8, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c18) from t2; ++----------------------+ +| str_to_date(c8, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c19) from t2; ++----------------------------+ +| str_to_date(c8, c19) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c8, c20) from t2; ++----------------------------+ +| str_to_date(c8, c20) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c8, c21) from t2; ++----------------------+ +| str_to_date(c8, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c8, c22) from t2; ++----------------------+ +| str_to_date(c8, c22) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select to_days(c9), time_to_usec(c9), usec_to_time(c9) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c9, c1) from t2; ++----------------------------+ +| str_to_date(c9, c1) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c9, c2) from t2; ++---------------------+ +| str_to_date(c9, c2) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c3) from t2; ++----------------------------+ +| str_to_date(c9, c3) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c9, c4) from t2; ++---------------------+ +| str_to_date(c9, c4) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c5) from t2; ++----------------------------+ +| str_to_date(c9, c5) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c9, c6) from t2; ++---------------------+ +| str_to_date(c9, c6) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c7) from t2; ++----------------------------+ +| str_to_date(c9, c7) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c9, c8) from t2; ++---------------------+ +| str_to_date(c9, c8) | ++---------------------+ +| NULL | +| NULL | ++---------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c9) from t2; ++----------------------------+ +| str_to_date(c9, c9) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c9, c10) from t2; ++----------------------+ +| str_to_date(c9, c10) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c11) from t2; ++----------------------------+ +| str_to_date(c9, c11) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c9, c12) from t2; ++----------------------+ +| str_to_date(c9, c12) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c13) from t2; ++----------------------+ +| str_to_date(c9, c13) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c14) from t2; ++----------------------+ +| str_to_date(c9, c14) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c15) from t2; ++----------------------+ +| str_to_date(c9, c15) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c16) from t2; ++----------------------+ +| str_to_date(c9, c16) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c17) from t2; ++----------------------+ +| str_to_date(c9, c17) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c18) from t2; ++----------------------+ +| str_to_date(c9, c18) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c19) from t2; ++----------------------+ +| str_to_date(c9, c19) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c20) from t2; ++----------------------+ +| str_to_date(c9, c20) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c21) from t2; ++----------------------+ +| str_to_date(c9, c21) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c9, c22) from t2; ++----------------------------+ +| str_to_date(c9, c22) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select to_days(c10), time_to_usec(c10), usec_to_time(c10) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c10, c1) from t2; ++----------------------+ +| str_to_date(c10, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c2) from t2; ++----------------------------+ +| str_to_date(c10, c2) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c10, c3) from t2; ++----------------------+ +| str_to_date(c10, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c4) from t2; ++----------------------------+ +| str_to_date(c10, c4) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c10, c5) from t2; ++----------------------+ +| str_to_date(c10, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c6) from t2; ++----------------------------+ +| str_to_date(c10, c6) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c10, c7) from t2; ++----------------------+ +| str_to_date(c10, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c8) from t2; ++----------------------------+ +| str_to_date(c10, c8) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c10, c9) from t2; ++----------------------+ +| str_to_date(c10, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c10) from t2; ++----------------------------+ +| str_to_date(c10, c10) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c10, c11) from t2; ++-----------------------+ +| str_to_date(c10, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c12) from t2; ++----------------------------+ +| str_to_date(c10, c12) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c10, c13) from t2; ++-----------------------+ +| str_to_date(c10, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c14) from t2; ++-----------------------+ +| str_to_date(c10, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c15) from t2; ++-----------------------+ +| str_to_date(c10, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c16) from t2; ++-----------------------+ +| str_to_date(c10, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c17) from t2; ++-----------------------+ +| str_to_date(c10, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c18) from t2; ++-----------------------+ +| str_to_date(c10, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c19) from t2; ++----------------------------+ +| str_to_date(c10, c19) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c10, c20) from t2; ++----------------------------+ +| str_to_date(c10, c20) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c10, c21) from t2; ++-----------------------+ +| str_to_date(c10, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c10, c22) from t2; ++-----------------------+ +| str_to_date(c10, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select to_days(c11), time_to_usec(c11), usec_to_time(c11) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c11, c1) from t2; ++----------------------------+ +| str_to_date(c11, c1) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c11, c2) from t2; ++----------------------+ +| str_to_date(c11, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c3) from t2; ++----------------------------+ +| str_to_date(c11, c3) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c11, c4) from t2; ++----------------------+ +| str_to_date(c11, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c5) from t2; ++----------------------------+ +| str_to_date(c11, c5) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c11, c6) from t2; ++----------------------+ +| str_to_date(c11, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c7) from t2; ++----------------------------+ +| str_to_date(c11, c7) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c11, c8) from t2; ++----------------------+ +| str_to_date(c11, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c9) from t2; ++----------------------------+ +| str_to_date(c11, c9) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c11, c10) from t2; ++-----------------------+ +| str_to_date(c11, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c11) from t2; ++----------------------------+ +| str_to_date(c11, c11) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c11, c12) from t2; ++-----------------------+ +| str_to_date(c11, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c13) from t2; ++-----------------------+ +| str_to_date(c11, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c14) from t2; ++-----------------------+ +| str_to_date(c11, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c15) from t2; ++-----------------------+ +| str_to_date(c11, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c16) from t2; ++-----------------------+ +| str_to_date(c11, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c17) from t2; ++-----------------------+ +| str_to_date(c11, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c18) from t2; ++-----------------------+ +| str_to_date(c11, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c19) from t2; ++-----------------------+ +| str_to_date(c11, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c20) from t2; ++-----------------------+ +| str_to_date(c11, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c21) from t2; ++-----------------------+ +| str_to_date(c11, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '1' for function str_to_date +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select str_to_date(c11, c22) from t2; ++----------------------------+ +| str_to_date(c11, c22) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '-1' for function str_to_date +select to_days(c12), time_to_usec(c12), usec_to_time(c12) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c12, c1) from t2; ++----------------------+ +| str_to_date(c12, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c2) from t2; ++----------------------------+ +| str_to_date(c12, c2) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c12, c3) from t2; ++----------------------+ +| str_to_date(c12, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c4) from t2; ++----------------------------+ +| str_to_date(c12, c4) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c12, c5) from t2; ++----------------------+ +| str_to_date(c12, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c6) from t2; ++----------------------------+ +| str_to_date(c12, c6) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c12, c7) from t2; ++----------------------+ +| str_to_date(c12, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c8) from t2; ++----------------------------+ +| str_to_date(c12, c8) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c12, c9) from t2; ++----------------------+ +| str_to_date(c12, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c10) from t2; ++----------------------------+ +| str_to_date(c12, c10) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c12, c11) from t2; ++-----------------------+ +| str_to_date(c12, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c12) from t2; ++----------------------------+ +| str_to_date(c12, c12) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c12, c13) from t2; ++-----------------------+ +| str_to_date(c12, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c14) from t2; ++-----------------------+ +| str_to_date(c12, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c15) from t2; ++-----------------------+ +| str_to_date(c12, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c16) from t2; ++-----------------------+ +| str_to_date(c12, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c17) from t2; ++-----------------------+ +| str_to_date(c12, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c18) from t2; ++-----------------------+ +| str_to_date(c12, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c19) from t2; ++----------------------------+ +| str_to_date(c12, c19) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c12, c20) from t2; ++----------------------------+ +| str_to_date(c12, c20) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c12, c21) from t2; ++-----------------------+ +| str_to_date(c12, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select str_to_date(c12, c22) from t2; ++-----------------------+ +| str_to_date(c12, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2' for function str_to_date +Warning 1411 Incorrect datetime value: '2' for function str_to_date +select to_days(c13), time_to_usec(c13), usec_to_time(c13) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c13, c1) from t2; ++----------------------+ +| str_to_date(c13, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c2) from t2; ++----------------------+ +| str_to_date(c13, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c3) from t2; ++----------------------+ +| str_to_date(c13, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c4) from t2; ++----------------------+ +| str_to_date(c13, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c5) from t2; ++----------------------+ +| str_to_date(c13, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c6) from t2; ++----------------------+ +| str_to_date(c13, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c7) from t2; ++----------------------+ +| str_to_date(c13, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c8) from t2; ++----------------------+ +| str_to_date(c13, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c9) from t2; ++----------------------+ +| str_to_date(c13, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c10) from t2; ++-----------------------+ +| str_to_date(c13, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c11) from t2; ++-----------------------+ +| str_to_date(c13, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c12) from t2; ++-----------------------+ +| str_to_date(c13, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c13) from t2; ++----------------------------+ +| str_to_date(c13, c13) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c13, c14) from t2; ++-----------------------+ +| str_to_date(c13, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c15) from t2; ++-----------------------+ +| str_to_date(c13, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c16) from t2; ++-----------------------+ +| str_to_date(c13, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c17) from t2; ++-----------------------+ +| str_to_date(c13, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c18) from t2; ++-----------------------+ +| str_to_date(c13, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c19) from t2; ++-----------------------+ +| str_to_date(c13, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c20) from t2; ++-----------------------+ +| str_to_date(c13, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c21) from t2; ++-----------------------+ +| str_to_date(c13, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select str_to_date(c13, c22) from t2; ++-----------------------+ +| str_to_date(c13, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '3.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-3.5' for function str_to_date +select to_days(c14), time_to_usec(c14), usec_to_time(c14) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c14, c1) from t2; ++----------------------+ +| str_to_date(c14, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c2) from t2; ++----------------------+ +| str_to_date(c14, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c3) from t2; ++----------------------+ +| str_to_date(c14, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c4) from t2; ++----------------------+ +| str_to_date(c14, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c5) from t2; ++----------------------+ +| str_to_date(c14, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c6) from t2; ++----------------------+ +| str_to_date(c14, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c7) from t2; ++----------------------+ +| str_to_date(c14, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c8) from t2; ++----------------------+ +| str_to_date(c14, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c9) from t2; ++----------------------+ +| str_to_date(c14, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c10) from t2; ++-----------------------+ +| str_to_date(c14, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c11) from t2; ++-----------------------+ +| str_to_date(c14, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c12) from t2; ++-----------------------+ +| str_to_date(c14, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c13) from t2; ++-----------------------+ +| str_to_date(c14, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c14) from t2; ++----------------------------+ +| str_to_date(c14, c14) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c14, c15) from t2; ++-----------------------+ +| str_to_date(c14, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c16) from t2; ++-----------------------+ +| str_to_date(c14, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c17) from t2; ++-----------------------+ +| str_to_date(c14, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c18) from t2; ++-----------------------+ +| str_to_date(c14, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c19) from t2; ++-----------------------+ +| str_to_date(c14, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c20) from t2; ++-----------------------+ +| str_to_date(c14, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c21) from t2; ++-----------------------+ +| str_to_date(c14, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select str_to_date(c14, c22) from t2; ++-----------------------+ +| str_to_date(c14, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +Warning 1411 Incorrect datetime value: '4.5' for function str_to_date +select to_days(c15), time_to_usec(c15), usec_to_time(c15) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c15, c1) from t2; ++----------------------+ +| str_to_date(c15, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c2) from t2; ++----------------------+ +| str_to_date(c15, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c3) from t2; ++----------------------+ +| str_to_date(c15, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c4) from t2; ++----------------------+ +| str_to_date(c15, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c5) from t2; ++----------------------+ +| str_to_date(c15, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c6) from t2; ++----------------------+ +| str_to_date(c15, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c7) from t2; ++----------------------+ +| str_to_date(c15, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c8) from t2; ++----------------------+ +| str_to_date(c15, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c9) from t2; ++----------------------+ +| str_to_date(c15, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c10) from t2; ++-----------------------+ +| str_to_date(c15, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c11) from t2; ++-----------------------+ +| str_to_date(c15, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c12) from t2; ++-----------------------+ +| str_to_date(c15, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c13) from t2; ++-----------------------+ +| str_to_date(c15, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c14) from t2; ++-----------------------+ +| str_to_date(c15, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c15) from t2; ++----------------------------+ +| str_to_date(c15, c15) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c15, c16) from t2; ++-----------------------+ +| str_to_date(c15, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c17) from t2; ++-----------------------+ +| str_to_date(c15, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c18) from t2; ++-----------------------+ +| str_to_date(c15, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c19) from t2; ++-----------------------+ +| str_to_date(c15, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c20) from t2; ++-----------------------+ +| str_to_date(c15, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c21) from t2; ++-----------------------+ +| str_to_date(c15, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select str_to_date(c15, c22) from t2; ++-----------------------+ +| str_to_date(c15, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '5.5' for function str_to_date +Warning 1411 Incorrect datetime value: '-5.5' for function str_to_date +select to_days(c16), time_to_usec(c16), usec_to_time(c16) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c16, c1) from t2; ++----------------------+ +| str_to_date(c16, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c2) from t2; ++----------------------+ +| str_to_date(c16, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c3) from t2; ++----------------------+ +| str_to_date(c16, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c4) from t2; ++----------------------+ +| str_to_date(c16, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c5) from t2; ++----------------------+ +| str_to_date(c16, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c6) from t2; ++----------------------+ +| str_to_date(c16, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c7) from t2; ++----------------------+ +| str_to_date(c16, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c8) from t2; ++----------------------+ +| str_to_date(c16, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c9) from t2; ++----------------------+ +| str_to_date(c16, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c10) from t2; ++-----------------------+ +| str_to_date(c16, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c11) from t2; ++-----------------------+ +| str_to_date(c16, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c12) from t2; ++-----------------------+ +| str_to_date(c16, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c13) from t2; ++-----------------------+ +| str_to_date(c16, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c14) from t2; ++-----------------------+ +| str_to_date(c16, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c15) from t2; ++-----------------------+ +| str_to_date(c16, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c16) from t2; ++----------------------------+ +| str_to_date(c16, c16) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c16, c17) from t2; ++-----------------------+ +| str_to_date(c16, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c18) from t2; ++-----------------------+ +| str_to_date(c16, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c19) from t2; ++-----------------------+ +| str_to_date(c16, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c20) from t2; ++-----------------------+ +| str_to_date(c16, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c21) from t2; ++-----------------------+ +| str_to_date(c16, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select str_to_date(c16, c22) from t2; ++-----------------------+ +| str_to_date(c16, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +Warning 1411 Incorrect datetime value: '6.5' for function str_to_date +select to_days(c17), time_to_usec(c17), usec_to_time(c17) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c17, c1) from t2; ++----------------------+ +| str_to_date(c17, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c2) from t2; ++----------------------+ +| str_to_date(c17, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c3) from t2; ++----------------------+ +| str_to_date(c17, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c4) from t2; ++----------------------+ +| str_to_date(c17, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c5) from t2; ++----------------------+ +| str_to_date(c17, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c6) from t2; ++----------------------+ +| str_to_date(c17, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c7) from t2; ++----------------------+ +| str_to_date(c17, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c8) from t2; ++----------------------+ +| str_to_date(c17, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c9) from t2; ++----------------------+ +| str_to_date(c17, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c10) from t2; ++-----------------------+ +| str_to_date(c17, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c11) from t2; ++-----------------------+ +| str_to_date(c17, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c12) from t2; ++-----------------------+ +| str_to_date(c17, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c13) from t2; ++-----------------------+ +| str_to_date(c17, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c14) from t2; ++-----------------------+ +| str_to_date(c17, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c15) from t2; ++-----------------------+ +| str_to_date(c17, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c16) from t2; ++-----------------------+ +| str_to_date(c17, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c17) from t2; ++----------------------------+ +| str_to_date(c17, c17) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c17, c18) from t2; ++-----------------------+ +| str_to_date(c17, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c19) from t2; ++-----------------------+ +| str_to_date(c17, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c20) from t2; ++-----------------------+ +| str_to_date(c17, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c21) from t2; ++-----------------------+ +| str_to_date(c17, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select str_to_date(c17, c22) from t2; ++-----------------------+ +| str_to_date(c17, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '8' for function str_to_date +Warning 1411 Incorrect datetime value: '-8' for function str_to_date +select to_days(c18), time_to_usec(c18), usec_to_time(c18) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c18, c1) from t2; ++----------------------+ +| str_to_date(c18, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c2) from t2; ++----------------------+ +| str_to_date(c18, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c3) from t2; ++----------------------+ +| str_to_date(c18, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c4) from t2; ++----------------------+ +| str_to_date(c18, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c5) from t2; ++----------------------+ +| str_to_date(c18, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c6) from t2; ++----------------------+ +| str_to_date(c18, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c7) from t2; ++----------------------+ +| str_to_date(c18, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c8) from t2; ++----------------------+ +| str_to_date(c18, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c9) from t2; ++----------------------+ +| str_to_date(c18, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c10) from t2; ++-----------------------+ +| str_to_date(c18, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c11) from t2; ++-----------------------+ +| str_to_date(c18, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c12) from t2; ++-----------------------+ +| str_to_date(c18, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c13) from t2; ++-----------------------+ +| str_to_date(c18, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c14) from t2; ++-----------------------+ +| str_to_date(c18, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c15) from t2; ++-----------------------+ +| str_to_date(c18, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c16) from t2; ++-----------------------+ +| str_to_date(c18, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c17) from t2; ++-----------------------+ +| str_to_date(c18, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c18) from t2; ++----------------------------+ +| str_to_date(c18, c18) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c18, c19) from t2; ++-----------------------+ +| str_to_date(c18, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c20) from t2; ++-----------------------+ +| str_to_date(c18, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select str_to_date(c18, c21) from t2; ++----------------------------+ +| str_to_date(c18, c21) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c18, c22) from t2; ++-----------------------+ +| str_to_date(c18, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9' for function str_to_date +Warning 1411 Incorrect datetime value: '9' for function str_to_date +select to_days(c19), time_to_usec(c19), usec_to_time(c19) from t2; ++--------------+-------------------+----------------------------+ +| to_days(c19) | time_to_usec(c19) | usec_to_time(c19) | ++--------------+-------------------+----------------------------+ +| 737759 | 1575172800000000 | 1970-08-23 00:40:01.120000 | +| 737759 | 1575172800000000 | 1970-08-23 00:40:01.120000 | ++--------------+-------------------+----------------------------+ +select str_to_date(c19, c1) from t2; ++----------------------+ +| str_to_date(c19, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c2) from t2; ++----------------------------+ +| str_to_date(c19, c2) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c19, c3) from t2; ++----------------------+ +| str_to_date(c19, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c4) from t2; ++----------------------------+ +| str_to_date(c19, c4) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c19, c5) from t2; ++----------------------+ +| str_to_date(c19, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c6) from t2; ++----------------------------+ +| str_to_date(c19, c6) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c19, c7) from t2; ++----------------------+ +| str_to_date(c19, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c8) from t2; ++----------------------------+ +| str_to_date(c19, c8) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c19, c9) from t2; ++----------------------+ +| str_to_date(c19, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c10) from t2; ++----------------------------+ +| str_to_date(c19, c10) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c19, c11) from t2; ++-----------------------+ +| str_to_date(c19, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c12) from t2; ++----------------------------+ +| str_to_date(c19, c12) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c19, c13) from t2; ++-----------------------+ +| str_to_date(c19, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c14) from t2; ++-----------------------+ +| str_to_date(c19, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c15) from t2; ++-----------------------+ +| str_to_date(c19, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c16) from t2; ++-----------------------+ +| str_to_date(c19, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c17) from t2; ++-----------------------+ +| str_to_date(c19, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c18) from t2; ++-----------------------+ +| str_to_date(c19, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c19) from t2; ++----------------------------+ +| str_to_date(c19, c19) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c19, c20) from t2; ++-----------------------+ +| str_to_date(c19, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c21) from t2; ++-----------------------+ +| str_to_date(c19, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select str_to_date(c19, c22) from t2; ++-----------------------+ +| str_to_date(c19, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-01 12:00:00' for function str_to_date +select to_days(c20), time_to_usec(c20), usec_to_time(c20) from t2; ++--------------+-------------------+----------------------------+ +| to_days(c20) | time_to_usec(c20) | usec_to_time(c20) | ++--------------+-------------------+----------------------------+ +| 737761 | 1575324000000000 | 1970-08-23 00:40:03.060000 | +| 737761 | 1575324000000000 | 1970-08-23 00:40:03.060000 | ++--------------+-------------------+----------------------------+ +select str_to_date(c20, c1) from t2; ++----------------------+ +| str_to_date(c20, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c2) from t2; ++----------------------------+ +| str_to_date(c20, c2) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c20, c3) from t2; ++----------------------+ +| str_to_date(c20, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c4) from t2; ++----------------------------+ +| str_to_date(c20, c4) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c20, c5) from t2; ++----------------------+ +| str_to_date(c20, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c6) from t2; ++----------------------------+ +| str_to_date(c20, c6) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c20, c7) from t2; ++----------------------+ +| str_to_date(c20, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c8) from t2; ++----------------------------+ +| str_to_date(c20, c8) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c20, c9) from t2; ++----------------------+ +| str_to_date(c20, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c10) from t2; ++----------------------------+ +| str_to_date(c20, c10) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c20, c11) from t2; ++-----------------------+ +| str_to_date(c20, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c12) from t2; ++----------------------------+ +| str_to_date(c20, c12) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c20, c13) from t2; ++-----------------------+ +| str_to_date(c20, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c14) from t2; ++-----------------------+ +| str_to_date(c20, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c15) from t2; ++-----------------------+ +| str_to_date(c20, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c16) from t2; ++-----------------------+ +| str_to_date(c20, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c17) from t2; ++-----------------------+ +| str_to_date(c20, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c18) from t2; ++-----------------------+ +| str_to_date(c20, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c19) from t2; ++-----------------------+ +| str_to_date(c20, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c20) from t2; ++----------------------------+ +| str_to_date(c20, c20) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c20, c21) from t2; ++-----------------------+ +| str_to_date(c20, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select str_to_date(c20, c22) from t2; ++-----------------------+ +| str_to_date(c20, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +Warning 1411 Incorrect datetime value: '2019-12-03 06:00:00' for function str_to_date +select to_days(c21), time_to_usec(c21), usec_to_time(c21) from t2; ++--------------+----------------------+----------------------------+ +| to_days(c21) | time_to_usec(c21) | usec_to_time(c21) | ++--------------+----------------------+----------------------------+ +| NULL | -9223372022400000000 | 1970-01-01 08:00:00.000010 | +| NULL | -9223372022400000000 | 1970-01-01 08:00:00.000010 | ++--------------+----------------------+----------------------------+ +select str_to_date(c21, c1) from t2; ++----------------------+ +| str_to_date(c21, c1) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c2) from t2; ++----------------------+ +| str_to_date(c21, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c3) from t2; ++----------------------+ +| str_to_date(c21, c3) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c4) from t2; ++----------------------+ +| str_to_date(c21, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c5) from t2; ++----------------------+ +| str_to_date(c21, c5) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c6) from t2; ++----------------------+ +| str_to_date(c21, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c7) from t2; ++----------------------+ +| str_to_date(c21, c7) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c8) from t2; ++----------------------+ +| str_to_date(c21, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c9) from t2; ++----------------------+ +| str_to_date(c21, c9) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c10) from t2; ++-----------------------+ +| str_to_date(c21, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c11) from t2; ++-----------------------+ +| str_to_date(c21, c11) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c12) from t2; ++-----------------------+ +| str_to_date(c21, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c13) from t2; ++-----------------------+ +| str_to_date(c21, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c14) from t2; ++-----------------------+ +| str_to_date(c21, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c15) from t2; ++-----------------------+ +| str_to_date(c21, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c16) from t2; ++-----------------------+ +| str_to_date(c21, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c17) from t2; ++-----------------------+ +| str_to_date(c21, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c18) from t2; ++----------------------------+ +| str_to_date(c21, c18) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c21, c19) from t2; ++-----------------------+ +| str_to_date(c21, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c20) from t2; ++-----------------------+ +| str_to_date(c21, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select str_to_date(c21, c21) from t2; ++----------------------------+ +| str_to_date(c21, c21) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ +select str_to_date(c21, c22) from t2; ++-----------------------+ +| str_to_date(c21, c22) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +Warning 1411 Incorrect datetime value: '9.5' for function str_to_date +select to_days(c22), time_to_usec(c22), usec_to_time(c22) from t2; +ERROR 42000: Invalid argument for time_to_usec() +select str_to_date(c22, c1) from t2; ++----------------------------+ +| str_to_date(c22, c1) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c2) from t2; ++----------------------+ +| str_to_date(c22, c2) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c3) from t2; ++----------------------------+ +| str_to_date(c22, c3) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c4) from t2; ++----------------------+ +| str_to_date(c22, c4) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c5) from t2; ++----------------------------+ +| str_to_date(c22, c5) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c6) from t2; ++----------------------+ +| str_to_date(c22, c6) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c7) from t2; ++----------------------------+ +| str_to_date(c22, c7) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c8) from t2; ++----------------------+ +| str_to_date(c22, c8) | ++----------------------+ +| NULL | +| NULL | ++----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c9) from t2; ++----------------------------+ +| str_to_date(c22, c9) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c10) from t2; ++-----------------------+ +| str_to_date(c22, c10) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c11) from t2; ++----------------------------+ +| str_to_date(c22, c11) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| NULL | ++----------------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c12) from t2; ++-----------------------+ +| str_to_date(c22, c12) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c13) from t2; ++-----------------------+ +| str_to_date(c22, c13) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c14) from t2; ++-----------------------+ +| str_to_date(c22, c14) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c15) from t2; ++-----------------------+ +| str_to_date(c22, c15) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c16) from t2; ++-----------------------+ +| str_to_date(c22, c16) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c17) from t2; ++-----------------------+ +| str_to_date(c22, c17) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c18) from t2; ++-----------------------+ +| str_to_date(c22, c18) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c19) from t2; ++-----------------------+ +| str_to_date(c22, c19) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c20) from t2; ++-----------------------+ +| str_to_date(c22, c20) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c21) from t2; ++-----------------------+ +| str_to_date(c22, c21) | ++-----------------------+ +| NULL | +| NULL | ++-----------------------+ +Warnings: +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +Warning 1411 Incorrect datetime value: '10.5' for function str_to_date +select str_to_date(c22, c22) from t2; ++----------------------------+ +| str_to_date(c22, c22) | ++----------------------------+ +| 1970-01-01 00:00:00.000000 | +| 1970-01-01 00:00:00.000000 | ++----------------------------+ + +drop table t1; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_trim.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_trim.result new file mode 100644 index 000000000..dac37ddc0 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_trim.result @@ -0,0 +1,140 @@ +result_format: 4 + +drop table if exists t1; + + +set @@ob_enable_plan_cache = 0; + +select trim(' abc ') x from dual; ++------+ +| x | ++------+ +| abc | ++------+ +select trim(leading from ' abc ') x from dual; ++-------------+ +| x | ++-------------+ +| abc | ++-------------+ +select trim(trailing from ' abc ') x from dual; ++---------------+ +| x | ++---------------+ +| abc | ++---------------+ +select trim(both from ' abc ') x from dual; ++------+ +| x | ++------+ +| abc | ++------+ +select trim(both '' from ' abc ') x from dual; ++-----------------------+ +| x | ++-----------------------+ +| abc | ++-----------------------+ +select trim(both ' ' from ' abc ') x from dual; ++------+ +| x | ++------+ +| abc | ++------+ +select trim(both 'abc' from 'abcabdefabcabc') x from dual; ++-------+ +| x | ++-------+ +| abdef | ++-------+ +select trim(both ' ' from ' abc ') x from dual; ++------+ +| x | ++------+ +| abc | ++------+ +select trim(both NULL from ' abc ') x from dual; ++------+ +| x | ++------+ +| NULL | ++------+ +select trim(both ' ' from NULL) x from dual; ++------+ +| x | ++------+ +| NULL | ++------+ +select trim(both 1 from 112311) x from dual; ++------+ +| x | ++------+ +| 23 | ++------+ + +select ltrim(' abc ') x from dual; ++------------------+ +| x | ++------------------+ +| abc | ++------------------+ +select ltrim(' ') x from dual; ++------+ +| x | ++------+ +| | ++------+ +select ltrim(NULL) x from dual; ++------+ +| x | ++------+ +| NULL | ++------+ +select rtrim(' abc ') x from dual; ++---------------+ +| x | ++---------------+ +| abc | ++---------------+ +select rtrim(' ') x from dual; ++------+ +| x | ++------+ +| | ++------+ +select rtrim(NULL) x from dual; ++------+ +| x | ++------+ +| NULL | ++------+ + +drop table if exists t1; +drop view if exists v1; +create view v1 as select nullif(trim(repeat('abc', 1+1)), 'a'); +desc v1; ++---------------------------------------+----------+------+-----+---------+-------+ +| Field | Type | Null | Key | Default | Extra | ++---------------------------------------+----------+------+-----+---------+-------+ +| nullif(trim(repeat('abc', 1+1)), 'a') | longtext | NO | | | | ++---------------------------------------+----------+------+-----+---------+-------+ +select * from v1; ++---------------------------------------+ +| nullif(trim(repeat('abc', 1+1)), 'a') | ++---------------------------------------+ +| abcabc | ++---------------------------------------+ + +create table t1(c1 longtext, c2 varchar(100)); +insert into t1 values('abababa', 'a'); +// c1 and c2 will cast to longtext +select trim(leading c2 from c1) from t1; ++--------------------------+ +| trim(leading c2 from c1) | ++--------------------------+ +| bababa | ++--------------------------+ + +drop view v1; +drop table t1; + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_trunc.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_trunc.result new file mode 100644 index 000000000..ca2a40420 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_trunc.result @@ -0,0 +1,28206 @@ +result_format: 4 +explain_protocol: 0 + + +set @@ob_enable_plan_cache = 0; +drop table if exists t1; +create table t1 (c1 int, c2 int unsigned, + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30), c_null int); +insert into t1 values(1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 1, 2, + 3.5, 4.5, + 5.5, 6.5, + 7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '9.5', '10.5', null); +insert into t1 values(-1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -1, 2, + -3.5, 4.5, + -5.5, 6.5, + -7.5, 8.5, + '2019-12-01 12:00:00', '2019-12-03 06:00:00', + '-9.5', '10.5', null); +insert into t1(c1) values(100), (123), (151); +insert into t1(c15) values(100.156), (123.111), (151); +insert into t1(c13) values(100.156), (123.111), (151); + +explain_protocol: 2 +EXPLAIN select truncate(c_null, c_null) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([truncate(cast(t1.c_null, DOUBLE(-1, -1)), cast(t1.c_null, BIGINT(-1, 0)))]), filter(nil), + access([t1.c_null]), partitions(p0) + +select truncate(c_null, c_null) from t1; ++--------------------------+ +| truncate(c_null, c_null) | ++--------------------------+ +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | ++--------------------------+ +EXPLAIN select truncate(1.11, c_null) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([truncate(1.11, cast(t1.c_null, BIGINT(-1, 0)))]), filter(nil), + access([t1.c_null]), partitions(p0) + +select truncate(1.11, c_null) from t1; ++------------------------+ +| truncate(1.11, c_null) | ++------------------------+ +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | ++------------------------+ +EXPLAIN select truncate(c_null, -1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([truncate(cast(t1.c_null, BIGINT(-1, 0)), -1)]), filter(nil), + access([t1.c_null]), partitions(p0) + +select truncate(c_null, -1) from t1; ++----------------------+ +| truncate(c_null, -1) | ++----------------------+ +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | +| NULL | ++----------------------+ + +## truncate(c20, c16) 结果与mysql不一致,cast(c16 as signed)的结果发生变化导致truncate的结果变化 +EXPLAIN select c1, c1, truncate(c1, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c1], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, c1, truncate(c1, c1) from t1; ++------+------+------------------+ +| c1 | c1 | truncate(c1, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| 100 | 100 | 100 | +| 123 | 123 | 123 | +| 151 | 151 | 151 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c2, truncate(c1, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1, c2, truncate(c1, c2) from t1; ++------+------+------------------+ +| c1 | c2 | truncate(c1, c2) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c3, truncate(c1, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c3], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, c3, truncate(c1, c3) from t1; ++------+------+------------------+ +| c1 | c3 | truncate(c1, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c4, truncate(c1, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c4], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c4]), partitions(p0) + +select c1, c4, truncate(c1, c4) from t1; ++------+------+------------------+ +| c1 | c4 | truncate(c1, c4) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c5, truncate(c1, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c5], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c5]), partitions(p0) + +select c1, c5, truncate(c1, c5) from t1; ++------+------+------------------+ +| c1 | c5 | truncate(c1, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c6, truncate(c1, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c6], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c6]), partitions(p0) + +select c1, c6, truncate(c1, c6) from t1; ++------+------+------------------+ +| c1 | c6 | truncate(c1, c6) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c7, truncate(c1, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c7], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c7]), partitions(p0) + +select c1, c7, truncate(c1, c7) from t1; ++------+------+------------------+ +| c1 | c7 | truncate(c1, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c8, truncate(c1, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c8], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c8]), partitions(p0) + +select c1, c8, truncate(c1, c8) from t1; ++------+------+------------------+ +| c1 | c8 | truncate(c1, c8) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c9, truncate(c1, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c9], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c9]), partitions(p0) + +select c1, c9, truncate(c1, c9) from t1; ++------+------+------------------+ +| c1 | c9 | truncate(c1, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c10, truncate(c1, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c10], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c10]), partitions(p0) + +select c1, c10, truncate(c1, c10) from t1; ++------+------+-------------------+ +| c1 | c10 | truncate(c1, c10) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c11, truncate(c1, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c11], [truncate(cast(t1.c1, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c1], [t1.c11]), partitions(p0) + +select c1, c11, truncate(c1, c11) from t1; ++------+------+-------------------+ +| c1 | c11 | truncate(c1, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c12, truncate(c1, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c12], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c12]), partitions(p0) + +select c1, c12, truncate(c1, c12) from t1; ++------+------+-------------------+ +| c1 | c12 | truncate(c1, c12) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c13, truncate(c1, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c13], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c13]), partitions(p0) + +select c1, c13, truncate(c1, c13) from t1; ++------+---------+-------------------+ +| c1 | c13 | truncate(c1, c13) | ++------+---------+-------------------+ +| 1 | 3.5 | 1 | +| -1 | -3.5 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c14, truncate(c1, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c14], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c14]), partitions(p0) + +select c1, c14, truncate(c1, c14) from t1; ++------+------+-------------------+ +| c1 | c14 | truncate(c1, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 1 | +| -1 | 4.5 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c15, truncate(c1, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c15], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c15]), partitions(p0) + +select c1, c15, truncate(c1, c15) from t1; ++------+---------+-------------------+ +| c1 | c15 | truncate(c1, c15) | ++------+---------+-------------------+ +| 1 | 5.5 | 1 | +| -1 | -5.5 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c16, truncate(c1, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c16], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c16]), partitions(p0) + +select c1, c16, truncate(c1, c16) from t1; ++------+------+-------------------+ +| c1 | c16 | truncate(c1, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 1 | +| -1 | 6.5 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c17, truncate(c1, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c17], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c17]), partitions(p0) + +select c1, c17, truncate(c1, c17) from t1; ++------+------+-------------------+ +| c1 | c17 | truncate(c1, c17) | ++------+------+-------------------+ +| 1 | 8 | 1 | +| -1 | -8 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c18, truncate(c1, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c18], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c18]), partitions(p0) + +select c1, c18, truncate(c1, c18) from t1; ++------+------+-------------------+ +| c1 | c18 | truncate(c1, c18) | ++------+------+-------------------+ +| 1 | 9 | 1 | +| -1 | 9 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c19, truncate(c1, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c19], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c19]), partitions(p0) + +select c1, c19, truncate(c1, c19) from t1; ++------+---------------------+-------------------+ +| c1 | c19 | truncate(c1, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c20, truncate(c1, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c20], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c20]), partitions(p0) + +select c1, c20, truncate(c1, c20) from t1; ++------+---------------------+-------------------+ +| c1 | c20 | truncate(c1, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c21, truncate(c1, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c21], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c21]), partitions(p0) + +select c1, c21, truncate(c1, c21) from t1; ++------+------+-------------------+ +| c1 | c21 | truncate(c1, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 1 | +| -1 | -9.5 | -0 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c1, c22, truncate(c1, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c22], [truncate(cast(t1.c1, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c1], [t1.c22]), partitions(p0) + +select c1, c22, truncate(c1, c22) from t1; ++------+------+-------------------+ +| c1 | c22 | truncate(c1, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 1 | +| -1 | 10.5 | -1 | +| 100 | NULL | NULL | +| 123 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [truncate(cast(t1.c1, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c1, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1, truncate(c1, -3), truncate(c1, -2), truncate(c1, -1), truncate(c1, 0), truncate(c1, 1), truncate(c1, 2), truncate(c1, 3), truncate(c1, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c1 | truncate(c1, -3) | truncate(c1, -2) | truncate(c1, -1) | truncate(c1, 0) | truncate(c1, 1) | truncate(c1, 2) | truncate(c1, 3) | truncate(c1, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| 100 | 0 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | +| 123 | 0 | 100 | 120 | 123 | 123 | 123 | 123 | 123 | +| 151 | 0 | 100 | 150 | 151 | 151 | 151 | 151 | 151 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c1, truncate(c2, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c1], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select c2, c1, truncate(c2, c1) from t1; ++------+------+------------------+ +| c2 | c1 | truncate(c2, c1) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c2, truncate(c2, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c2], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, c2, truncate(c2, c2) from t1; ++------+------+------------------+ +| c2 | c2 | truncate(c2, c2) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c3, truncate(c2, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c3], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c3]), partitions(p0) + +select c2, c3, truncate(c2, c3) from t1; ++------+------+------------------+ +| c2 | c3 | truncate(c2, c3) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c4, truncate(c2, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c4], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c4]), partitions(p0) + +select c2, c4, truncate(c2, c4) from t1; ++------+------+------------------+ +| c2 | c4 | truncate(c2, c4) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c5, truncate(c2, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c5], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c5]), partitions(p0) + +select c2, c5, truncate(c2, c5) from t1; ++------+------+------------------+ +| c2 | c5 | truncate(c2, c5) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c6, truncate(c2, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c6], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c6]), partitions(p0) + +select c2, c6, truncate(c2, c6) from t1; ++------+------+------------------+ +| c2 | c6 | truncate(c2, c6) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c7, truncate(c2, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c7], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c7]), partitions(p0) + +select c2, c7, truncate(c2, c7) from t1; ++------+------+------------------+ +| c2 | c7 | truncate(c2, c7) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c8, truncate(c2, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c8], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c8]), partitions(p0) + +select c2, c8, truncate(c2, c8) from t1; ++------+------+------------------+ +| c2 | c8 | truncate(c2, c8) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c9, truncate(c2, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c9], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c9]), partitions(p0) + +select c2, c9, truncate(c2, c9) from t1; ++------+------+------------------+ +| c2 | c9 | truncate(c2, c9) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c10, truncate(c2, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c10], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c10]), partitions(p0) + +select c2, c10, truncate(c2, c10) from t1; ++------+------+-------------------+ +| c2 | c10 | truncate(c2, c10) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c11, truncate(c2, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c11], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), t1.c11)]), filter(nil), + access([t1.c2], [t1.c11]), partitions(p0) + +select c2, c11, truncate(c2, c11) from t1; ++------+------+-------------------+ +| c2 | c11 | truncate(c2, c11) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c12, truncate(c2, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c12], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c12]), partitions(p0) + +select c2, c12, truncate(c2, c12) from t1; ++------+------+-------------------+ +| c2 | c12 | truncate(c2, c12) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c13, truncate(c2, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c13], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c13]), partitions(p0) + +select c2, c13, truncate(c2, c13) from t1; ++------+---------+-------------------+ +| c2 | c13 | truncate(c2, c13) | ++------+---------+-------------------+ +| 2 | 3.5 | 2 | +| 2 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c14, truncate(c2, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c14], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c14]), partitions(p0) + +select c2, c14, truncate(c2, c14) from t1; ++------+------+-------------------+ +| c2 | c14 | truncate(c2, c14) | ++------+------+-------------------+ +| 2 | 4.5 | 2 | +| 2 | 4.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c15, truncate(c2, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c15], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c15]), partitions(p0) + +select c2, c15, truncate(c2, c15) from t1; ++------+---------+-------------------+ +| c2 | c15 | truncate(c2, c15) | ++------+---------+-------------------+ +| 2 | 5.5 | 2 | +| 2 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c16, truncate(c2, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c16], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c16]), partitions(p0) + +select c2, c16, truncate(c2, c16) from t1; ++------+------+-------------------+ +| c2 | c16 | truncate(c2, c16) | ++------+------+-------------------+ +| 2 | 6.5 | 2 | +| 2 | 6.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c17, truncate(c2, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c17], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c17]), partitions(p0) + +select c2, c17, truncate(c2, c17) from t1; ++------+------+-------------------+ +| c2 | c17 | truncate(c2, c17) | ++------+------+-------------------+ +| 2 | 8 | 2 | +| 2 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c18, truncate(c2, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c18], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c18]), partitions(p0) + +select c2, c18, truncate(c2, c18) from t1; ++------+------+-------------------+ +| c2 | c18 | truncate(c2, c18) | ++------+------+-------------------+ +| 2 | 9 | 2 | +| 2 | 9 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c19, truncate(c2, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c19], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c19]), partitions(p0) + +select c2, c19, truncate(c2, c19) from t1; ++------+---------------------+-------------------+ +| c2 | c19 | truncate(c2, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c20, truncate(c2, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c20], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c20]), partitions(p0) + +select c2, c20, truncate(c2, c20) from t1; ++------+---------------------+-------------------+ +| c2 | c20 | truncate(c2, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c21, truncate(c2, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c21], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c21]), partitions(p0) + +select c2, c21, truncate(c2, c21) from t1; ++------+------+-------------------+ +| c2 | c21 | truncate(c2, c21) | ++------+------+-------------------+ +| 2 | 9.5 | 2 | +| 2 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c2, c22, truncate(c2, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c22], [truncate(cast(t1.c2, DOUBLE UNSIGNED(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c2], [t1.c22]), partitions(p0) + +select c2, c22, truncate(c2, c22) from t1; ++------+------+-------------------+ +| c2 | c22 | truncate(c2, c22) | ++------+------+-------------------+ +| 2 | 10.5 | 2 | +| 2 | 10.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c2, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c2]), partitions(p0) + +select c2, truncate(c2, -3), truncate(c2, -2), truncate(c2, -1), truncate(c2, 0), truncate(c2, 1), truncate(c2, 2), truncate(c2, 3), truncate(c2, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c2 | truncate(c2, -3) | truncate(c2, -2) | truncate(c2, -1) | truncate(c2, 0) | truncate(c2, 1) | truncate(c2, 2) | truncate(c2, 3) | truncate(c2, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c1, truncate(c3, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c1], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + +select c3, c1, truncate(c3, c1) from t1; ++------+------+------------------+ +| c3 | c1 | truncate(c3, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c2, truncate(c3, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c2], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c2]), partitions(p0) + +select c3, c2, truncate(c3, c2) from t1; ++------+------+------------------+ +| c3 | c2 | truncate(c3, c2) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c3, truncate(c3, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c3], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, c3, truncate(c3, c3) from t1; ++------+------+------------------+ +| c3 | c3 | truncate(c3, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c4, truncate(c3, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c4], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c4]), partitions(p0) + +select c3, c4, truncate(c3, c4) from t1; ++------+------+------------------+ +| c3 | c4 | truncate(c3, c4) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c5, truncate(c3, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c5], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c5]), partitions(p0) + +select c3, c5, truncate(c3, c5) from t1; ++------+------+------------------+ +| c3 | c5 | truncate(c3, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c6, truncate(c3, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c6], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c6]), partitions(p0) + +select c3, c6, truncate(c3, c6) from t1; ++------+------+------------------+ +| c3 | c6 | truncate(c3, c6) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c7, truncate(c3, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c7], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c7]), partitions(p0) + +select c3, c7, truncate(c3, c7) from t1; ++------+------+------------------+ +| c3 | c7 | truncate(c3, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c8, truncate(c3, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c8], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c8]), partitions(p0) + +select c3, c8, truncate(c3, c8) from t1; ++------+------+------------------+ +| c3 | c8 | truncate(c3, c8) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c9, truncate(c3, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c9], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c9]), partitions(p0) + +select c3, c9, truncate(c3, c9) from t1; ++------+------+------------------+ +| c3 | c9 | truncate(c3, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c10, truncate(c3, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c10], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c10]), partitions(p0) + +select c3, c10, truncate(c3, c10) from t1; ++------+------+-------------------+ +| c3 | c10 | truncate(c3, c10) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c11, truncate(c3, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c11], [truncate(cast(t1.c3, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c3], [t1.c11]), partitions(p0) + +select c3, c11, truncate(c3, c11) from t1; ++------+------+-------------------+ +| c3 | c11 | truncate(c3, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c12, truncate(c3, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c12], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c12]), partitions(p0) + +select c3, c12, truncate(c3, c12) from t1; ++------+------+-------------------+ +| c3 | c12 | truncate(c3, c12) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c13, truncate(c3, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c13], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c13]), partitions(p0) + +select c3, c13, truncate(c3, c13) from t1; ++------+---------+-------------------+ +| c3 | c13 | truncate(c3, c13) | ++------+---------+-------------------+ +| 1 | 3.5 | 1 | +| -1 | -3.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c14, truncate(c3, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c14], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c14]), partitions(p0) + +select c3, c14, truncate(c3, c14) from t1; ++------+------+-------------------+ +| c3 | c14 | truncate(c3, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 1 | +| -1 | 4.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c15, truncate(c3, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c15], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c15]), partitions(p0) + +select c3, c15, truncate(c3, c15) from t1; ++------+---------+-------------------+ +| c3 | c15 | truncate(c3, c15) | ++------+---------+-------------------+ +| 1 | 5.5 | 1 | +| -1 | -5.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c16, truncate(c3, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c16], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c16]), partitions(p0) + +select c3, c16, truncate(c3, c16) from t1; ++------+------+-------------------+ +| c3 | c16 | truncate(c3, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 1 | +| -1 | 6.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c17, truncate(c3, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c17], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c17]), partitions(p0) + +select c3, c17, truncate(c3, c17) from t1; ++------+------+-------------------+ +| c3 | c17 | truncate(c3, c17) | ++------+------+-------------------+ +| 1 | 8 | 1 | +| -1 | -8 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c18, truncate(c3, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c18], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c18]), partitions(p0) + +select c3, c18, truncate(c3, c18) from t1; ++------+------+-------------------+ +| c3 | c18 | truncate(c3, c18) | ++------+------+-------------------+ +| 1 | 9 | 1 | +| -1 | 9 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c19, truncate(c3, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c19], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c19]), partitions(p0) + +select c3, c19, truncate(c3, c19) from t1; ++------+---------------------+-------------------+ +| c3 | c19 | truncate(c3, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c20, truncate(c3, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c20], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c20]), partitions(p0) + +select c3, c20, truncate(c3, c20) from t1; ++------+---------------------+-------------------+ +| c3 | c20 | truncate(c3, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c21, truncate(c3, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c21], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c21]), partitions(p0) + +select c3, c21, truncate(c3, c21) from t1; ++------+------+-------------------+ +| c3 | c21 | truncate(c3, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 1 | +| -1 | -9.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c3, c22, truncate(c3, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [t1.c22], [truncate(cast(t1.c3, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c3], [t1.c22]), partitions(p0) + +select c3, c22, truncate(c3, c22) from t1; ++------+------+-------------------+ +| c3 | c22 | truncate(c3, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 1 | +| -1 | 10.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c3], [truncate(cast(t1.c3, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c3, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c3]), partitions(p0) + +select c3, truncate(c3, -3), truncate(c3, -2), truncate(c3, -1), truncate(c3, 0), truncate(c3, 1), truncate(c3, 2), truncate(c3, 3), truncate(c3, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c3 | truncate(c3, -3) | truncate(c3, -2) | truncate(c3, -1) | truncate(c3, 0) | truncate(c3, 1) | truncate(c3, 2) | truncate(c3, 3) | truncate(c3, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c1, truncate(c4, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c1], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c1]), partitions(p0) + +select c4, c1, truncate(c4, c1) from t1; ++------+------+------------------+ +| c4 | c1 | truncate(c4, c1) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c2, truncate(c4, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c2], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c2]), partitions(p0) + +select c4, c2, truncate(c4, c2) from t1; ++------+------+------------------+ +| c4 | c2 | truncate(c4, c2) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c3, truncate(c4, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c3], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c3]), partitions(p0) + +select c4, c3, truncate(c4, c3) from t1; ++------+------+------------------+ +| c4 | c3 | truncate(c4, c3) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c4, truncate(c4, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c4], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, c4, truncate(c4, c4) from t1; ++------+------+------------------+ +| c4 | c4 | truncate(c4, c4) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c5, truncate(c4, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c5], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c5]), partitions(p0) + +select c4, c5, truncate(c4, c5) from t1; ++------+------+------------------+ +| c4 | c5 | truncate(c4, c5) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c6, truncate(c4, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c6], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c6]), partitions(p0) + +select c4, c6, truncate(c4, c6) from t1; ++------+------+------------------+ +| c4 | c6 | truncate(c4, c6) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c7, truncate(c4, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c7], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c7]), partitions(p0) + +select c4, c7, truncate(c4, c7) from t1; ++------+------+------------------+ +| c4 | c7 | truncate(c4, c7) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c8, truncate(c4, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c8], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c8]), partitions(p0) + +select c4, c8, truncate(c4, c8) from t1; ++------+------+------------------+ +| c4 | c8 | truncate(c4, c8) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c9, truncate(c4, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c9], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c9]), partitions(p0) + +select c4, c9, truncate(c4, c9) from t1; ++------+------+------------------+ +| c4 | c9 | truncate(c4, c9) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c10, truncate(c4, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c10], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c10]), partitions(p0) + +select c4, c10, truncate(c4, c10) from t1; ++------+------+-------------------+ +| c4 | c10 | truncate(c4, c10) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c11, truncate(c4, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c11], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), t1.c11)]), filter(nil), + access([t1.c4], [t1.c11]), partitions(p0) + +select c4, c11, truncate(c4, c11) from t1; ++------+------+-------------------+ +| c4 | c11 | truncate(c4, c11) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c12, truncate(c4, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c12], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c12]), partitions(p0) + +select c4, c12, truncate(c4, c12) from t1; ++------+------+-------------------+ +| c4 | c12 | truncate(c4, c12) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c13, truncate(c4, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c13], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c13]), partitions(p0) + +select c4, c13, truncate(c4, c13) from t1; ++------+---------+-------------------+ +| c4 | c13 | truncate(c4, c13) | ++------+---------+-------------------+ +| 2 | 3.5 | 2 | +| 2 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c14, truncate(c4, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c14], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c14]), partitions(p0) + +select c4, c14, truncate(c4, c14) from t1; ++------+------+-------------------+ +| c4 | c14 | truncate(c4, c14) | ++------+------+-------------------+ +| 2 | 4.5 | 2 | +| 2 | 4.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c15, truncate(c4, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c15], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c15]), partitions(p0) + +select c4, c15, truncate(c4, c15) from t1; ++------+---------+-------------------+ +| c4 | c15 | truncate(c4, c15) | ++------+---------+-------------------+ +| 2 | 5.5 | 2 | +| 2 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c16, truncate(c4, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c16], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c16]), partitions(p0) + +select c4, c16, truncate(c4, c16) from t1; ++------+------+-------------------+ +| c4 | c16 | truncate(c4, c16) | ++------+------+-------------------+ +| 2 | 6.5 | 2 | +| 2 | 6.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c17, truncate(c4, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c17], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c17]), partitions(p0) + +select c4, c17, truncate(c4, c17) from t1; ++------+------+-------------------+ +| c4 | c17 | truncate(c4, c17) | ++------+------+-------------------+ +| 2 | 8 | 2 | +| 2 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c18, truncate(c4, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c18], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c18]), partitions(p0) + +select c4, c18, truncate(c4, c18) from t1; ++------+------+-------------------+ +| c4 | c18 | truncate(c4, c18) | ++------+------+-------------------+ +| 2 | 9 | 2 | +| 2 | 9 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c19, truncate(c4, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c19], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c19]), partitions(p0) + +select c4, c19, truncate(c4, c19) from t1; ++------+---------------------+-------------------+ +| c4 | c19 | truncate(c4, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c20, truncate(c4, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c20], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c20]), partitions(p0) + +select c4, c20, truncate(c4, c20) from t1; ++------+---------------------+-------------------+ +| c4 | c20 | truncate(c4, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c21, truncate(c4, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c21], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c21]), partitions(p0) + +select c4, c21, truncate(c4, c21) from t1; ++------+------+-------------------+ +| c4 | c21 | truncate(c4, c21) | ++------+------+-------------------+ +| 2 | 9.5 | 2 | +| 2 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c4, c22, truncate(c4, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [t1.c22], [truncate(cast(t1.c4, DOUBLE UNSIGNED(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c4], [t1.c22]), partitions(p0) + +select c4, c22, truncate(c4, c22) from t1; ++------+------+-------------------+ +| c4 | c22 | truncate(c4, c22) | ++------+------+-------------------+ +| 2 | 10.5 | 2 | +| 2 | 10.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c4], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c4, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c4]), partitions(p0) + +select c4, truncate(c4, -3), truncate(c4, -2), truncate(c4, -1), truncate(c4, 0), truncate(c4, 1), truncate(c4, 2), truncate(c4, 3), truncate(c4, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c4 | truncate(c4, -3) | truncate(c4, -2) | truncate(c4, -1) | truncate(c4, 0) | truncate(c4, 1) | truncate(c4, 2) | truncate(c4, 3) | truncate(c4, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c1, truncate(c5, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c1], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c1]), partitions(p0) + +select c5, c1, truncate(c5, c1) from t1; ++------+------+------------------+ +| c5 | c1 | truncate(c5, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c2, truncate(c5, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c2], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c2]), partitions(p0) + +select c5, c2, truncate(c5, c2) from t1; ++------+------+------------------+ +| c5 | c2 | truncate(c5, c2) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c3, truncate(c5, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c3], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c3]), partitions(p0) + +select c5, c3, truncate(c5, c3) from t1; ++------+------+------------------+ +| c5 | c3 | truncate(c5, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c4, truncate(c5, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c4], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c4]), partitions(p0) + +select c5, c4, truncate(c5, c4) from t1; ++------+------+------------------+ +| c5 | c4 | truncate(c5, c4) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c5, truncate(c5, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c5], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, c5, truncate(c5, c5) from t1; ++------+------+------------------+ +| c5 | c5 | truncate(c5, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c6, truncate(c5, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c6], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c6]), partitions(p0) + +select c5, c6, truncate(c5, c6) from t1; ++------+------+------------------+ +| c5 | c6 | truncate(c5, c6) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c7, truncate(c5, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c7], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c7]), partitions(p0) + +select c5, c7, truncate(c5, c7) from t1; ++------+------+------------------+ +| c5 | c7 | truncate(c5, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c8, truncate(c5, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c8], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c8]), partitions(p0) + +select c5, c8, truncate(c5, c8) from t1; ++------+------+------------------+ +| c5 | c8 | truncate(c5, c8) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c9, truncate(c5, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c9], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c9]), partitions(p0) + +select c5, c9, truncate(c5, c9) from t1; ++------+------+------------------+ +| c5 | c9 | truncate(c5, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c10, truncate(c5, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c10], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c10]), partitions(p0) + +select c5, c10, truncate(c5, c10) from t1; ++------+------+-------------------+ +| c5 | c10 | truncate(c5, c10) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c11, truncate(c5, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c11], [truncate(cast(t1.c5, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c5], [t1.c11]), partitions(p0) + +select c5, c11, truncate(c5, c11) from t1; ++------+------+-------------------+ +| c5 | c11 | truncate(c5, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c12, truncate(c5, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c12], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c12]), partitions(p0) + +select c5, c12, truncate(c5, c12) from t1; ++------+------+-------------------+ +| c5 | c12 | truncate(c5, c12) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c13, truncate(c5, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c13], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c13]), partitions(p0) + +select c5, c13, truncate(c5, c13) from t1; ++------+---------+-------------------+ +| c5 | c13 | truncate(c5, c13) | ++------+---------+-------------------+ +| 1 | 3.5 | 1 | +| -1 | -3.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c14, truncate(c5, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c14], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c14]), partitions(p0) + +select c5, c14, truncate(c5, c14) from t1; ++------+------+-------------------+ +| c5 | c14 | truncate(c5, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 1 | +| -1 | 4.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c15, truncate(c5, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c15], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c15]), partitions(p0) + +select c5, c15, truncate(c5, c15) from t1; ++------+---------+-------------------+ +| c5 | c15 | truncate(c5, c15) | ++------+---------+-------------------+ +| 1 | 5.5 | 1 | +| -1 | -5.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c16, truncate(c5, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c16], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c16]), partitions(p0) + +select c5, c16, truncate(c5, c16) from t1; ++------+------+-------------------+ +| c5 | c16 | truncate(c5, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 1 | +| -1 | 6.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c17, truncate(c5, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c17], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c17]), partitions(p0) + +select c5, c17, truncate(c5, c17) from t1; ++------+------+-------------------+ +| c5 | c17 | truncate(c5, c17) | ++------+------+-------------------+ +| 1 | 8 | 1 | +| -1 | -8 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c18, truncate(c5, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c18], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c18]), partitions(p0) + +select c5, c18, truncate(c5, c18) from t1; ++------+------+-------------------+ +| c5 | c18 | truncate(c5, c18) | ++------+------+-------------------+ +| 1 | 9 | 1 | +| -1 | 9 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c19, truncate(c5, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c19], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c19]), partitions(p0) + +select c5, c19, truncate(c5, c19) from t1; ++------+---------------------+-------------------+ +| c5 | c19 | truncate(c5, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c20, truncate(c5, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c20], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c20]), partitions(p0) + +select c5, c20, truncate(c5, c20) from t1; ++------+---------------------+-------------------+ +| c5 | c20 | truncate(c5, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c21, truncate(c5, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c21], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c21]), partitions(p0) + +select c5, c21, truncate(c5, c21) from t1; ++------+------+-------------------+ +| c5 | c21 | truncate(c5, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 1 | +| -1 | -9.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c5, c22, truncate(c5, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [t1.c22], [truncate(cast(t1.c5, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c5], [t1.c22]), partitions(p0) + +select c5, c22, truncate(c5, c22) from t1; ++------+------+-------------------+ +| c5 | c22 | truncate(c5, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 1 | +| -1 | 10.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c5], [truncate(cast(t1.c5, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c5, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c5]), partitions(p0) + +select c5, truncate(c5, -3), truncate(c5, -2), truncate(c5, -1), truncate(c5, 0), truncate(c5, 1), truncate(c5, 2), truncate(c5, 3), truncate(c5, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c5 | truncate(c5, -3) | truncate(c5, -2) | truncate(c5, -1) | truncate(c5, 0) | truncate(c5, 1) | truncate(c5, 2) | truncate(c5, 3) | truncate(c5, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c1, truncate(c6, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c1], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c1]), partitions(p0) + +select c6, c1, truncate(c6, c1) from t1; ++------+------+------------------+ +| c6 | c1 | truncate(c6, c1) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c2, truncate(c6, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c2], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c2]), partitions(p0) + +select c6, c2, truncate(c6, c2) from t1; ++------+------+------------------+ +| c6 | c2 | truncate(c6, c2) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c3, truncate(c6, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c3], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c3]), partitions(p0) + +select c6, c3, truncate(c6, c3) from t1; ++------+------+------------------+ +| c6 | c3 | truncate(c6, c3) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c4, truncate(c6, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c4], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c4]), partitions(p0) + +select c6, c4, truncate(c6, c4) from t1; ++------+------+------------------+ +| c6 | c4 | truncate(c6, c4) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c5, truncate(c6, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c5], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c5]), partitions(p0) + +select c6, c5, truncate(c6, c5) from t1; ++------+------+------------------+ +| c6 | c5 | truncate(c6, c5) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c6, truncate(c6, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c6], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, c6, truncate(c6, c6) from t1; ++------+------+------------------+ +| c6 | c6 | truncate(c6, c6) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c7, truncate(c6, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c7], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c7]), partitions(p0) + +select c6, c7, truncate(c6, c7) from t1; ++------+------+------------------+ +| c6 | c7 | truncate(c6, c7) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c8, truncate(c6, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c8], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c8]), partitions(p0) + +select c6, c8, truncate(c6, c8) from t1; ++------+------+------------------+ +| c6 | c8 | truncate(c6, c8) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c9, truncate(c6, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c9], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c9]), partitions(p0) + +select c6, c9, truncate(c6, c9) from t1; ++------+------+------------------+ +| c6 | c9 | truncate(c6, c9) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c10, truncate(c6, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c10], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c10]), partitions(p0) + +select c6, c10, truncate(c6, c10) from t1; ++------+------+-------------------+ +| c6 | c10 | truncate(c6, c10) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c11, truncate(c6, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c11], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), t1.c11)]), filter(nil), + access([t1.c6], [t1.c11]), partitions(p0) + +select c6, c11, truncate(c6, c11) from t1; ++------+------+-------------------+ +| c6 | c11 | truncate(c6, c11) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c12, truncate(c6, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c12], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c12]), partitions(p0) + +select c6, c12, truncate(c6, c12) from t1; ++------+------+-------------------+ +| c6 | c12 | truncate(c6, c12) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c13, truncate(c6, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c13], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c13]), partitions(p0) + +select c6, c13, truncate(c6, c13) from t1; ++------+---------+-------------------+ +| c6 | c13 | truncate(c6, c13) | ++------+---------+-------------------+ +| 2 | 3.5 | 2 | +| 2 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c14, truncate(c6, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c14], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c14]), partitions(p0) + +select c6, c14, truncate(c6, c14) from t1; ++------+------+-------------------+ +| c6 | c14 | truncate(c6, c14) | ++------+------+-------------------+ +| 2 | 4.5 | 2 | +| 2 | 4.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c15, truncate(c6, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c15], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c15]), partitions(p0) + +select c6, c15, truncate(c6, c15) from t1; ++------+---------+-------------------+ +| c6 | c15 | truncate(c6, c15) | ++------+---------+-------------------+ +| 2 | 5.5 | 2 | +| 2 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c16, truncate(c6, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c16], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c16]), partitions(p0) + +select c6, c16, truncate(c6, c16) from t1; ++------+------+-------------------+ +| c6 | c16 | truncate(c6, c16) | ++------+------+-------------------+ +| 2 | 6.5 | 2 | +| 2 | 6.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c17, truncate(c6, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c17], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c17]), partitions(p0) + +select c6, c17, truncate(c6, c17) from t1; ++------+------+-------------------+ +| c6 | c17 | truncate(c6, c17) | ++------+------+-------------------+ +| 2 | 8 | 2 | +| 2 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c18, truncate(c6, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c18], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c18]), partitions(p0) + +select c6, c18, truncate(c6, c18) from t1; ++------+------+-------------------+ +| c6 | c18 | truncate(c6, c18) | ++------+------+-------------------+ +| 2 | 9 | 2 | +| 2 | 9 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c19, truncate(c6, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c19], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c19]), partitions(p0) + +select c6, c19, truncate(c6, c19) from t1; ++------+---------------------+-------------------+ +| c6 | c19 | truncate(c6, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c20, truncate(c6, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c20], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c20]), partitions(p0) + +select c6, c20, truncate(c6, c20) from t1; ++------+---------------------+-------------------+ +| c6 | c20 | truncate(c6, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c21, truncate(c6, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c21], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c21]), partitions(p0) + +select c6, c21, truncate(c6, c21) from t1; ++------+------+-------------------+ +| c6 | c21 | truncate(c6, c21) | ++------+------+-------------------+ +| 2 | 9.5 | 2 | +| 2 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c6, c22, truncate(c6, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [t1.c22], [truncate(cast(t1.c6, DOUBLE UNSIGNED(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c6], [t1.c22]), partitions(p0) + +select c6, c22, truncate(c6, c22) from t1; ++------+------+-------------------+ +| c6 | c22 | truncate(c6, c22) | ++------+------+-------------------+ +| 2 | 10.5 | 2 | +| 2 | 10.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c6], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c6, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c6]), partitions(p0) + +select c6, truncate(c6, -3), truncate(c6, -2), truncate(c6, -1), truncate(c6, 0), truncate(c6, 1), truncate(c6, 2), truncate(c6, 3), truncate(c6, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c6 | truncate(c6, -3) | truncate(c6, -2) | truncate(c6, -1) | truncate(c6, 0) | truncate(c6, 1) | truncate(c6, 2) | truncate(c6, 3) | truncate(c6, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c1, truncate(c7, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c1], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c1]), partitions(p0) + +select c7, c1, truncate(c7, c1) from t1; ++------+------+------------------+ +| c7 | c1 | truncate(c7, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c2, truncate(c7, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c2], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c2]), partitions(p0) + +select c7, c2, truncate(c7, c2) from t1; ++------+------+------------------+ +| c7 | c2 | truncate(c7, c2) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c3, truncate(c7, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c3], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c3]), partitions(p0) + +select c7, c3, truncate(c7, c3) from t1; ++------+------+------------------+ +| c7 | c3 | truncate(c7, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c4, truncate(c7, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c4], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c4]), partitions(p0) + +select c7, c4, truncate(c7, c4) from t1; ++------+------+------------------+ +| c7 | c4 | truncate(c7, c4) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c5, truncate(c7, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c5], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c5]), partitions(p0) + +select c7, c5, truncate(c7, c5) from t1; ++------+------+------------------+ +| c7 | c5 | truncate(c7, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c6, truncate(c7, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c6], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c6]), partitions(p0) + +select c7, c6, truncate(c7, c6) from t1; ++------+------+------------------+ +| c7 | c6 | truncate(c7, c6) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c7, truncate(c7, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c7], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, c7, truncate(c7, c7) from t1; ++------+------+------------------+ +| c7 | c7 | truncate(c7, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c8, truncate(c7, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c8], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c8]), partitions(p0) + +select c7, c8, truncate(c7, c8) from t1; ++------+------+------------------+ +| c7 | c8 | truncate(c7, c8) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c9, truncate(c7, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c9], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c9]), partitions(p0) + +select c7, c9, truncate(c7, c9) from t1; ++------+------+------------------+ +| c7 | c9 | truncate(c7, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c10, truncate(c7, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c10], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c10]), partitions(p0) + +select c7, c10, truncate(c7, c10) from t1; ++------+------+-------------------+ +| c7 | c10 | truncate(c7, c10) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c11, truncate(c7, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c11], [truncate(cast(t1.c7, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c7], [t1.c11]), partitions(p0) + +select c7, c11, truncate(c7, c11) from t1; ++------+------+-------------------+ +| c7 | c11 | truncate(c7, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c12, truncate(c7, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c12], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c12]), partitions(p0) + +select c7, c12, truncate(c7, c12) from t1; ++------+------+-------------------+ +| c7 | c12 | truncate(c7, c12) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c13, truncate(c7, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c13], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c13]), partitions(p0) + +select c7, c13, truncate(c7, c13) from t1; ++------+---------+-------------------+ +| c7 | c13 | truncate(c7, c13) | ++------+---------+-------------------+ +| 1 | 3.5 | 1 | +| -1 | -3.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c14, truncate(c7, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c14], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c14]), partitions(p0) + +select c7, c14, truncate(c7, c14) from t1; ++------+------+-------------------+ +| c7 | c14 | truncate(c7, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 1 | +| -1 | 4.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c15, truncate(c7, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c15], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c15]), partitions(p0) + +select c7, c15, truncate(c7, c15) from t1; ++------+---------+-------------------+ +| c7 | c15 | truncate(c7, c15) | ++------+---------+-------------------+ +| 1 | 5.5 | 1 | +| -1 | -5.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c16, truncate(c7, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c16], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c16]), partitions(p0) + +select c7, c16, truncate(c7, c16) from t1; ++------+------+-------------------+ +| c7 | c16 | truncate(c7, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 1 | +| -1 | 6.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c17, truncate(c7, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c17], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c17]), partitions(p0) + +select c7, c17, truncate(c7, c17) from t1; ++------+------+-------------------+ +| c7 | c17 | truncate(c7, c17) | ++------+------+-------------------+ +| 1 | 8 | 1 | +| -1 | -8 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c18, truncate(c7, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c18], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c18]), partitions(p0) + +select c7, c18, truncate(c7, c18) from t1; ++------+------+-------------------+ +| c7 | c18 | truncate(c7, c18) | ++------+------+-------------------+ +| 1 | 9 | 1 | +| -1 | 9 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c19, truncate(c7, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c19], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c19]), partitions(p0) + +select c7, c19, truncate(c7, c19) from t1; ++------+---------------------+-------------------+ +| c7 | c19 | truncate(c7, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c20, truncate(c7, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c20], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c20]), partitions(p0) + +select c7, c20, truncate(c7, c20) from t1; ++------+---------------------+-------------------+ +| c7 | c20 | truncate(c7, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c21, truncate(c7, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c21], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c21]), partitions(p0) + +select c7, c21, truncate(c7, c21) from t1; ++------+------+-------------------+ +| c7 | c21 | truncate(c7, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 1 | +| -1 | -9.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c7, c22, truncate(c7, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [t1.c22], [truncate(cast(t1.c7, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c7], [t1.c22]), partitions(p0) + +select c7, c22, truncate(c7, c22) from t1; ++------+------+-------------------+ +| c7 | c22 | truncate(c7, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 1 | +| -1 | 10.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c7], [truncate(cast(t1.c7, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c7, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c7]), partitions(p0) + +select c7, truncate(c7, -3), truncate(c7, -2), truncate(c7, -1), truncate(c7, 0), truncate(c7, 1), truncate(c7, 2), truncate(c7, 3), truncate(c7, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c7 | truncate(c7, -3) | truncate(c7, -2) | truncate(c7, -1) | truncate(c7, 0) | truncate(c7, 1) | truncate(c7, 2) | truncate(c7, 3) | truncate(c7, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c1, truncate(c8, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c1], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c1]), partitions(p0) + +select c8, c1, truncate(c8, c1) from t1; ++------+------+------------------+ +| c8 | c1 | truncate(c8, c1) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c2, truncate(c8, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c2], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c2]), partitions(p0) + +select c8, c2, truncate(c8, c2) from t1; ++------+------+------------------+ +| c8 | c2 | truncate(c8, c2) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c3, truncate(c8, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c3], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c3]), partitions(p0) + +select c8, c3, truncate(c8, c3) from t1; ++------+------+------------------+ +| c8 | c3 | truncate(c8, c3) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c4, truncate(c8, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c4], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c4]), partitions(p0) + +select c8, c4, truncate(c8, c4) from t1; ++------+------+------------------+ +| c8 | c4 | truncate(c8, c4) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c5, truncate(c8, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c5], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c5]), partitions(p0) + +select c8, c5, truncate(c8, c5) from t1; ++------+------+------------------+ +| c8 | c5 | truncate(c8, c5) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c6, truncate(c8, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c6], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c6]), partitions(p0) + +select c8, c6, truncate(c8, c6) from t1; ++------+------+------------------+ +| c8 | c6 | truncate(c8, c6) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c7, truncate(c8, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c7], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c7]), partitions(p0) + +select c8, c7, truncate(c8, c7) from t1; ++------+------+------------------+ +| c8 | c7 | truncate(c8, c7) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c8, truncate(c8, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c8], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, c8, truncate(c8, c8) from t1; ++------+------+------------------+ +| c8 | c8 | truncate(c8, c8) | ++------+------+------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c9, truncate(c8, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c9], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c9]), partitions(p0) + +select c8, c9, truncate(c8, c9) from t1; ++------+------+------------------+ +| c8 | c9 | truncate(c8, c9) | ++------+------+------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c10, truncate(c8, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c10], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c10]), partitions(p0) + +select c8, c10, truncate(c8, c10) from t1; ++------+------+-------------------+ +| c8 | c10 | truncate(c8, c10) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c11, truncate(c8, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c11], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), t1.c11)]), filter(nil), + access([t1.c8], [t1.c11]), partitions(p0) + +select c8, c11, truncate(c8, c11) from t1; ++------+------+-------------------+ +| c8 | c11 | truncate(c8, c11) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c12, truncate(c8, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c12], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c12]), partitions(p0) + +select c8, c12, truncate(c8, c12) from t1; ++------+------+-------------------+ +| c8 | c12 | truncate(c8, c12) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c13, truncate(c8, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c13], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c13]), partitions(p0) + +select c8, c13, truncate(c8, c13) from t1; ++------+---------+-------------------+ +| c8 | c13 | truncate(c8, c13) | ++------+---------+-------------------+ +| 2 | 3.5 | 2 | +| 2 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c14, truncate(c8, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c14], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c14]), partitions(p0) + +select c8, c14, truncate(c8, c14) from t1; ++------+------+-------------------+ +| c8 | c14 | truncate(c8, c14) | ++------+------+-------------------+ +| 2 | 4.5 | 2 | +| 2 | 4.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c15, truncate(c8, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c15], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c15]), partitions(p0) + +select c8, c15, truncate(c8, c15) from t1; ++------+---------+-------------------+ +| c8 | c15 | truncate(c8, c15) | ++------+---------+-------------------+ +| 2 | 5.5 | 2 | +| 2 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c16, truncate(c8, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c16], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c16]), partitions(p0) + +select c8, c16, truncate(c8, c16) from t1; ++------+------+-------------------+ +| c8 | c16 | truncate(c8, c16) | ++------+------+-------------------+ +| 2 | 6.5 | 2 | +| 2 | 6.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c17, truncate(c8, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c17], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c17]), partitions(p0) + +select c8, c17, truncate(c8, c17) from t1; ++------+------+-------------------+ +| c8 | c17 | truncate(c8, c17) | ++------+------+-------------------+ +| 2 | 8 | 2 | +| 2 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c18, truncate(c8, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c18], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c18]), partitions(p0) + +select c8, c18, truncate(c8, c18) from t1; ++------+------+-------------------+ +| c8 | c18 | truncate(c8, c18) | ++------+------+-------------------+ +| 2 | 9 | 2 | +| 2 | 9 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c19, truncate(c8, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c19], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c19]), partitions(p0) + +select c8, c19, truncate(c8, c19) from t1; ++------+---------------------+-------------------+ +| c8 | c19 | truncate(c8, c19) | ++------+---------------------+-------------------+ +| 2 | 2019-12-01 12:00:00 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c20, truncate(c8, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c20], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c20]), partitions(p0) + +select c8, c20, truncate(c8, c20) from t1; ++------+---------------------+-------------------+ +| c8 | c20 | truncate(c8, c20) | ++------+---------------------+-------------------+ +| 2 | 2019-12-03 06:00:00 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c21, truncate(c8, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c21], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c21]), partitions(p0) + +select c8, c21, truncate(c8, c21) from t1; ++------+------+-------------------+ +| c8 | c21 | truncate(c8, c21) | ++------+------+-------------------+ +| 2 | 9.5 | 2 | +| 2 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c8, c22, truncate(c8, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [t1.c22], [truncate(cast(t1.c8, DOUBLE UNSIGNED(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c8], [t1.c22]), partitions(p0) + +select c8, c22, truncate(c8, c22) from t1; ++------+------+-------------------+ +| c8 | c22 | truncate(c8, c22) | ++------+------+-------------------+ +| 2 | 10.5 | 2 | +| 2 | 10.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c8], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c8, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c8]), partitions(p0) + +select c8, truncate(c8, -3), truncate(c8, -2), truncate(c8, -1), truncate(c8, 0), truncate(c8, 1), truncate(c8, 2), truncate(c8, 3), truncate(c8, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c8 | truncate(c8, -3) | truncate(c8, -2) | truncate(c8, -1) | truncate(c8, 0) | truncate(c8, 1) | truncate(c8, 2) | truncate(c8, 3) | truncate(c8, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c1, truncate(c9, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c1], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c1]), partitions(p0) + +select c9, c1, truncate(c9, c1) from t1; ++------+------+------------------+ +| c9 | c1 | truncate(c9, c1) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c2, truncate(c9, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c2], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c2]), partitions(p0) + +select c9, c2, truncate(c9, c2) from t1; ++------+------+------------------+ +| c9 | c2 | truncate(c9, c2) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c3, truncate(c9, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c3], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c3]), partitions(p0) + +select c9, c3, truncate(c9, c3) from t1; ++------+------+------------------+ +| c9 | c3 | truncate(c9, c3) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c4, truncate(c9, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c4], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c4]), partitions(p0) + +select c9, c4, truncate(c9, c4) from t1; ++------+------+------------------+ +| c9 | c4 | truncate(c9, c4) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c5, truncate(c9, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c5], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c5]), partitions(p0) + +select c9, c5, truncate(c9, c5) from t1; ++------+------+------------------+ +| c9 | c5 | truncate(c9, c5) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c6, truncate(c9, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c6], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c6]), partitions(p0) + +select c9, c6, truncate(c9, c6) from t1; ++------+------+------------------+ +| c9 | c6 | truncate(c9, c6) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c7, truncate(c9, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c7], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c7]), partitions(p0) + +select c9, c7, truncate(c9, c7) from t1; ++------+------+------------------+ +| c9 | c7 | truncate(c9, c7) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c8, truncate(c9, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c8], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c8]), partitions(p0) + +select c9, c8, truncate(c9, c8) from t1; ++------+------+------------------+ +| c9 | c8 | truncate(c9, c8) | ++------+------+------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c9, truncate(c9, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c9], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, c9, truncate(c9, c9) from t1; ++------+------+------------------+ +| c9 | c9 | truncate(c9, c9) | ++------+------+------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c10, truncate(c9, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c10], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c10]), partitions(p0) + +select c9, c10, truncate(c9, c10) from t1; ++------+------+-------------------+ +| c9 | c10 | truncate(c9, c10) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c11, truncate(c9, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c11], [truncate(cast(t1.c9, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c9], [t1.c11]), partitions(p0) + +select c9, c11, truncate(c9, c11) from t1; ++------+------+-------------------+ +| c9 | c11 | truncate(c9, c11) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c12, truncate(c9, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c12], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c12]), partitions(p0) + +select c9, c12, truncate(c9, c12) from t1; ++------+------+-------------------+ +| c9 | c12 | truncate(c9, c12) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c13, truncate(c9, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c13], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c13]), partitions(p0) + +select c9, c13, truncate(c9, c13) from t1; ++------+---------+-------------------+ +| c9 | c13 | truncate(c9, c13) | ++------+---------+-------------------+ +| 1 | 3.5 | 1 | +| -1 | -3.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c14, truncate(c9, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c14], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c14]), partitions(p0) + +select c9, c14, truncate(c9, c14) from t1; ++------+------+-------------------+ +| c9 | c14 | truncate(c9, c14) | ++------+------+-------------------+ +| 1 | 4.5 | 1 | +| -1 | 4.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c15, truncate(c9, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c15], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c15]), partitions(p0) + +select c9, c15, truncate(c9, c15) from t1; ++------+---------+-------------------+ +| c9 | c15 | truncate(c9, c15) | ++------+---------+-------------------+ +| 1 | 5.5 | 1 | +| -1 | -5.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c16, truncate(c9, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c16], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c16]), partitions(p0) + +select c9, c16, truncate(c9, c16) from t1; ++------+------+-------------------+ +| c9 | c16 | truncate(c9, c16) | ++------+------+-------------------+ +| 1 | 6.5 | 1 | +| -1 | 6.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c17, truncate(c9, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c17], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c17]), partitions(p0) + +select c9, c17, truncate(c9, c17) from t1; ++------+------+-------------------+ +| c9 | c17 | truncate(c9, c17) | ++------+------+-------------------+ +| 1 | 8 | 1 | +| -1 | -8 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c18, truncate(c9, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c18], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c18]), partitions(p0) + +select c9, c18, truncate(c9, c18) from t1; ++------+------+-------------------+ +| c9 | c18 | truncate(c9, c18) | ++------+------+-------------------+ +| 1 | 9 | 1 | +| -1 | 9 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c19, truncate(c9, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c19], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c19]), partitions(p0) + +select c9, c19, truncate(c9, c19) from t1; ++------+---------------------+-------------------+ +| c9 | c19 | truncate(c9, c19) | ++------+---------------------+-------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c20, truncate(c9, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c20], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c20]), partitions(p0) + +select c9, c20, truncate(c9, c20) from t1; ++------+---------------------+-------------------+ +| c9 | c20 | truncate(c9, c20) | ++------+---------------------+-------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c21, truncate(c9, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c21], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c21]), partitions(p0) + +select c9, c21, truncate(c9, c21) from t1; ++------+------+-------------------+ +| c9 | c21 | truncate(c9, c21) | ++------+------+-------------------+ +| 1 | 9.5 | 1 | +| -1 | -9.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c9, c22, truncate(c9, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [t1.c22], [truncate(cast(t1.c9, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c9], [t1.c22]), partitions(p0) + +select c9, c22, truncate(c9, c22) from t1; ++------+------+-------------------+ +| c9 | c22 | truncate(c9, c22) | ++------+------+-------------------+ +| 1 | 10.5 | 1 | +| -1 | 10.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c9], [truncate(cast(t1.c9, BIGINT(-1, 0)), -3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), -1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 0)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 1)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 2)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 3)], [truncate(cast(t1.c9, BIGINT(-1, 0)), 4)]), filter(nil), + access([t1.c9]), partitions(p0) + +select c9, truncate(c9, -3), truncate(c9, -2), truncate(c9, -1), truncate(c9, 0), truncate(c9, 1), truncate(c9, 2), truncate(c9, 3), truncate(c9, 4) from t1; ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| c9 | truncate(c9, -3) | truncate(c9, -2) | truncate(c9, -1) | truncate(c9, 0) | truncate(c9, 1) | truncate(c9, 2) | truncate(c9, 3) | truncate(c9, 4) | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------------------+------------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+ +EXPLAIN select c10, c1, truncate(c10, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c1], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c1]), partitions(p0) + +select c10, c1, truncate(c10, c1) from t1; ++------+------+-------------------+ +| c10 | c1 | truncate(c10, c1) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c2, truncate(c10, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c2], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c2]), partitions(p0) + +select c10, c2, truncate(c10, c2) from t1; ++------+------+-------------------+ +| c10 | c2 | truncate(c10, c2) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c3, truncate(c10, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c3], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c3]), partitions(p0) + +select c10, c3, truncate(c10, c3) from t1; ++------+------+-------------------+ +| c10 | c3 | truncate(c10, c3) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c4, truncate(c10, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c4], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c4]), partitions(p0) + +select c10, c4, truncate(c10, c4) from t1; ++------+------+-------------------+ +| c10 | c4 | truncate(c10, c4) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c5, truncate(c10, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c5], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c5]), partitions(p0) + +select c10, c5, truncate(c10, c5) from t1; ++------+------+-------------------+ +| c10 | c5 | truncate(c10, c5) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c6, truncate(c10, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c6], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c6]), partitions(p0) + +select c10, c6, truncate(c10, c6) from t1; ++------+------+-------------------+ +| c10 | c6 | truncate(c10, c6) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c7, truncate(c10, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c7], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c7]), partitions(p0) + +select c10, c7, truncate(c10, c7) from t1; ++------+------+-------------------+ +| c10 | c7 | truncate(c10, c7) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c8, truncate(c10, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c8], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c8]), partitions(p0) + +select c10, c8, truncate(c10, c8) from t1; ++------+------+-------------------+ +| c10 | c8 | truncate(c10, c8) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c9, truncate(c10, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c9], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c9]), partitions(p0) + +select c10, c9, truncate(c10, c9) from t1; ++------+------+-------------------+ +| c10 | c9 | truncate(c10, c9) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c10, truncate(c10, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c10], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, c10, truncate(c10, c10) from t1; ++------+------+--------------------+ +| c10 | c10 | truncate(c10, c10) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c11, truncate(c10, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c11], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), t1.c11)]), filter(nil), + access([t1.c10], [t1.c11]), partitions(p0) + +select c10, c11, truncate(c10, c11) from t1; ++------+------+--------------------+ +| c10 | c11 | truncate(c10, c11) | ++------+------+--------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c12, truncate(c10, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c12], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c12]), partitions(p0) + +select c10, c12, truncate(c10, c12) from t1; ++------+------+--------------------+ +| c10 | c12 | truncate(c10, c12) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c13, truncate(c10, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c13], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c13]), partitions(p0) + +select c10, c13, truncate(c10, c13) from t1; ++------+---------+--------------------+ +| c10 | c13 | truncate(c10, c13) | ++------+---------+--------------------+ +| 2 | 3.5 | 2 | +| 2 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c14, truncate(c10, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c14], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c14]), partitions(p0) + +select c10, c14, truncate(c10, c14) from t1; ++------+------+--------------------+ +| c10 | c14 | truncate(c10, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 2 | +| 2 | 4.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c15, truncate(c10, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c15], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c15]), partitions(p0) + +select c10, c15, truncate(c10, c15) from t1; ++------+---------+--------------------+ +| c10 | c15 | truncate(c10, c15) | ++------+---------+--------------------+ +| 2 | 5.5 | 2 | +| 2 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c16, truncate(c10, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c16], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c16]), partitions(p0) + +select c10, c16, truncate(c10, c16) from t1; ++------+------+--------------------+ +| c10 | c16 | truncate(c10, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 2 | +| 2 | 6.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c17, truncate(c10, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c17], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c17]), partitions(p0) + +select c10, c17, truncate(c10, c17) from t1; ++------+------+--------------------+ +| c10 | c17 | truncate(c10, c17) | ++------+------+--------------------+ +| 2 | 8 | 2 | +| 2 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c18, truncate(c10, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c18], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c18]), partitions(p0) + +select c10, c18, truncate(c10, c18) from t1; ++------+------+--------------------+ +| c10 | c18 | truncate(c10, c18) | ++------+------+--------------------+ +| 2 | 9 | 2 | +| 2 | 9 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c19, truncate(c10, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c19], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c19]), partitions(p0) + +select c10, c19, truncate(c10, c19) from t1; ++------+---------------------+--------------------+ +| c10 | c19 | truncate(c10, c19) | ++------+---------------------+--------------------+ +| 2 | 2019-12-01 12:00:00 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c20, truncate(c10, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c20], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c20]), partitions(p0) + +select c10, c20, truncate(c10, c20) from t1; ++------+---------------------+--------------------+ +| c10 | c20 | truncate(c10, c20) | ++------+---------------------+--------------------+ +| 2 | 2019-12-03 06:00:00 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c21, truncate(c10, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c21], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c21]), partitions(p0) + +select c10, c21, truncate(c10, c21) from t1; ++------+------+--------------------+ +| c10 | c21 | truncate(c10, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 2 | +| 2 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c10, c22, truncate(c10, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [t1.c22], [truncate(cast(t1.c10, DOUBLE UNSIGNED(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c10], [t1.c22]), partitions(p0) + +select c10, c22, truncate(c10, c22) from t1; ++------+------+--------------------+ +| c10 | c22 | truncate(c10, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 2 | +| 2 | 10.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c10], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), -1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 0)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 1)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 2)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 3)], [truncate(cast(t1.c10, BIGINT UNSIGNED(-1, 0)), 4)]), filter(nil), + access([t1.c10]), partitions(p0) + +select c10, truncate(c10, -3), truncate(c10, -2), truncate(c10, -1), truncate(c10, 0), truncate(c10, 1), truncate(c10, 2), truncate(c10, 3), truncate(c10, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c10 | truncate(c10, -3) | truncate(c10, -2) | truncate(c10, -1) | truncate(c10, 0) | truncate(c10, 1) | truncate(c10, 2) | truncate(c10, 3) | truncate(c10, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c1, truncate(c11, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c1], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c1]), partitions(p0) + +select c11, c1, truncate(c11, c1) from t1; ++------+------+-------------------+ +| c11 | c1 | truncate(c11, c1) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c2, truncate(c11, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c2], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c2]), partitions(p0) + +select c11, c2, truncate(c11, c2) from t1; ++------+------+-------------------+ +| c11 | c2 | truncate(c11, c2) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c3, truncate(c11, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c3], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c3]), partitions(p0) + +select c11, c3, truncate(c11, c3) from t1; ++------+------+-------------------+ +| c11 | c3 | truncate(c11, c3) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c4, truncate(c11, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c4], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c4]), partitions(p0) + +select c11, c4, truncate(c11, c4) from t1; ++------+------+-------------------+ +| c11 | c4 | truncate(c11, c4) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c5, truncate(c11, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c5], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c5]), partitions(p0) + +select c11, c5, truncate(c11, c5) from t1; ++------+------+-------------------+ +| c11 | c5 | truncate(c11, c5) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c6, truncate(c11, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c6], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c6]), partitions(p0) + +select c11, c6, truncate(c11, c6) from t1; ++------+------+-------------------+ +| c11 | c6 | truncate(c11, c6) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c7, truncate(c11, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c7], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c7]), partitions(p0) + +select c11, c7, truncate(c11, c7) from t1; ++------+------+-------------------+ +| c11 | c7 | truncate(c11, c7) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c8, truncate(c11, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c8], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c8]), partitions(p0) + +select c11, c8, truncate(c11, c8) from t1; ++------+------+-------------------+ +| c11 | c8 | truncate(c11, c8) | ++------+------+-------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c9, truncate(c11, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c9], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c9]), partitions(p0) + +select c11, c9, truncate(c11, c9) from t1; ++------+------+-------------------+ +| c11 | c9 | truncate(c11, c9) | ++------+------+-------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c10, truncate(c11, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c10], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c10]), partitions(p0) + +select c11, c10, truncate(c11, c10) from t1; ++------+------+--------------------+ +| c11 | c10 | truncate(c11, c10) | ++------+------+--------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c11, truncate(c11, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c11], [truncate(cast(t1.c11, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, c11, truncate(c11, c11) from t1; ++------+------+--------------------+ +| c11 | c11 | truncate(c11, c11) | ++------+------+--------------------+ +| 1 | 1 | 1 | +| -1 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c12, truncate(c11, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c12], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c12]), partitions(p0) + +select c11, c12, truncate(c11, c12) from t1; ++------+------+--------------------+ +| c11 | c12 | truncate(c11, c12) | ++------+------+--------------------+ +| 1 | 2 | 1 | +| -1 | 2 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c13, truncate(c11, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c13], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c13]), partitions(p0) + +select c11, c13, truncate(c11, c13) from t1; ++------+---------+--------------------+ +| c11 | c13 | truncate(c11, c13) | ++------+---------+--------------------+ +| 1 | 3.5 | 1 | +| -1 | -3.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c14, truncate(c11, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c14], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c14]), partitions(p0) + +select c11, c14, truncate(c11, c14) from t1; ++------+------+--------------------+ +| c11 | c14 | truncate(c11, c14) | ++------+------+--------------------+ +| 1 | 4.5 | 1 | +| -1 | 4.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c15, truncate(c11, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c15], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c15]), partitions(p0) + +select c11, c15, truncate(c11, c15) from t1; ++------+---------+--------------------+ +| c11 | c15 | truncate(c11, c15) | ++------+---------+--------------------+ +| 1 | 5.5 | 1 | +| -1 | -5.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c16, truncate(c11, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c16], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c16]), partitions(p0) + +select c11, c16, truncate(c11, c16) from t1; ++------+------+--------------------+ +| c11 | c16 | truncate(c11, c16) | ++------+------+--------------------+ +| 1 | 6.5 | 1 | +| -1 | 6.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c17, truncate(c11, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c17], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c17]), partitions(p0) + +select c11, c17, truncate(c11, c17) from t1; ++------+------+--------------------+ +| c11 | c17 | truncate(c11, c17) | ++------+------+--------------------+ +| 1 | 8 | 1 | +| -1 | -8 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c18, truncate(c11, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c18], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c18]), partitions(p0) + +select c11, c18, truncate(c11, c18) from t1; ++------+------+--------------------+ +| c11 | c18 | truncate(c11, c18) | ++------+------+--------------------+ +| 1 | 9 | 1 | +| -1 | 9 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c19, truncate(c11, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c19], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c19]), partitions(p0) + +select c11, c19, truncate(c11, c19) from t1; ++------+---------------------+--------------------+ +| c11 | c19 | truncate(c11, c19) | ++------+---------------------+--------------------+ +| 1 | 2019-12-01 12:00:00 | 1 | +| -1 | 2019-12-01 12:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c20, truncate(c11, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c20], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c20]), partitions(p0) + +select c11, c20, truncate(c11, c20) from t1; ++------+---------------------+--------------------+ +| c11 | c20 | truncate(c11, c20) | ++------+---------------------+--------------------+ +| 1 | 2019-12-03 06:00:00 | 1 | +| -1 | 2019-12-03 06:00:00 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c21, truncate(c11, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c21], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c21]), partitions(p0) + +select c11, c21, truncate(c11, c21) from t1; ++------+------+--------------------+ +| c11 | c21 | truncate(c11, c21) | ++------+------+--------------------+ +| 1 | 9.5 | 1 | +| -1 | -9.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c11, c22, truncate(c11, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [t1.c22], [truncate(cast(t1.c11, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c11], [t1.c22]), partitions(p0) + +select c11, c22, truncate(c11, c22) from t1; ++------+------+--------------------+ +| c11 | c22 | truncate(c11, c22) | ++------+------+--------------------+ +| 1 | 10.5 | 1 | +| -1 | 10.5 | -1 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c11], [truncate(t1.c11, -3)], [truncate(t1.c11, -2)], [truncate(t1.c11, -1)], [truncate(t1.c11, 0)], [truncate(t1.c11, 1)], [truncate(t1.c11, 2)], [truncate(t1.c11, 3)], [truncate(t1.c11, 4)]), filter(nil), + access([t1.c11]), partitions(p0) + +select c11, truncate(c11, -3), truncate(c11, -2), truncate(c11, -1), truncate(c11, 0), truncate(c11, 1), truncate(c11, 2), truncate(c11, 3), truncate(c11, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c11 | truncate(c11, -3) | truncate(c11, -2) | truncate(c11, -1) | truncate(c11, 0) | truncate(c11, 1) | truncate(c11, 2) | truncate(c11, 3) | truncate(c11, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | +| -1 | 0 | 0 | 0 | -1 | -1 | -1 | -1 | -1 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c1, truncate(c12, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c1], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c1]), partitions(p0) + +select c12, c1, truncate(c12, c1) from t1; ++------+------+-------------------+ +| c12 | c1 | truncate(c12, c1) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c2, truncate(c12, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c2], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c2]), partitions(p0) + +select c12, c2, truncate(c12, c2) from t1; ++------+------+-------------------+ +| c12 | c2 | truncate(c12, c2) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c3, truncate(c12, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c3], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c3]), partitions(p0) + +select c12, c3, truncate(c12, c3) from t1; ++------+------+-------------------+ +| c12 | c3 | truncate(c12, c3) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c4, truncate(c12, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c4], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c4]), partitions(p0) + +select c12, c4, truncate(c12, c4) from t1; ++------+------+-------------------+ +| c12 | c4 | truncate(c12, c4) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c5, truncate(c12, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c5], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c5]), partitions(p0) + +select c12, c5, truncate(c12, c5) from t1; ++------+------+-------------------+ +| c12 | c5 | truncate(c12, c5) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c6, truncate(c12, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c6], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c6]), partitions(p0) + +select c12, c6, truncate(c12, c6) from t1; ++------+------+-------------------+ +| c12 | c6 | truncate(c12, c6) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c7, truncate(c12, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c7], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c7]), partitions(p0) + +select c12, c7, truncate(c12, c7) from t1; ++------+------+-------------------+ +| c12 | c7 | truncate(c12, c7) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c8, truncate(c12, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c8], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c8]), partitions(p0) + +select c12, c8, truncate(c12, c8) from t1; ++------+------+-------------------+ +| c12 | c8 | truncate(c12, c8) | ++------+------+-------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c9, truncate(c12, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c9], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c9]), partitions(p0) + +select c12, c9, truncate(c12, c9) from t1; ++------+------+-------------------+ +| c12 | c9 | truncate(c12, c9) | ++------+------+-------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c10, truncate(c12, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c10], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c10]), partitions(p0) + +select c12, c10, truncate(c12, c10) from t1; ++------+------+--------------------+ +| c12 | c10 | truncate(c12, c10) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c11, truncate(c12, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c11], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), t1.c11)]), filter(nil), + access([t1.c12], [t1.c11]), partitions(p0) + +select c12, c11, truncate(c12, c11) from t1; ++------+------+--------------------+ +| c12 | c11 | truncate(c12, c11) | ++------+------+--------------------+ +| 2 | 1 | 2 | +| 2 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c12, truncate(c12, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c12], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, c12, truncate(c12, c12) from t1; ++------+------+--------------------+ +| c12 | c12 | truncate(c12, c12) | ++------+------+--------------------+ +| 2 | 2 | 2 | +| 2 | 2 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c13, truncate(c12, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c13], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c13]), partitions(p0) + +select c12, c13, truncate(c12, c13) from t1; ++------+---------+--------------------+ +| c12 | c13 | truncate(c12, c13) | ++------+---------+--------------------+ +| 2 | 3.5 | 2 | +| 2 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c14, truncate(c12, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c14], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c14]), partitions(p0) + +select c12, c14, truncate(c12, c14) from t1; ++------+------+--------------------+ +| c12 | c14 | truncate(c12, c14) | ++------+------+--------------------+ +| 2 | 4.5 | 2 | +| 2 | 4.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c15, truncate(c12, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c15], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c15]), partitions(p0) + +select c12, c15, truncate(c12, c15) from t1; ++------+---------+--------------------+ +| c12 | c15 | truncate(c12, c15) | ++------+---------+--------------------+ +| 2 | 5.5 | 2 | +| 2 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c16, truncate(c12, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c16], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c16]), partitions(p0) + +select c12, c16, truncate(c12, c16) from t1; ++------+------+--------------------+ +| c12 | c16 | truncate(c12, c16) | ++------+------+--------------------+ +| 2 | 6.5 | 2 | +| 2 | 6.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c17, truncate(c12, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c17], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c17]), partitions(p0) + +select c12, c17, truncate(c12, c17) from t1; ++------+------+--------------------+ +| c12 | c17 | truncate(c12, c17) | ++------+------+--------------------+ +| 2 | 8 | 2 | +| 2 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c18, truncate(c12, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c18], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c18]), partitions(p0) + +select c12, c18, truncate(c12, c18) from t1; ++------+------+--------------------+ +| c12 | c18 | truncate(c12, c18) | ++------+------+--------------------+ +| 2 | 9 | 2 | +| 2 | 9 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c19, truncate(c12, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c19], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c19]), partitions(p0) + +select c12, c19, truncate(c12, c19) from t1; ++------+---------------------+--------------------+ +| c12 | c19 | truncate(c12, c19) | ++------+---------------------+--------------------+ +| 2 | 2019-12-01 12:00:00 | 2 | +| 2 | 2019-12-01 12:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c20, truncate(c12, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c20], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c20]), partitions(p0) + +select c12, c20, truncate(c12, c20) from t1; ++------+---------------------+--------------------+ +| c12 | c20 | truncate(c12, c20) | ++------+---------------------+--------------------+ +| 2 | 2019-12-03 06:00:00 | 2 | +| 2 | 2019-12-03 06:00:00 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c21, truncate(c12, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c21], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c21]), partitions(p0) + +select c12, c21, truncate(c12, c21) from t1; ++------+------+--------------------+ +| c12 | c21 | truncate(c12, c21) | ++------+------+--------------------+ +| 2 | 9.5 | 2 | +| 2 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c12, c22, truncate(c12, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [t1.c22], [truncate(cast(t1.c12, DOUBLE UNSIGNED(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c12], [t1.c22]), partitions(p0) + +select c12, c22, truncate(c12, c22) from t1; ++------+------+--------------------+ +| c12 | c22 | truncate(c12, c22) | ++------+------+--------------------+ +| 2 | 10.5 | 2 | +| 2 | 10.5 | 2 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c12], [truncate(t1.c12, -3)], [truncate(t1.c12, -2)], [truncate(t1.c12, -1)], [truncate(t1.c12, 0)], [truncate(t1.c12, 1)], [truncate(t1.c12, 2)], [truncate(t1.c12, 3)], [truncate(t1.c12, 4)]), filter(nil), + access([t1.c12]), partitions(p0) + +select c12, truncate(c12, -3), truncate(c12, -2), truncate(c12, -1), truncate(c12, 0), truncate(c12, 1), truncate(c12, 2), truncate(c12, 3), truncate(c12, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c12 | truncate(c12, -3) | truncate(c12, -2) | truncate(c12, -1) | truncate(c12, 0) | truncate(c12, 1) | truncate(c12, 2) | truncate(c12, 3) | truncate(c12, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| 2 | 0 | 0 | 0 | 2 | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c1, truncate(c13, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c1], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c1]), partitions(p0) + +select c13, c1, truncate(c13, c1) from t1; ++---------+------+-------------------+ +| c13 | c1 | truncate(c13, c1) | ++---------+------+-------------------+ +| 3.5 | 1 | 3.5 | +| -3.5 | -1 | -0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c2, truncate(c13, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c2], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c2]), partitions(p0) + +select c13, c2, truncate(c13, c2) from t1; ++---------+------+-------------------+ +| c13 | c2 | truncate(c13, c2) | ++---------+------+-------------------+ +| 3.5 | 2 | 3.5 | +| -3.5 | 2 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c3, truncate(c13, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c3], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c3]), partitions(p0) + +select c13, c3, truncate(c13, c3) from t1; ++---------+------+-------------------+ +| c13 | c3 | truncate(c13, c3) | ++---------+------+-------------------+ +| 3.5 | 1 | 3.5 | +| -3.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c4, truncate(c13, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c4], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c4]), partitions(p0) + +select c13, c4, truncate(c13, c4) from t1; ++---------+------+-------------------+ +| c13 | c4 | truncate(c13, c4) | ++---------+------+-------------------+ +| 3.5 | 2 | 3.5 | +| -3.5 | 2 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c5, truncate(c13, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c5], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c5]), partitions(p0) + +select c13, c5, truncate(c13, c5) from t1; ++---------+------+-------------------+ +| c13 | c5 | truncate(c13, c5) | ++---------+------+-------------------+ +| 3.5 | 1 | 3.5 | +| -3.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c6, truncate(c13, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c6], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c6]), partitions(p0) + +select c13, c6, truncate(c13, c6) from t1; ++---------+------+-------------------+ +| c13 | c6 | truncate(c13, c6) | ++---------+------+-------------------+ +| 3.5 | 2 | 3.5 | +| -3.5 | 2 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c7, truncate(c13, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c7], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c7]), partitions(p0) + +select c13, c7, truncate(c13, c7) from t1; ++---------+------+-------------------+ +| c13 | c7 | truncate(c13, c7) | ++---------+------+-------------------+ +| 3.5 | 1 | 3.5 | +| -3.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c8, truncate(c13, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c8], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c8]), partitions(p0) + +select c13, c8, truncate(c13, c8) from t1; ++---------+------+-------------------+ +| c13 | c8 | truncate(c13, c8) | ++---------+------+-------------------+ +| 3.5 | 2 | 3.5 | +| -3.5 | 2 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c9, truncate(c13, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c9], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c9]), partitions(p0) + +select c13, c9, truncate(c13, c9) from t1; ++---------+------+-------------------+ +| c13 | c9 | truncate(c13, c9) | ++---------+------+-------------------+ +| 3.5 | 1 | 3.5 | +| -3.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c10, truncate(c13, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c10], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c10]), partitions(p0) + +select c13, c10, truncate(c13, c10) from t1; ++---------+------+--------------------+ +| c13 | c10 | truncate(c13, c10) | ++---------+------+--------------------+ +| 3.5 | 2 | 3.5 | +| -3.5 | 2 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c11, truncate(c13, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c11], [truncate(cast(t1.c13, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c13], [t1.c11]), partitions(p0) + +select c13, c11, truncate(c13, c11) from t1; ++---------+------+--------------------+ +| c13 | c11 | truncate(c13, c11) | ++---------+------+--------------------+ +| 3.5 | 1 | 3.5 | +| -3.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c12, truncate(c13, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c12], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c12]), partitions(p0) + +select c13, c12, truncate(c13, c12) from t1; ++---------+------+--------------------+ +| c13 | c12 | truncate(c13, c12) | ++---------+------+--------------------+ +| 3.5 | 2 | 3.5 | +| -3.5 | 2 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c13, truncate(c13, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, c13, truncate(c13, c13) from t1; ++---------+---------+--------------------+ +| c13 | c13 | truncate(c13, c13) | ++---------+---------+--------------------+ +| 3.5 | 3.5 | 3.5 | +| -3.5 | -3.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | 100.156 | 100.15599822998047 | +| 123.111 | 123.111 | 123.11100006103514 | +| 151 | 151 | 151 | ++---------+---------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c14, truncate(c13, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c14], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c14]), partitions(p0) + +select c13, c14, truncate(c13, c14) from t1; ++---------+------+--------------------+ +| c13 | c14 | truncate(c13, c14) | ++---------+------+--------------------+ +| 3.5 | 4.5 | 3.5 | +| -3.5 | 4.5 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c15, truncate(c13, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c15], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c15]), partitions(p0) + +select c13, c15, truncate(c13, c15) from t1; ++---------+---------+--------------------+ +| c13 | c15 | truncate(c13, c15) | ++---------+---------+--------------------+ +| 3.5 | 5.5 | 3.5 | +| -3.5 | -5.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+---------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c16, truncate(c13, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c16], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c16]), partitions(p0) + +select c13, c16, truncate(c13, c16) from t1; ++---------+------+--------------------+ +| c13 | c16 | truncate(c13, c16) | ++---------+------+--------------------+ +| 3.5 | 6.5 | 3.5 | +| -3.5 | 6.5 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c17, truncate(c13, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c17], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c17]), partitions(p0) + +select c13, c17, truncate(c13, c17) from t1; ++---------+------+--------------------+ +| c13 | c17 | truncate(c13, c17) | ++---------+------+--------------------+ +| 3.5 | 8 | 3.5 | +| -3.5 | -8 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c18, truncate(c13, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c18], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c18]), partitions(p0) + +select c13, c18, truncate(c13, c18) from t1; ++---------+------+--------------------+ +| c13 | c18 | truncate(c13, c18) | ++---------+------+--------------------+ +| 3.5 | 9 | 3.5 | +| -3.5 | 9 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c19, truncate(c13, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c19], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c19]), partitions(p0) + +select c13, c19, truncate(c13, c19) from t1; ++---------+---------------------+--------------------+ +| c13 | c19 | truncate(c13, c19) | ++---------+---------------------+--------------------+ +| 3.5 | 2019-12-01 12:00:00 | 3.5 | +| -3.5 | 2019-12-01 12:00:00 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+---------------------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c20, truncate(c13, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c20], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c20]), partitions(p0) + +select c13, c20, truncate(c13, c20) from t1; ++---------+---------------------+--------------------+ +| c13 | c20 | truncate(c13, c20) | ++---------+---------------------+--------------------+ +| 3.5 | 2019-12-03 06:00:00 | 3.5 | +| -3.5 | 2019-12-03 06:00:00 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+---------------------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c21, truncate(c13, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c21], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c21]), partitions(p0) + +select c13, c21, truncate(c13, c21) from t1; ++---------+------+--------------------+ +| c13 | c21 | truncate(c13, c21) | ++---------+------+--------------------+ +| 3.5 | 9.5 | 3.5 | +| -3.5 | -9.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c13, c22, truncate(c13, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [t1.c22], [truncate(cast(t1.c13, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c13], [t1.c22]), partitions(p0) + +select c13, c22, truncate(c13, c22) from t1; ++---------+------+--------------------+ +| c13 | c22 | truncate(c13, c22) | ++---------+------+--------------------+ +| 3.5 | 10.5 | 3.5 | +| -3.5 | 10.5 | -3.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c13], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c13, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c13]), partitions(p0) + +select c13, truncate(c13, -3), truncate(c13, -2), truncate(c13, -1), truncate(c13, 0), truncate(c13, 1), truncate(c13, 2), truncate(c13, 3), truncate(c13, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c13 | truncate(c13, -3) | truncate(c13, -2) | truncate(c13, -1) | truncate(c13, 0) | truncate(c13, 1) | truncate(c13, 2) | truncate(c13, 3) | truncate(c13, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 3.5 | 0 | 0 | 0 | 3 | 3.5 | 3.50 | 3.500 | 3.5000 | +| -3.5 | -0 | -0 | -0 | -3 | -3.5 | -3.50 | -3.500 | -3.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.155 | 100.1559 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c1, truncate(c14, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c1], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c1]), partitions(p0) + +select c14, c1, truncate(c14, c1) from t1; ++------+------+-------------------+ +| c14 | c1 | truncate(c14, c1) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | +| 4.5 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c2, truncate(c14, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c2], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c2]), partitions(p0) + +select c14, c2, truncate(c14, c2) from t1; ++------+------+-------------------+ +| c14 | c2 | truncate(c14, c2) | ++------+------+-------------------+ +| 4.5 | 2 | 4.5 | +| 4.5 | 2 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c3, truncate(c14, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c3], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c3]), partitions(p0) + +select c14, c3, truncate(c14, c3) from t1; ++------+------+-------------------+ +| c14 | c3 | truncate(c14, c3) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | +| 4.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c4, truncate(c14, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c4], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c4]), partitions(p0) + +select c14, c4, truncate(c14, c4) from t1; ++------+------+-------------------+ +| c14 | c4 | truncate(c14, c4) | ++------+------+-------------------+ +| 4.5 | 2 | 4.5 | +| 4.5 | 2 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c5, truncate(c14, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c5], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c5]), partitions(p0) + +select c14, c5, truncate(c14, c5) from t1; ++------+------+-------------------+ +| c14 | c5 | truncate(c14, c5) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | +| 4.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c6, truncate(c14, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c6], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c6]), partitions(p0) + +select c14, c6, truncate(c14, c6) from t1; ++------+------+-------------------+ +| c14 | c6 | truncate(c14, c6) | ++------+------+-------------------+ +| 4.5 | 2 | 4.5 | +| 4.5 | 2 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c7, truncate(c14, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c7], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c7]), partitions(p0) + +select c14, c7, truncate(c14, c7) from t1; ++------+------+-------------------+ +| c14 | c7 | truncate(c14, c7) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | +| 4.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c8, truncate(c14, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c8], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c8]), partitions(p0) + +select c14, c8, truncate(c14, c8) from t1; ++------+------+-------------------+ +| c14 | c8 | truncate(c14, c8) | ++------+------+-------------------+ +| 4.5 | 2 | 4.5 | +| 4.5 | 2 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c9, truncate(c14, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c9], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c9]), partitions(p0) + +select c14, c9, truncate(c14, c9) from t1; ++------+------+-------------------+ +| c14 | c9 | truncate(c14, c9) | ++------+------+-------------------+ +| 4.5 | 1 | 4.5 | +| 4.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c10, truncate(c14, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c10], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c10]), partitions(p0) + +select c14, c10, truncate(c14, c10) from t1; ++------+------+--------------------+ +| c14 | c10 | truncate(c14, c10) | ++------+------+--------------------+ +| 4.5 | 2 | 4.5 | +| 4.5 | 2 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c11, truncate(c14, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c11], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), t1.c11)]), filter(nil), + access([t1.c14], [t1.c11]), partitions(p0) + +select c14, c11, truncate(c14, c11) from t1; ++------+------+--------------------+ +| c14 | c11 | truncate(c14, c11) | ++------+------+--------------------+ +| 4.5 | 1 | 4.5 | +| 4.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c12, truncate(c14, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c12], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c12]), partitions(p0) + +select c14, c12, truncate(c14, c12) from t1; ++------+------+--------------------+ +| c14 | c12 | truncate(c14, c12) | ++------+------+--------------------+ +| 4.5 | 2 | 4.5 | +| 4.5 | 2 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c13, truncate(c14, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c13], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c13]), partitions(p0) + +select c14, c13, truncate(c14, c13) from t1; ++------+---------+--------------------+ +| c14 | c13 | truncate(c14, c13) | ++------+---------+--------------------+ +| 4.5 | 3.5 | 4.5 | +| 4.5 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c14, truncate(c14, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, c14, truncate(c14, c14) from t1; ++------+------+--------------------+ +| c14 | c14 | truncate(c14, c14) | ++------+------+--------------------+ +| 4.5 | 4.5 | 4.5 | +| 4.5 | 4.5 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c15, truncate(c14, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c15], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c15]), partitions(p0) + +select c14, c15, truncate(c14, c15) from t1; ++------+---------+--------------------+ +| c14 | c15 | truncate(c14, c15) | ++------+---------+--------------------+ +| 4.5 | 5.5 | 4.5 | +| 4.5 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c16, truncate(c14, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c16], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c16]), partitions(p0) + +select c14, c16, truncate(c14, c16) from t1; ++------+------+--------------------+ +| c14 | c16 | truncate(c14, c16) | ++------+------+--------------------+ +| 4.5 | 6.5 | 4.5 | +| 4.5 | 6.5 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c17, truncate(c14, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c17], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c17]), partitions(p0) + +select c14, c17, truncate(c14, c17) from t1; ++------+------+--------------------+ +| c14 | c17 | truncate(c14, c17) | ++------+------+--------------------+ +| 4.5 | 8 | 4.5 | +| 4.5 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c18, truncate(c14, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c18], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c18]), partitions(p0) + +select c14, c18, truncate(c14, c18) from t1; ++------+------+--------------------+ +| c14 | c18 | truncate(c14, c18) | ++------+------+--------------------+ +| 4.5 | 9 | 4.5 | +| 4.5 | 9 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c19, truncate(c14, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c19], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c19]), partitions(p0) + +select c14, c19, truncate(c14, c19) from t1; ++------+---------------------+--------------------+ +| c14 | c19 | truncate(c14, c19) | ++------+---------------------+--------------------+ +| 4.5 | 2019-12-01 12:00:00 | 4.5 | +| 4.5 | 2019-12-01 12:00:00 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c20, truncate(c14, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c20], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c20]), partitions(p0) + +select c14, c20, truncate(c14, c20) from t1; ++------+---------------------+--------------------+ +| c14 | c20 | truncate(c14, c20) | ++------+---------------------+--------------------+ +| 4.5 | 2019-12-03 06:00:00 | 4.5 | +| 4.5 | 2019-12-03 06:00:00 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c21, truncate(c14, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c21], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c21]), partitions(p0) + +select c14, c21, truncate(c14, c21) from t1; ++------+------+--------------------+ +| c14 | c21 | truncate(c14, c21) | ++------+------+--------------------+ +| 4.5 | 9.5 | 4.5 | +| 4.5 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c14, c22, truncate(c14, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [t1.c22], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c14], [t1.c22]), partitions(p0) + +select c14, c22, truncate(c14, c22) from t1; ++------+------+--------------------+ +| c14 | c22 | truncate(c14, c22) | ++------+------+--------------------+ +| 4.5 | 10.5 | 4.5 | +| 4.5 | 10.5 | 4.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c14], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), -1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 0)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 1)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 2)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 3)], [truncate(cast(t1.c14, DOUBLE UNSIGNED(-1, -1)), 4)]), filter(nil), + access([t1.c14]), partitions(p0) + +select c14, truncate(c14, -3), truncate(c14, -2), truncate(c14, -1), truncate(c14, 0), truncate(c14, 1), truncate(c14, 2), truncate(c14, 3), truncate(c14, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c14 | truncate(c14, -3) | truncate(c14, -2) | truncate(c14, -1) | truncate(c14, 0) | truncate(c14, 1) | truncate(c14, 2) | truncate(c14, 3) | truncate(c14, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| 4.5 | 0 | 0 | 0 | 4 | 4.5 | 4.50 | 4.500 | 4.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c1, truncate(c15, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c1], [truncate(t1.c15, cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c1]), partitions(p0) + +select c15, c1, truncate(c15, c1) from t1; ++---------+------+-------------------+ +| c15 | c1 | truncate(c15, c1) | ++---------+------+-------------------+ +| 5.5 | 1 | 5.5 | +| -5.5 | -1 | -0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c2, truncate(c15, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c2], [truncate(t1.c15, cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c2]), partitions(p0) + +select c15, c2, truncate(c15, c2) from t1; ++---------+------+-------------------+ +| c15 | c2 | truncate(c15, c2) | ++---------+------+-------------------+ +| 5.5 | 2 | 5.5 | +| -5.5 | 2 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c3, truncate(c15, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c3], [truncate(t1.c15, cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c3]), partitions(p0) + +select c15, c3, truncate(c15, c3) from t1; ++---------+------+-------------------+ +| c15 | c3 | truncate(c15, c3) | ++---------+------+-------------------+ +| 5.5 | 1 | 5.5 | +| -5.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c4, truncate(c15, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c4], [truncate(t1.c15, cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c4]), partitions(p0) + +select c15, c4, truncate(c15, c4) from t1; ++---------+------+-------------------+ +| c15 | c4 | truncate(c15, c4) | ++---------+------+-------------------+ +| 5.5 | 2 | 5.5 | +| -5.5 | 2 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c5, truncate(c15, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c5], [truncate(t1.c15, cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c5]), partitions(p0) + +select c15, c5, truncate(c15, c5) from t1; ++---------+------+-------------------+ +| c15 | c5 | truncate(c15, c5) | ++---------+------+-------------------+ +| 5.5 | 1 | 5.5 | +| -5.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c6, truncate(c15, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c6], [truncate(t1.c15, cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c6]), partitions(p0) + +select c15, c6, truncate(c15, c6) from t1; ++---------+------+-------------------+ +| c15 | c6 | truncate(c15, c6) | ++---------+------+-------------------+ +| 5.5 | 2 | 5.5 | +| -5.5 | 2 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c7, truncate(c15, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c7], [truncate(t1.c15, cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c7]), partitions(p0) + +select c15, c7, truncate(c15, c7) from t1; ++---------+------+-------------------+ +| c15 | c7 | truncate(c15, c7) | ++---------+------+-------------------+ +| 5.5 | 1 | 5.5 | +| -5.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c8, truncate(c15, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c8], [truncate(t1.c15, cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c8]), partitions(p0) + +select c15, c8, truncate(c15, c8) from t1; ++---------+------+-------------------+ +| c15 | c8 | truncate(c15, c8) | ++---------+------+-------------------+ +| 5.5 | 2 | 5.5 | +| -5.5 | 2 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c9, truncate(c15, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c9], [truncate(t1.c15, cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c9]), partitions(p0) + +select c15, c9, truncate(c15, c9) from t1; ++---------+------+-------------------+ +| c15 | c9 | truncate(c15, c9) | ++---------+------+-------------------+ +| 5.5 | 1 | 5.5 | +| -5.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+-------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c10, truncate(c15, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c10], [truncate(t1.c15, cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c10]), partitions(p0) + +select c15, c10, truncate(c15, c10) from t1; ++---------+------+--------------------+ +| c15 | c10 | truncate(c15, c10) | ++---------+------+--------------------+ +| 5.5 | 2 | 5.5 | +| -5.5 | 2 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c11, truncate(c15, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c11], [truncate(t1.c15, t1.c11)]), filter(nil), + access([t1.c15], [t1.c11]), partitions(p0) + +select c15, c11, truncate(c15, c11) from t1; ++---------+------+--------------------+ +| c15 | c11 | truncate(c15, c11) | ++---------+------+--------------------+ +| 5.5 | 1 | 5.5 | +| -5.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c12, truncate(c15, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c12], [truncate(t1.c15, cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c12]), partitions(p0) + +select c15, c12, truncate(c15, c12) from t1; ++---------+------+--------------------+ +| c15 | c12 | truncate(c15, c12) | ++---------+------+--------------------+ +| 5.5 | 2 | 5.5 | +| -5.5 | 2 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c13, truncate(c15, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c13], [truncate(t1.c15, cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c13]), partitions(p0) + +select c15, c13, truncate(c15, c13) from t1; ++---------+---------+--------------------+ +| c15 | c13 | truncate(c15, c13) | ++---------+---------+--------------------+ +| 5.5 | 3.5 | 5.5 | +| -5.5 | -3.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++---------+---------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c14, truncate(c15, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c14], [truncate(t1.c15, cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c14]), partitions(p0) + +select c15, c14, truncate(c15, c14) from t1; ++---------+------+--------------------+ +| c15 | c14 | truncate(c15, c14) | ++---------+------+--------------------+ +| 5.5 | 4.5 | 5.5 | +| -5.5 | 4.5 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c15, truncate(c15, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c15], [truncate(t1.c15, cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, c15, truncate(c15, c15) from t1; ++---------+---------+--------------------+ +| c15 | c15 | truncate(c15, c15) | ++---------+---------+--------------------+ +| 5.5 | 5.5 | 5.5 | +| -5.5 | -5.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | 100.156 | 100.156 | +| 123.111 | 123.111 | 123.111 | +| 151 | 151 | 151 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+---------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c16, truncate(c15, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c16], [truncate(t1.c15, cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c16]), partitions(p0) + +select c15, c16, truncate(c15, c16) from t1; ++---------+------+--------------------+ +| c15 | c16 | truncate(c15, c16) | ++---------+------+--------------------+ +| 5.5 | 6.5 | 5.5 | +| -5.5 | 6.5 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c17, truncate(c15, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c17], [truncate(t1.c15, cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c17]), partitions(p0) + +select c15, c17, truncate(c15, c17) from t1; ++---------+------+--------------------+ +| c15 | c17 | truncate(c15, c17) | ++---------+------+--------------------+ +| 5.5 | 8 | 5.5 | +| -5.5 | -8 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c18, truncate(c15, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c18], [truncate(t1.c15, cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c18]), partitions(p0) + +select c15, c18, truncate(c15, c18) from t1; ++---------+------+--------------------+ +| c15 | c18 | truncate(c15, c18) | ++---------+------+--------------------+ +| 5.5 | 9 | 5.5 | +| -5.5 | 9 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c19, truncate(c15, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c19], [truncate(t1.c15, cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c19]), partitions(p0) + +select c15, c19, truncate(c15, c19) from t1; ++---------+---------------------+--------------------+ +| c15 | c19 | truncate(c15, c19) | ++---------+---------------------+--------------------+ +| 5.5 | 2019-12-01 12:00:00 | 5.5 | +| -5.5 | 2019-12-01 12:00:00 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+---------------------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c20, truncate(c15, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c20], [truncate(t1.c15, cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c20]), partitions(p0) + +select c15, c20, truncate(c15, c20) from t1; ++---------+---------------------+--------------------+ +| c15 | c20 | truncate(c15, c20) | ++---------+---------------------+--------------------+ +| 5.5 | 2019-12-03 06:00:00 | 5.5 | +| -5.5 | 2019-12-03 06:00:00 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+---------------------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c21, truncate(c15, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c21], [truncate(t1.c15, cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c21]), partitions(p0) + +select c15, c21, truncate(c15, c21) from t1; ++---------+------+--------------------+ +| c15 | c21 | truncate(c15, c21) | ++---------+------+--------------------+ +| 5.5 | 9.5 | 5.5 | +| -5.5 | -9.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c15, c22, truncate(c15, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [t1.c22], [truncate(t1.c15, cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c15], [t1.c22]), partitions(p0) + +select c15, c22, truncate(c15, c22) from t1; ++---------+------+--------------------+ +| c15 | c22 | truncate(c15, c22) | ++---------+------+--------------------+ +| 5.5 | 10.5 | 5.5 | +| -5.5 | 10.5 | -5.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| 100.156 | NULL | NULL | +| 123.111 | NULL | NULL | +| 151 | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------+------+--------------------+ +EXPLAIN select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c15], [truncate(t1.c15, -3)], [truncate(t1.c15, -2)], [truncate(t1.c15, -1)], [truncate(t1.c15, 0)], [truncate(t1.c15, 1)], [truncate(t1.c15, 2)], [truncate(t1.c15, 3)], [truncate(t1.c15, 4)]), filter(nil), + access([t1.c15]), partitions(p0) + +select c15, truncate(c15, -3), truncate(c15, -2), truncate(c15, -1), truncate(c15, 0), truncate(c15, 1), truncate(c15, 2), truncate(c15, 3), truncate(c15, 4) from t1; ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c15 | truncate(c15, -3) | truncate(c15, -2) | truncate(c15, -1) | truncate(c15, 0) | truncate(c15, 1) | truncate(c15, 2) | truncate(c15, 3) | truncate(c15, 4) | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 5.5 | 0 | 0 | 0 | 5 | 5.5 | 5.50 | 5.500 | 5.5000 | +| -5.5 | -0 | -0 | -0 | -5 | -5.5 | -5.50 | -5.500 | -5.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| 100.156 | 0 | 100 | 100 | 100 | 100.1 | 100.15 | 100.156 | 100.1560 | +| 123.111 | 0 | 100 | 120 | 123 | 123.1 | 123.11 | 123.111 | 123.1110 | +| 151 | 0 | 100 | 150 | 151 | 151.0 | 151.00 | 151.000 | 151.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c1, truncate(c16, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c1], [truncate(t1.c16, cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c1]), partitions(p0) + +select c16, c1, truncate(c16, c1) from t1; ++------+------+-------------------+ +| c16 | c1 | truncate(c16, c1) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | +| 6.5 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c2, truncate(c16, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c2], [truncate(t1.c16, cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c2]), partitions(p0) + +select c16, c2, truncate(c16, c2) from t1; ++------+------+-------------------+ +| c16 | c2 | truncate(c16, c2) | ++------+------+-------------------+ +| 6.5 | 2 | 6.5 | +| 6.5 | 2 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c3, truncate(c16, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c3], [truncate(t1.c16, cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c3]), partitions(p0) + +select c16, c3, truncate(c16, c3) from t1; ++------+------+-------------------+ +| c16 | c3 | truncate(c16, c3) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | +| 6.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c4, truncate(c16, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c4], [truncate(t1.c16, cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c4]), partitions(p0) + +select c16, c4, truncate(c16, c4) from t1; ++------+------+-------------------+ +| c16 | c4 | truncate(c16, c4) | ++------+------+-------------------+ +| 6.5 | 2 | 6.5 | +| 6.5 | 2 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c5, truncate(c16, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c5], [truncate(t1.c16, cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c5]), partitions(p0) + +select c16, c5, truncate(c16, c5) from t1; ++------+------+-------------------+ +| c16 | c5 | truncate(c16, c5) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | +| 6.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c6, truncate(c16, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c6], [truncate(t1.c16, cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c6]), partitions(p0) + +select c16, c6, truncate(c16, c6) from t1; ++------+------+-------------------+ +| c16 | c6 | truncate(c16, c6) | ++------+------+-------------------+ +| 6.5 | 2 | 6.5 | +| 6.5 | 2 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c7, truncate(c16, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c7], [truncate(t1.c16, cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c7]), partitions(p0) + +select c16, c7, truncate(c16, c7) from t1; ++------+------+-------------------+ +| c16 | c7 | truncate(c16, c7) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | +| 6.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c8, truncate(c16, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c8], [truncate(t1.c16, cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c8]), partitions(p0) + +select c16, c8, truncate(c16, c8) from t1; ++------+------+-------------------+ +| c16 | c8 | truncate(c16, c8) | ++------+------+-------------------+ +| 6.5 | 2 | 6.5 | +| 6.5 | 2 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c9, truncate(c16, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c9], [truncate(t1.c16, cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c9]), partitions(p0) + +select c16, c9, truncate(c16, c9) from t1; ++------+------+-------------------+ +| c16 | c9 | truncate(c16, c9) | ++------+------+-------------------+ +| 6.5 | 1 | 6.5 | +| 6.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c10, truncate(c16, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c10], [truncate(t1.c16, cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c10]), partitions(p0) + +select c16, c10, truncate(c16, c10) from t1; ++------+------+--------------------+ +| c16 | c10 | truncate(c16, c10) | ++------+------+--------------------+ +| 6.5 | 2 | 6.5 | +| 6.5 | 2 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c11, truncate(c16, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c11], [truncate(t1.c16, t1.c11)]), filter(nil), + access([t1.c16], [t1.c11]), partitions(p0) + +select c16, c11, truncate(c16, c11) from t1; ++------+------+--------------------+ +| c16 | c11 | truncate(c16, c11) | ++------+------+--------------------+ +| 6.5 | 1 | 6.5 | +| 6.5 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c12, truncate(c16, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c12], [truncate(t1.c16, cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c12]), partitions(p0) + +select c16, c12, truncate(c16, c12) from t1; ++------+------+--------------------+ +| c16 | c12 | truncate(c16, c12) | ++------+------+--------------------+ +| 6.5 | 2 | 6.5 | +| 6.5 | 2 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c13, truncate(c16, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c13], [truncate(t1.c16, cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c13]), partitions(p0) + +select c16, c13, truncate(c16, c13) from t1; ++------+---------+--------------------+ +| c16 | c13 | truncate(c16, c13) | ++------+---------+--------------------+ +| 6.5 | 3.5 | 6.5 | +| 6.5 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c14, truncate(c16, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c14], [truncate(t1.c16, cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c14]), partitions(p0) + +select c16, c14, truncate(c16, c14) from t1; ++------+------+--------------------+ +| c16 | c14 | truncate(c16, c14) | ++------+------+--------------------+ +| 6.5 | 4.5 | 6.5 | +| 6.5 | 4.5 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c15, truncate(c16, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c15], [truncate(t1.c16, cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c15]), partitions(p0) + +select c16, c15, truncate(c16, c15) from t1; ++------+---------+--------------------+ +| c16 | c15 | truncate(c16, c15) | ++------+---------+--------------------+ +| 6.5 | 5.5 | 6.5 | +| 6.5 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c16, truncate(c16, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c16], [truncate(t1.c16, cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, c16, truncate(c16, c16) from t1; ++------+------+--------------------+ +| c16 | c16 | truncate(c16, c16) | ++------+------+--------------------+ +| 6.5 | 6.5 | 6.5 | +| 6.5 | 6.5 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c17, truncate(c16, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c17], [truncate(t1.c16, cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c17]), partitions(p0) + +select c16, c17, truncate(c16, c17) from t1; ++------+------+--------------------+ +| c16 | c17 | truncate(c16, c17) | ++------+------+--------------------+ +| 6.5 | 8 | 6.5 | +| 6.5 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c18, truncate(c16, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c18], [truncate(t1.c16, cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c18]), partitions(p0) + +select c16, c18, truncate(c16, c18) from t1; ++------+------+--------------------+ +| c16 | c18 | truncate(c16, c18) | ++------+------+--------------------+ +| 6.5 | 9 | 6.5 | +| 6.5 | 9 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c19, truncate(c16, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c19], [truncate(t1.c16, cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c19]), partitions(p0) + +select c16, c19, truncate(c16, c19) from t1; ++------+---------------------+--------------------+ +| c16 | c19 | truncate(c16, c19) | ++------+---------------------+--------------------+ +| 6.5 | 2019-12-01 12:00:00 | 6.5 | +| 6.5 | 2019-12-01 12:00:00 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c20, truncate(c16, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c20], [truncate(t1.c16, cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c20]), partitions(p0) + +select c16, c20, truncate(c16, c20) from t1; ++------+---------------------+--------------------+ +| c16 | c20 | truncate(c16, c20) | ++------+---------------------+--------------------+ +| 6.5 | 2019-12-03 06:00:00 | 6.5 | +| 6.5 | 2019-12-03 06:00:00 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c21, truncate(c16, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c21], [truncate(t1.c16, cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c21]), partitions(p0) + +select c16, c21, truncate(c16, c21) from t1; ++------+------+--------------------+ +| c16 | c21 | truncate(c16, c21) | ++------+------+--------------------+ +| 6.5 | 9.5 | 6.5 | +| 6.5 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c16, c22, truncate(c16, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [t1.c22], [truncate(t1.c16, cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c16], [t1.c22]), partitions(p0) + +select c16, c22, truncate(c16, c22) from t1; ++------+------+--------------------+ +| c16 | c22 | truncate(c16, c22) | ++------+------+--------------------+ +| 6.5 | 10.5 | 6.5 | +| 6.5 | 10.5 | 6.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c16], [truncate(t1.c16, -3)], [truncate(t1.c16, -2)], [truncate(t1.c16, -1)], [truncate(t1.c16, 0)], [truncate(t1.c16, 1)], [truncate(t1.c16, 2)], [truncate(t1.c16, 3)], [truncate(t1.c16, 4)]), filter(nil), + access([t1.c16]), partitions(p0) + +select c16, truncate(c16, -3), truncate(c16, -2), truncate(c16, -1), truncate(c16, 0), truncate(c16, 1), truncate(c16, 2), truncate(c16, 3), truncate(c16, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c16 | truncate(c16, -3) | truncate(c16, -2) | truncate(c16, -1) | truncate(c16, 0) | truncate(c16, 1) | truncate(c16, 2) | truncate(c16, 3) | truncate(c16, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| 6.5 | 0 | 0 | 0 | 6 | 6.5 | 6.50 | 6.500 | 6.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c1, truncate(c17, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c1], [truncate(t1.c17, cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c1]), partitions(p0) + +select c17, c1, truncate(c17, c1) from t1; ++------+------+-------------------+ +| c17 | c1 | truncate(c17, c1) | ++------+------+-------------------+ +| 8 | 1 | 8 | +| -8 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c2, truncate(c17, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c2], [truncate(t1.c17, cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c2]), partitions(p0) + +select c17, c2, truncate(c17, c2) from t1; ++------+------+-------------------+ +| c17 | c2 | truncate(c17, c2) | ++------+------+-------------------+ +| 8 | 2 | 8 | +| -8 | 2 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c3, truncate(c17, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c3], [truncate(t1.c17, cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c3]), partitions(p0) + +select c17, c3, truncate(c17, c3) from t1; ++------+------+-------------------+ +| c17 | c3 | truncate(c17, c3) | ++------+------+-------------------+ +| 8 | 1 | 8 | +| -8 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c4, truncate(c17, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c4], [truncate(t1.c17, cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c4]), partitions(p0) + +select c17, c4, truncate(c17, c4) from t1; ++------+------+-------------------+ +| c17 | c4 | truncate(c17, c4) | ++------+------+-------------------+ +| 8 | 2 | 8 | +| -8 | 2 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c5, truncate(c17, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c5], [truncate(t1.c17, cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c5]), partitions(p0) + +select c17, c5, truncate(c17, c5) from t1; ++------+------+-------------------+ +| c17 | c5 | truncate(c17, c5) | ++------+------+-------------------+ +| 8 | 1 | 8 | +| -8 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c6, truncate(c17, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c6], [truncate(t1.c17, cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c6]), partitions(p0) + +select c17, c6, truncate(c17, c6) from t1; ++------+------+-------------------+ +| c17 | c6 | truncate(c17, c6) | ++------+------+-------------------+ +| 8 | 2 | 8 | +| -8 | 2 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c7, truncate(c17, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c7], [truncate(t1.c17, cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c7]), partitions(p0) + +select c17, c7, truncate(c17, c7) from t1; ++------+------+-------------------+ +| c17 | c7 | truncate(c17, c7) | ++------+------+-------------------+ +| 8 | 1 | 8 | +| -8 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c8, truncate(c17, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c8], [truncate(t1.c17, cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c8]), partitions(p0) + +select c17, c8, truncate(c17, c8) from t1; ++------+------+-------------------+ +| c17 | c8 | truncate(c17, c8) | ++------+------+-------------------+ +| 8 | 2 | 8 | +| -8 | 2 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c9, truncate(c17, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c9], [truncate(t1.c17, cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c9]), partitions(p0) + +select c17, c9, truncate(c17, c9) from t1; ++------+------+-------------------+ +| c17 | c9 | truncate(c17, c9) | ++------+------+-------------------+ +| 8 | 1 | 8 | +| -8 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c10, truncate(c17, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c10], [truncate(t1.c17, cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c10]), partitions(p0) + +select c17, c10, truncate(c17, c10) from t1; ++------+------+--------------------+ +| c17 | c10 | truncate(c17, c10) | ++------+------+--------------------+ +| 8 | 2 | 8 | +| -8 | 2 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c11, truncate(c17, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c11], [truncate(t1.c17, t1.c11)]), filter(nil), + access([t1.c17], [t1.c11]), partitions(p0) + +select c17, c11, truncate(c17, c11) from t1; ++------+------+--------------------+ +| c17 | c11 | truncate(c17, c11) | ++------+------+--------------------+ +| 8 | 1 | 8 | +| -8 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c12, truncate(c17, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c12], [truncate(t1.c17, cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c12]), partitions(p0) + +select c17, c12, truncate(c17, c12) from t1; ++------+------+--------------------+ +| c17 | c12 | truncate(c17, c12) | ++------+------+--------------------+ +| 8 | 2 | 8 | +| -8 | 2 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c13, truncate(c17, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c13], [truncate(t1.c17, cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c13]), partitions(p0) + +select c17, c13, truncate(c17, c13) from t1; ++------+---------+--------------------+ +| c17 | c13 | truncate(c17, c13) | ++------+---------+--------------------+ +| 8 | 3.5 | 8 | +| -8 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c14, truncate(c17, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c14], [truncate(t1.c17, cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c14]), partitions(p0) + +select c17, c14, truncate(c17, c14) from t1; ++------+------+--------------------+ +| c17 | c14 | truncate(c17, c14) | ++------+------+--------------------+ +| 8 | 4.5 | 8 | +| -8 | 4.5 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c15, truncate(c17, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c15], [truncate(t1.c17, cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c15]), partitions(p0) + +select c17, c15, truncate(c17, c15) from t1; ++------+---------+--------------------+ +| c17 | c15 | truncate(c17, c15) | ++------+---------+--------------------+ +| 8 | 5.5 | 8 | +| -8 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c16, truncate(c17, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c16], [truncate(t1.c17, cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c16]), partitions(p0) + +select c17, c16, truncate(c17, c16) from t1; ++------+------+--------------------+ +| c17 | c16 | truncate(c17, c16) | ++------+------+--------------------+ +| 8 | 6.5 | 8 | +| -8 | 6.5 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c17, truncate(c17, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c17], [truncate(t1.c17, cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, c17, truncate(c17, c17) from t1; ++------+------+--------------------+ +| c17 | c17 | truncate(c17, c17) | ++------+------+--------------------+ +| 8 | 8 | 8 | +| -8 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c18, truncate(c17, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c18], [truncate(t1.c17, cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c18]), partitions(p0) + +select c17, c18, truncate(c17, c18) from t1; ++------+------+--------------------+ +| c17 | c18 | truncate(c17, c18) | ++------+------+--------------------+ +| 8 | 9 | 8 | +| -8 | 9 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c19, truncate(c17, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c19], [truncate(t1.c17, cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c19]), partitions(p0) + +select c17, c19, truncate(c17, c19) from t1; ++------+---------------------+--------------------+ +| c17 | c19 | truncate(c17, c19) | ++------+---------------------+--------------------+ +| 8 | 2019-12-01 12:00:00 | 8 | +| -8 | 2019-12-01 12:00:00 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c20, truncate(c17, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c20], [truncate(t1.c17, cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c20]), partitions(p0) + +select c17, c20, truncate(c17, c20) from t1; ++------+---------------------+--------------------+ +| c17 | c20 | truncate(c17, c20) | ++------+---------------------+--------------------+ +| 8 | 2019-12-03 06:00:00 | 8 | +| -8 | 2019-12-03 06:00:00 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c21, truncate(c17, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c21], [truncate(t1.c17, cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c21]), partitions(p0) + +select c17, c21, truncate(c17, c21) from t1; ++------+------+--------------------+ +| c17 | c21 | truncate(c17, c21) | ++------+------+--------------------+ +| 8 | 9.5 | 8 | +| -8 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c17, c22, truncate(c17, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [t1.c22], [truncate(t1.c17, cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c17], [t1.c22]), partitions(p0) + +select c17, c22, truncate(c17, c22) from t1; ++------+------+--------------------+ +| c17 | c22 | truncate(c17, c22) | ++------+------+--------------------+ +| 8 | 10.5 | 8 | +| -8 | 10.5 | -8 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c17], [truncate(t1.c17, -3)], [truncate(t1.c17, -2)], [truncate(t1.c17, -1)], [truncate(t1.c17, 0)], [truncate(t1.c17, 1)], [truncate(t1.c17, 2)], [truncate(t1.c17, 3)], [truncate(t1.c17, 4)]), filter(nil), + access([t1.c17]), partitions(p0) + +select c17, truncate(c17, -3), truncate(c17, -2), truncate(c17, -1), truncate(c17, 0), truncate(c17, 1), truncate(c17, 2), truncate(c17, 3), truncate(c17, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c17 | truncate(c17, -3) | truncate(c17, -2) | truncate(c17, -1) | truncate(c17, 0) | truncate(c17, 1) | truncate(c17, 2) | truncate(c17, 3) | truncate(c17, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 8 | 0 | 0 | 0 | 8 | 8.0 | 8.00 | 8.000 | 8.0000 | +| -8 | 0 | 0 | 0 | -8 | -8.0 | -8.00 | -8.000 | -8.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c1, truncate(c18, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c1], [truncate(t1.c18, cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c1]), partitions(p0) + +select c18, c1, truncate(c18, c1) from t1; ++------+------+-------------------+ +| c18 | c1 | truncate(c18, c1) | ++------+------+-------------------+ +| 9 | 1 | 9 | +| 9 | -1 | 0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c2, truncate(c18, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c2], [truncate(t1.c18, cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c2]), partitions(p0) + +select c18, c2, truncate(c18, c2) from t1; ++------+------+-------------------+ +| c18 | c2 | truncate(c18, c2) | ++------+------+-------------------+ +| 9 | 2 | 9 | +| 9 | 2 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c3, truncate(c18, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c3], [truncate(t1.c18, cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c3]), partitions(p0) + +select c18, c3, truncate(c18, c3) from t1; ++------+------+-------------------+ +| c18 | c3 | truncate(c18, c3) | ++------+------+-------------------+ +| 9 | 1 | 9 | +| 9 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c4, truncate(c18, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c4], [truncate(t1.c18, cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c4]), partitions(p0) + +select c18, c4, truncate(c18, c4) from t1; ++------+------+-------------------+ +| c18 | c4 | truncate(c18, c4) | ++------+------+-------------------+ +| 9 | 2 | 9 | +| 9 | 2 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c5, truncate(c18, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c5], [truncate(t1.c18, cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c5]), partitions(p0) + +select c18, c5, truncate(c18, c5) from t1; ++------+------+-------------------+ +| c18 | c5 | truncate(c18, c5) | ++------+------+-------------------+ +| 9 | 1 | 9 | +| 9 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c6, truncate(c18, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c6], [truncate(t1.c18, cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c6]), partitions(p0) + +select c18, c6, truncate(c18, c6) from t1; ++------+------+-------------------+ +| c18 | c6 | truncate(c18, c6) | ++------+------+-------------------+ +| 9 | 2 | 9 | +| 9 | 2 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c7, truncate(c18, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c7], [truncate(t1.c18, cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c7]), partitions(p0) + +select c18, c7, truncate(c18, c7) from t1; ++------+------+-------------------+ +| c18 | c7 | truncate(c18, c7) | ++------+------+-------------------+ +| 9 | 1 | 9 | +| 9 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c8, truncate(c18, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c8], [truncate(t1.c18, cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c8]), partitions(p0) + +select c18, c8, truncate(c18, c8) from t1; ++------+------+-------------------+ +| c18 | c8 | truncate(c18, c8) | ++------+------+-------------------+ +| 9 | 2 | 9 | +| 9 | 2 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c9, truncate(c18, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c9], [truncate(t1.c18, cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c9]), partitions(p0) + +select c18, c9, truncate(c18, c9) from t1; ++------+------+-------------------+ +| c18 | c9 | truncate(c18, c9) | ++------+------+-------------------+ +| 9 | 1 | 9 | +| 9 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c10, truncate(c18, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c10], [truncate(t1.c18, cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c10]), partitions(p0) + +select c18, c10, truncate(c18, c10) from t1; ++------+------+--------------------+ +| c18 | c10 | truncate(c18, c10) | ++------+------+--------------------+ +| 9 | 2 | 9 | +| 9 | 2 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c11, truncate(c18, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c11], [truncate(t1.c18, t1.c11)]), filter(nil), + access([t1.c18], [t1.c11]), partitions(p0) + +select c18, c11, truncate(c18, c11) from t1; ++------+------+--------------------+ +| c18 | c11 | truncate(c18, c11) | ++------+------+--------------------+ +| 9 | 1 | 9 | +| 9 | -1 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c12, truncate(c18, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c12], [truncate(t1.c18, cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c12]), partitions(p0) + +select c18, c12, truncate(c18, c12) from t1; ++------+------+--------------------+ +| c18 | c12 | truncate(c18, c12) | ++------+------+--------------------+ +| 9 | 2 | 9 | +| 9 | 2 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c13, truncate(c18, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c13], [truncate(t1.c18, cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c13]), partitions(p0) + +select c18, c13, truncate(c18, c13) from t1; ++------+---------+--------------------+ +| c18 | c13 | truncate(c18, c13) | ++------+---------+--------------------+ +| 9 | 3.5 | 9 | +| 9 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c14, truncate(c18, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c14], [truncate(t1.c18, cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c14]), partitions(p0) + +select c18, c14, truncate(c18, c14) from t1; ++------+------+--------------------+ +| c18 | c14 | truncate(c18, c14) | ++------+------+--------------------+ +| 9 | 4.5 | 9 | +| 9 | 4.5 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c15, truncate(c18, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c15], [truncate(t1.c18, cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c15]), partitions(p0) + +select c18, c15, truncate(c18, c15) from t1; ++------+---------+--------------------+ +| c18 | c15 | truncate(c18, c15) | ++------+---------+--------------------+ +| 9 | 5.5 | 9 | +| 9 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c16, truncate(c18, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c16], [truncate(t1.c18, cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c16]), partitions(p0) + +select c18, c16, truncate(c18, c16) from t1; ++------+------+--------------------+ +| c18 | c16 | truncate(c18, c16) | ++------+------+--------------------+ +| 9 | 6.5 | 9 | +| 9 | 6.5 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c17, truncate(c18, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c17], [truncate(t1.c18, cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c17]), partitions(p0) + +select c18, c17, truncate(c18, c17) from t1; ++------+------+--------------------+ +| c18 | c17 | truncate(c18, c17) | ++------+------+--------------------+ +| 9 | 8 | 9 | +| 9 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c18, truncate(c18, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c18], [truncate(t1.c18, cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, c18, truncate(c18, c18) from t1; ++------+------+--------------------+ +| c18 | c18 | truncate(c18, c18) | ++------+------+--------------------+ +| 9 | 9 | 9 | +| 9 | 9 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c19, truncate(c18, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c19], [truncate(t1.c18, cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c19]), partitions(p0) + +select c18, c19, truncate(c18, c19) from t1; ++------+---------------------+--------------------+ +| c18 | c19 | truncate(c18, c19) | ++------+---------------------+--------------------+ +| 9 | 2019-12-01 12:00:00 | 9 | +| 9 | 2019-12-01 12:00:00 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c20, truncate(c18, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c20], [truncate(t1.c18, cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c20]), partitions(p0) + +select c18, c20, truncate(c18, c20) from t1; ++------+---------------------+--------------------+ +| c18 | c20 | truncate(c18, c20) | ++------+---------------------+--------------------+ +| 9 | 2019-12-03 06:00:00 | 9 | +| 9 | 2019-12-03 06:00:00 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c21, truncate(c18, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c21], [truncate(t1.c18, cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c21]), partitions(p0) + +select c18, c21, truncate(c18, c21) from t1; ++------+------+--------------------+ +| c18 | c21 | truncate(c18, c21) | ++------+------+--------------------+ +| 9 | 9.5 | 9 | +| 9 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c18, c22, truncate(c18, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [t1.c22], [truncate(t1.c18, cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c18], [t1.c22]), partitions(p0) + +select c18, c22, truncate(c18, c22) from t1; ++------+------+--------------------+ +| c18 | c22 | truncate(c18, c22) | ++------+------+--------------------+ +| 9 | 10.5 | 9 | +| 9 | 10.5 | 9 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c18], [truncate(t1.c18, -3)], [truncate(t1.c18, -2)], [truncate(t1.c18, -1)], [truncate(t1.c18, 0)], [truncate(t1.c18, 1)], [truncate(t1.c18, 2)], [truncate(t1.c18, 3)], [truncate(t1.c18, 4)]), filter(nil), + access([t1.c18]), partitions(p0) + +select c18, truncate(c18, -3), truncate(c18, -2), truncate(c18, -1), truncate(c18, 0), truncate(c18, 1), truncate(c18, 2), truncate(c18, 3), truncate(c18, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c18 | truncate(c18, -3) | truncate(c18, -2) | truncate(c18, -1) | truncate(c18, 0) | truncate(c18, 1) | truncate(c18, 2) | truncate(c18, 3) | truncate(c18, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| 9 | 0 | 0 | 0 | 9 | 9.0 | 9.00 | 9.000 | 9.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c19, c1, truncate(c19, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c1], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c1]), partitions(p0) + +select c19, c1, truncate(c19, c1) from t1; ++---------------------+------+-------------------+ +| c19 | c1 | truncate(c19, c1) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 20191201120000 | +| 2019-12-01 12:00:00 | -1 | 20191201120000 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c2, truncate(c19, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c2], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c2]), partitions(p0) + +select c19, c2, truncate(c19, c2) from t1; ++---------------------+------+-------------------+ +| c19 | c2 | truncate(c19, c2) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c3, truncate(c19, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c3], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c3]), partitions(p0) + +select c19, c3, truncate(c19, c3) from t1; ++---------------------+------+-------------------+ +| c19 | c3 | truncate(c19, c3) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 20191201120000 | +| 2019-12-01 12:00:00 | -1 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c4, truncate(c19, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c4], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c4]), partitions(p0) + +select c19, c4, truncate(c19, c4) from t1; ++---------------------+------+-------------------+ +| c19 | c4 | truncate(c19, c4) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c5, truncate(c19, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c5], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c5]), partitions(p0) + +select c19, c5, truncate(c19, c5) from t1; ++---------------------+------+-------------------+ +| c19 | c5 | truncate(c19, c5) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 20191201120000 | +| 2019-12-01 12:00:00 | -1 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c6, truncate(c19, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c6], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c6]), partitions(p0) + +select c19, c6, truncate(c19, c6) from t1; ++---------------------+------+-------------------+ +| c19 | c6 | truncate(c19, c6) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c7, truncate(c19, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c7], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c7]), partitions(p0) + +select c19, c7, truncate(c19, c7) from t1; ++---------------------+------+-------------------+ +| c19 | c7 | truncate(c19, c7) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 20191201120000 | +| 2019-12-01 12:00:00 | -1 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c8, truncate(c19, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c8], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c8]), partitions(p0) + +select c19, c8, truncate(c19, c8) from t1; ++---------------------+------+-------------------+ +| c19 | c8 | truncate(c19, c8) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c9, truncate(c19, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c9], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c9]), partitions(p0) + +select c19, c9, truncate(c19, c9) from t1; ++---------------------+------+-------------------+ +| c19 | c9 | truncate(c19, c9) | ++---------------------+------+-------------------+ +| 2019-12-01 12:00:00 | 1 | 20191201120000 | +| 2019-12-01 12:00:00 | -1 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c10, truncate(c19, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c10], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c10]), partitions(p0) + +select c19, c10, truncate(c19, c10) from t1; ++---------------------+------+--------------------+ +| c19 | c10 | truncate(c19, c10) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c11, truncate(c19, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c11], [truncate(cast(t1.c19, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c19], [t1.c11]), partitions(p0) + +select c19, c11, truncate(c19, c11) from t1; ++---------------------+------+--------------------+ +| c19 | c11 | truncate(c19, c11) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 1 | 20191201120000 | +| 2019-12-01 12:00:00 | -1 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c12, truncate(c19, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c12], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c12]), partitions(p0) + +select c19, c12, truncate(c19, c12) from t1; ++---------------------+------+--------------------+ +| c19 | c12 | truncate(c19, c12) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| 2019-12-01 12:00:00 | 2 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c13, truncate(c19, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c13], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c13]), partitions(p0) + +select c19, c13, truncate(c19, c13) from t1; ++---------------------+---------+--------------------+ +| c19 | c13 | truncate(c19, c13) | ++---------------------+---------+--------------------+ +| 2019-12-01 12:00:00 | 3.5 | 20191201120000 | +| 2019-12-01 12:00:00 | -3.5 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++---------------------+---------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c14, truncate(c19, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c14], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c14]), partitions(p0) + +select c19, c14, truncate(c19, c14) from t1; ++---------------------+------+--------------------+ +| c19 | c14 | truncate(c19, c14) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 4.5 | 20191201120000 | +| 2019-12-01 12:00:00 | 4.5 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c15, truncate(c19, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c15], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c15]), partitions(p0) + +select c19, c15, truncate(c19, c15) from t1; ++---------------------+---------+--------------------+ +| c19 | c15 | truncate(c19, c15) | ++---------------------+---------+--------------------+ +| 2019-12-01 12:00:00 | 5.5 | 20191201120000 | +| 2019-12-01 12:00:00 | -5.5 | 20191201000000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+---------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c16, truncate(c19, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c16], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c16]), partitions(p0) + +select c19, c16, truncate(c19, c16) from t1; ++---------------------+------+--------------------+ +| c19 | c16 | truncate(c19, c16) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 6.5 | 20191201120000 | +| 2019-12-01 12:00:00 | 6.5 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c17, truncate(c19, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c17], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c17]), partitions(p0) + +select c19, c17, truncate(c19, c17) from t1; ++---------------------+------+--------------------+ +| c19 | c17 | truncate(c19, c17) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 8 | 20191201120000 | +| 2019-12-01 12:00:00 | -8 | 20191200000000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c18, truncate(c19, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c18], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c18]), partitions(p0) + +select c19, c18, truncate(c19, c18) from t1; ++---------------------+------+--------------------+ +| c19 | c18 | truncate(c19, c18) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 9 | 20191201120000 | +| 2019-12-01 12:00:00 | 9 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c19, truncate(c19, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, c19, truncate(c19, c19) from t1; ++---------------------+---------------------+--------------------+ +| c19 | c19 | truncate(c19, c19) | ++---------------------+---------------------+--------------------+ +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | 20191201120000 | +| 2019-12-01 12:00:00 | 2019-12-01 12:00:00 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+---------------------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c20, truncate(c19, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c20], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c20]), partitions(p0) + +select c19, c20, truncate(c19, c20) from t1; ++---------------------+---------------------+--------------------+ +| c19 | c20 | truncate(c19, c20) | ++---------------------+---------------------+--------------------+ +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 20191201120000 | +| 2019-12-01 12:00:00 | 2019-12-03 06:00:00 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+---------------------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c21, truncate(c19, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c21], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c21]), partitions(p0) + +select c19, c21, truncate(c19, c21) from t1; ++---------------------+------+--------------------+ +| c19 | c21 | truncate(c19, c21) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 9.5 | 20191201120000 | +| 2019-12-01 12:00:00 | -9.5 | 20190000000000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c19, c22, truncate(c19, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [t1.c22], [truncate(cast(t1.c19, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c19], [t1.c22]), partitions(p0) + +select c19, c22, truncate(c19, c22) from t1; ++---------------------+------+--------------------+ +| c19 | c22 | truncate(c19, c22) | ++---------------------+------+--------------------+ +| 2019-12-01 12:00:00 | 10.5 | 20191201120000 | +| 2019-12-01 12:00:00 | 10.5 | 20191201120000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c19], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c19, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c19]), partitions(p0) + +select c19, truncate(c19, -3), truncate(c19, -2), truncate(c19, -1), truncate(c19, 0), truncate(c19, 1), truncate(c19, 2), truncate(c19, 3), truncate(c19, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c19 | truncate(c19, -3) | truncate(c19, -2) | truncate(c19, -1) | truncate(c19, 0) | truncate(c19, 1) | truncate(c19, 2) | truncate(c19, 3) | truncate(c19, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| 2019-12-01 12:00:00 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000 | 20191201120000.0 | 20191201120000.00 | 20191201120000.000 | 20191201120000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c1, truncate(c20, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c1], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c1]), partitions(p0) + +select c20, c1, truncate(c20, c1) from t1; ++---------------------+------+-------------------+ +| c20 | c1 | truncate(c20, c1) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 20191203060000 | +| 2019-12-03 06:00:00 | -1 | 20191203060000 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c2, truncate(c20, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c2], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c2]), partitions(p0) + +select c20, c2, truncate(c20, c2) from t1; ++---------------------+------+-------------------+ +| c20 | c2 | truncate(c20, c2) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c3, truncate(c20, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c3], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c3]), partitions(p0) + +select c20, c3, truncate(c20, c3) from t1; ++---------------------+------+-------------------+ +| c20 | c3 | truncate(c20, c3) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 20191203060000 | +| 2019-12-03 06:00:00 | -1 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c4, truncate(c20, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c4], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c4]), partitions(p0) + +select c20, c4, truncate(c20, c4) from t1; ++---------------------+------+-------------------+ +| c20 | c4 | truncate(c20, c4) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c5, truncate(c20, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c5], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c5]), partitions(p0) + +select c20, c5, truncate(c20, c5) from t1; ++---------------------+------+-------------------+ +| c20 | c5 | truncate(c20, c5) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 20191203060000 | +| 2019-12-03 06:00:00 | -1 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c6, truncate(c20, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c6], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c6]), partitions(p0) + +select c20, c6, truncate(c20, c6) from t1; ++---------------------+------+-------------------+ +| c20 | c6 | truncate(c20, c6) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c7, truncate(c20, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c7], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c7]), partitions(p0) + +select c20, c7, truncate(c20, c7) from t1; ++---------------------+------+-------------------+ +| c20 | c7 | truncate(c20, c7) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 20191203060000 | +| 2019-12-03 06:00:00 | -1 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c8, truncate(c20, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c8], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c8]), partitions(p0) + +select c20, c8, truncate(c20, c8) from t1; ++---------------------+------+-------------------+ +| c20 | c8 | truncate(c20, c8) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c9, truncate(c20, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c9], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c9]), partitions(p0) + +select c20, c9, truncate(c20, c9) from t1; ++---------------------+------+-------------------+ +| c20 | c9 | truncate(c20, c9) | ++---------------------+------+-------------------+ +| 2019-12-03 06:00:00 | 1 | 20191203060000 | +| 2019-12-03 06:00:00 | -1 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+-------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c10, truncate(c20, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c10], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c10]), partitions(p0) + +select c20, c10, truncate(c20, c10) from t1; ++---------------------+------+--------------------+ +| c20 | c10 | truncate(c20, c10) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c11, truncate(c20, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c11], [truncate(cast(t1.c20, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c20], [t1.c11]), partitions(p0) + +select c20, c11, truncate(c20, c11) from t1; ++---------------------+------+--------------------+ +| c20 | c11 | truncate(c20, c11) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 1 | 20191203060000 | +| 2019-12-03 06:00:00 | -1 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c12, truncate(c20, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c12], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c12]), partitions(p0) + +select c20, c12, truncate(c20, c12) from t1; ++---------------------+------+--------------------+ +| c20 | c12 | truncate(c20, c12) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| 2019-12-03 06:00:00 | 2 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c13, truncate(c20, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c13], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c13]), partitions(p0) + +select c20, c13, truncate(c20, c13) from t1; ++---------------------+---------+--------------------+ +| c20 | c13 | truncate(c20, c13) | ++---------------------+---------+--------------------+ +| 2019-12-03 06:00:00 | 3.5 | 20191203060000 | +| 2019-12-03 06:00:00 | -3.5 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++---------------------+---------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c14, truncate(c20, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c14], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c14]), partitions(p0) + +select c20, c14, truncate(c20, c14) from t1; ++---------------------+------+--------------------+ +| c20 | c14 | truncate(c20, c14) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 4.5 | 20191203060000 | +| 2019-12-03 06:00:00 | 4.5 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c15, truncate(c20, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c15], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c15]), partitions(p0) + +select c20, c15, truncate(c20, c15) from t1; ++---------------------+---------+--------------------+ +| c20 | c15 | truncate(c20, c15) | ++---------------------+---------+--------------------+ +| 2019-12-03 06:00:00 | 5.5 | 20191203060000 | +| 2019-12-03 06:00:00 | -5.5 | 20191203000000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+---------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c16, truncate(c20, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c16], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c16]), partitions(p0) + +select c20, c16, truncate(c20, c16) from t1; ++---------------------+------+--------------------+ +| c20 | c16 | truncate(c20, c16) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 6.5 | 20191203060000 | +| 2019-12-03 06:00:00 | 6.5 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c17, truncate(c20, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c17], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c17]), partitions(p0) + +select c20, c17, truncate(c20, c17) from t1; ++---------------------+------+--------------------+ +| c20 | c17 | truncate(c20, c17) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 8 | 20191203060000 | +| 2019-12-03 06:00:00 | -8 | 20191200000000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c18, truncate(c20, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c18], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c18]), partitions(p0) + +select c20, c18, truncate(c20, c18) from t1; ++---------------------+------+--------------------+ +| c20 | c18 | truncate(c20, c18) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 9 | 20191203060000 | +| 2019-12-03 06:00:00 | 9 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c19, truncate(c20, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c19], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c19]), partitions(p0) + +select c20, c19, truncate(c20, c19) from t1; ++---------------------+---------------------+--------------------+ +| c20 | c19 | truncate(c20, c19) | ++---------------------+---------------------+--------------------+ +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 20191203060000 | +| 2019-12-03 06:00:00 | 2019-12-01 12:00:00 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+---------------------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c20, truncate(c20, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, c20, truncate(c20, c20) from t1; ++---------------------+---------------------+--------------------+ +| c20 | c20 | truncate(c20, c20) | ++---------------------+---------------------+--------------------+ +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | 20191203060000 | +| 2019-12-03 06:00:00 | 2019-12-03 06:00:00 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+---------------------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c21, truncate(c20, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c21], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c21]), partitions(p0) + +select c20, c21, truncate(c20, c21) from t1; ++---------------------+------+--------------------+ +| c20 | c21 | truncate(c20, c21) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 9.5 | 20191203060000 | +| 2019-12-03 06:00:00 | -9.5 | 20190000000000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c20, c22, truncate(c20, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [t1.c22], [truncate(cast(t1.c20, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c20], [t1.c22]), partitions(p0) + +select c20, c22, truncate(c20, c22) from t1; ++---------------------+------+--------------------+ +| c20 | c22 | truncate(c20, c22) | ++---------------------+------+--------------------+ +| 2019-12-03 06:00:00 | 10.5 | 20191203060000 | +| 2019-12-03 06:00:00 | 10.5 | 20191203060000 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++---------------------+------+--------------------+ +EXPLAIN select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c20], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c20, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c20]), partitions(p0) + +select c20, truncate(c20, -3), truncate(c20, -2), truncate(c20, -1), truncate(c20, 0), truncate(c20, 1), truncate(c20, 2), truncate(c20, 3), truncate(c20, 4) from t1; ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| c20 | truncate(c20, -3) | truncate(c20, -2) | truncate(c20, -1) | truncate(c20, 0) | truncate(c20, 1) | truncate(c20, 2) | truncate(c20, 3) | truncate(c20, 4) | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| 2019-12-03 06:00:00 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000 | 20191203060000.0 | 20191203060000.00 | 20191203060000.000 | 20191203060000.0000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++---------------------+-------------------+-------------------+-------------------+------------------+------------------+-------------------+--------------------+---------------------+ +EXPLAIN select c21, c1, truncate(c21, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c1], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c1]), partitions(p0) + +select c21, c1, truncate(c21, c1) from t1; ++------+------+-------------------+ +| c21 | c1 | truncate(c21, c1) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | +| -9.5 | -1 | -0 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c2, truncate(c21, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c2], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c2]), partitions(p0) + +select c21, c2, truncate(c21, c2) from t1; ++------+------+-------------------+ +| c21 | c2 | truncate(c21, c2) | ++------+------+-------------------+ +| 9.5 | 2 | 9.5 | +| -9.5 | 2 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c3, truncate(c21, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c3], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c3]), partitions(p0) + +select c21, c3, truncate(c21, c3) from t1; ++------+------+-------------------+ +| c21 | c3 | truncate(c21, c3) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | +| -9.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c4, truncate(c21, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c4], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c4]), partitions(p0) + +select c21, c4, truncate(c21, c4) from t1; ++------+------+-------------------+ +| c21 | c4 | truncate(c21, c4) | ++------+------+-------------------+ +| 9.5 | 2 | 9.5 | +| -9.5 | 2 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c5, truncate(c21, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c5], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c5]), partitions(p0) + +select c21, c5, truncate(c21, c5) from t1; ++------+------+-------------------+ +| c21 | c5 | truncate(c21, c5) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | +| -9.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c6, truncate(c21, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c6], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c6]), partitions(p0) + +select c21, c6, truncate(c21, c6) from t1; ++------+------+-------------------+ +| c21 | c6 | truncate(c21, c6) | ++------+------+-------------------+ +| 9.5 | 2 | 9.5 | +| -9.5 | 2 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c7, truncate(c21, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c7], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c7]), partitions(p0) + +select c21, c7, truncate(c21, c7) from t1; ++------+------+-------------------+ +| c21 | c7 | truncate(c21, c7) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | +| -9.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c8, truncate(c21, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c8], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c8]), partitions(p0) + +select c21, c8, truncate(c21, c8) from t1; ++------+------+-------------------+ +| c21 | c8 | truncate(c21, c8) | ++------+------+-------------------+ +| 9.5 | 2 | 9.5 | +| -9.5 | 2 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c9, truncate(c21, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c9], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c9]), partitions(p0) + +select c21, c9, truncate(c21, c9) from t1; ++------+------+-------------------+ +| c21 | c9 | truncate(c21, c9) | ++------+------+-------------------+ +| 9.5 | 1 | 9.5 | +| -9.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c10, truncate(c21, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c10], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c10]), partitions(p0) + +select c21, c10, truncate(c21, c10) from t1; ++------+------+--------------------+ +| c21 | c10 | truncate(c21, c10) | ++------+------+--------------------+ +| 9.5 | 2 | 9.5 | +| -9.5 | 2 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c11, truncate(c21, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c11], [truncate(cast(t1.c21, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c21], [t1.c11]), partitions(p0) + +select c21, c11, truncate(c21, c11) from t1; ++------+------+--------------------+ +| c21 | c11 | truncate(c21, c11) | ++------+------+--------------------+ +| 9.5 | 1 | 9.5 | +| -9.5 | -1 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c12, truncate(c21, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c12], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c12]), partitions(p0) + +select c21, c12, truncate(c21, c12) from t1; ++------+------+--------------------+ +| c21 | c12 | truncate(c21, c12) | ++------+------+--------------------+ +| 9.5 | 2 | 9.5 | +| -9.5 | 2 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c13, truncate(c21, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c13], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c13]), partitions(p0) + +select c21, c13, truncate(c21, c13) from t1; ++------+---------+--------------------+ +| c21 | c13 | truncate(c21, c13) | ++------+---------+--------------------+ +| 9.5 | 3.5 | 9.5 | +| -9.5 | -3.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c14, truncate(c21, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c14], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c14]), partitions(p0) + +select c21, c14, truncate(c21, c14) from t1; ++------+------+--------------------+ +| c21 | c14 | truncate(c21, c14) | ++------+------+--------------------+ +| 9.5 | 4.5 | 9.5 | +| -9.5 | 4.5 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c15, truncate(c21, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c15], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c15]), partitions(p0) + +select c21, c15, truncate(c21, c15) from t1; ++------+---------+--------------------+ +| c21 | c15 | truncate(c21, c15) | ++------+---------+--------------------+ +| 9.5 | 5.5 | 9.5 | +| -9.5 | -5.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c16, truncate(c21, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c16], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c16]), partitions(p0) + +select c21, c16, truncate(c21, c16) from t1; ++------+------+--------------------+ +| c21 | c16 | truncate(c21, c16) | ++------+------+--------------------+ +| 9.5 | 6.5 | 9.5 | +| -9.5 | 6.5 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c17, truncate(c21, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c17], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c17]), partitions(p0) + +select c21, c17, truncate(c21, c17) from t1; ++------+------+--------------------+ +| c21 | c17 | truncate(c21, c17) | ++------+------+--------------------+ +| 9.5 | 8 | 9.5 | +| -9.5 | -8 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c18, truncate(c21, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c18], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c18]), partitions(p0) + +select c21, c18, truncate(c21, c18) from t1; ++------+------+--------------------+ +| c21 | c18 | truncate(c21, c18) | ++------+------+--------------------+ +| 9.5 | 9 | 9.5 | +| -9.5 | 9 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c19, truncate(c21, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c19], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c19]), partitions(p0) + +select c21, c19, truncate(c21, c19) from t1; ++------+---------------------+--------------------+ +| c21 | c19 | truncate(c21, c19) | ++------+---------------------+--------------------+ +| 9.5 | 2019-12-01 12:00:00 | 9.5 | +| -9.5 | 2019-12-01 12:00:00 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c20, truncate(c21, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c20], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c20]), partitions(p0) + +select c21, c20, truncate(c21, c20) from t1; ++------+---------------------+--------------------+ +| c21 | c20 | truncate(c21, c20) | ++------+---------------------+--------------------+ +| 9.5 | 2019-12-03 06:00:00 | 9.5 | +| -9.5 | 2019-12-03 06:00:00 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c21, truncate(c21, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, c21, truncate(c21, c21) from t1; ++------+------+--------------------+ +| c21 | c21 | truncate(c21, c21) | ++------+------+--------------------+ +| 9.5 | 9.5 | 9.5 | +| -9.5 | -9.5 | -0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c21, c22, truncate(c21, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [t1.c22], [truncate(cast(t1.c21, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c21], [t1.c22]), partitions(p0) + +select c21, c22, truncate(c21, c22) from t1; ++------+------+--------------------+ +| c21 | c22 | truncate(c21, c22) | ++------+------+--------------------+ +| 9.5 | 10.5 | 9.5 | +| -9.5 | 10.5 | -9.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c21], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c21, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c21]), partitions(p0) + +select c21, truncate(c21, -3), truncate(c21, -2), truncate(c21, -1), truncate(c21, 0), truncate(c21, 1), truncate(c21, 2), truncate(c21, 3), truncate(c21, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c21 | truncate(c21, -3) | truncate(c21, -2) | truncate(c21, -1) | truncate(c21, 0) | truncate(c21, 1) | truncate(c21, 2) | truncate(c21, 3) | truncate(c21, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 9.5 | 0 | 0 | 0 | 9 | 9.5 | 9.50 | 9.500 | 9.5000 | +| -9.5 | -0 | -0 | -0 | -9 | -9.5 | -9.50 | -9.500 | -9.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c1, truncate(c22, c1) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c1], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c1, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c1]), partitions(p0) + +select c22, c1, truncate(c22, c1) from t1; ++------+------+-------------------+ +| c22 | c1 | truncate(c22, c1) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | +| 10.5 | -1 | 10 | +| NULL | 100 | NULL | +| NULL | 123 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c2, truncate(c22, c2) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c2], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c2, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c2]), partitions(p0) + +select c22, c2, truncate(c22, c2) from t1; ++------+------+-------------------+ +| c22 | c2 | truncate(c22, c2) | ++------+------+-------------------+ +| 10.5 | 2 | 10.5 | +| 10.5 | 2 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c3, truncate(c22, c3) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c3], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c3, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c3]), partitions(p0) + +select c22, c3, truncate(c22, c3) from t1; ++------+------+-------------------+ +| c22 | c3 | truncate(c22, c3) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | +| 10.5 | -1 | 10 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c4, truncate(c22, c4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c4], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c4, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c4]), partitions(p0) + +select c22, c4, truncate(c22, c4) from t1; ++------+------+-------------------+ +| c22 | c4 | truncate(c22, c4) | ++------+------+-------------------+ +| 10.5 | 2 | 10.5 | +| 10.5 | 2 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c5, truncate(c22, c5) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c5], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c5, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c5]), partitions(p0) + +select c22, c5, truncate(c22, c5) from t1; ++------+------+-------------------+ +| c22 | c5 | truncate(c22, c5) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | +| 10.5 | -1 | 10 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c6, truncate(c22, c6) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c6], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c6, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c6]), partitions(p0) + +select c22, c6, truncate(c22, c6) from t1; ++------+------+-------------------+ +| c22 | c6 | truncate(c22, c6) | ++------+------+-------------------+ +| 10.5 | 2 | 10.5 | +| 10.5 | 2 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c7, truncate(c22, c7) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c7], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c7, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c7]), partitions(p0) + +select c22, c7, truncate(c22, c7) from t1; ++------+------+-------------------+ +| c22 | c7 | truncate(c22, c7) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | +| 10.5 | -1 | 10 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c8, truncate(c22, c8) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c8], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c8, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c8]), partitions(p0) + +select c22, c8, truncate(c22, c8) from t1; ++------+------+-------------------+ +| c22 | c8 | truncate(c22, c8) | ++------+------+-------------------+ +| 10.5 | 2 | 10.5 | +| 10.5 | 2 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c9, truncate(c22, c9) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c9], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c9, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c9]), partitions(p0) + +select c22, c9, truncate(c22, c9) from t1; ++------+------+-------------------+ +| c22 | c9 | truncate(c22, c9) | ++------+------+-------------------+ +| 10.5 | 1 | 10.5 | +| 10.5 | -1 | 10 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+-------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c10, truncate(c22, c10) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c10], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c10, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c10]), partitions(p0) + +select c22, c10, truncate(c22, c10) from t1; ++------+------+--------------------+ +| c22 | c10 | truncate(c22, c10) | ++------+------+--------------------+ +| 10.5 | 2 | 10.5 | +| 10.5 | 2 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c11, truncate(c22, c11) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c11], [truncate(cast(t1.c22, DOUBLE(-1, -1)), t1.c11)]), filter(nil), + access([t1.c22], [t1.c11]), partitions(p0) + +select c22, c11, truncate(c22, c11) from t1; ++------+------+--------------------+ +| c22 | c11 | truncate(c22, c11) | ++------+------+--------------------+ +| 10.5 | 1 | 10.5 | +| 10.5 | -1 | 10 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c12, truncate(c22, c12) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c12], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c12, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c12]), partitions(p0) + +select c22, c12, truncate(c22, c12) from t1; ++------+------+--------------------+ +| c22 | c12 | truncate(c22, c12) | ++------+------+--------------------+ +| 10.5 | 2 | 10.5 | +| 10.5 | 2 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c13, truncate(c22, c13) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c13], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c13, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c13]), partitions(p0) + +select c22, c13, truncate(c22, c13) from t1; ++------+---------+--------------------+ +| c22 | c13 | truncate(c22, c13) | ++------+---------+--------------------+ +| 10.5 | 3.5 | 10.5 | +| 10.5 | -3.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | ++------+---------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c14, truncate(c22, c14) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c14], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c14, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c14]), partitions(p0) + +select c22, c14, truncate(c22, c14) from t1; ++------+------+--------------------+ +| c22 | c14 | truncate(c22, c14) | ++------+------+--------------------+ +| 10.5 | 4.5 | 10.5 | +| 10.5 | 4.5 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c15, truncate(c22, c15) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c15], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c15, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c15]), partitions(p0) + +select c22, c15, truncate(c22, c15) from t1; ++------+---------+--------------------+ +| c22 | c15 | truncate(c22, c15) | ++------+---------+--------------------+ +| 10.5 | 5.5 | 10.5 | +| 10.5 | -5.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | 100.156 | NULL | +| NULL | 123.111 | NULL | +| NULL | 151 | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c16, truncate(c22, c16) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c16], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c16, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c16]), partitions(p0) + +select c22, c16, truncate(c22, c16) from t1; ++------+------+--------------------+ +| c22 | c16 | truncate(c22, c16) | ++------+------+--------------------+ +| 10.5 | 6.5 | 10.5 | +| 10.5 | 6.5 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c17, truncate(c22, c17) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c17], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c17, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c17]), partitions(p0) + +select c22, c17, truncate(c22, c17) from t1; ++------+------+--------------------+ +| c22 | c17 | truncate(c22, c17) | ++------+------+--------------------+ +| 10.5 | 8 | 10.5 | +| 10.5 | -8 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c18, truncate(c22, c18) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c18], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c18, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c18]), partitions(p0) + +select c22, c18, truncate(c22, c18) from t1; ++------+------+--------------------+ +| c22 | c18 | truncate(c22, c18) | ++------+------+--------------------+ +| 10.5 | 9 | 10.5 | +| 10.5 | 9 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c19, truncate(c22, c19) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c19], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c19, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c19]), partitions(p0) + +select c22, c19, truncate(c22, c19) from t1; ++------+---------------------+--------------------+ +| c22 | c19 | truncate(c22, c19) | ++------+---------------------+--------------------+ +| 10.5 | 2019-12-01 12:00:00 | 10.5 | +| 10.5 | 2019-12-01 12:00:00 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c20, truncate(c22, c20) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c20], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c20, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c20]), partitions(p0) + +select c22, c20, truncate(c22, c20) from t1; ++------+---------------------+--------------------+ +| c22 | c20 | truncate(c22, c20) | ++------+---------------------+--------------------+ +| 10.5 | 2019-12-03 06:00:00 | 10.5 | +| 10.5 | 2019-12-03 06:00:00 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+---------------------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c21, truncate(c22, c21) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c21], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c21, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22], [t1.c21]), partitions(p0) + +select c22, c21, truncate(c22, c21) from t1; ++------+------+--------------------+ +| c22 | c21 | truncate(c22, c21) | ++------+------+--------------------+ +| 10.5 | 9.5 | 10.5 | +| 10.5 | -9.5 | 0 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +EXPLAIN select c22, c22, truncate(c22, c22) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), cast(t1.c22, BIGINT(-1, 0)))]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, c22, truncate(c22, c22) from t1; ++------+------+--------------------+ +| c22 | c22 | truncate(c22, c22) | ++------+------+--------------------+ +| 10.5 | 10.5 | 10.5 | +| 10.5 | 10.5 | 10.5 | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------+ +EXPLAIN select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |11 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c22], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), -1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 0)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 1)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 2)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 3)], [truncate(cast(t1.c22, DOUBLE(-1, -1)), 4)]), filter(nil), + access([t1.c22]), partitions(p0) + +select c22, truncate(c22, -3), truncate(c22, -2), truncate(c22, -1), truncate(c22, 0), truncate(c22, 1), truncate(c22, 2), truncate(c22, 3), truncate(c22, 4) from t1; ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| c22 | truncate(c22, -3) | truncate(c22, -2) | truncate(c22, -1) | truncate(c22, 0) | truncate(c22, 1) | truncate(c22, 2) | truncate(c22, 3) | truncate(c22, 4) | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| 10.5 | 0 | 0 | 10 | 10 | 10.5 | 10.50 | 10.500 | 10.5000 | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+-------------------+-------------------+-------------------+------------------+------------------+------------------+------------------+------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_unhex.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_unhex.result new file mode 100644 index 000000000..cecd8fbd4 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_unhex.result @@ -0,0 +1,56 @@ +result_format: 4 + +drop table if exists t1; +create table t1 (c1 varchar(2000)); +insert into t1 values(hex("ABC")), (hex("123")); + +set @@ob_enable_plan_cache = 0; +select unhex(c1) from t1; ++-----------+ +| unhex(c1) | ++-----------+ +| ABC | +| 123 | ++-----------+ +select unhex("4142") from dual; ++---------------+ +| unhex("4142") | ++---------------+ +| AB | ++---------------+ + +drop table if exists t2; + +CREATE TABLE t2 (a VARBINARY(2000)); +set sql_mode = STRICT_TRANS_TABLES; +insert into t2 VALUES (UNHEX('54455354')); +insert into t2 VALUES (UNHEX('TEST')); +ERROR HY000: invalid hex number +select a from t2 where a = UNHEX('TEST'); ++------+ +| a | ++------+ ++------+ +select a from t2 where a = UNHEX('54455354'); ++------+ +| a | ++------+ +| TEST | ++------+ +set sql_mode = ""; +insert into t2 VALUES (UNHEX('54455354')); +insert into t2 VALUES (UNHEX('TEST')); +select a from t2 where a = UNHEX('TEST'); ++------+ +| a | ++------+ ++------+ +select a from t2 where a = UNHEX('54455354'); ++------+ +| a | ++------+ +| TEST | +| TEST | ++------+ + + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_unix_timestamp.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_unix_timestamp.result new file mode 100644 index 000000000..91b9f0069 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_unix_timestamp.result @@ -0,0 +1,99 @@ +result_format: 4 +alter system flush plan cache global; +set ob_enable_plan_cache = 0; + +select unix_timestamp(NULL); ++----------------------+ +| unix_timestamp(NULL) | ++----------------------+ +| NULL | ++----------------------+ +select unix_timestamp(''); ++--------------------+ +| unix_timestamp('') | ++--------------------+ +| 0.000000 | ++--------------------+ +select unix_timestamp('2010-01-01 10:50:50.123'); ++-------------------------------------------+ +| unix_timestamp('2010-01-01 10:50:50.123') | ++-------------------------------------------+ +| 1262314250.123 | ++-------------------------------------------+ +select unix_timestamp(123); ++---------------------+ +| unix_timestamp(123) | ++---------------------+ +| 948556800 | ++---------------------+ +drop table if exists t1; +create table t1 (col_datetime_4_not_null datetime(4) not null); +insert into t1 values + ('0000-00-00 00:00:00.0000'),('2006-05-12 07:06:44.0441'),('2007-11-08 00:00:00.0000'), ('2007-07-23 00:00:00.0000'),('2006-01-10 22:19:14.0158'),('2006-09-13 18:54:05.0013'), ('2002-03-26 00:00:00.0000'),('2002-10-22 10:53:06.0151'),('0000-00-00 00:00:00.0000'),('2001-06-04 00:00:00.0000'),('0000-00-00 00:00:00.0000'),('2000-12-11 10:47:58.0505'), ('2009-04-21 20:01:40.0570'),('2007-03-12 10:48:41.0031'),('0000-00-00 00:00:00.0000'), ('2009-06-22 00:00:00.0000'),('2008-01-21 15:28:44.0592'),('2003-10-05 00:43:55.0577'), ('2002-11-04 00:46:30.0630'),('2006-01-19 11:38:03.0378'),('0000-00-00 00:00:00.0000'), ('2001-02-04 00:00:00.0000'),('2004-10-22 21:59:04.0394'),('2006-03-20 18:54:13.0139'), ('2004-06-09 03:17:31.0403'),('0000-00-00 00:00:00.0000'),('2003-06-01 17:59:12.0365'), ('0000-00-00 00:00:00.0000'),('2009-06-15 08:58:58.0329'),('0000-00-00 00:00:00.0000'), ('2004-03-26 00:00:00.0000'),('2009-04-27 00:00:00.0000'),('2000-09-07 00:00:00.0000'), ('2006-11-04 00:51:03.0501'),('2005-02-20 00:30:47.0647'),('0000-00-00 00:00:00.0000'), ('2004-12-07 00:00:00.0000'),('0000-00-00 00:00:00.0000'),('0000-00-00 00:00:00.0000'), ('2002-08-17 00:27:20.0536'),('2006-10-12 12:12:28.0337'),('0000-00-00 00:00:00.0000'), ('0000-00-00 00:00:00.0000'),('2009-09-09 14:16:05.0354'),('2000-02-25 00:00:00.0000'), ('2003-12-16 05:38:37.0626'),('2000-10-05 03:46:43.0067'),('0000-00-00 00:00:00.0000'), ('2000-10-08 06:45:51.0547'),('0000-00-00 00:00:00.0000'),('2000-04-06 01:46:21.0620'), ('2001-08-10 23:15:40.0304'),('2001-06-24 10:14:00.0497'),('0000-00-00 00:00:00.0000'), ('0000-00-00 00:00:00.0000'),('2004-10-22 00:00:00.0000'),('0000-00-00 00:00:00.0000'), ('0000-00-00 00:00:00.0000'),('2005-08-23 06:34:23.0058'),('2005-03-28 18:34:18.0138'),('2004-05-18 00:00:00.0000'); +select col_datetime_4_not_null, unix_timestamp(col_datetime_4_not_null) from t1 order by 1; ++--------------------------+-----------------------------------------+ +| col_datetime_4_not_null | unix_timestamp(col_datetime_4_not_null) | ++--------------------------+-----------------------------------------+ +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 0000-00-00 00:00:00.0000 | 0.0000 | +| 2000-02-25 00:00:00.0000 | 951408000.0000 | +| 2000-04-06 01:46:21.0620 | 954956781.0620 | +| 2000-09-07 00:00:00.0000 | 968256000.0000 | +| 2000-10-05 03:46:43.0067 | 970688803.0067 | +| 2000-10-08 06:45:51.0547 | 970958751.0547 | +| 2000-12-11 10:47:58.0505 | 976502878.0505 | +| 2001-02-04 00:00:00.0000 | 981216000.0000 | +| 2001-06-04 00:00:00.0000 | 991584000.0000 | +| 2001-06-24 10:14:00.0497 | 993348840.0497 | +| 2001-08-10 23:15:40.0304 | 997456540.0304 | +| 2002-03-26 00:00:00.0000 | 1017072000.0000 | +| 2002-08-17 00:27:20.0536 | 1029515240.0536 | +| 2002-10-22 10:53:06.0151 | 1035255186.0151 | +| 2002-11-04 00:46:30.0630 | 1036341990.0630 | +| 2003-06-01 17:59:12.0365 | 1054461552.0365 | +| 2003-10-05 00:43:55.0577 | 1065285835.0577 | +| 2003-12-16 05:38:37.0626 | 1071524317.0626 | +| 2004-03-26 00:00:00.0000 | 1080230400.0000 | +| 2004-05-18 00:00:00.0000 | 1084809600.0000 | +| 2004-06-09 03:17:31.0403 | 1086722251.0403 | +| 2004-10-22 00:00:00.0000 | 1098374400.0000 | +| 2004-10-22 21:59:04.0394 | 1098453544.0394 | +| 2004-12-07 00:00:00.0000 | 1102348800.0000 | +| 2005-02-20 00:30:47.0647 | 1108830647.0647 | +| 2005-03-28 18:34:18.0138 | 1112006058.0138 | +| 2005-08-23 06:34:23.0058 | 1124750063.0058 | +| 2006-01-10 22:19:14.0158 | 1136902754.0158 | +| 2006-01-19 11:38:03.0378 | 1137641883.0378 | +| 2006-03-20 18:54:13.0139 | 1142852053.0139 | +| 2006-05-12 07:06:44.0441 | 1147388804.0441 | +| 2006-09-13 18:54:05.0013 | 1158144845.0013 | +| 2006-10-12 12:12:28.0337 | 1160626348.0337 | +| 2006-11-04 00:51:03.0501 | 1162572663.0501 | +| 2007-03-12 10:48:41.0031 | 1173667721.0031 | +| 2007-07-23 00:00:00.0000 | 1185120000.0000 | +| 2007-11-08 00:00:00.0000 | 1194451200.0000 | +| 2008-01-21 15:28:44.0592 | 1200900524.0592 | +| 2009-04-21 20:01:40.0570 | 1240315300.0570 | +| 2009-04-27 00:00:00.0000 | 1240761600.0000 | +| 2009-06-15 08:58:58.0329 | 1245027538.0329 | +| 2009-06-22 00:00:00.0000 | 1245600000.0000 | +| 2009-09-09 14:16:05.0354 | 1252476965.0354 | ++--------------------------+-----------------------------------------+ + diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/expr_xor.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_xor.result similarity index 75% rename from test/mysql_test/test_suite/static_engine/r/mysql/expr_xor.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_xor.result index 10dfa6fe1..2dbb39d1e 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/expr_xor.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/expr_xor.result @@ -1,23 +1,40 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; +result_format: 4 + alter system flush plan cache global; -connection default; set ob_enable_plan_cache = false; + select 1 xor 0 from dual; -1 xor 0 -1 ++---------+ +| 1 xor 0 | ++---------+ +| 1 | ++---------+ select 1 xor 0 xor 1 from dual; -1 xor 0 xor 1 -0 ++---------------+ +| 1 xor 0 xor 1 | ++---------------+ +| 0 | ++---------------+ select 1 xor 1 xor 1 from dual; -1 xor 1 xor 1 -1 ++---------------+ +| 1 xor 1 xor 1 | ++---------------+ +| 1 | ++---------------+ + select 0.4 xor 0.6 from dual; -0.4 xor 0.6 -1 ++-------------+ +| 0.4 xor 0.6 | ++-------------+ +| 0 | ++-------------+ select 0.5 xor 0.5 from dual; -0.5 xor 0.5 -0 ++-------------+ +| 0.5 xor 0.5 | ++-------------+ +| 0 | ++-------------+ + explain select 1 xor 1 xor 1 from dual; Query Plan =================================== @@ -28,56 +45,67 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([? XOR ?]), filter(nil) - values({? XOR ?}) + 0 - output([1 XOR 1 XOR 1]), filter(nil) + values({1 XOR 1 XOR 1}) + select null xor 0 from dual; -null xor 0 -NULL ++------------+ +| null xor 0 | ++------------+ +| NULL | ++------------+ select 1 xor null xor pow(200, 2000000) from dual; ERROR 22003: value is out of range select pow(200m 2000000) xor null xor 1 from dual; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '2000000) xor null xor 1 from dual' at line 1 -connection conn_admin; -connection default; + + + drop table if exists t; create table t (t1 tinyint, -t2 smallint, -t3 mediumint, -t4 integer, -t5 bigint, -t6 tinyint unsigned, -t7 smallint unsigned, -t8 mediumint unsigned, -t9 integer unsigned, -t10 bigint unsigned, -t11 float, -t12 float unsigned, -t13 double, -t14 double unsigned, -t15 number, -t16 number unsigned, -t17 datetime, -t18 timestamp, -t19 date, -t20 time, -t21 year, -t22 varchar(255), -t23 char(255), -t24 tinytext, -t25 mediumtext, -t26 longtext, -t27 bit, -t28 enum('a', 'b', 'c'), -t29 set('a', 'b', 'c')); + t2 smallint, + t3 mediumint, + t4 integer, + t5 bigint, + t6 tinyint unsigned, + t7 smallint unsigned, + t8 mediumint unsigned, + t9 integer unsigned, + t10 bigint unsigned, + t11 float, + t12 float unsigned, + t13 double, + t14 double unsigned, + t15 number, + t16 number unsigned, + t17 datetime, + t18 timestamp, + t19 date, + t20 time, + t21 year, + t22 varchar(255), + t23 char(255), + t24 tinytext, + t25 mediumtext, + t26 longtext, + t27 bit, + t28 enum('a', 'b', 'c'), + t29 set('a', 'b', 'c')); + insert into t values (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, -'1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '0.8', '0.9', '1.0', '1.1', -'1.2', 1, 'b', 'b'); -connection conn_admin; -connection default; + '1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '0.8', '0.9', '1.0', '1.1', + '1.2', 1, 'b', 'b'); + + + + select t1 xor t1 from t; -t1 xor t1 -0 ++-----------+ +| t1 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t1 from t; Query Plan =================================== @@ -88,12 +116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t1]), filter(nil), access([t.t1]), partitions(p0) + select t1 xor t2 from t; -t1 xor t2 -0 ++-----------+ +| t1 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t2 from t; Query Plan =================================== @@ -104,12 +136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t2]), filter(nil), access([t.t1], [t.t2]), partitions(p0) + select t1 xor t3 from t; -t1 xor t3 -0 ++-----------+ +| t1 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t3 from t; Query Plan =================================== @@ -120,12 +156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t3]), filter(nil), access([t.t1], [t.t3]), partitions(p0) + select t1 xor t4 from t; -t1 xor t4 -0 ++-----------+ +| t1 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t4 from t; Query Plan =================================== @@ -136,12 +176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t4]), filter(nil), access([t.t1], [t.t4]), partitions(p0) + select t1 xor t5 from t; -t1 xor t5 -0 ++-----------+ +| t1 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t5 from t; Query Plan =================================== @@ -152,12 +196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t5]), filter(nil), access([t.t1], [t.t5]), partitions(p0) + select t1 xor t6 from t; -t1 xor t6 -0 ++-----------+ +| t1 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t6 from t; Query Plan =================================== @@ -168,12 +216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t6]), filter(nil), access([t.t1], [t.t6]), partitions(p0) + select t1 xor t7 from t; -t1 xor t7 -0 ++-----------+ +| t1 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t7 from t; Query Plan =================================== @@ -184,12 +236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t7]), filter(nil), access([t.t1], [t.t7]), partitions(p0) + select t1 xor t8 from t; -t1 xor t8 -0 ++-----------+ +| t1 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t8 from t; Query Plan =================================== @@ -200,12 +256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t8]), filter(nil), access([t.t1], [t.t8]), partitions(p0) + select t1 xor t9 from t; -t1 xor t9 -0 ++-----------+ +| t1 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t1 xor t9 from t; Query Plan =================================== @@ -216,12 +276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t9]), filter(nil), access([t.t1], [t.t9]), partitions(p0) + select t1 xor t10 from t; -t1 xor t10 -0 ++------------+ +| t1 xor t10 | ++------------+ +| 0 | ++------------+ explain select t1 xor t10 from t; Query Plan =================================== @@ -232,12 +296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t10]), filter(nil), access([t.t1], [t.t10]), partitions(p0) + select t1 xor t11 from t; -t1 xor t11 -1 ++------------+ +| t1 xor t11 | ++------------+ +| 0 | ++------------+ explain select t1 xor t11 from t; Query Plan =================================== @@ -248,12 +316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t11]), filter(nil), access([t.t1], [t.t11]), partitions(p0) + select t1 xor t12 from t; -t1 xor t12 -1 ++------------+ +| t1 xor t12 | ++------------+ +| 0 | ++------------+ explain select t1 xor t12 from t; Query Plan =================================== @@ -264,12 +336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t12]), filter(nil), access([t.t1], [t.t12]), partitions(p0) + select t1 xor t13 from t; -t1 xor t13 -1 ++------------+ +| t1 xor t13 | ++------------+ +| 0 | ++------------+ explain select t1 xor t13 from t; Query Plan =================================== @@ -280,12 +356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t1 XOR t.t13]), filter(nil), access([t.t1], [t.t13]), partitions(p0) + select t1 xor t14 from t; -t1 xor t14 -0 ++------------+ +| t1 xor t14 | ++------------+ +| 0 | ++------------+ explain select t1 xor t14 from t; Query Plan =================================== @@ -296,12 +376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t14]), filter(nil), access([t.t1], [t.t14]), partitions(p0) + select t1 xor t15 from t; -t1 xor t15 -0 ++------------+ +| t1 xor t15 | ++------------+ +| 0 | ++------------+ explain select t1 xor t15 from t; Query Plan =================================== @@ -312,12 +396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t15]), filter(nil), access([t.t1], [t.t15]), partitions(p0) + select t1 xor t16 from t; -t1 xor t16 -0 ++------------+ +| t1 xor t16 | ++------------+ +| 0 | ++------------+ explain select t1 xor t16 from t; Query Plan =================================== @@ -328,12 +416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t16]), filter(nil), access([t.t1], [t.t16]), partitions(p0) + select t1 xor t17 from t; -t1 xor t17 -0 ++------------+ +| t1 xor t17 | ++------------+ +| 0 | ++------------+ explain select t1 xor t17 from t; Query Plan =================================== @@ -344,12 +436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t17]), partitions(p0) + select t1 xor t18 from t; -t1 xor t18 -0 ++------------+ +| t1 xor t18 | ++------------+ +| 0 | ++------------+ explain select t1 xor t18 from t; Query Plan =================================== @@ -360,12 +456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t18]), partitions(p0) + select t1 xor t19 from t; -t1 xor t19 -0 ++------------+ +| t1 xor t19 | ++------------+ +| 0 | ++------------+ explain select t1 xor t19 from t; Query Plan =================================== @@ -376,12 +476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t19]), partitions(p0) + select t1 xor t20 from t; -t1 xor t20 -0 ++------------+ +| t1 xor t20 | ++------------+ +| 0 | ++------------+ explain select t1 xor t20 from t; Query Plan =================================== @@ -392,12 +496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t20]), partitions(p0) + select t1 xor t21 from t; -t1 xor t21 -0 ++------------+ +| t1 xor t21 | ++------------+ +| 0 | ++------------+ explain select t1 xor t21 from t; Query Plan =================================== @@ -408,12 +516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t21]), partitions(p0) + select t1 xor t22 from t; -t1 xor t22 -0 ++------------+ +| t1 xor t22 | ++------------+ +| 0 | ++------------+ explain select t1 xor t22 from t; Query Plan =================================== @@ -424,12 +536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t22]), partitions(p0) + select t1 xor t23 from t; -t1 xor t23 -0 ++------------+ +| t1 xor t23 | ++------------+ +| 0 | ++------------+ explain select t1 xor t23 from t; Query Plan =================================== @@ -440,12 +556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t23]), partitions(p0) + select t1 xor t24 from t; -t1 xor t24 -0 ++------------+ +| t1 xor t24 | ++------------+ +| 0 | ++------------+ explain select t1 xor t24 from t; Query Plan =================================== @@ -456,12 +576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t24]), partitions(p0) + select t1 xor t25 from t; -t1 xor t25 -0 ++------------+ +| t1 xor t25 | ++------------+ +| 0 | ++------------+ explain select t1 xor t25 from t; Query Plan =================================== @@ -472,12 +596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t25]), partitions(p0) + select t1 xor t26 from t; -t1 xor t26 -0 ++------------+ +| t1 xor t26 | ++------------+ +| 0 | ++------------+ explain select t1 xor t26 from t; Query Plan =================================== @@ -488,12 +616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t26]), partitions(p0) + select t1 xor t27 from t; -t1 xor t27 -0 ++------------+ +| t1 xor t27 | ++------------+ +| 0 | ++------------+ explain select t1 xor t27 from t; Query Plan =================================== @@ -504,12 +636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR t.t27]), filter(nil), access([t.t1], [t.t27]), partitions(p0) + select t1 xor t28 from t; -t1 xor t28 -0 ++------------+ +| t1 xor t28 | ++------------+ +| 0 | ++------------+ explain select t1 xor t28 from t; Query Plan =================================== @@ -520,12 +656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t28]), partitions(p0) + select t1 xor t29 from t; -t1 xor t29 -0 ++------------+ +| t1 xor t29 | ++------------+ +| 0 | ++------------+ explain select t1 xor t29 from t; Query Plan =================================== @@ -536,12 +676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t1, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t1 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t1], [t.t29]), partitions(p0) + select t2 xor t1 from t; -t2 xor t1 -0 ++-----------+ +| t2 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t1 from t; Query Plan =================================== @@ -552,12 +696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t1]), filter(nil), access([t.t2], [t.t1]), partitions(p0) + select t2 xor t2 from t; -t2 xor t2 -0 ++-----------+ +| t2 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t2 from t; Query Plan =================================== @@ -568,12 +716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t2]), filter(nil), access([t.t2]), partitions(p0) + select t2 xor t3 from t; -t2 xor t3 -0 ++-----------+ +| t2 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t3 from t; Query Plan =================================== @@ -584,12 +736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t3]), filter(nil), access([t.t2], [t.t3]), partitions(p0) + select t2 xor t4 from t; -t2 xor t4 -0 ++-----------+ +| t2 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t4 from t; Query Plan =================================== @@ -600,12 +756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t4]), filter(nil), access([t.t2], [t.t4]), partitions(p0) + select t2 xor t5 from t; -t2 xor t5 -0 ++-----------+ +| t2 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t5 from t; Query Plan =================================== @@ -616,12 +776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t5]), filter(nil), access([t.t2], [t.t5]), partitions(p0) + select t2 xor t6 from t; -t2 xor t6 -0 ++-----------+ +| t2 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t6 from t; Query Plan =================================== @@ -632,12 +796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t6]), filter(nil), access([t.t2], [t.t6]), partitions(p0) + select t2 xor t7 from t; -t2 xor t7 -0 ++-----------+ +| t2 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t7 from t; Query Plan =================================== @@ -648,12 +816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t7]), filter(nil), access([t.t2], [t.t7]), partitions(p0) + select t2 xor t8 from t; -t2 xor t8 -0 ++-----------+ +| t2 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t8 from t; Query Plan =================================== @@ -664,12 +836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t8]), filter(nil), access([t.t2], [t.t8]), partitions(p0) + select t2 xor t9 from t; -t2 xor t9 -0 ++-----------+ +| t2 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t2 xor t9 from t; Query Plan =================================== @@ -680,12 +856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t9]), filter(nil), access([t.t2], [t.t9]), partitions(p0) + select t2 xor t10 from t; -t2 xor t10 -0 ++------------+ +| t2 xor t10 | ++------------+ +| 0 | ++------------+ explain select t2 xor t10 from t; Query Plan =================================== @@ -696,12 +876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t10]), filter(nil), access([t.t2], [t.t10]), partitions(p0) + select t2 xor t11 from t; -t2 xor t11 -1 ++------------+ +| t2 xor t11 | ++------------+ +| 0 | ++------------+ explain select t2 xor t11 from t; Query Plan =================================== @@ -712,12 +896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t11]), filter(nil), access([t.t2], [t.t11]), partitions(p0) + select t2 xor t12 from t; -t2 xor t12 -1 ++------------+ +| t2 xor t12 | ++------------+ +| 0 | ++------------+ explain select t2 xor t12 from t; Query Plan =================================== @@ -728,12 +916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t12]), filter(nil), access([t.t2], [t.t12]), partitions(p0) + select t2 xor t13 from t; -t2 xor t13 -1 ++------------+ +| t2 xor t13 | ++------------+ +| 0 | ++------------+ explain select t2 xor t13 from t; Query Plan =================================== @@ -744,12 +936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t2 XOR t.t13]), filter(nil), access([t.t2], [t.t13]), partitions(p0) + select t2 xor t14 from t; -t2 xor t14 -0 ++------------+ +| t2 xor t14 | ++------------+ +| 0 | ++------------+ explain select t2 xor t14 from t; Query Plan =================================== @@ -760,12 +956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t14]), filter(nil), access([t.t2], [t.t14]), partitions(p0) + select t2 xor t15 from t; -t2 xor t15 -0 ++------------+ +| t2 xor t15 | ++------------+ +| 0 | ++------------+ explain select t2 xor t15 from t; Query Plan =================================== @@ -776,12 +976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t15]), filter(nil), access([t.t2], [t.t15]), partitions(p0) + select t2 xor t16 from t; -t2 xor t16 -0 ++------------+ +| t2 xor t16 | ++------------+ +| 0 | ++------------+ explain select t2 xor t16 from t; Query Plan =================================== @@ -792,12 +996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t16]), filter(nil), access([t.t2], [t.t16]), partitions(p0) + select t2 xor t17 from t; -t2 xor t17 -0 ++------------+ +| t2 xor t17 | ++------------+ +| 0 | ++------------+ explain select t2 xor t17 from t; Query Plan =================================== @@ -808,12 +1016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t17]), partitions(p0) + select t2 xor t18 from t; -t2 xor t18 -0 ++------------+ +| t2 xor t18 | ++------------+ +| 0 | ++------------+ explain select t2 xor t18 from t; Query Plan =================================== @@ -824,12 +1036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t18]), partitions(p0) + select t2 xor t19 from t; -t2 xor t19 -0 ++------------+ +| t2 xor t19 | ++------------+ +| 0 | ++------------+ explain select t2 xor t19 from t; Query Plan =================================== @@ -840,12 +1056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t19]), partitions(p0) + select t2 xor t20 from t; -t2 xor t20 -0 ++------------+ +| t2 xor t20 | ++------------+ +| 0 | ++------------+ explain select t2 xor t20 from t; Query Plan =================================== @@ -856,12 +1076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t20]), partitions(p0) + select t2 xor t21 from t; -t2 xor t21 -0 ++------------+ +| t2 xor t21 | ++------------+ +| 0 | ++------------+ explain select t2 xor t21 from t; Query Plan =================================== @@ -872,12 +1096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t21]), partitions(p0) + select t2 xor t22 from t; -t2 xor t22 -0 ++------------+ +| t2 xor t22 | ++------------+ +| 0 | ++------------+ explain select t2 xor t22 from t; Query Plan =================================== @@ -888,12 +1116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t22]), partitions(p0) + select t2 xor t23 from t; -t2 xor t23 -0 ++------------+ +| t2 xor t23 | ++------------+ +| 0 | ++------------+ explain select t2 xor t23 from t; Query Plan =================================== @@ -904,12 +1136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t23]), partitions(p0) + select t2 xor t24 from t; -t2 xor t24 -0 ++------------+ +| t2 xor t24 | ++------------+ +| 0 | ++------------+ explain select t2 xor t24 from t; Query Plan =================================== @@ -920,12 +1156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t24]), partitions(p0) + select t2 xor t25 from t; -t2 xor t25 -0 ++------------+ +| t2 xor t25 | ++------------+ +| 0 | ++------------+ explain select t2 xor t25 from t; Query Plan =================================== @@ -936,12 +1176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t25]), partitions(p0) + select t2 xor t26 from t; -t2 xor t26 -0 ++------------+ +| t2 xor t26 | ++------------+ +| 0 | ++------------+ explain select t2 xor t26 from t; Query Plan =================================== @@ -952,12 +1196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t26]), partitions(p0) + select t2 xor t27 from t; -t2 xor t27 -0 ++------------+ +| t2 xor t27 | ++------------+ +| 0 | ++------------+ explain select t2 xor t27 from t; Query Plan =================================== @@ -968,12 +1216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR t.t27]), filter(nil), access([t.t2], [t.t27]), partitions(p0) + select t2 xor t28 from t; -t2 xor t28 -0 ++------------+ +| t2 xor t28 | ++------------+ +| 0 | ++------------+ explain select t2 xor t28 from t; Query Plan =================================== @@ -984,12 +1236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t28]), partitions(p0) + select t2 xor t29 from t; -t2 xor t29 -0 ++------------+ +| t2 xor t29 | ++------------+ +| 0 | ++------------+ explain select t2 xor t29 from t; Query Plan =================================== @@ -1000,12 +1256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t2, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t2 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t2], [t.t29]), partitions(p0) + select t3 xor t1 from t; -t3 xor t1 -0 ++-----------+ +| t3 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t1 from t; Query Plan =================================== @@ -1016,12 +1276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t1]), filter(nil), access([t.t3], [t.t1]), partitions(p0) + select t3 xor t2 from t; -t3 xor t2 -0 ++-----------+ +| t3 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t2 from t; Query Plan =================================== @@ -1032,12 +1296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t2]), filter(nil), access([t.t3], [t.t2]), partitions(p0) + select t3 xor t3 from t; -t3 xor t3 -0 ++-----------+ +| t3 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t3 from t; Query Plan =================================== @@ -1048,12 +1316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t3]), filter(nil), access([t.t3]), partitions(p0) + select t3 xor t4 from t; -t3 xor t4 -0 ++-----------+ +| t3 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t4 from t; Query Plan =================================== @@ -1064,12 +1336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t4]), filter(nil), access([t.t3], [t.t4]), partitions(p0) + select t3 xor t5 from t; -t3 xor t5 -0 ++-----------+ +| t3 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t5 from t; Query Plan =================================== @@ -1080,12 +1356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t5]), filter(nil), access([t.t3], [t.t5]), partitions(p0) + select t3 xor t6 from t; -t3 xor t6 -0 ++-----------+ +| t3 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t6 from t; Query Plan =================================== @@ -1096,12 +1376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t6]), filter(nil), access([t.t3], [t.t6]), partitions(p0) + select t3 xor t7 from t; -t3 xor t7 -0 ++-----------+ +| t3 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t7 from t; Query Plan =================================== @@ -1112,12 +1396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t7]), filter(nil), access([t.t3], [t.t7]), partitions(p0) + select t3 xor t8 from t; -t3 xor t8 -0 ++-----------+ +| t3 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t8 from t; Query Plan =================================== @@ -1128,12 +1416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t8]), filter(nil), access([t.t3], [t.t8]), partitions(p0) + select t3 xor t9 from t; -t3 xor t9 -0 ++-----------+ +| t3 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t3 xor t9 from t; Query Plan =================================== @@ -1144,12 +1436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t9]), filter(nil), access([t.t3], [t.t9]), partitions(p0) + select t3 xor t10 from t; -t3 xor t10 -0 ++------------+ +| t3 xor t10 | ++------------+ +| 0 | ++------------+ explain select t3 xor t10 from t; Query Plan =================================== @@ -1160,12 +1456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t10]), filter(nil), access([t.t3], [t.t10]), partitions(p0) + select t3 xor t11 from t; -t3 xor t11 -1 ++------------+ +| t3 xor t11 | ++------------+ +| 0 | ++------------+ explain select t3 xor t11 from t; Query Plan =================================== @@ -1176,12 +1476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t11]), filter(nil), access([t.t3], [t.t11]), partitions(p0) + select t3 xor t12 from t; -t3 xor t12 -1 ++------------+ +| t3 xor t12 | ++------------+ +| 0 | ++------------+ explain select t3 xor t12 from t; Query Plan =================================== @@ -1192,12 +1496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t12]), filter(nil), access([t.t3], [t.t12]), partitions(p0) + select t3 xor t13 from t; -t3 xor t13 -1 ++------------+ +| t3 xor t13 | ++------------+ +| 0 | ++------------+ explain select t3 xor t13 from t; Query Plan =================================== @@ -1208,12 +1516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t3 XOR t.t13]), filter(nil), access([t.t3], [t.t13]), partitions(p0) + select t3 xor t14 from t; -t3 xor t14 -0 ++------------+ +| t3 xor t14 | ++------------+ +| 0 | ++------------+ explain select t3 xor t14 from t; Query Plan =================================== @@ -1224,12 +1536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t14]), filter(nil), access([t.t3], [t.t14]), partitions(p0) + select t3 xor t15 from t; -t3 xor t15 -0 ++------------+ +| t3 xor t15 | ++------------+ +| 0 | ++------------+ explain select t3 xor t15 from t; Query Plan =================================== @@ -1240,12 +1556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t15]), filter(nil), access([t.t3], [t.t15]), partitions(p0) + select t3 xor t16 from t; -t3 xor t16 -0 ++------------+ +| t3 xor t16 | ++------------+ +| 0 | ++------------+ explain select t3 xor t16 from t; Query Plan =================================== @@ -1256,12 +1576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t16]), filter(nil), access([t.t3], [t.t16]), partitions(p0) + select t3 xor t17 from t; -t3 xor t17 -0 ++------------+ +| t3 xor t17 | ++------------+ +| 0 | ++------------+ explain select t3 xor t17 from t; Query Plan =================================== @@ -1272,12 +1596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t17]), partitions(p0) + select t3 xor t18 from t; -t3 xor t18 -0 ++------------+ +| t3 xor t18 | ++------------+ +| 0 | ++------------+ explain select t3 xor t18 from t; Query Plan =================================== @@ -1288,12 +1616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t18]), partitions(p0) + select t3 xor t19 from t; -t3 xor t19 -0 ++------------+ +| t3 xor t19 | ++------------+ +| 0 | ++------------+ explain select t3 xor t19 from t; Query Plan =================================== @@ -1304,12 +1636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t19]), partitions(p0) + select t3 xor t20 from t; -t3 xor t20 -0 ++------------+ +| t3 xor t20 | ++------------+ +| 0 | ++------------+ explain select t3 xor t20 from t; Query Plan =================================== @@ -1320,12 +1656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t20]), partitions(p0) + select t3 xor t21 from t; -t3 xor t21 -0 ++------------+ +| t3 xor t21 | ++------------+ +| 0 | ++------------+ explain select t3 xor t21 from t; Query Plan =================================== @@ -1336,12 +1676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t21]), partitions(p0) + select t3 xor t22 from t; -t3 xor t22 -0 ++------------+ +| t3 xor t22 | ++------------+ +| 0 | ++------------+ explain select t3 xor t22 from t; Query Plan =================================== @@ -1352,12 +1696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t22]), partitions(p0) + select t3 xor t23 from t; -t3 xor t23 -0 ++------------+ +| t3 xor t23 | ++------------+ +| 0 | ++------------+ explain select t3 xor t23 from t; Query Plan =================================== @@ -1368,12 +1716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t23]), partitions(p0) + select t3 xor t24 from t; -t3 xor t24 -0 ++------------+ +| t3 xor t24 | ++------------+ +| 0 | ++------------+ explain select t3 xor t24 from t; Query Plan =================================== @@ -1384,12 +1736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t24]), partitions(p0) + select t3 xor t25 from t; -t3 xor t25 -0 ++------------+ +| t3 xor t25 | ++------------+ +| 0 | ++------------+ explain select t3 xor t25 from t; Query Plan =================================== @@ -1400,12 +1756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t25]), partitions(p0) + select t3 xor t26 from t; -t3 xor t26 -0 ++------------+ +| t3 xor t26 | ++------------+ +| 0 | ++------------+ explain select t3 xor t26 from t; Query Plan =================================== @@ -1416,12 +1776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t26]), partitions(p0) + select t3 xor t27 from t; -t3 xor t27 -0 ++------------+ +| t3 xor t27 | ++------------+ +| 0 | ++------------+ explain select t3 xor t27 from t; Query Plan =================================== @@ -1432,12 +1796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR t.t27]), filter(nil), access([t.t3], [t.t27]), partitions(p0) + select t3 xor t28 from t; -t3 xor t28 -0 ++------------+ +| t3 xor t28 | ++------------+ +| 0 | ++------------+ explain select t3 xor t28 from t; Query Plan =================================== @@ -1448,12 +1816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t28]), partitions(p0) + select t3 xor t29 from t; -t3 xor t29 -0 ++------------+ +| t3 xor t29 | ++------------+ +| 0 | ++------------+ explain select t3 xor t29 from t; Query Plan =================================== @@ -1464,12 +1836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t3, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t3 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t3], [t.t29]), partitions(p0) + select t4 xor t1 from t; -t4 xor t1 -0 ++-----------+ +| t4 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t1 from t; Query Plan =================================== @@ -1480,12 +1856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t1]), filter(nil), access([t.t4], [t.t1]), partitions(p0) + select t4 xor t2 from t; -t4 xor t2 -0 ++-----------+ +| t4 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t2 from t; Query Plan =================================== @@ -1496,12 +1876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t2]), filter(nil), access([t.t4], [t.t2]), partitions(p0) + select t4 xor t3 from t; -t4 xor t3 -0 ++-----------+ +| t4 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t3 from t; Query Plan =================================== @@ -1512,12 +1896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t3]), filter(nil), access([t.t4], [t.t3]), partitions(p0) + select t4 xor t4 from t; -t4 xor t4 -0 ++-----------+ +| t4 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t4 from t; Query Plan =================================== @@ -1528,12 +1916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t4]), filter(nil), access([t.t4]), partitions(p0) + select t4 xor t5 from t; -t4 xor t5 -0 ++-----------+ +| t4 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t5 from t; Query Plan =================================== @@ -1544,12 +1936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t5]), filter(nil), access([t.t4], [t.t5]), partitions(p0) + select t4 xor t6 from t; -t4 xor t6 -0 ++-----------+ +| t4 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t6 from t; Query Plan =================================== @@ -1560,12 +1956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t6]), filter(nil), access([t.t4], [t.t6]), partitions(p0) + select t4 xor t7 from t; -t4 xor t7 -0 ++-----------+ +| t4 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t7 from t; Query Plan =================================== @@ -1576,12 +1976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t7]), filter(nil), access([t.t4], [t.t7]), partitions(p0) + select t4 xor t8 from t; -t4 xor t8 -0 ++-----------+ +| t4 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t8 from t; Query Plan =================================== @@ -1592,12 +1996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t8]), filter(nil), access([t.t4], [t.t8]), partitions(p0) + select t4 xor t9 from t; -t4 xor t9 -0 ++-----------+ +| t4 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t4 xor t9 from t; Query Plan =================================== @@ -1608,12 +2016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t9]), filter(nil), access([t.t4], [t.t9]), partitions(p0) + select t4 xor t10 from t; -t4 xor t10 -0 ++------------+ +| t4 xor t10 | ++------------+ +| 0 | ++------------+ explain select t4 xor t10 from t; Query Plan =================================== @@ -1624,12 +2036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t10]), filter(nil), access([t.t4], [t.t10]), partitions(p0) + select t4 xor t11 from t; -t4 xor t11 -1 ++------------+ +| t4 xor t11 | ++------------+ +| 0 | ++------------+ explain select t4 xor t11 from t; Query Plan =================================== @@ -1640,12 +2056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t11]), filter(nil), access([t.t4], [t.t11]), partitions(p0) + select t4 xor t12 from t; -t4 xor t12 -1 ++------------+ +| t4 xor t12 | ++------------+ +| 0 | ++------------+ explain select t4 xor t12 from t; Query Plan =================================== @@ -1656,12 +2076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t12]), filter(nil), access([t.t4], [t.t12]), partitions(p0) + select t4 xor t13 from t; -t4 xor t13 -1 ++------------+ +| t4 xor t13 | ++------------+ +| 0 | ++------------+ explain select t4 xor t13 from t; Query Plan =================================== @@ -1672,12 +2096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t4 XOR t.t13]), filter(nil), access([t.t4], [t.t13]), partitions(p0) + select t4 xor t14 from t; -t4 xor t14 -0 ++------------+ +| t4 xor t14 | ++------------+ +| 0 | ++------------+ explain select t4 xor t14 from t; Query Plan =================================== @@ -1688,12 +2116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t14]), filter(nil), access([t.t4], [t.t14]), partitions(p0) + select t4 xor t15 from t; -t4 xor t15 -0 ++------------+ +| t4 xor t15 | ++------------+ +| 0 | ++------------+ explain select t4 xor t15 from t; Query Plan =================================== @@ -1704,12 +2136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t15]), filter(nil), access([t.t4], [t.t15]), partitions(p0) + select t4 xor t16 from t; -t4 xor t16 -0 ++------------+ +| t4 xor t16 | ++------------+ +| 0 | ++------------+ explain select t4 xor t16 from t; Query Plan =================================== @@ -1720,12 +2156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t16]), filter(nil), access([t.t4], [t.t16]), partitions(p0) + select t4 xor t17 from t; -t4 xor t17 -0 ++------------+ +| t4 xor t17 | ++------------+ +| 0 | ++------------+ explain select t4 xor t17 from t; Query Plan =================================== @@ -1736,12 +2176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t17]), partitions(p0) + select t4 xor t18 from t; -t4 xor t18 -0 ++------------+ +| t4 xor t18 | ++------------+ +| 0 | ++------------+ explain select t4 xor t18 from t; Query Plan =================================== @@ -1752,12 +2196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t18]), partitions(p0) + select t4 xor t19 from t; -t4 xor t19 -0 ++------------+ +| t4 xor t19 | ++------------+ +| 0 | ++------------+ explain select t4 xor t19 from t; Query Plan =================================== @@ -1768,12 +2216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t19]), partitions(p0) + select t4 xor t20 from t; -t4 xor t20 -0 ++------------+ +| t4 xor t20 | ++------------+ +| 0 | ++------------+ explain select t4 xor t20 from t; Query Plan =================================== @@ -1784,12 +2236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t20]), partitions(p0) + select t4 xor t21 from t; -t4 xor t21 -0 ++------------+ +| t4 xor t21 | ++------------+ +| 0 | ++------------+ explain select t4 xor t21 from t; Query Plan =================================== @@ -1800,12 +2256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t21]), partitions(p0) + select t4 xor t22 from t; -t4 xor t22 -0 ++------------+ +| t4 xor t22 | ++------------+ +| 0 | ++------------+ explain select t4 xor t22 from t; Query Plan =================================== @@ -1816,12 +2276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t22]), partitions(p0) + select t4 xor t23 from t; -t4 xor t23 -0 ++------------+ +| t4 xor t23 | ++------------+ +| 0 | ++------------+ explain select t4 xor t23 from t; Query Plan =================================== @@ -1832,12 +2296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t23]), partitions(p0) + select t4 xor t24 from t; -t4 xor t24 -0 ++------------+ +| t4 xor t24 | ++------------+ +| 0 | ++------------+ explain select t4 xor t24 from t; Query Plan =================================== @@ -1848,12 +2316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t24]), partitions(p0) + select t4 xor t25 from t; -t4 xor t25 -0 ++------------+ +| t4 xor t25 | ++------------+ +| 0 | ++------------+ explain select t4 xor t25 from t; Query Plan =================================== @@ -1864,12 +2336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t25]), partitions(p0) + select t4 xor t26 from t; -t4 xor t26 -0 ++------------+ +| t4 xor t26 | ++------------+ +| 0 | ++------------+ explain select t4 xor t26 from t; Query Plan =================================== @@ -1880,12 +2356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t26]), partitions(p0) + select t4 xor t27 from t; -t4 xor t27 -0 ++------------+ +| t4 xor t27 | ++------------+ +| 0 | ++------------+ explain select t4 xor t27 from t; Query Plan =================================== @@ -1896,12 +2376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR t.t27]), filter(nil), access([t.t4], [t.t27]), partitions(p0) + select t4 xor t28 from t; -t4 xor t28 -0 ++------------+ +| t4 xor t28 | ++------------+ +| 0 | ++------------+ explain select t4 xor t28 from t; Query Plan =================================== @@ -1912,12 +2396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t28]), partitions(p0) + select t4 xor t29 from t; -t4 xor t29 -0 ++------------+ +| t4 xor t29 | ++------------+ +| 0 | ++------------+ explain select t4 xor t29 from t; Query Plan =================================== @@ -1928,12 +2416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t4, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t4 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t4], [t.t29]), partitions(p0) + select t5 xor t1 from t; -t5 xor t1 -0 ++-----------+ +| t5 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t1 from t; Query Plan =================================== @@ -1944,12 +2436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t1]), filter(nil), access([t.t5], [t.t1]), partitions(p0) + select t5 xor t2 from t; -t5 xor t2 -0 ++-----------+ +| t5 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t2 from t; Query Plan =================================== @@ -1960,12 +2456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t2]), filter(nil), access([t.t5], [t.t2]), partitions(p0) + select t5 xor t3 from t; -t5 xor t3 -0 ++-----------+ +| t5 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t3 from t; Query Plan =================================== @@ -1976,12 +2476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t3]), filter(nil), access([t.t5], [t.t3]), partitions(p0) + select t5 xor t4 from t; -t5 xor t4 -0 ++-----------+ +| t5 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t4 from t; Query Plan =================================== @@ -1992,12 +2496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t4]), filter(nil), access([t.t5], [t.t4]), partitions(p0) + select t5 xor t5 from t; -t5 xor t5 -0 ++-----------+ +| t5 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t5 from t; Query Plan =================================== @@ -2008,12 +2516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t5]), filter(nil), access([t.t5]), partitions(p0) + select t5 xor t6 from t; -t5 xor t6 -0 ++-----------+ +| t5 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t6 from t; Query Plan =================================== @@ -2024,12 +2536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t6]), filter(nil), access([t.t5], [t.t6]), partitions(p0) + select t5 xor t7 from t; -t5 xor t7 -0 ++-----------+ +| t5 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t7 from t; Query Plan =================================== @@ -2040,12 +2556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t7]), filter(nil), access([t.t5], [t.t7]), partitions(p0) + select t5 xor t8 from t; -t5 xor t8 -0 ++-----------+ +| t5 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t8 from t; Query Plan =================================== @@ -2056,12 +2576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t8]), filter(nil), access([t.t5], [t.t8]), partitions(p0) + select t5 xor t9 from t; -t5 xor t9 -0 ++-----------+ +| t5 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t5 xor t9 from t; Query Plan =================================== @@ -2072,12 +2596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t9]), filter(nil), access([t.t5], [t.t9]), partitions(p0) + select t5 xor t10 from t; -t5 xor t10 -0 ++------------+ +| t5 xor t10 | ++------------+ +| 0 | ++------------+ explain select t5 xor t10 from t; Query Plan =================================== @@ -2088,12 +2616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t10]), filter(nil), access([t.t5], [t.t10]), partitions(p0) + select t5 xor t11 from t; -t5 xor t11 -1 ++------------+ +| t5 xor t11 | ++------------+ +| 0 | ++------------+ explain select t5 xor t11 from t; Query Plan =================================== @@ -2104,12 +2636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t11]), filter(nil), access([t.t5], [t.t11]), partitions(p0) + select t5 xor t12 from t; -t5 xor t12 -1 ++------------+ +| t5 xor t12 | ++------------+ +| 0 | ++------------+ explain select t5 xor t12 from t; Query Plan =================================== @@ -2120,12 +2656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t12]), filter(nil), access([t.t5], [t.t12]), partitions(p0) + select t5 xor t13 from t; -t5 xor t13 -1 ++------------+ +| t5 xor t13 | ++------------+ +| 0 | ++------------+ explain select t5 xor t13 from t; Query Plan =================================== @@ -2136,12 +2676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t5 XOR t.t13]), filter(nil), access([t.t5], [t.t13]), partitions(p0) + select t5 xor t14 from t; -t5 xor t14 -0 ++------------+ +| t5 xor t14 | ++------------+ +| 0 | ++------------+ explain select t5 xor t14 from t; Query Plan =================================== @@ -2152,12 +2696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t14]), filter(nil), access([t.t5], [t.t14]), partitions(p0) + select t5 xor t15 from t; -t5 xor t15 -0 ++------------+ +| t5 xor t15 | ++------------+ +| 0 | ++------------+ explain select t5 xor t15 from t; Query Plan =================================== @@ -2168,12 +2716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t15]), filter(nil), access([t.t5], [t.t15]), partitions(p0) + select t5 xor t16 from t; -t5 xor t16 -0 ++------------+ +| t5 xor t16 | ++------------+ +| 0 | ++------------+ explain select t5 xor t16 from t; Query Plan =================================== @@ -2184,12 +2736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t16]), filter(nil), access([t.t5], [t.t16]), partitions(p0) + select t5 xor t17 from t; -t5 xor t17 -0 ++------------+ +| t5 xor t17 | ++------------+ +| 0 | ++------------+ explain select t5 xor t17 from t; Query Plan =================================== @@ -2200,12 +2756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t17]), partitions(p0) + select t5 xor t18 from t; -t5 xor t18 -0 ++------------+ +| t5 xor t18 | ++------------+ +| 0 | ++------------+ explain select t5 xor t18 from t; Query Plan =================================== @@ -2216,12 +2776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t18]), partitions(p0) + select t5 xor t19 from t; -t5 xor t19 -0 ++------------+ +| t5 xor t19 | ++------------+ +| 0 | ++------------+ explain select t5 xor t19 from t; Query Plan =================================== @@ -2232,12 +2796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t19]), partitions(p0) + select t5 xor t20 from t; -t5 xor t20 -0 ++------------+ +| t5 xor t20 | ++------------+ +| 0 | ++------------+ explain select t5 xor t20 from t; Query Plan =================================== @@ -2248,12 +2816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t20]), partitions(p0) + select t5 xor t21 from t; -t5 xor t21 -0 ++------------+ +| t5 xor t21 | ++------------+ +| 0 | ++------------+ explain select t5 xor t21 from t; Query Plan =================================== @@ -2264,12 +2836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t21]), partitions(p0) + select t5 xor t22 from t; -t5 xor t22 -0 ++------------+ +| t5 xor t22 | ++------------+ +| 0 | ++------------+ explain select t5 xor t22 from t; Query Plan =================================== @@ -2280,12 +2856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t22]), partitions(p0) + select t5 xor t23 from t; -t5 xor t23 -0 ++------------+ +| t5 xor t23 | ++------------+ +| 0 | ++------------+ explain select t5 xor t23 from t; Query Plan =================================== @@ -2296,12 +2876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t23]), partitions(p0) + select t5 xor t24 from t; -t5 xor t24 -0 ++------------+ +| t5 xor t24 | ++------------+ +| 0 | ++------------+ explain select t5 xor t24 from t; Query Plan =================================== @@ -2312,12 +2896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t24]), partitions(p0) + select t5 xor t25 from t; -t5 xor t25 -0 ++------------+ +| t5 xor t25 | ++------------+ +| 0 | ++------------+ explain select t5 xor t25 from t; Query Plan =================================== @@ -2328,12 +2916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t25]), partitions(p0) + select t5 xor t26 from t; -t5 xor t26 -0 ++------------+ +| t5 xor t26 | ++------------+ +| 0 | ++------------+ explain select t5 xor t26 from t; Query Plan =================================== @@ -2344,12 +2936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t26]), partitions(p0) + select t5 xor t27 from t; -t5 xor t27 -0 ++------------+ +| t5 xor t27 | ++------------+ +| 0 | ++------------+ explain select t5 xor t27 from t; Query Plan =================================== @@ -2360,12 +2956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR t.t27]), filter(nil), access([t.t5], [t.t27]), partitions(p0) + select t5 xor t28 from t; -t5 xor t28 -0 ++------------+ +| t5 xor t28 | ++------------+ +| 0 | ++------------+ explain select t5 xor t28 from t; Query Plan =================================== @@ -2376,12 +2976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t28]), partitions(p0) + select t5 xor t29 from t; -t5 xor t29 -0 ++------------+ +| t5 xor t29 | ++------------+ +| 0 | ++------------+ explain select t5 xor t29 from t; Query Plan =================================== @@ -2392,12 +2996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t5, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t5 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t5], [t.t29]), partitions(p0) + select t6 xor t1 from t; -t6 xor t1 -0 ++-----------+ +| t6 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t1 from t; Query Plan =================================== @@ -2408,12 +3016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t1]), filter(nil), access([t.t6], [t.t1]), partitions(p0) + select t6 xor t2 from t; -t6 xor t2 -0 ++-----------+ +| t6 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t2 from t; Query Plan =================================== @@ -2424,12 +3036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t2]), filter(nil), access([t.t6], [t.t2]), partitions(p0) + select t6 xor t3 from t; -t6 xor t3 -0 ++-----------+ +| t6 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t3 from t; Query Plan =================================== @@ -2440,12 +3056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t3]), filter(nil), access([t.t6], [t.t3]), partitions(p0) + select t6 xor t4 from t; -t6 xor t4 -0 ++-----------+ +| t6 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t4 from t; Query Plan =================================== @@ -2456,12 +3076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t4]), filter(nil), access([t.t6], [t.t4]), partitions(p0) + select t6 xor t5 from t; -t6 xor t5 -0 ++-----------+ +| t6 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t5 from t; Query Plan =================================== @@ -2472,12 +3096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t5]), filter(nil), access([t.t6], [t.t5]), partitions(p0) + select t6 xor t6 from t; -t6 xor t6 -0 ++-----------+ +| t6 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t6 from t; Query Plan =================================== @@ -2488,12 +3116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t6]), filter(nil), access([t.t6]), partitions(p0) + select t6 xor t7 from t; -t6 xor t7 -0 ++-----------+ +| t6 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t7 from t; Query Plan =================================== @@ -2504,12 +3136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t7]), filter(nil), access([t.t6], [t.t7]), partitions(p0) + select t6 xor t8 from t; -t6 xor t8 -0 ++-----------+ +| t6 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t8 from t; Query Plan =================================== @@ -2520,12 +3156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t8]), filter(nil), access([t.t6], [t.t8]), partitions(p0) + select t6 xor t9 from t; -t6 xor t9 -0 ++-----------+ +| t6 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t6 xor t9 from t; Query Plan =================================== @@ -2536,12 +3176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t9]), filter(nil), access([t.t6], [t.t9]), partitions(p0) + select t6 xor t10 from t; -t6 xor t10 -0 ++------------+ +| t6 xor t10 | ++------------+ +| 0 | ++------------+ explain select t6 xor t10 from t; Query Plan =================================== @@ -2552,12 +3196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t10]), filter(nil), access([t.t6], [t.t10]), partitions(p0) + select t6 xor t11 from t; -t6 xor t11 -1 ++------------+ +| t6 xor t11 | ++------------+ +| 0 | ++------------+ explain select t6 xor t11 from t; Query Plan =================================== @@ -2568,12 +3216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t11]), filter(nil), access([t.t6], [t.t11]), partitions(p0) + select t6 xor t12 from t; -t6 xor t12 -1 ++------------+ +| t6 xor t12 | ++------------+ +| 0 | ++------------+ explain select t6 xor t12 from t; Query Plan =================================== @@ -2584,12 +3236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t12]), filter(nil), access([t.t6], [t.t12]), partitions(p0) + select t6 xor t13 from t; -t6 xor t13 -1 ++------------+ +| t6 xor t13 | ++------------+ +| 0 | ++------------+ explain select t6 xor t13 from t; Query Plan =================================== @@ -2600,12 +3256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t6 XOR t.t13]), filter(nil), access([t.t6], [t.t13]), partitions(p0) + select t6 xor t14 from t; -t6 xor t14 -0 ++------------+ +| t6 xor t14 | ++------------+ +| 0 | ++------------+ explain select t6 xor t14 from t; Query Plan =================================== @@ -2616,12 +3276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t14]), filter(nil), access([t.t6], [t.t14]), partitions(p0) + select t6 xor t15 from t; -t6 xor t15 -0 ++------------+ +| t6 xor t15 | ++------------+ +| 0 | ++------------+ explain select t6 xor t15 from t; Query Plan =================================== @@ -2632,12 +3296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t15]), filter(nil), access([t.t6], [t.t15]), partitions(p0) + select t6 xor t16 from t; -t6 xor t16 -0 ++------------+ +| t6 xor t16 | ++------------+ +| 0 | ++------------+ explain select t6 xor t16 from t; Query Plan =================================== @@ -2648,12 +3316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t16]), filter(nil), access([t.t6], [t.t16]), partitions(p0) + select t6 xor t17 from t; -t6 xor t17 -0 ++------------+ +| t6 xor t17 | ++------------+ +| 0 | ++------------+ explain select t6 xor t17 from t; Query Plan =================================== @@ -2664,12 +3336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t17]), partitions(p0) + select t6 xor t18 from t; -t6 xor t18 -0 ++------------+ +| t6 xor t18 | ++------------+ +| 0 | ++------------+ explain select t6 xor t18 from t; Query Plan =================================== @@ -2680,12 +3356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t18]), partitions(p0) + select t6 xor t19 from t; -t6 xor t19 -0 ++------------+ +| t6 xor t19 | ++------------+ +| 0 | ++------------+ explain select t6 xor t19 from t; Query Plan =================================== @@ -2696,12 +3376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t19]), partitions(p0) + select t6 xor t20 from t; -t6 xor t20 -0 ++------------+ +| t6 xor t20 | ++------------+ +| 0 | ++------------+ explain select t6 xor t20 from t; Query Plan =================================== @@ -2712,12 +3396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t20]), partitions(p0) + select t6 xor t21 from t; -t6 xor t21 -0 ++------------+ +| t6 xor t21 | ++------------+ +| 0 | ++------------+ explain select t6 xor t21 from t; Query Plan =================================== @@ -2728,12 +3416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t21]), partitions(p0) + select t6 xor t22 from t; -t6 xor t22 -0 ++------------+ +| t6 xor t22 | ++------------+ +| 0 | ++------------+ explain select t6 xor t22 from t; Query Plan =================================== @@ -2744,12 +3436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t22]), partitions(p0) + select t6 xor t23 from t; -t6 xor t23 -0 ++------------+ +| t6 xor t23 | ++------------+ +| 0 | ++------------+ explain select t6 xor t23 from t; Query Plan =================================== @@ -2760,12 +3456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t23]), partitions(p0) + select t6 xor t24 from t; -t6 xor t24 -0 ++------------+ +| t6 xor t24 | ++------------+ +| 0 | ++------------+ explain select t6 xor t24 from t; Query Plan =================================== @@ -2776,12 +3476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t24]), partitions(p0) + select t6 xor t25 from t; -t6 xor t25 -0 ++------------+ +| t6 xor t25 | ++------------+ +| 0 | ++------------+ explain select t6 xor t25 from t; Query Plan =================================== @@ -2792,12 +3496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t25]), partitions(p0) + select t6 xor t26 from t; -t6 xor t26 -0 ++------------+ +| t6 xor t26 | ++------------+ +| 0 | ++------------+ explain select t6 xor t26 from t; Query Plan =================================== @@ -2808,12 +3516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t26]), partitions(p0) + select t6 xor t27 from t; -t6 xor t27 -0 ++------------+ +| t6 xor t27 | ++------------+ +| 0 | ++------------+ explain select t6 xor t27 from t; Query Plan =================================== @@ -2824,12 +3536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR t.t27]), filter(nil), access([t.t6], [t.t27]), partitions(p0) + select t6 xor t28 from t; -t6 xor t28 -0 ++------------+ +| t6 xor t28 | ++------------+ +| 0 | ++------------+ explain select t6 xor t28 from t; Query Plan =================================== @@ -2840,12 +3556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t28]), partitions(p0) + select t6 xor t29 from t; -t6 xor t29 -0 ++------------+ +| t6 xor t29 | ++------------+ +| 0 | ++------------+ explain select t6 xor t29 from t; Query Plan =================================== @@ -2856,12 +3576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t6, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t6 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t6], [t.t29]), partitions(p0) + select t7 xor t1 from t; -t7 xor t1 -0 ++-----------+ +| t7 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t1 from t; Query Plan =================================== @@ -2872,12 +3596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t1]), filter(nil), access([t.t7], [t.t1]), partitions(p0) + select t7 xor t2 from t; -t7 xor t2 -0 ++-----------+ +| t7 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t2 from t; Query Plan =================================== @@ -2888,12 +3616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t2]), filter(nil), access([t.t7], [t.t2]), partitions(p0) + select t7 xor t3 from t; -t7 xor t3 -0 ++-----------+ +| t7 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t3 from t; Query Plan =================================== @@ -2904,12 +3636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t3]), filter(nil), access([t.t7], [t.t3]), partitions(p0) + select t7 xor t4 from t; -t7 xor t4 -0 ++-----------+ +| t7 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t4 from t; Query Plan =================================== @@ -2920,12 +3656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t4]), filter(nil), access([t.t7], [t.t4]), partitions(p0) + select t7 xor t5 from t; -t7 xor t5 -0 ++-----------+ +| t7 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t5 from t; Query Plan =================================== @@ -2936,12 +3676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t5]), filter(nil), access([t.t7], [t.t5]), partitions(p0) + select t7 xor t6 from t; -t7 xor t6 -0 ++-----------+ +| t7 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t6 from t; Query Plan =================================== @@ -2952,12 +3696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t6]), filter(nil), access([t.t7], [t.t6]), partitions(p0) + select t7 xor t7 from t; -t7 xor t7 -0 ++-----------+ +| t7 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t7 from t; Query Plan =================================== @@ -2968,12 +3716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t7]), filter(nil), access([t.t7]), partitions(p0) + select t7 xor t8 from t; -t7 xor t8 -0 ++-----------+ +| t7 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t8 from t; Query Plan =================================== @@ -2984,12 +3736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t8]), filter(nil), access([t.t7], [t.t8]), partitions(p0) + select t7 xor t9 from t; -t7 xor t9 -0 ++-----------+ +| t7 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t7 xor t9 from t; Query Plan =================================== @@ -3000,12 +3756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t9]), filter(nil), access([t.t7], [t.t9]), partitions(p0) + select t7 xor t10 from t; -t7 xor t10 -0 ++------------+ +| t7 xor t10 | ++------------+ +| 0 | ++------------+ explain select t7 xor t10 from t; Query Plan =================================== @@ -3016,12 +3776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t10]), filter(nil), access([t.t7], [t.t10]), partitions(p0) + select t7 xor t11 from t; -t7 xor t11 -1 ++------------+ +| t7 xor t11 | ++------------+ +| 0 | ++------------+ explain select t7 xor t11 from t; Query Plan =================================== @@ -3032,12 +3796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t11]), filter(nil), access([t.t7], [t.t11]), partitions(p0) + select t7 xor t12 from t; -t7 xor t12 -1 ++------------+ +| t7 xor t12 | ++------------+ +| 0 | ++------------+ explain select t7 xor t12 from t; Query Plan =================================== @@ -3048,12 +3816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t12]), filter(nil), access([t.t7], [t.t12]), partitions(p0) + select t7 xor t13 from t; -t7 xor t13 -1 ++------------+ +| t7 xor t13 | ++------------+ +| 0 | ++------------+ explain select t7 xor t13 from t; Query Plan =================================== @@ -3064,12 +3836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t7 XOR t.t13]), filter(nil), access([t.t7], [t.t13]), partitions(p0) + select t7 xor t14 from t; -t7 xor t14 -0 ++------------+ +| t7 xor t14 | ++------------+ +| 0 | ++------------+ explain select t7 xor t14 from t; Query Plan =================================== @@ -3080,12 +3856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t14]), filter(nil), access([t.t7], [t.t14]), partitions(p0) + select t7 xor t15 from t; -t7 xor t15 -0 ++------------+ +| t7 xor t15 | ++------------+ +| 0 | ++------------+ explain select t7 xor t15 from t; Query Plan =================================== @@ -3096,12 +3876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t15]), filter(nil), access([t.t7], [t.t15]), partitions(p0) + select t7 xor t16 from t; -t7 xor t16 -0 ++------------+ +| t7 xor t16 | ++------------+ +| 0 | ++------------+ explain select t7 xor t16 from t; Query Plan =================================== @@ -3112,12 +3896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t16]), filter(nil), access([t.t7], [t.t16]), partitions(p0) + select t7 xor t17 from t; -t7 xor t17 -0 ++------------+ +| t7 xor t17 | ++------------+ +| 0 | ++------------+ explain select t7 xor t17 from t; Query Plan =================================== @@ -3128,12 +3916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t17]), partitions(p0) + select t7 xor t18 from t; -t7 xor t18 -0 ++------------+ +| t7 xor t18 | ++------------+ +| 0 | ++------------+ explain select t7 xor t18 from t; Query Plan =================================== @@ -3144,12 +3936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t18]), partitions(p0) + select t7 xor t19 from t; -t7 xor t19 -0 ++------------+ +| t7 xor t19 | ++------------+ +| 0 | ++------------+ explain select t7 xor t19 from t; Query Plan =================================== @@ -3160,12 +3956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t19]), partitions(p0) + select t7 xor t20 from t; -t7 xor t20 -0 ++------------+ +| t7 xor t20 | ++------------+ +| 0 | ++------------+ explain select t7 xor t20 from t; Query Plan =================================== @@ -3176,12 +3976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t20]), partitions(p0) + select t7 xor t21 from t; -t7 xor t21 -0 ++------------+ +| t7 xor t21 | ++------------+ +| 0 | ++------------+ explain select t7 xor t21 from t; Query Plan =================================== @@ -3192,12 +3996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t21]), partitions(p0) + select t7 xor t22 from t; -t7 xor t22 -0 ++------------+ +| t7 xor t22 | ++------------+ +| 0 | ++------------+ explain select t7 xor t22 from t; Query Plan =================================== @@ -3208,12 +4016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t22]), partitions(p0) + select t7 xor t23 from t; -t7 xor t23 -0 ++------------+ +| t7 xor t23 | ++------------+ +| 0 | ++------------+ explain select t7 xor t23 from t; Query Plan =================================== @@ -3224,12 +4036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t23]), partitions(p0) + select t7 xor t24 from t; -t7 xor t24 -0 ++------------+ +| t7 xor t24 | ++------------+ +| 0 | ++------------+ explain select t7 xor t24 from t; Query Plan =================================== @@ -3240,12 +4056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t24]), partitions(p0) + select t7 xor t25 from t; -t7 xor t25 -0 ++------------+ +| t7 xor t25 | ++------------+ +| 0 | ++------------+ explain select t7 xor t25 from t; Query Plan =================================== @@ -3256,12 +4076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t25]), partitions(p0) + select t7 xor t26 from t; -t7 xor t26 -0 ++------------+ +| t7 xor t26 | ++------------+ +| 0 | ++------------+ explain select t7 xor t26 from t; Query Plan =================================== @@ -3272,12 +4096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t26]), partitions(p0) + select t7 xor t27 from t; -t7 xor t27 -0 ++------------+ +| t7 xor t27 | ++------------+ +| 0 | ++------------+ explain select t7 xor t27 from t; Query Plan =================================== @@ -3288,12 +4116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR t.t27]), filter(nil), access([t.t7], [t.t27]), partitions(p0) + select t7 xor t28 from t; -t7 xor t28 -0 ++------------+ +| t7 xor t28 | ++------------+ +| 0 | ++------------+ explain select t7 xor t28 from t; Query Plan =================================== @@ -3304,12 +4136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t28]), partitions(p0) + select t7 xor t29 from t; -t7 xor t29 -0 ++------------+ +| t7 xor t29 | ++------------+ +| 0 | ++------------+ explain select t7 xor t29 from t; Query Plan =================================== @@ -3320,12 +4156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t7, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t7 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t7], [t.t29]), partitions(p0) + select t8 xor t1 from t; -t8 xor t1 -0 ++-----------+ +| t8 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t1 from t; Query Plan =================================== @@ -3336,12 +4176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t1]), filter(nil), access([t.t8], [t.t1]), partitions(p0) + select t8 xor t2 from t; -t8 xor t2 -0 ++-----------+ +| t8 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t2 from t; Query Plan =================================== @@ -3352,12 +4196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t2]), filter(nil), access([t.t8], [t.t2]), partitions(p0) + select t8 xor t3 from t; -t8 xor t3 -0 ++-----------+ +| t8 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t3 from t; Query Plan =================================== @@ -3368,12 +4216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t3]), filter(nil), access([t.t8], [t.t3]), partitions(p0) + select t8 xor t4 from t; -t8 xor t4 -0 ++-----------+ +| t8 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t4 from t; Query Plan =================================== @@ -3384,12 +4236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t4]), filter(nil), access([t.t8], [t.t4]), partitions(p0) + select t8 xor t5 from t; -t8 xor t5 -0 ++-----------+ +| t8 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t5 from t; Query Plan =================================== @@ -3400,12 +4256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t5]), filter(nil), access([t.t8], [t.t5]), partitions(p0) + select t8 xor t6 from t; -t8 xor t6 -0 ++-----------+ +| t8 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t6 from t; Query Plan =================================== @@ -3416,12 +4276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t6]), filter(nil), access([t.t8], [t.t6]), partitions(p0) + select t8 xor t7 from t; -t8 xor t7 -0 ++-----------+ +| t8 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t7 from t; Query Plan =================================== @@ -3432,12 +4296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t7]), filter(nil), access([t.t8], [t.t7]), partitions(p0) + select t8 xor t8 from t; -t8 xor t8 -0 ++-----------+ +| t8 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t8 from t; Query Plan =================================== @@ -3448,12 +4316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t8]), filter(nil), access([t.t8]), partitions(p0) + select t8 xor t9 from t; -t8 xor t9 -0 ++-----------+ +| t8 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t8 xor t9 from t; Query Plan =================================== @@ -3464,12 +4336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t9]), filter(nil), access([t.t8], [t.t9]), partitions(p0) + select t8 xor t10 from t; -t8 xor t10 -0 ++------------+ +| t8 xor t10 | ++------------+ +| 0 | ++------------+ explain select t8 xor t10 from t; Query Plan =================================== @@ -3480,12 +4356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t10]), filter(nil), access([t.t8], [t.t10]), partitions(p0) + select t8 xor t11 from t; -t8 xor t11 -1 ++------------+ +| t8 xor t11 | ++------------+ +| 0 | ++------------+ explain select t8 xor t11 from t; Query Plan =================================== @@ -3496,12 +4376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t11]), filter(nil), access([t.t8], [t.t11]), partitions(p0) + select t8 xor t12 from t; -t8 xor t12 -1 ++------------+ +| t8 xor t12 | ++------------+ +| 0 | ++------------+ explain select t8 xor t12 from t; Query Plan =================================== @@ -3512,12 +4396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t12]), filter(nil), access([t.t8], [t.t12]), partitions(p0) + select t8 xor t13 from t; -t8 xor t13 -1 ++------------+ +| t8 xor t13 | ++------------+ +| 0 | ++------------+ explain select t8 xor t13 from t; Query Plan =================================== @@ -3528,12 +4416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t8 XOR t.t13]), filter(nil), access([t.t8], [t.t13]), partitions(p0) + select t8 xor t14 from t; -t8 xor t14 -0 ++------------+ +| t8 xor t14 | ++------------+ +| 0 | ++------------+ explain select t8 xor t14 from t; Query Plan =================================== @@ -3544,12 +4436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t14]), filter(nil), access([t.t8], [t.t14]), partitions(p0) + select t8 xor t15 from t; -t8 xor t15 -0 ++------------+ +| t8 xor t15 | ++------------+ +| 0 | ++------------+ explain select t8 xor t15 from t; Query Plan =================================== @@ -3560,12 +4456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t15]), filter(nil), access([t.t8], [t.t15]), partitions(p0) + select t8 xor t16 from t; -t8 xor t16 -0 ++------------+ +| t8 xor t16 | ++------------+ +| 0 | ++------------+ explain select t8 xor t16 from t; Query Plan =================================== @@ -3576,12 +4476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t16]), filter(nil), access([t.t8], [t.t16]), partitions(p0) + select t8 xor t17 from t; -t8 xor t17 -0 ++------------+ +| t8 xor t17 | ++------------+ +| 0 | ++------------+ explain select t8 xor t17 from t; Query Plan =================================== @@ -3592,12 +4496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t17]), partitions(p0) + select t8 xor t18 from t; -t8 xor t18 -0 ++------------+ +| t8 xor t18 | ++------------+ +| 0 | ++------------+ explain select t8 xor t18 from t; Query Plan =================================== @@ -3608,12 +4516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t18]), partitions(p0) + select t8 xor t19 from t; -t8 xor t19 -0 ++------------+ +| t8 xor t19 | ++------------+ +| 0 | ++------------+ explain select t8 xor t19 from t; Query Plan =================================== @@ -3624,12 +4536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t19]), partitions(p0) + select t8 xor t20 from t; -t8 xor t20 -0 ++------------+ +| t8 xor t20 | ++------------+ +| 0 | ++------------+ explain select t8 xor t20 from t; Query Plan =================================== @@ -3640,12 +4556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t20]), partitions(p0) + select t8 xor t21 from t; -t8 xor t21 -0 ++------------+ +| t8 xor t21 | ++------------+ +| 0 | ++------------+ explain select t8 xor t21 from t; Query Plan =================================== @@ -3656,12 +4576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t21]), partitions(p0) + select t8 xor t22 from t; -t8 xor t22 -0 ++------------+ +| t8 xor t22 | ++------------+ +| 0 | ++------------+ explain select t8 xor t22 from t; Query Plan =================================== @@ -3672,12 +4596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t22]), partitions(p0) + select t8 xor t23 from t; -t8 xor t23 -0 ++------------+ +| t8 xor t23 | ++------------+ +| 0 | ++------------+ explain select t8 xor t23 from t; Query Plan =================================== @@ -3688,12 +4616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t23]), partitions(p0) + select t8 xor t24 from t; -t8 xor t24 -0 ++------------+ +| t8 xor t24 | ++------------+ +| 0 | ++------------+ explain select t8 xor t24 from t; Query Plan =================================== @@ -3704,12 +4636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t24]), partitions(p0) + select t8 xor t25 from t; -t8 xor t25 -0 ++------------+ +| t8 xor t25 | ++------------+ +| 0 | ++------------+ explain select t8 xor t25 from t; Query Plan =================================== @@ -3720,12 +4656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t25]), partitions(p0) + select t8 xor t26 from t; -t8 xor t26 -0 ++------------+ +| t8 xor t26 | ++------------+ +| 0 | ++------------+ explain select t8 xor t26 from t; Query Plan =================================== @@ -3736,12 +4676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t26]), partitions(p0) + select t8 xor t27 from t; -t8 xor t27 -0 ++------------+ +| t8 xor t27 | ++------------+ +| 0 | ++------------+ explain select t8 xor t27 from t; Query Plan =================================== @@ -3752,12 +4696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR t.t27]), filter(nil), access([t.t8], [t.t27]), partitions(p0) + select t8 xor t28 from t; -t8 xor t28 -0 ++------------+ +| t8 xor t28 | ++------------+ +| 0 | ++------------+ explain select t8 xor t28 from t; Query Plan =================================== @@ -3768,12 +4716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t28]), partitions(p0) + select t8 xor t29 from t; -t8 xor t29 -0 ++------------+ +| t8 xor t29 | ++------------+ +| 0 | ++------------+ explain select t8 xor t29 from t; Query Plan =================================== @@ -3784,12 +4736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t8, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t8 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t8], [t.t29]), partitions(p0) + select t9 xor t1 from t; -t9 xor t1 -0 ++-----------+ +| t9 xor t1 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t1 from t; Query Plan =================================== @@ -3800,12 +4756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t1]), filter(nil), access([t.t9], [t.t1]), partitions(p0) + select t9 xor t2 from t; -t9 xor t2 -0 ++-----------+ +| t9 xor t2 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t2 from t; Query Plan =================================== @@ -3816,12 +4776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t2]), filter(nil), access([t.t9], [t.t2]), partitions(p0) + select t9 xor t3 from t; -t9 xor t3 -0 ++-----------+ +| t9 xor t3 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t3 from t; Query Plan =================================== @@ -3832,12 +4796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t3]), filter(nil), access([t.t9], [t.t3]), partitions(p0) + select t9 xor t4 from t; -t9 xor t4 -0 ++-----------+ +| t9 xor t4 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t4 from t; Query Plan =================================== @@ -3848,12 +4816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t4]), filter(nil), access([t.t9], [t.t4]), partitions(p0) + select t9 xor t5 from t; -t9 xor t5 -0 ++-----------+ +| t9 xor t5 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t5 from t; Query Plan =================================== @@ -3864,12 +4836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t5]), filter(nil), access([t.t9], [t.t5]), partitions(p0) + select t9 xor t6 from t; -t9 xor t6 -0 ++-----------+ +| t9 xor t6 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t6 from t; Query Plan =================================== @@ -3880,12 +4856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t6]), filter(nil), access([t.t9], [t.t6]), partitions(p0) + select t9 xor t7 from t; -t9 xor t7 -0 ++-----------+ +| t9 xor t7 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t7 from t; Query Plan =================================== @@ -3896,12 +4876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t7]), filter(nil), access([t.t9], [t.t7]), partitions(p0) + select t9 xor t8 from t; -t9 xor t8 -0 ++-----------+ +| t9 xor t8 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t8 from t; Query Plan =================================== @@ -3912,12 +4896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t8]), filter(nil), access([t.t9], [t.t8]), partitions(p0) + select t9 xor t9 from t; -t9 xor t9 -0 ++-----------+ +| t9 xor t9 | ++-----------+ +| 0 | ++-----------+ explain select t9 xor t9 from t; Query Plan =================================== @@ -3928,12 +4916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t9]), filter(nil), access([t.t9]), partitions(p0) + select t9 xor t10 from t; -t9 xor t10 -0 ++------------+ +| t9 xor t10 | ++------------+ +| 0 | ++------------+ explain select t9 xor t10 from t; Query Plan =================================== @@ -3944,12 +4936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t10]), filter(nil), access([t.t9], [t.t10]), partitions(p0) + select t9 xor t11 from t; -t9 xor t11 -1 ++------------+ +| t9 xor t11 | ++------------+ +| 0 | ++------------+ explain select t9 xor t11 from t; Query Plan =================================== @@ -3960,12 +4956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t11]), filter(nil), access([t.t9], [t.t11]), partitions(p0) + select t9 xor t12 from t; -t9 xor t12 -1 ++------------+ +| t9 xor t12 | ++------------+ +| 0 | ++------------+ explain select t9 xor t12 from t; Query Plan =================================== @@ -3976,12 +4976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t12]), filter(nil), access([t.t9], [t.t12]), partitions(p0) + select t9 xor t13 from t; -t9 xor t13 -1 ++------------+ +| t9 xor t13 | ++------------+ +| 0 | ++------------+ explain select t9 xor t13 from t; Query Plan =================================== @@ -3992,12 +4996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t9 XOR t.t13]), filter(nil), access([t.t9], [t.t13]), partitions(p0) + select t9 xor t14 from t; -t9 xor t14 -0 ++------------+ +| t9 xor t14 | ++------------+ +| 0 | ++------------+ explain select t9 xor t14 from t; Query Plan =================================== @@ -4008,12 +5016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t14]), filter(nil), access([t.t9], [t.t14]), partitions(p0) + select t9 xor t15 from t; -t9 xor t15 -0 ++------------+ +| t9 xor t15 | ++------------+ +| 0 | ++------------+ explain select t9 xor t15 from t; Query Plan =================================== @@ -4024,12 +5036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t15]), filter(nil), access([t.t9], [t.t15]), partitions(p0) + select t9 xor t16 from t; -t9 xor t16 -0 ++------------+ +| t9 xor t16 | ++------------+ +| 0 | ++------------+ explain select t9 xor t16 from t; Query Plan =================================== @@ -4040,12 +5056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t16]), filter(nil), access([t.t9], [t.t16]), partitions(p0) + select t9 xor t17 from t; -t9 xor t17 -0 ++------------+ +| t9 xor t17 | ++------------+ +| 0 | ++------------+ explain select t9 xor t17 from t; Query Plan =================================== @@ -4056,12 +5076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t17]), partitions(p0) + select t9 xor t18 from t; -t9 xor t18 -0 ++------------+ +| t9 xor t18 | ++------------+ +| 0 | ++------------+ explain select t9 xor t18 from t; Query Plan =================================== @@ -4072,12 +5096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t18]), partitions(p0) + select t9 xor t19 from t; -t9 xor t19 -0 ++------------+ +| t9 xor t19 | ++------------+ +| 0 | ++------------+ explain select t9 xor t19 from t; Query Plan =================================== @@ -4088,12 +5116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t19]), partitions(p0) + select t9 xor t20 from t; -t9 xor t20 -0 ++------------+ +| t9 xor t20 | ++------------+ +| 0 | ++------------+ explain select t9 xor t20 from t; Query Plan =================================== @@ -4104,12 +5136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t20]), partitions(p0) + select t9 xor t21 from t; -t9 xor t21 -0 ++------------+ +| t9 xor t21 | ++------------+ +| 0 | ++------------+ explain select t9 xor t21 from t; Query Plan =================================== @@ -4120,12 +5156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t21]), partitions(p0) + select t9 xor t22 from t; -t9 xor t22 -0 ++------------+ +| t9 xor t22 | ++------------+ +| 0 | ++------------+ explain select t9 xor t22 from t; Query Plan =================================== @@ -4136,12 +5176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t22]), partitions(p0) + select t9 xor t23 from t; -t9 xor t23 -0 ++------------+ +| t9 xor t23 | ++------------+ +| 0 | ++------------+ explain select t9 xor t23 from t; Query Plan =================================== @@ -4152,12 +5196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t23]), partitions(p0) + select t9 xor t24 from t; -t9 xor t24 -0 ++------------+ +| t9 xor t24 | ++------------+ +| 0 | ++------------+ explain select t9 xor t24 from t; Query Plan =================================== @@ -4168,12 +5216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t24]), partitions(p0) + select t9 xor t25 from t; -t9 xor t25 -0 ++------------+ +| t9 xor t25 | ++------------+ +| 0 | ++------------+ explain select t9 xor t25 from t; Query Plan =================================== @@ -4184,12 +5236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t25]), partitions(p0) + select t9 xor t26 from t; -t9 xor t26 -0 ++------------+ +| t9 xor t26 | ++------------+ +| 0 | ++------------+ explain select t9 xor t26 from t; Query Plan =================================== @@ -4200,12 +5256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t26]), partitions(p0) + select t9 xor t27 from t; -t9 xor t27 -0 ++------------+ +| t9 xor t27 | ++------------+ +| 0 | ++------------+ explain select t9 xor t27 from t; Query Plan =================================== @@ -4216,12 +5276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR t.t27]), filter(nil), access([t.t9], [t.t27]), partitions(p0) + select t9 xor t28 from t; -t9 xor t28 -0 ++------------+ +| t9 xor t28 | ++------------+ +| 0 | ++------------+ explain select t9 xor t28 from t; Query Plan =================================== @@ -4232,12 +5296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t28]), partitions(p0) + select t9 xor t29 from t; -t9 xor t29 -0 ++------------+ +| t9 xor t29 | ++------------+ +| 0 | ++------------+ explain select t9 xor t29 from t; Query Plan =================================== @@ -4248,12 +5316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t9, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t9 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t9], [t.t29]), partitions(p0) + select t10 xor t1 from t; -t10 xor t1 -0 ++------------+ +| t10 xor t1 | ++------------+ +| 0 | ++------------+ explain select t10 xor t1 from t; Query Plan =================================== @@ -4264,12 +5336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t1]), filter(nil), access([t.t10], [t.t1]), partitions(p0) + select t10 xor t2 from t; -t10 xor t2 -0 ++------------+ +| t10 xor t2 | ++------------+ +| 0 | ++------------+ explain select t10 xor t2 from t; Query Plan =================================== @@ -4280,12 +5356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t2]), filter(nil), access([t.t10], [t.t2]), partitions(p0) + select t10 xor t3 from t; -t10 xor t3 -0 ++------------+ +| t10 xor t3 | ++------------+ +| 0 | ++------------+ explain select t10 xor t3 from t; Query Plan =================================== @@ -4296,12 +5376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t3]), filter(nil), access([t.t10], [t.t3]), partitions(p0) + select t10 xor t4 from t; -t10 xor t4 -0 ++------------+ +| t10 xor t4 | ++------------+ +| 0 | ++------------+ explain select t10 xor t4 from t; Query Plan =================================== @@ -4312,12 +5396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t4]), filter(nil), access([t.t10], [t.t4]), partitions(p0) + select t10 xor t5 from t; -t10 xor t5 -0 ++------------+ +| t10 xor t5 | ++------------+ +| 0 | ++------------+ explain select t10 xor t5 from t; Query Plan =================================== @@ -4328,12 +5416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t5]), filter(nil), access([t.t10], [t.t5]), partitions(p0) + select t10 xor t6 from t; -t10 xor t6 -0 ++------------+ +| t10 xor t6 | ++------------+ +| 0 | ++------------+ explain select t10 xor t6 from t; Query Plan =================================== @@ -4344,12 +5436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t6]), filter(nil), access([t.t10], [t.t6]), partitions(p0) + select t10 xor t7 from t; -t10 xor t7 -0 ++------------+ +| t10 xor t7 | ++------------+ +| 0 | ++------------+ explain select t10 xor t7 from t; Query Plan =================================== @@ -4360,12 +5456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t7]), filter(nil), access([t.t10], [t.t7]), partitions(p0) + select t10 xor t8 from t; -t10 xor t8 -0 ++------------+ +| t10 xor t8 | ++------------+ +| 0 | ++------------+ explain select t10 xor t8 from t; Query Plan =================================== @@ -4376,12 +5476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t8]), filter(nil), access([t.t10], [t.t8]), partitions(p0) + select t10 xor t9 from t; -t10 xor t9 -0 ++------------+ +| t10 xor t9 | ++------------+ +| 0 | ++------------+ explain select t10 xor t9 from t; Query Plan =================================== @@ -4392,12 +5496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t9]), filter(nil), access([t.t10], [t.t9]), partitions(p0) + select t10 xor t10 from t; -t10 xor t10 -0 ++-------------+ +| t10 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t10 from t; Query Plan =================================== @@ -4408,12 +5516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t10]), filter(nil), access([t.t10]), partitions(p0) + select t10 xor t11 from t; -t10 xor t11 -1 ++-------------+ +| t10 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t11 from t; Query Plan =================================== @@ -4424,12 +5536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t11]), filter(nil), access([t.t10], [t.t11]), partitions(p0) + select t10 xor t12 from t; -t10 xor t12 -1 ++-------------+ +| t10 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t12 from t; Query Plan =================================== @@ -4440,12 +5556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t12]), filter(nil), access([t.t10], [t.t12]), partitions(p0) + select t10 xor t13 from t; -t10 xor t13 -1 ++-------------+ +| t10 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t13 from t; Query Plan =================================== @@ -4456,12 +5576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t10 XOR t.t13]), filter(nil), access([t.t10], [t.t13]), partitions(p0) + select t10 xor t14 from t; -t10 xor t14 -0 ++-------------+ +| t10 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t14 from t; Query Plan =================================== @@ -4472,12 +5596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t14]), filter(nil), access([t.t10], [t.t14]), partitions(p0) + select t10 xor t15 from t; -t10 xor t15 -0 ++-------------+ +| t10 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t15 from t; Query Plan =================================== @@ -4488,12 +5616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t15]), filter(nil), access([t.t10], [t.t15]), partitions(p0) + select t10 xor t16 from t; -t10 xor t16 -0 ++-------------+ +| t10 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t16 from t; Query Plan =================================== @@ -4504,12 +5636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t16]), filter(nil), access([t.t10], [t.t16]), partitions(p0) + select t10 xor t17 from t; -t10 xor t17 -0 ++-------------+ +| t10 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t17 from t; Query Plan =================================== @@ -4520,12 +5656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t17]), partitions(p0) + select t10 xor t18 from t; -t10 xor t18 -0 ++-------------+ +| t10 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t18 from t; Query Plan =================================== @@ -4536,12 +5676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t18]), partitions(p0) + select t10 xor t19 from t; -t10 xor t19 -0 ++-------------+ +| t10 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t19 from t; Query Plan =================================== @@ -4552,12 +5696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t19]), partitions(p0) + select t10 xor t20 from t; -t10 xor t20 -0 ++-------------+ +| t10 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t20 from t; Query Plan =================================== @@ -4568,12 +5716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t20]), partitions(p0) + select t10 xor t21 from t; -t10 xor t21 -0 ++-------------+ +| t10 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t21 from t; Query Plan =================================== @@ -4584,12 +5736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t21]), partitions(p0) + select t10 xor t22 from t; -t10 xor t22 -0 ++-------------+ +| t10 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t22 from t; Query Plan =================================== @@ -4600,12 +5756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t22]), partitions(p0) + select t10 xor t23 from t; -t10 xor t23 -0 ++-------------+ +| t10 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t23 from t; Query Plan =================================== @@ -4616,12 +5776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t23]), partitions(p0) + select t10 xor t24 from t; -t10 xor t24 -0 ++-------------+ +| t10 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t24 from t; Query Plan =================================== @@ -4632,12 +5796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t24]), partitions(p0) + select t10 xor t25 from t; -t10 xor t25 -0 ++-------------+ +| t10 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t25 from t; Query Plan =================================== @@ -4648,12 +5816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t25]), partitions(p0) + select t10 xor t26 from t; -t10 xor t26 -0 ++-------------+ +| t10 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t26 from t; Query Plan =================================== @@ -4664,12 +5836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t26]), partitions(p0) + select t10 xor t27 from t; -t10 xor t27 -0 ++-------------+ +| t10 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t27 from t; Query Plan =================================== @@ -4680,12 +5856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR t.t27]), filter(nil), access([t.t10], [t.t27]), partitions(p0) + select t10 xor t28 from t; -t10 xor t28 -0 ++-------------+ +| t10 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t28 from t; Query Plan =================================== @@ -4696,12 +5876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t28]), partitions(p0) + select t10 xor t29 from t; -t10 xor t29 -0 ++-------------+ +| t10 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t10 xor t29 from t; Query Plan =================================== @@ -4712,12 +5896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t10, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t10 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t10], [t.t29]), partitions(p0) + select t11 xor t1 from t; -t11 xor t1 -1 ++------------+ +| t11 xor t1 | ++------------+ +| 0 | ++------------+ explain select t11 xor t1 from t; Query Plan =================================== @@ -4728,12 +5916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t1]), filter(nil), access([t.t11], [t.t1]), partitions(p0) + select t11 xor t2 from t; -t11 xor t2 -1 ++------------+ +| t11 xor t2 | ++------------+ +| 0 | ++------------+ explain select t11 xor t2 from t; Query Plan =================================== @@ -4744,12 +5936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t2]), filter(nil), access([t.t11], [t.t2]), partitions(p0) + select t11 xor t3 from t; -t11 xor t3 -1 ++------------+ +| t11 xor t3 | ++------------+ +| 0 | ++------------+ explain select t11 xor t3 from t; Query Plan =================================== @@ -4760,12 +5956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t3]), filter(nil), access([t.t11], [t.t3]), partitions(p0) + select t11 xor t4 from t; -t11 xor t4 -1 ++------------+ +| t11 xor t4 | ++------------+ +| 0 | ++------------+ explain select t11 xor t4 from t; Query Plan =================================== @@ -4776,12 +5976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t4]), filter(nil), access([t.t11], [t.t4]), partitions(p0) + select t11 xor t5 from t; -t11 xor t5 -1 ++------------+ +| t11 xor t5 | ++------------+ +| 0 | ++------------+ explain select t11 xor t5 from t; Query Plan =================================== @@ -4792,12 +5996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t5]), filter(nil), access([t.t11], [t.t5]), partitions(p0) + select t11 xor t6 from t; -t11 xor t6 -1 ++------------+ +| t11 xor t6 | ++------------+ +| 0 | ++------------+ explain select t11 xor t6 from t; Query Plan =================================== @@ -4808,12 +6016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t6]), filter(nil), access([t.t11], [t.t6]), partitions(p0) + select t11 xor t7 from t; -t11 xor t7 -1 ++------------+ +| t11 xor t7 | ++------------+ +| 0 | ++------------+ explain select t11 xor t7 from t; Query Plan =================================== @@ -4824,12 +6036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t7]), filter(nil), access([t.t11], [t.t7]), partitions(p0) + select t11 xor t8 from t; -t11 xor t8 -1 ++------------+ +| t11 xor t8 | ++------------+ +| 0 | ++------------+ explain select t11 xor t8 from t; Query Plan =================================== @@ -4840,12 +6056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t8]), filter(nil), access([t.t11], [t.t8]), partitions(p0) + select t11 xor t9 from t; -t11 xor t9 -1 ++------------+ +| t11 xor t9 | ++------------+ +| 0 | ++------------+ explain select t11 xor t9 from t; Query Plan =================================== @@ -4856,12 +6076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t9]), filter(nil), access([t.t11], [t.t9]), partitions(p0) + select t11 xor t10 from t; -t11 xor t10 -1 ++-------------+ +| t11 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t10 from t; Query Plan =================================== @@ -4872,12 +6096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t10]), filter(nil), access([t.t11], [t.t10]), partitions(p0) + select t11 xor t11 from t; -t11 xor t11 -0 ++-------------+ +| t11 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t11 from t; Query Plan =================================== @@ -4888,12 +6116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t11]), filter(nil), access([t.t11]), partitions(p0) + select t11 xor t12 from t; -t11 xor t12 -0 ++-------------+ +| t11 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t12 from t; Query Plan =================================== @@ -4904,12 +6136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t12]), filter(nil), access([t.t11], [t.t12]), partitions(p0) + select t11 xor t13 from t; -t11 xor t13 -0 ++-------------+ +| t11 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t13 from t; Query Plan =================================== @@ -4920,12 +6156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t11 XOR t.t13]), filter(nil), access([t.t11], [t.t13]), partitions(p0) + select t11 xor t14 from t; -t11 xor t14 -1 ++-------------+ +| t11 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t14 from t; Query Plan =================================== @@ -4936,12 +6176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t14]), filter(nil), access([t.t11], [t.t14]), partitions(p0) + select t11 xor t15 from t; -t11 xor t15 -1 ++-------------+ +| t11 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t15 from t; Query Plan =================================== @@ -4952,12 +6196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t15]), filter(nil), access([t.t11], [t.t15]), partitions(p0) + select t11 xor t16 from t; -t11 xor t16 -1 ++-------------+ +| t11 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t16 from t; Query Plan =================================== @@ -4968,12 +6216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t16]), filter(nil), access([t.t11], [t.t16]), partitions(p0) + select t11 xor t17 from t; -t11 xor t17 -1 ++-------------+ +| t11 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t17 from t; Query Plan =================================== @@ -4984,12 +6236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t17]), partitions(p0) + select t11 xor t18 from t; -t11 xor t18 -1 ++-------------+ +| t11 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t18 from t; Query Plan =================================== @@ -5000,12 +6256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t18]), partitions(p0) + select t11 xor t19 from t; -t11 xor t19 -1 ++-------------+ +| t11 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t19 from t; Query Plan =================================== @@ -5016,12 +6276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t19]), partitions(p0) + select t11 xor t20 from t; -t11 xor t20 -1 ++-------------+ +| t11 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t20 from t; Query Plan =================================== @@ -5032,12 +6296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t20]), partitions(p0) + select t11 xor t21 from t; -t11 xor t21 -1 ++-------------+ +| t11 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t21 from t; Query Plan =================================== @@ -5048,12 +6316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t21]), partitions(p0) + select t11 xor t22 from t; -t11 xor t22 -1 ++-------------+ +| t11 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t22 from t; Query Plan =================================== @@ -5064,12 +6336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t22]), partitions(p0) + select t11 xor t23 from t; -t11 xor t23 -1 ++-------------+ +| t11 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t23 from t; Query Plan =================================== @@ -5080,12 +6356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t23]), partitions(p0) + select t11 xor t24 from t; -t11 xor t24 -1 ++-------------+ +| t11 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t24 from t; Query Plan =================================== @@ -5096,12 +6376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t24]), partitions(p0) + select t11 xor t25 from t; -t11 xor t25 -1 ++-------------+ +| t11 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t25 from t; Query Plan =================================== @@ -5112,12 +6396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t25]), partitions(p0) + select t11 xor t26 from t; -t11 xor t26 -1 ++-------------+ +| t11 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t26 from t; Query Plan =================================== @@ -5128,12 +6416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t26]), partitions(p0) + select t11 xor t27 from t; -t11 xor t27 -1 ++-------------+ +| t11 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t27 from t; Query Plan =================================== @@ -5144,12 +6436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR t.t27]), filter(nil), access([t.t11], [t.t27]), partitions(p0) + select t11 xor t28 from t; -t11 xor t28 -1 ++-------------+ +| t11 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t28 from t; Query Plan =================================== @@ -5160,12 +6456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t28]), partitions(p0) + select t11 xor t29 from t; -t11 xor t29 -1 ++-------------+ +| t11 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t11 xor t29 from t; Query Plan =================================== @@ -5176,12 +6476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t11, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t11 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t11], [t.t29]), partitions(p0) + select t12 xor t1 from t; -t12 xor t1 -1 ++------------+ +| t12 xor t1 | ++------------+ +| 0 | ++------------+ explain select t12 xor t1 from t; Query Plan =================================== @@ -5192,12 +6496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t1]), filter(nil), access([t.t12], [t.t1]), partitions(p0) + select t12 xor t2 from t; -t12 xor t2 -1 ++------------+ +| t12 xor t2 | ++------------+ +| 0 | ++------------+ explain select t12 xor t2 from t; Query Plan =================================== @@ -5208,12 +6516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t2]), filter(nil), access([t.t12], [t.t2]), partitions(p0) + select t12 xor t3 from t; -t12 xor t3 -1 ++------------+ +| t12 xor t3 | ++------------+ +| 0 | ++------------+ explain select t12 xor t3 from t; Query Plan =================================== @@ -5224,12 +6536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t3]), filter(nil), access([t.t12], [t.t3]), partitions(p0) + select t12 xor t4 from t; -t12 xor t4 -1 ++------------+ +| t12 xor t4 | ++------------+ +| 0 | ++------------+ explain select t12 xor t4 from t; Query Plan =================================== @@ -5240,12 +6556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t4]), filter(nil), access([t.t12], [t.t4]), partitions(p0) + select t12 xor t5 from t; -t12 xor t5 -1 ++------------+ +| t12 xor t5 | ++------------+ +| 0 | ++------------+ explain select t12 xor t5 from t; Query Plan =================================== @@ -5256,12 +6576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t5]), filter(nil), access([t.t12], [t.t5]), partitions(p0) + select t12 xor t6 from t; -t12 xor t6 -1 ++------------+ +| t12 xor t6 | ++------------+ +| 0 | ++------------+ explain select t12 xor t6 from t; Query Plan =================================== @@ -5272,12 +6596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t6]), filter(nil), access([t.t12], [t.t6]), partitions(p0) + select t12 xor t7 from t; -t12 xor t7 -1 ++------------+ +| t12 xor t7 | ++------------+ +| 0 | ++------------+ explain select t12 xor t7 from t; Query Plan =================================== @@ -5288,12 +6616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t7]), filter(nil), access([t.t12], [t.t7]), partitions(p0) + select t12 xor t8 from t; -t12 xor t8 -1 ++------------+ +| t12 xor t8 | ++------------+ +| 0 | ++------------+ explain select t12 xor t8 from t; Query Plan =================================== @@ -5304,12 +6636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t8]), filter(nil), access([t.t12], [t.t8]), partitions(p0) + select t12 xor t9 from t; -t12 xor t9 -1 ++------------+ +| t12 xor t9 | ++------------+ +| 0 | ++------------+ explain select t12 xor t9 from t; Query Plan =================================== @@ -5320,12 +6656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t9]), filter(nil), access([t.t12], [t.t9]), partitions(p0) + select t12 xor t10 from t; -t12 xor t10 -1 ++-------------+ +| t12 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t10 from t; Query Plan =================================== @@ -5336,12 +6676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t10]), filter(nil), access([t.t12], [t.t10]), partitions(p0) + select t12 xor t11 from t; -t12 xor t11 -0 ++-------------+ +| t12 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t11 from t; Query Plan =================================== @@ -5352,12 +6696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t11]), filter(nil), access([t.t12], [t.t11]), partitions(p0) + select t12 xor t12 from t; -t12 xor t12 -0 ++-------------+ +| t12 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t12 from t; Query Plan =================================== @@ -5368,12 +6716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t12]), filter(nil), access([t.t12]), partitions(p0) + select t12 xor t13 from t; -t12 xor t13 -0 ++-------------+ +| t12 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t13 from t; Query Plan =================================== @@ -5384,12 +6736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t12 XOR t.t13]), filter(nil), access([t.t12], [t.t13]), partitions(p0) + select t12 xor t14 from t; -t12 xor t14 -1 ++-------------+ +| t12 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t14 from t; Query Plan =================================== @@ -5400,12 +6756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t14]), filter(nil), access([t.t12], [t.t14]), partitions(p0) + select t12 xor t15 from t; -t12 xor t15 -1 ++-------------+ +| t12 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t15 from t; Query Plan =================================== @@ -5416,12 +6776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t15]), filter(nil), access([t.t12], [t.t15]), partitions(p0) + select t12 xor t16 from t; -t12 xor t16 -1 ++-------------+ +| t12 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t16 from t; Query Plan =================================== @@ -5432,12 +6796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t16]), filter(nil), access([t.t12], [t.t16]), partitions(p0) + select t12 xor t17 from t; -t12 xor t17 -1 ++-------------+ +| t12 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t17 from t; Query Plan =================================== @@ -5448,12 +6816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t17]), partitions(p0) + select t12 xor t18 from t; -t12 xor t18 -1 ++-------------+ +| t12 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t18 from t; Query Plan =================================== @@ -5464,12 +6836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t18]), partitions(p0) + select t12 xor t19 from t; -t12 xor t19 -1 ++-------------+ +| t12 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t19 from t; Query Plan =================================== @@ -5480,12 +6856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t19]), partitions(p0) + select t12 xor t20 from t; -t12 xor t20 -1 ++-------------+ +| t12 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t20 from t; Query Plan =================================== @@ -5496,12 +6876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t20]), partitions(p0) + select t12 xor t21 from t; -t12 xor t21 -1 ++-------------+ +| t12 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t21 from t; Query Plan =================================== @@ -5512,12 +6896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t21]), partitions(p0) + select t12 xor t22 from t; -t12 xor t22 -1 ++-------------+ +| t12 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t22 from t; Query Plan =================================== @@ -5528,12 +6916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t22]), partitions(p0) + select t12 xor t23 from t; -t12 xor t23 -1 ++-------------+ +| t12 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t23 from t; Query Plan =================================== @@ -5544,12 +6936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t23]), partitions(p0) + select t12 xor t24 from t; -t12 xor t24 -1 ++-------------+ +| t12 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t24 from t; Query Plan =================================== @@ -5560,12 +6956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t24]), partitions(p0) + select t12 xor t25 from t; -t12 xor t25 -1 ++-------------+ +| t12 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t25 from t; Query Plan =================================== @@ -5576,12 +6976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t25]), partitions(p0) + select t12 xor t26 from t; -t12 xor t26 -1 ++-------------+ +| t12 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t26 from t; Query Plan =================================== @@ -5592,12 +6996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t26]), partitions(p0) + select t12 xor t27 from t; -t12 xor t27 -1 ++-------------+ +| t12 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t27 from t; Query Plan =================================== @@ -5608,12 +7016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR t.t27]), filter(nil), access([t.t12], [t.t27]), partitions(p0) + select t12 xor t28 from t; -t12 xor t28 -1 ++-------------+ +| t12 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t28 from t; Query Plan =================================== @@ -5624,12 +7036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t28]), partitions(p0) + select t12 xor t29 from t; -t12 xor t29 -1 ++-------------+ +| t12 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t12 xor t29 from t; Query Plan =================================== @@ -5640,12 +7056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t12, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t12 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t12], [t.t29]), partitions(p0) + select t13 xor t1 from t; -t13 xor t1 -1 ++------------+ +| t13 xor t1 | ++------------+ +| 0 | ++------------+ explain select t13 xor t1 from t; Query Plan =================================== @@ -5656,12 +7076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t1]), filter(nil), access([t.t13], [t.t1]), partitions(p0) + select t13 xor t2 from t; -t13 xor t2 -1 ++------------+ +| t13 xor t2 | ++------------+ +| 0 | ++------------+ explain select t13 xor t2 from t; Query Plan =================================== @@ -5672,12 +7096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t2]), filter(nil), access([t.t13], [t.t2]), partitions(p0) + select t13 xor t3 from t; -t13 xor t3 -1 ++------------+ +| t13 xor t3 | ++------------+ +| 0 | ++------------+ explain select t13 xor t3 from t; Query Plan =================================== @@ -5688,12 +7116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t3]), filter(nil), access([t.t13], [t.t3]), partitions(p0) + select t13 xor t4 from t; -t13 xor t4 -1 ++------------+ +| t13 xor t4 | ++------------+ +| 0 | ++------------+ explain select t13 xor t4 from t; Query Plan =================================== @@ -5704,12 +7136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t4]), filter(nil), access([t.t13], [t.t4]), partitions(p0) + select t13 xor t5 from t; -t13 xor t5 -1 ++------------+ +| t13 xor t5 | ++------------+ +| 0 | ++------------+ explain select t13 xor t5 from t; Query Plan =================================== @@ -5720,12 +7156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t5]), filter(nil), access([t.t13], [t.t5]), partitions(p0) + select t13 xor t6 from t; -t13 xor t6 -1 ++------------+ +| t13 xor t6 | ++------------+ +| 0 | ++------------+ explain select t13 xor t6 from t; Query Plan =================================== @@ -5736,12 +7176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t6]), filter(nil), access([t.t13], [t.t6]), partitions(p0) + select t13 xor t7 from t; -t13 xor t7 -1 ++------------+ +| t13 xor t7 | ++------------+ +| 0 | ++------------+ explain select t13 xor t7 from t; Query Plan =================================== @@ -5752,12 +7196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t7]), filter(nil), access([t.t13], [t.t7]), partitions(p0) + select t13 xor t8 from t; -t13 xor t8 -1 ++------------+ +| t13 xor t8 | ++------------+ +| 0 | ++------------+ explain select t13 xor t8 from t; Query Plan =================================== @@ -5768,12 +7216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t8]), filter(nil), access([t.t13], [t.t8]), partitions(p0) + select t13 xor t9 from t; -t13 xor t9 -1 ++------------+ +| t13 xor t9 | ++------------+ +| 0 | ++------------+ explain select t13 xor t9 from t; Query Plan =================================== @@ -5784,12 +7236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t9]), filter(nil), access([t.t13], [t.t9]), partitions(p0) + select t13 xor t10 from t; -t13 xor t10 -1 ++-------------+ +| t13 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t10 from t; Query Plan =================================== @@ -5800,12 +7256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t10]), filter(nil), access([t.t13], [t.t10]), partitions(p0) + select t13 xor t11 from t; -t13 xor t11 -0 ++-------------+ +| t13 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t11 from t; Query Plan =================================== @@ -5816,12 +7276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t11]), filter(nil), access([t.t13], [t.t11]), partitions(p0) + select t13 xor t12 from t; -t13 xor t12 -0 ++-------------+ +| t13 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t12 from t; Query Plan =================================== @@ -5832,12 +7296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t12]), filter(nil), access([t.t13], [t.t12]), partitions(p0) + select t13 xor t13 from t; -t13 xor t13 -0 ++-------------+ +| t13 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t13 from t; Query Plan =================================== @@ -5851,9 +7319,13 @@ Outputs & filters: 0 - output([t.t13 XOR t.t13]), filter(nil), access([t.t13]), partitions(p0) + select t13 xor t14 from t; -t13 xor t14 -1 ++-------------+ +| t13 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t14 from t; Query Plan =================================== @@ -5864,12 +7336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t14]), filter(nil), access([t.t13], [t.t14]), partitions(p0) + select t13 xor t15 from t; -t13 xor t15 -1 ++-------------+ +| t13 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t15 from t; Query Plan =================================== @@ -5880,12 +7356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t15]), filter(nil), access([t.t13], [t.t15]), partitions(p0) + select t13 xor t16 from t; -t13 xor t16 -1 ++-------------+ +| t13 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t16 from t; Query Plan =================================== @@ -5896,12 +7376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t16]), filter(nil), access([t.t13], [t.t16]), partitions(p0) + select t13 xor t17 from t; -t13 xor t17 -1 ++-------------+ +| t13 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t17 from t; Query Plan =================================== @@ -5915,9 +7399,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t17]), partitions(p0) + select t13 xor t18 from t; -t13 xor t18 -1 ++-------------+ +| t13 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t18 from t; Query Plan =================================== @@ -5931,9 +7419,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t18]), partitions(p0) + select t13 xor t19 from t; -t13 xor t19 -1 ++-------------+ +| t13 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t19 from t; Query Plan =================================== @@ -5947,9 +7439,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t19]), partitions(p0) + select t13 xor t20 from t; -t13 xor t20 -1 ++-------------+ +| t13 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t20 from t; Query Plan =================================== @@ -5963,9 +7459,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t20]), partitions(p0) + select t13 xor t21 from t; -t13 xor t21 -1 ++-------------+ +| t13 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t21 from t; Query Plan =================================== @@ -5979,9 +7479,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t21]), partitions(p0) + select t13 xor t22 from t; -t13 xor t22 -1 ++-------------+ +| t13 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t22 from t; Query Plan =================================== @@ -5995,9 +7499,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t22]), partitions(p0) + select t13 xor t23 from t; -t13 xor t23 -1 ++-------------+ +| t13 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t23 from t; Query Plan =================================== @@ -6011,9 +7519,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t23]), partitions(p0) + select t13 xor t24 from t; -t13 xor t24 -1 ++-------------+ +| t13 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t24 from t; Query Plan =================================== @@ -6027,9 +7539,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t24]), partitions(p0) + select t13 xor t25 from t; -t13 xor t25 -1 ++-------------+ +| t13 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t25 from t; Query Plan =================================== @@ -6043,9 +7559,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t25]), partitions(p0) + select t13 xor t26 from t; -t13 xor t26 -1 ++-------------+ +| t13 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t26 from t; Query Plan =================================== @@ -6059,9 +7579,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t26]), partitions(p0) + select t13 xor t27 from t; -t13 xor t27 -1 ++-------------+ +| t13 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t27 from t; Query Plan =================================== @@ -6072,12 +7596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([t.t13 XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t13 XOR t.t27]), filter(nil), access([t.t13], [t.t27]), partitions(p0) + select t13 xor t28 from t; -t13 xor t28 -1 ++-------------+ +| t13 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t28 from t; Query Plan =================================== @@ -6091,9 +7619,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t28]), partitions(p0) + select t13 xor t29 from t; -t13 xor t29 -1 ++-------------+ +| t13 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t13 xor t29 from t; Query Plan =================================== @@ -6107,9 +7639,13 @@ Outputs & filters: 0 - output([t.t13 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t13], [t.t29]), partitions(p0) + select t14 xor t1 from t; -t14 xor t1 -0 ++------------+ +| t14 xor t1 | ++------------+ +| 0 | ++------------+ explain select t14 xor t1 from t; Query Plan =================================== @@ -6120,12 +7656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t1]), filter(nil), access([t.t14], [t.t1]), partitions(p0) + select t14 xor t2 from t; -t14 xor t2 -0 ++------------+ +| t14 xor t2 | ++------------+ +| 0 | ++------------+ explain select t14 xor t2 from t; Query Plan =================================== @@ -6136,12 +7676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t2]), filter(nil), access([t.t14], [t.t2]), partitions(p0) + select t14 xor t3 from t; -t14 xor t3 -0 ++------------+ +| t14 xor t3 | ++------------+ +| 0 | ++------------+ explain select t14 xor t3 from t; Query Plan =================================== @@ -6152,12 +7696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t3]), filter(nil), access([t.t14], [t.t3]), partitions(p0) + select t14 xor t4 from t; -t14 xor t4 -0 ++------------+ +| t14 xor t4 | ++------------+ +| 0 | ++------------+ explain select t14 xor t4 from t; Query Plan =================================== @@ -6168,12 +7716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t4]), filter(nil), access([t.t14], [t.t4]), partitions(p0) + select t14 xor t5 from t; -t14 xor t5 -0 ++------------+ +| t14 xor t5 | ++------------+ +| 0 | ++------------+ explain select t14 xor t5 from t; Query Plan =================================== @@ -6184,12 +7736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t5]), filter(nil), access([t.t14], [t.t5]), partitions(p0) + select t14 xor t6 from t; -t14 xor t6 -0 ++------------+ +| t14 xor t6 | ++------------+ +| 0 | ++------------+ explain select t14 xor t6 from t; Query Plan =================================== @@ -6200,12 +7756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t6]), filter(nil), access([t.t14], [t.t6]), partitions(p0) + select t14 xor t7 from t; -t14 xor t7 -0 ++------------+ +| t14 xor t7 | ++------------+ +| 0 | ++------------+ explain select t14 xor t7 from t; Query Plan =================================== @@ -6216,12 +7776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t7]), filter(nil), access([t.t14], [t.t7]), partitions(p0) + select t14 xor t8 from t; -t14 xor t8 -0 ++------------+ +| t14 xor t8 | ++------------+ +| 0 | ++------------+ explain select t14 xor t8 from t; Query Plan =================================== @@ -6232,12 +7796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t8]), filter(nil), access([t.t14], [t.t8]), partitions(p0) + select t14 xor t9 from t; -t14 xor t9 -0 ++------------+ +| t14 xor t9 | ++------------+ +| 0 | ++------------+ explain select t14 xor t9 from t; Query Plan =================================== @@ -6248,12 +7816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t9]), filter(nil), access([t.t14], [t.t9]), partitions(p0) + select t14 xor t10 from t; -t14 xor t10 -0 ++-------------+ +| t14 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t10 from t; Query Plan =================================== @@ -6264,12 +7836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t10]), filter(nil), access([t.t14], [t.t10]), partitions(p0) + select t14 xor t11 from t; -t14 xor t11 -1 ++-------------+ +| t14 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t11 from t; Query Plan =================================== @@ -6280,12 +7856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t11]), filter(nil), access([t.t14], [t.t11]), partitions(p0) + select t14 xor t12 from t; -t14 xor t12 -1 ++-------------+ +| t14 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t12 from t; Query Plan =================================== @@ -6296,12 +7876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t12]), filter(nil), access([t.t14], [t.t12]), partitions(p0) + select t14 xor t13 from t; -t14 xor t13 -1 ++-------------+ +| t14 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t13 from t; Query Plan =================================== @@ -6312,12 +7896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t14 XOR t.t13]), filter(nil), access([t.t14], [t.t13]), partitions(p0) + select t14 xor t14 from t; -t14 xor t14 -0 ++-------------+ +| t14 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t14 from t; Query Plan =================================== @@ -6328,12 +7916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t14]), filter(nil), access([t.t14]), partitions(p0) + select t14 xor t15 from t; -t14 xor t15 -0 ++-------------+ +| t14 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t15 from t; Query Plan =================================== @@ -6344,12 +7936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t15]), filter(nil), access([t.t14], [t.t15]), partitions(p0) + select t14 xor t16 from t; -t14 xor t16 -0 ++-------------+ +| t14 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t16 from t; Query Plan =================================== @@ -6360,12 +7956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t16]), filter(nil), access([t.t14], [t.t16]), partitions(p0) + select t14 xor t17 from t; -t14 xor t17 -0 ++-------------+ +| t14 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t17 from t; Query Plan =================================== @@ -6376,12 +7976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t17]), partitions(p0) + select t14 xor t18 from t; -t14 xor t18 -0 ++-------------+ +| t14 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t18 from t; Query Plan =================================== @@ -6392,12 +7996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t18]), partitions(p0) + select t14 xor t19 from t; -t14 xor t19 -0 ++-------------+ +| t14 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t19 from t; Query Plan =================================== @@ -6408,12 +8016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t19]), partitions(p0) + select t14 xor t20 from t; -t14 xor t20 -0 ++-------------+ +| t14 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t20 from t; Query Plan =================================== @@ -6424,12 +8036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t20]), partitions(p0) + select t14 xor t21 from t; -t14 xor t21 -0 ++-------------+ +| t14 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t21 from t; Query Plan =================================== @@ -6440,12 +8056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t21]), partitions(p0) + select t14 xor t22 from t; -t14 xor t22 -0 ++-------------+ +| t14 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t22 from t; Query Plan =================================== @@ -6456,12 +8076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t22]), partitions(p0) + select t14 xor t23 from t; -t14 xor t23 -0 ++-------------+ +| t14 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t23 from t; Query Plan =================================== @@ -6472,12 +8096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t23]), partitions(p0) + select t14 xor t24 from t; -t14 xor t24 -0 ++-------------+ +| t14 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t24 from t; Query Plan =================================== @@ -6488,12 +8116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t24]), partitions(p0) + select t14 xor t25 from t; -t14 xor t25 -0 ++-------------+ +| t14 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t25 from t; Query Plan =================================== @@ -6504,12 +8136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t25]), partitions(p0) + select t14 xor t26 from t; -t14 xor t26 -0 ++-------------+ +| t14 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t26 from t; Query Plan =================================== @@ -6520,12 +8156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t26]), partitions(p0) + select t14 xor t27 from t; -t14 xor t27 -0 ++-------------+ +| t14 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t27 from t; Query Plan =================================== @@ -6536,12 +8176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR t.t27]), filter(nil), access([t.t14], [t.t27]), partitions(p0) + select t14 xor t28 from t; -t14 xor t28 -0 ++-------------+ +| t14 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t28 from t; Query Plan =================================== @@ -6552,12 +8196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t28]), partitions(p0) + select t14 xor t29 from t; -t14 xor t29 -0 ++-------------+ +| t14 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t14 xor t29 from t; Query Plan =================================== @@ -6568,12 +8216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t14, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t14 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t14], [t.t29]), partitions(p0) + select t15 xor t1 from t; -t15 xor t1 -0 ++------------+ +| t15 xor t1 | ++------------+ +| 0 | ++------------+ explain select t15 xor t1 from t; Query Plan =================================== @@ -6584,12 +8236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t1]), filter(nil), access([t.t15], [t.t1]), partitions(p0) + select t15 xor t2 from t; -t15 xor t2 -0 ++------------+ +| t15 xor t2 | ++------------+ +| 0 | ++------------+ explain select t15 xor t2 from t; Query Plan =================================== @@ -6600,12 +8256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t2]), filter(nil), access([t.t15], [t.t2]), partitions(p0) + select t15 xor t3 from t; -t15 xor t3 -0 ++------------+ +| t15 xor t3 | ++------------+ +| 0 | ++------------+ explain select t15 xor t3 from t; Query Plan =================================== @@ -6616,12 +8276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t3]), filter(nil), access([t.t15], [t.t3]), partitions(p0) + select t15 xor t4 from t; -t15 xor t4 -0 ++------------+ +| t15 xor t4 | ++------------+ +| 0 | ++------------+ explain select t15 xor t4 from t; Query Plan =================================== @@ -6632,12 +8296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t4]), filter(nil), access([t.t15], [t.t4]), partitions(p0) + select t15 xor t5 from t; -t15 xor t5 -0 ++------------+ +| t15 xor t5 | ++------------+ +| 0 | ++------------+ explain select t15 xor t5 from t; Query Plan =================================== @@ -6648,12 +8316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t5]), filter(nil), access([t.t15], [t.t5]), partitions(p0) + select t15 xor t6 from t; -t15 xor t6 -0 ++------------+ +| t15 xor t6 | ++------------+ +| 0 | ++------------+ explain select t15 xor t6 from t; Query Plan =================================== @@ -6664,12 +8336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t6]), filter(nil), access([t.t15], [t.t6]), partitions(p0) + select t15 xor t7 from t; -t15 xor t7 -0 ++------------+ +| t15 xor t7 | ++------------+ +| 0 | ++------------+ explain select t15 xor t7 from t; Query Plan =================================== @@ -6680,12 +8356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t7]), filter(nil), access([t.t15], [t.t7]), partitions(p0) + select t15 xor t8 from t; -t15 xor t8 -0 ++------------+ +| t15 xor t8 | ++------------+ +| 0 | ++------------+ explain select t15 xor t8 from t; Query Plan =================================== @@ -6696,12 +8376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t8]), filter(nil), access([t.t15], [t.t8]), partitions(p0) + select t15 xor t9 from t; -t15 xor t9 -0 ++------------+ +| t15 xor t9 | ++------------+ +| 0 | ++------------+ explain select t15 xor t9 from t; Query Plan =================================== @@ -6712,12 +8396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t9]), filter(nil), access([t.t15], [t.t9]), partitions(p0) + select t15 xor t10 from t; -t15 xor t10 -0 ++-------------+ +| t15 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t10 from t; Query Plan =================================== @@ -6728,12 +8416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t10]), filter(nil), access([t.t15], [t.t10]), partitions(p0) + select t15 xor t11 from t; -t15 xor t11 -1 ++-------------+ +| t15 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t11 from t; Query Plan =================================== @@ -6744,12 +8436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t11]), filter(nil), access([t.t15], [t.t11]), partitions(p0) + select t15 xor t12 from t; -t15 xor t12 -1 ++-------------+ +| t15 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t12 from t; Query Plan =================================== @@ -6760,12 +8456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t12]), filter(nil), access([t.t15], [t.t12]), partitions(p0) + select t15 xor t13 from t; -t15 xor t13 -1 ++-------------+ +| t15 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t13 from t; Query Plan =================================== @@ -6776,12 +8476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t15 XOR t.t13]), filter(nil), access([t.t15], [t.t13]), partitions(p0) + select t15 xor t14 from t; -t15 xor t14 -0 ++-------------+ +| t15 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t14 from t; Query Plan =================================== @@ -6792,12 +8496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t14]), filter(nil), access([t.t15], [t.t14]), partitions(p0) + select t15 xor t15 from t; -t15 xor t15 -0 ++-------------+ +| t15 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t15 from t; Query Plan =================================== @@ -6808,12 +8516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t15]), filter(nil), access([t.t15]), partitions(p0) + select t15 xor t16 from t; -t15 xor t16 -0 ++-------------+ +| t15 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t16 from t; Query Plan =================================== @@ -6824,12 +8536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t16]), filter(nil), access([t.t15], [t.t16]), partitions(p0) + select t15 xor t17 from t; -t15 xor t17 -0 ++-------------+ +| t15 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t17 from t; Query Plan =================================== @@ -6840,12 +8556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t17]), partitions(p0) + select t15 xor t18 from t; -t15 xor t18 -0 ++-------------+ +| t15 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t18 from t; Query Plan =================================== @@ -6856,12 +8576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t18]), partitions(p0) + select t15 xor t19 from t; -t15 xor t19 -0 ++-------------+ +| t15 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t19 from t; Query Plan =================================== @@ -6872,12 +8596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t19]), partitions(p0) + select t15 xor t20 from t; -t15 xor t20 -0 ++-------------+ +| t15 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t20 from t; Query Plan =================================== @@ -6888,12 +8616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t20]), partitions(p0) + select t15 xor t21 from t; -t15 xor t21 -0 ++-------------+ +| t15 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t21 from t; Query Plan =================================== @@ -6904,12 +8636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t21]), partitions(p0) + select t15 xor t22 from t; -t15 xor t22 -0 ++-------------+ +| t15 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t22 from t; Query Plan =================================== @@ -6920,12 +8656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t22]), partitions(p0) + select t15 xor t23 from t; -t15 xor t23 -0 ++-------------+ +| t15 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t23 from t; Query Plan =================================== @@ -6936,12 +8676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t23]), partitions(p0) + select t15 xor t24 from t; -t15 xor t24 -0 ++-------------+ +| t15 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t24 from t; Query Plan =================================== @@ -6952,12 +8696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t24]), partitions(p0) + select t15 xor t25 from t; -t15 xor t25 -0 ++-------------+ +| t15 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t25 from t; Query Plan =================================== @@ -6968,12 +8716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t25]), partitions(p0) + select t15 xor t26 from t; -t15 xor t26 -0 ++-------------+ +| t15 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t26 from t; Query Plan =================================== @@ -6984,12 +8736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t26]), partitions(p0) + select t15 xor t27 from t; -t15 xor t27 -0 ++-------------+ +| t15 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t27 from t; Query Plan =================================== @@ -7000,12 +8756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR t.t27]), filter(nil), access([t.t15], [t.t27]), partitions(p0) + select t15 xor t28 from t; -t15 xor t28 -0 ++-------------+ +| t15 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t28 from t; Query Plan =================================== @@ -7016,12 +8776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t28]), partitions(p0) + select t15 xor t29 from t; -t15 xor t29 -0 ++-------------+ +| t15 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t15 xor t29 from t; Query Plan =================================== @@ -7032,12 +8796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t15, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t15 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t15], [t.t29]), partitions(p0) + select t16 xor t1 from t; -t16 xor t1 -0 ++------------+ +| t16 xor t1 | ++------------+ +| 0 | ++------------+ explain select t16 xor t1 from t; Query Plan =================================== @@ -7048,12 +8816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t1]), filter(nil), access([t.t16], [t.t1]), partitions(p0) + select t16 xor t2 from t; -t16 xor t2 -0 ++------------+ +| t16 xor t2 | ++------------+ +| 0 | ++------------+ explain select t16 xor t2 from t; Query Plan =================================== @@ -7064,12 +8836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t2]), filter(nil), access([t.t16], [t.t2]), partitions(p0) + select t16 xor t3 from t; -t16 xor t3 -0 ++------------+ +| t16 xor t3 | ++------------+ +| 0 | ++------------+ explain select t16 xor t3 from t; Query Plan =================================== @@ -7080,12 +8856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t3]), filter(nil), access([t.t16], [t.t3]), partitions(p0) + select t16 xor t4 from t; -t16 xor t4 -0 ++------------+ +| t16 xor t4 | ++------------+ +| 0 | ++------------+ explain select t16 xor t4 from t; Query Plan =================================== @@ -7096,12 +8876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t4]), filter(nil), access([t.t16], [t.t4]), partitions(p0) + select t16 xor t5 from t; -t16 xor t5 -0 ++------------+ +| t16 xor t5 | ++------------+ +| 0 | ++------------+ explain select t16 xor t5 from t; Query Plan =================================== @@ -7112,12 +8896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t5]), filter(nil), access([t.t16], [t.t5]), partitions(p0) + select t16 xor t6 from t; -t16 xor t6 -0 ++------------+ +| t16 xor t6 | ++------------+ +| 0 | ++------------+ explain select t16 xor t6 from t; Query Plan =================================== @@ -7128,12 +8916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t6]), filter(nil), access([t.t16], [t.t6]), partitions(p0) + select t16 xor t7 from t; -t16 xor t7 -0 ++------------+ +| t16 xor t7 | ++------------+ +| 0 | ++------------+ explain select t16 xor t7 from t; Query Plan =================================== @@ -7144,12 +8936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t7]), filter(nil), access([t.t16], [t.t7]), partitions(p0) + select t16 xor t8 from t; -t16 xor t8 -0 ++------------+ +| t16 xor t8 | ++------------+ +| 0 | ++------------+ explain select t16 xor t8 from t; Query Plan =================================== @@ -7160,12 +8956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t8]), filter(nil), access([t.t16], [t.t8]), partitions(p0) + select t16 xor t9 from t; -t16 xor t9 -0 ++------------+ +| t16 xor t9 | ++------------+ +| 0 | ++------------+ explain select t16 xor t9 from t; Query Plan =================================== @@ -7176,12 +8976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t9]), filter(nil), access([t.t16], [t.t9]), partitions(p0) + select t16 xor t10 from t; -t16 xor t10 -0 ++-------------+ +| t16 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t10 from t; Query Plan =================================== @@ -7192,12 +8996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t10]), filter(nil), access([t.t16], [t.t10]), partitions(p0) + select t16 xor t11 from t; -t16 xor t11 -1 ++-------------+ +| t16 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t11 from t; Query Plan =================================== @@ -7208,12 +9016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t11]), filter(nil), access([t.t16], [t.t11]), partitions(p0) + select t16 xor t12 from t; -t16 xor t12 -1 ++-------------+ +| t16 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t12 from t; Query Plan =================================== @@ -7224,12 +9036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t12]), filter(nil), access([t.t16], [t.t12]), partitions(p0) + select t16 xor t13 from t; -t16 xor t13 -1 ++-------------+ +| t16 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t13 from t; Query Plan =================================== @@ -7240,12 +9056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t16 XOR t.t13]), filter(nil), access([t.t16], [t.t13]), partitions(p0) + select t16 xor t14 from t; -t16 xor t14 -0 ++-------------+ +| t16 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t14 from t; Query Plan =================================== @@ -7256,12 +9076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t14]), filter(nil), access([t.t16], [t.t14]), partitions(p0) + select t16 xor t15 from t; -t16 xor t15 -0 ++-------------+ +| t16 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t15 from t; Query Plan =================================== @@ -7272,12 +9096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t15]), filter(nil), access([t.t16], [t.t15]), partitions(p0) + select t16 xor t16 from t; -t16 xor t16 -0 ++-------------+ +| t16 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t16 from t; Query Plan =================================== @@ -7288,12 +9116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t16]), filter(nil), access([t.t16]), partitions(p0) + select t16 xor t17 from t; -t16 xor t17 -0 ++-------------+ +| t16 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t17 from t; Query Plan =================================== @@ -7304,12 +9136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t17]), partitions(p0) + select t16 xor t18 from t; -t16 xor t18 -0 ++-------------+ +| t16 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t18 from t; Query Plan =================================== @@ -7320,12 +9156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t18]), partitions(p0) + select t16 xor t19 from t; -t16 xor t19 -0 ++-------------+ +| t16 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t19 from t; Query Plan =================================== @@ -7336,12 +9176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t19]), partitions(p0) + select t16 xor t20 from t; -t16 xor t20 -0 ++-------------+ +| t16 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t20 from t; Query Plan =================================== @@ -7352,12 +9196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t20]), partitions(p0) + select t16 xor t21 from t; -t16 xor t21 -0 ++-------------+ +| t16 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t21 from t; Query Plan =================================== @@ -7368,12 +9216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t21]), partitions(p0) + select t16 xor t22 from t; -t16 xor t22 -0 ++-------------+ +| t16 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t22 from t; Query Plan =================================== @@ -7384,12 +9236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t22]), partitions(p0) + select t16 xor t23 from t; -t16 xor t23 -0 ++-------------+ +| t16 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t23 from t; Query Plan =================================== @@ -7400,12 +9256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t23]), partitions(p0) + select t16 xor t24 from t; -t16 xor t24 -0 ++-------------+ +| t16 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t24 from t; Query Plan =================================== @@ -7416,12 +9276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t24]), partitions(p0) + select t16 xor t25 from t; -t16 xor t25 -0 ++-------------+ +| t16 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t25 from t; Query Plan =================================== @@ -7432,12 +9296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t25]), partitions(p0) + select t16 xor t26 from t; -t16 xor t26 -0 ++-------------+ +| t16 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t26 from t; Query Plan =================================== @@ -7448,12 +9316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t26]), partitions(p0) + select t16 xor t27 from t; -t16 xor t27 -0 ++-------------+ +| t16 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t27 from t; Query Plan =================================== @@ -7464,12 +9336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR t.t27]), filter(nil), access([t.t16], [t.t27]), partitions(p0) + select t16 xor t28 from t; -t16 xor t28 -0 ++-------------+ +| t16 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t28 from t; Query Plan =================================== @@ -7480,12 +9356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t28]), partitions(p0) + select t16 xor t29 from t; -t16 xor t29 -0 ++-------------+ +| t16 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t16 xor t29 from t; Query Plan =================================== @@ -7496,12 +9376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t16, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t16 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t16], [t.t29]), partitions(p0) + select t17 xor t1 from t; -t17 xor t1 -0 ++------------+ +| t17 xor t1 | ++------------+ +| 0 | ++------------+ explain select t17 xor t1 from t; Query Plan =================================== @@ -7512,12 +9396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t17], [t.t1]), partitions(p0) + select t17 xor t2 from t; -t17 xor t2 -0 ++------------+ +| t17 xor t2 | ++------------+ +| 0 | ++------------+ explain select t17 xor t2 from t; Query Plan =================================== @@ -7528,12 +9416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t17], [t.t2]), partitions(p0) + select t17 xor t3 from t; -t17 xor t3 -0 ++------------+ +| t17 xor t3 | ++------------+ +| 0 | ++------------+ explain select t17 xor t3 from t; Query Plan =================================== @@ -7544,12 +9436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t17], [t.t3]), partitions(p0) + select t17 xor t4 from t; -t17 xor t4 -0 ++------------+ +| t17 xor t4 | ++------------+ +| 0 | ++------------+ explain select t17 xor t4 from t; Query Plan =================================== @@ -7560,12 +9456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t17], [t.t4]), partitions(p0) + select t17 xor t5 from t; -t17 xor t5 -0 ++------------+ +| t17 xor t5 | ++------------+ +| 0 | ++------------+ explain select t17 xor t5 from t; Query Plan =================================== @@ -7576,12 +9476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t17], [t.t5]), partitions(p0) + select t17 xor t6 from t; -t17 xor t6 -0 ++------------+ +| t17 xor t6 | ++------------+ +| 0 | ++------------+ explain select t17 xor t6 from t; Query Plan =================================== @@ -7592,12 +9496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t17], [t.t6]), partitions(p0) + select t17 xor t7 from t; -t17 xor t7 -0 ++------------+ +| t17 xor t7 | ++------------+ +| 0 | ++------------+ explain select t17 xor t7 from t; Query Plan =================================== @@ -7608,12 +9516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t17], [t.t7]), partitions(p0) + select t17 xor t8 from t; -t17 xor t8 -0 ++------------+ +| t17 xor t8 | ++------------+ +| 0 | ++------------+ explain select t17 xor t8 from t; Query Plan =================================== @@ -7624,12 +9536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t17], [t.t8]), partitions(p0) + select t17 xor t9 from t; -t17 xor t9 -0 ++------------+ +| t17 xor t9 | ++------------+ +| 0 | ++------------+ explain select t17 xor t9 from t; Query Plan =================================== @@ -7640,12 +9556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t17], [t.t9]), partitions(p0) + select t17 xor t10 from t; -t17 xor t10 -0 ++-------------+ +| t17 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t10 from t; Query Plan =================================== @@ -7656,12 +9576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t17], [t.t10]), partitions(p0) + select t17 xor t11 from t; -t17 xor t11 -1 ++-------------+ +| t17 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t11 from t; Query Plan =================================== @@ -7672,12 +9596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t17], [t.t11]), partitions(p0) + select t17 xor t12 from t; -t17 xor t12 -1 ++-------------+ +| t17 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t12 from t; Query Plan =================================== @@ -7688,12 +9616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t17], [t.t12]), partitions(p0) + select t17 xor t13 from t; -t17 xor t13 -1 ++-------------+ +| t17 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t13 from t; Query Plan =================================== @@ -7707,9 +9639,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t17], [t.t13]), partitions(p0) + select t17 xor t14 from t; -t17 xor t14 -0 ++-------------+ +| t17 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t14 from t; Query Plan =================================== @@ -7720,12 +9656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t17], [t.t14]), partitions(p0) + select t17 xor t15 from t; -t17 xor t15 -0 ++-------------+ +| t17 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t15 from t; Query Plan =================================== @@ -7736,12 +9676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t17], [t.t15]), partitions(p0) + select t17 xor t16 from t; -t17 xor t16 -0 ++-------------+ +| t17 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t16 from t; Query Plan =================================== @@ -7752,12 +9696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t17], [t.t16]), partitions(p0) + select t17 xor t17 from t; -t17 xor t17 -0 ++-------------+ +| t17 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t17 from t; Query Plan =================================== @@ -7771,9 +9719,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t17]), partitions(p0) + select t17 xor t18 from t; -t17 xor t18 -0 ++-------------+ +| t17 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t18 from t; Query Plan =================================== @@ -7787,9 +9739,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t18]), partitions(p0) + select t17 xor t19 from t; -t17 xor t19 -0 ++-------------+ +| t17 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t19 from t; Query Plan =================================== @@ -7803,9 +9759,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t19]), partitions(p0) + select t17 xor t20 from t; -t17 xor t20 -0 ++-------------+ +| t17 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t20 from t; Query Plan =================================== @@ -7819,9 +9779,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t20]), partitions(p0) + select t17 xor t21 from t; -t17 xor t21 -0 ++-------------+ +| t17 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t21 from t; Query Plan =================================== @@ -7835,9 +9799,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t21]), partitions(p0) + select t17 xor t22 from t; -t17 xor t22 -0 ++-------------+ +| t17 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t22 from t; Query Plan =================================== @@ -7851,9 +9819,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t22]), partitions(p0) + select t17 xor t23 from t; -t17 xor t23 -0 ++-------------+ +| t17 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t23 from t; Query Plan =================================== @@ -7867,9 +9839,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t23]), partitions(p0) + select t17 xor t24 from t; -t17 xor t24 -0 ++-------------+ +| t17 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t24 from t; Query Plan =================================== @@ -7883,9 +9859,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t24]), partitions(p0) + select t17 xor t25 from t; -t17 xor t25 -0 ++-------------+ +| t17 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t25 from t; Query Plan =================================== @@ -7899,9 +9879,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t25]), partitions(p0) + select t17 xor t26 from t; -t17 xor t26 -0 ++-------------+ +| t17 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t26 from t; Query Plan =================================== @@ -7915,9 +9899,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t26]), partitions(p0) + select t17 xor t27 from t; -t17 xor t27 -0 ++-------------+ +| t17 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t27 from t; Query Plan =================================== @@ -7928,12 +9916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t17], [t.t27]), partitions(p0) + select t17 xor t28 from t; -t17 xor t28 -0 ++-------------+ +| t17 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t28 from t; Query Plan =================================== @@ -7947,9 +9939,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t28]), partitions(p0) + select t17 xor t29 from t; -t17 xor t29 -0 ++-------------+ +| t17 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t17 xor t29 from t; Query Plan =================================== @@ -7963,9 +9959,13 @@ Outputs & filters: 0 - output([cast(t.t17, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t17], [t.t29]), partitions(p0) + select t18 xor t1 from t; -t18 xor t1 -0 ++------------+ +| t18 xor t1 | ++------------+ +| 0 | ++------------+ explain select t18 xor t1 from t; Query Plan =================================== @@ -7976,12 +9976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t18], [t.t1]), partitions(p0) + select t18 xor t2 from t; -t18 xor t2 -0 ++------------+ +| t18 xor t2 | ++------------+ +| 0 | ++------------+ explain select t18 xor t2 from t; Query Plan =================================== @@ -7992,12 +9996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t18], [t.t2]), partitions(p0) + select t18 xor t3 from t; -t18 xor t3 -0 ++------------+ +| t18 xor t3 | ++------------+ +| 0 | ++------------+ explain select t18 xor t3 from t; Query Plan =================================== @@ -8008,12 +10016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t18], [t.t3]), partitions(p0) + select t18 xor t4 from t; -t18 xor t4 -0 ++------------+ +| t18 xor t4 | ++------------+ +| 0 | ++------------+ explain select t18 xor t4 from t; Query Plan =================================== @@ -8024,12 +10036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t18], [t.t4]), partitions(p0) + select t18 xor t5 from t; -t18 xor t5 -0 ++------------+ +| t18 xor t5 | ++------------+ +| 0 | ++------------+ explain select t18 xor t5 from t; Query Plan =================================== @@ -8040,12 +10056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t18], [t.t5]), partitions(p0) + select t18 xor t6 from t; -t18 xor t6 -0 ++------------+ +| t18 xor t6 | ++------------+ +| 0 | ++------------+ explain select t18 xor t6 from t; Query Plan =================================== @@ -8056,12 +10076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t18], [t.t6]), partitions(p0) + select t18 xor t7 from t; -t18 xor t7 -0 ++------------+ +| t18 xor t7 | ++------------+ +| 0 | ++------------+ explain select t18 xor t7 from t; Query Plan =================================== @@ -8072,12 +10096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t18], [t.t7]), partitions(p0) + select t18 xor t8 from t; -t18 xor t8 -0 ++------------+ +| t18 xor t8 | ++------------+ +| 0 | ++------------+ explain select t18 xor t8 from t; Query Plan =================================== @@ -8088,12 +10116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t18], [t.t8]), partitions(p0) + select t18 xor t9 from t; -t18 xor t9 -0 ++------------+ +| t18 xor t9 | ++------------+ +| 0 | ++------------+ explain select t18 xor t9 from t; Query Plan =================================== @@ -8104,12 +10136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t18], [t.t9]), partitions(p0) + select t18 xor t10 from t; -t18 xor t10 -0 ++-------------+ +| t18 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t10 from t; Query Plan =================================== @@ -8120,12 +10156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t18], [t.t10]), partitions(p0) + select t18 xor t11 from t; -t18 xor t11 -1 ++-------------+ +| t18 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t11 from t; Query Plan =================================== @@ -8136,12 +10176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t18], [t.t11]), partitions(p0) + select t18 xor t12 from t; -t18 xor t12 -1 ++-------------+ +| t18 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t12 from t; Query Plan =================================== @@ -8152,12 +10196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t18], [t.t12]), partitions(p0) + select t18 xor t13 from t; -t18 xor t13 -1 ++-------------+ +| t18 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t13 from t; Query Plan =================================== @@ -8171,9 +10219,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t18], [t.t13]), partitions(p0) + select t18 xor t14 from t; -t18 xor t14 -0 ++-------------+ +| t18 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t14 from t; Query Plan =================================== @@ -8184,12 +10236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t18], [t.t14]), partitions(p0) + select t18 xor t15 from t; -t18 xor t15 -0 ++-------------+ +| t18 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t15 from t; Query Plan =================================== @@ -8200,12 +10256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t18], [t.t15]), partitions(p0) + select t18 xor t16 from t; -t18 xor t16 -0 ++-------------+ +| t18 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t16 from t; Query Plan =================================== @@ -8216,12 +10276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t18], [t.t16]), partitions(p0) + select t18 xor t17 from t; -t18 xor t17 -0 ++-------------+ +| t18 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t17 from t; Query Plan =================================== @@ -8235,9 +10299,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t17]), partitions(p0) + select t18 xor t18 from t; -t18 xor t18 -0 ++-------------+ +| t18 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t18 from t; Query Plan =================================== @@ -8251,9 +10319,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t18]), partitions(p0) + select t18 xor t19 from t; -t18 xor t19 -0 ++-------------+ +| t18 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t19 from t; Query Plan =================================== @@ -8267,9 +10339,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t19]), partitions(p0) + select t18 xor t20 from t; -t18 xor t20 -0 ++-------------+ +| t18 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t20 from t; Query Plan =================================== @@ -8283,9 +10359,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t20]), partitions(p0) + select t18 xor t21 from t; -t18 xor t21 -0 ++-------------+ +| t18 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t21 from t; Query Plan =================================== @@ -8299,9 +10379,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t21]), partitions(p0) + select t18 xor t22 from t; -t18 xor t22 -0 ++-------------+ +| t18 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t22 from t; Query Plan =================================== @@ -8315,9 +10399,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t22]), partitions(p0) + select t18 xor t23 from t; -t18 xor t23 -0 ++-------------+ +| t18 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t23 from t; Query Plan =================================== @@ -8331,9 +10419,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t23]), partitions(p0) + select t18 xor t24 from t; -t18 xor t24 -0 ++-------------+ +| t18 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t24 from t; Query Plan =================================== @@ -8347,9 +10439,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t24]), partitions(p0) + select t18 xor t25 from t; -t18 xor t25 -0 ++-------------+ +| t18 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t25 from t; Query Plan =================================== @@ -8363,9 +10459,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t25]), partitions(p0) + select t18 xor t26 from t; -t18 xor t26 -0 ++-------------+ +| t18 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t26 from t; Query Plan =================================== @@ -8379,9 +10479,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t26]), partitions(p0) + select t18 xor t27 from t; -t18 xor t27 -0 ++-------------+ +| t18 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t27 from t; Query Plan =================================== @@ -8392,12 +10496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t18], [t.t27]), partitions(p0) + select t18 xor t28 from t; -t18 xor t28 -0 ++-------------+ +| t18 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t28 from t; Query Plan =================================== @@ -8411,9 +10519,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t28]), partitions(p0) + select t18 xor t29 from t; -t18 xor t29 -0 ++-------------+ +| t18 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t18 xor t29 from t; Query Plan =================================== @@ -8427,9 +10539,13 @@ Outputs & filters: 0 - output([cast(t.t18, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t18], [t.t29]), partitions(p0) + select t19 xor t1 from t; -t19 xor t1 -0 ++------------+ +| t19 xor t1 | ++------------+ +| 0 | ++------------+ explain select t19 xor t1 from t; Query Plan =================================== @@ -8440,12 +10556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t19], [t.t1]), partitions(p0) + select t19 xor t2 from t; -t19 xor t2 -0 ++------------+ +| t19 xor t2 | ++------------+ +| 0 | ++------------+ explain select t19 xor t2 from t; Query Plan =================================== @@ -8456,12 +10576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t19], [t.t2]), partitions(p0) + select t19 xor t3 from t; -t19 xor t3 -0 ++------------+ +| t19 xor t3 | ++------------+ +| 0 | ++------------+ explain select t19 xor t3 from t; Query Plan =================================== @@ -8472,12 +10596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t19], [t.t3]), partitions(p0) + select t19 xor t4 from t; -t19 xor t4 -0 ++------------+ +| t19 xor t4 | ++------------+ +| 0 | ++------------+ explain select t19 xor t4 from t; Query Plan =================================== @@ -8488,12 +10616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t19], [t.t4]), partitions(p0) + select t19 xor t5 from t; -t19 xor t5 -0 ++------------+ +| t19 xor t5 | ++------------+ +| 0 | ++------------+ explain select t19 xor t5 from t; Query Plan =================================== @@ -8504,12 +10636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t19], [t.t5]), partitions(p0) + select t19 xor t6 from t; -t19 xor t6 -0 ++------------+ +| t19 xor t6 | ++------------+ +| 0 | ++------------+ explain select t19 xor t6 from t; Query Plan =================================== @@ -8520,12 +10656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t19], [t.t6]), partitions(p0) + select t19 xor t7 from t; -t19 xor t7 -0 ++------------+ +| t19 xor t7 | ++------------+ +| 0 | ++------------+ explain select t19 xor t7 from t; Query Plan =================================== @@ -8536,12 +10676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t19], [t.t7]), partitions(p0) + select t19 xor t8 from t; -t19 xor t8 -0 ++------------+ +| t19 xor t8 | ++------------+ +| 0 | ++------------+ explain select t19 xor t8 from t; Query Plan =================================== @@ -8552,12 +10696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t19], [t.t8]), partitions(p0) + select t19 xor t9 from t; -t19 xor t9 -0 ++------------+ +| t19 xor t9 | ++------------+ +| 0 | ++------------+ explain select t19 xor t9 from t; Query Plan =================================== @@ -8568,12 +10716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t19], [t.t9]), partitions(p0) + select t19 xor t10 from t; -t19 xor t10 -0 ++-------------+ +| t19 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t10 from t; Query Plan =================================== @@ -8584,12 +10736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t19], [t.t10]), partitions(p0) + select t19 xor t11 from t; -t19 xor t11 -1 ++-------------+ +| t19 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t11 from t; Query Plan =================================== @@ -8600,12 +10756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t19], [t.t11]), partitions(p0) + select t19 xor t12 from t; -t19 xor t12 -1 ++-------------+ +| t19 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t12 from t; Query Plan =================================== @@ -8616,12 +10776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t19], [t.t12]), partitions(p0) + select t19 xor t13 from t; -t19 xor t13 -1 ++-------------+ +| t19 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t13 from t; Query Plan =================================== @@ -8635,9 +10799,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t19], [t.t13]), partitions(p0) + select t19 xor t14 from t; -t19 xor t14 -0 ++-------------+ +| t19 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t14 from t; Query Plan =================================== @@ -8648,12 +10816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t19], [t.t14]), partitions(p0) + select t19 xor t15 from t; -t19 xor t15 -0 ++-------------+ +| t19 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t15 from t; Query Plan =================================== @@ -8664,12 +10836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t19], [t.t15]), partitions(p0) + select t19 xor t16 from t; -t19 xor t16 -0 ++-------------+ +| t19 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t16 from t; Query Plan =================================== @@ -8680,12 +10856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t19], [t.t16]), partitions(p0) + select t19 xor t17 from t; -t19 xor t17 -0 ++-------------+ +| t19 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t17 from t; Query Plan =================================== @@ -8699,9 +10879,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t17]), partitions(p0) + select t19 xor t18 from t; -t19 xor t18 -0 ++-------------+ +| t19 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t18 from t; Query Plan =================================== @@ -8715,9 +10899,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t18]), partitions(p0) + select t19 xor t19 from t; -t19 xor t19 -0 ++-------------+ +| t19 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t19 from t; Query Plan =================================== @@ -8731,9 +10919,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t19]), partitions(p0) + select t19 xor t20 from t; -t19 xor t20 -0 ++-------------+ +| t19 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t20 from t; Query Plan =================================== @@ -8747,9 +10939,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t20]), partitions(p0) + select t19 xor t21 from t; -t19 xor t21 -0 ++-------------+ +| t19 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t21 from t; Query Plan =================================== @@ -8763,9 +10959,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t21]), partitions(p0) + select t19 xor t22 from t; -t19 xor t22 -0 ++-------------+ +| t19 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t22 from t; Query Plan =================================== @@ -8779,9 +10979,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t22]), partitions(p0) + select t19 xor t23 from t; -t19 xor t23 -0 ++-------------+ +| t19 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t23 from t; Query Plan =================================== @@ -8795,9 +10999,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t23]), partitions(p0) + select t19 xor t24 from t; -t19 xor t24 -0 ++-------------+ +| t19 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t24 from t; Query Plan =================================== @@ -8811,9 +11019,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t24]), partitions(p0) + select t19 xor t25 from t; -t19 xor t25 -0 ++-------------+ +| t19 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t25 from t; Query Plan =================================== @@ -8827,9 +11039,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t25]), partitions(p0) + select t19 xor t26 from t; -t19 xor t26 -0 ++-------------+ +| t19 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t26 from t; Query Plan =================================== @@ -8843,9 +11059,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t26]), partitions(p0) + select t19 xor t27 from t; -t19 xor t27 -0 ++-------------+ +| t19 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t27 from t; Query Plan =================================== @@ -8856,12 +11076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t19], [t.t27]), partitions(p0) + select t19 xor t28 from t; -t19 xor t28 -0 ++-------------+ +| t19 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t28 from t; Query Plan =================================== @@ -8875,9 +11099,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t28]), partitions(p0) + select t19 xor t29 from t; -t19 xor t29 -0 ++-------------+ +| t19 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t19 xor t29 from t; Query Plan =================================== @@ -8891,9 +11119,13 @@ Outputs & filters: 0 - output([cast(t.t19, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t19], [t.t29]), partitions(p0) + select t20 xor t1 from t; -t20 xor t1 -0 ++------------+ +| t20 xor t1 | ++------------+ +| 0 | ++------------+ explain select t20 xor t1 from t; Query Plan =================================== @@ -8904,12 +11136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t20], [t.t1]), partitions(p0) + select t20 xor t2 from t; -t20 xor t2 -0 ++------------+ +| t20 xor t2 | ++------------+ +| 0 | ++------------+ explain select t20 xor t2 from t; Query Plan =================================== @@ -8920,12 +11156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t20], [t.t2]), partitions(p0) + select t20 xor t3 from t; -t20 xor t3 -0 ++------------+ +| t20 xor t3 | ++------------+ +| 0 | ++------------+ explain select t20 xor t3 from t; Query Plan =================================== @@ -8936,12 +11176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t20], [t.t3]), partitions(p0) + select t20 xor t4 from t; -t20 xor t4 -0 ++------------+ +| t20 xor t4 | ++------------+ +| 0 | ++------------+ explain select t20 xor t4 from t; Query Plan =================================== @@ -8952,12 +11196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t20], [t.t4]), partitions(p0) + select t20 xor t5 from t; -t20 xor t5 -0 ++------------+ +| t20 xor t5 | ++------------+ +| 0 | ++------------+ explain select t20 xor t5 from t; Query Plan =================================== @@ -8968,12 +11216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t20], [t.t5]), partitions(p0) + select t20 xor t6 from t; -t20 xor t6 -0 ++------------+ +| t20 xor t6 | ++------------+ +| 0 | ++------------+ explain select t20 xor t6 from t; Query Plan =================================== @@ -8984,12 +11236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t20], [t.t6]), partitions(p0) + select t20 xor t7 from t; -t20 xor t7 -0 ++------------+ +| t20 xor t7 | ++------------+ +| 0 | ++------------+ explain select t20 xor t7 from t; Query Plan =================================== @@ -9000,12 +11256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t20], [t.t7]), partitions(p0) + select t20 xor t8 from t; -t20 xor t8 -0 ++------------+ +| t20 xor t8 | ++------------+ +| 0 | ++------------+ explain select t20 xor t8 from t; Query Plan =================================== @@ -9016,12 +11276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t20], [t.t8]), partitions(p0) + select t20 xor t9 from t; -t20 xor t9 -0 ++------------+ +| t20 xor t9 | ++------------+ +| 0 | ++------------+ explain select t20 xor t9 from t; Query Plan =================================== @@ -9032,12 +11296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t20], [t.t9]), partitions(p0) + select t20 xor t10 from t; -t20 xor t10 -0 ++-------------+ +| t20 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t10 from t; Query Plan =================================== @@ -9048,12 +11316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t20], [t.t10]), partitions(p0) + select t20 xor t11 from t; -t20 xor t11 -1 ++-------------+ +| t20 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t11 from t; Query Plan =================================== @@ -9064,12 +11336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t20], [t.t11]), partitions(p0) + select t20 xor t12 from t; -t20 xor t12 -1 ++-------------+ +| t20 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t12 from t; Query Plan =================================== @@ -9080,12 +11356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t20], [t.t12]), partitions(p0) + select t20 xor t13 from t; -t20 xor t13 -1 ++-------------+ +| t20 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t13 from t; Query Plan =================================== @@ -9099,9 +11379,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t20], [t.t13]), partitions(p0) + select t20 xor t14 from t; -t20 xor t14 -0 ++-------------+ +| t20 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t14 from t; Query Plan =================================== @@ -9112,12 +11396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t20], [t.t14]), partitions(p0) + select t20 xor t15 from t; -t20 xor t15 -0 ++-------------+ +| t20 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t15 from t; Query Plan =================================== @@ -9128,12 +11416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t20], [t.t15]), partitions(p0) + select t20 xor t16 from t; -t20 xor t16 -0 ++-------------+ +| t20 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t16 from t; Query Plan =================================== @@ -9144,12 +11436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t20], [t.t16]), partitions(p0) + select t20 xor t17 from t; -t20 xor t17 -0 ++-------------+ +| t20 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t17 from t; Query Plan =================================== @@ -9163,9 +11459,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t17]), partitions(p0) + select t20 xor t18 from t; -t20 xor t18 -0 ++-------------+ +| t20 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t18 from t; Query Plan =================================== @@ -9179,9 +11479,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t18]), partitions(p0) + select t20 xor t19 from t; -t20 xor t19 -0 ++-------------+ +| t20 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t19 from t; Query Plan =================================== @@ -9195,9 +11499,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t19]), partitions(p0) + select t20 xor t20 from t; -t20 xor t20 -0 ++-------------+ +| t20 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t20 from t; Query Plan =================================== @@ -9211,9 +11519,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t20]), partitions(p0) + select t20 xor t21 from t; -t20 xor t21 -0 ++-------------+ +| t20 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t21 from t; Query Plan =================================== @@ -9227,9 +11539,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t21]), partitions(p0) + select t20 xor t22 from t; -t20 xor t22 -0 ++-------------+ +| t20 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t22 from t; Query Plan =================================== @@ -9243,9 +11559,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t22]), partitions(p0) + select t20 xor t23 from t; -t20 xor t23 -0 ++-------------+ +| t20 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t23 from t; Query Plan =================================== @@ -9259,9 +11579,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t23]), partitions(p0) + select t20 xor t24 from t; -t20 xor t24 -0 ++-------------+ +| t20 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t24 from t; Query Plan =================================== @@ -9275,9 +11599,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t24]), partitions(p0) + select t20 xor t25 from t; -t20 xor t25 -0 ++-------------+ +| t20 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t25 from t; Query Plan =================================== @@ -9291,9 +11619,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t25]), partitions(p0) + select t20 xor t26 from t; -t20 xor t26 -0 ++-------------+ +| t20 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t26 from t; Query Plan =================================== @@ -9307,9 +11639,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t26]), partitions(p0) + select t20 xor t27 from t; -t20 xor t27 -0 ++-------------+ +| t20 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t27 from t; Query Plan =================================== @@ -9320,12 +11656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t20], [t.t27]), partitions(p0) + select t20 xor t28 from t; -t20 xor t28 -0 ++-------------+ +| t20 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t28 from t; Query Plan =================================== @@ -9339,9 +11679,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t28]), partitions(p0) + select t20 xor t29 from t; -t20 xor t29 -0 ++-------------+ +| t20 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t20 xor t29 from t; Query Plan =================================== @@ -9355,9 +11699,13 @@ Outputs & filters: 0 - output([cast(t.t20, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t20], [t.t29]), partitions(p0) + select t21 xor t1 from t; -t21 xor t1 -0 ++------------+ +| t21 xor t1 | ++------------+ +| 0 | ++------------+ explain select t21 xor t1 from t; Query Plan =================================== @@ -9368,12 +11716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t21], [t.t1]), partitions(p0) + select t21 xor t2 from t; -t21 xor t2 -0 ++------------+ +| t21 xor t2 | ++------------+ +| 0 | ++------------+ explain select t21 xor t2 from t; Query Plan =================================== @@ -9384,12 +11736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t21], [t.t2]), partitions(p0) + select t21 xor t3 from t; -t21 xor t3 -0 ++------------+ +| t21 xor t3 | ++------------+ +| 0 | ++------------+ explain select t21 xor t3 from t; Query Plan =================================== @@ -9400,12 +11756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t21], [t.t3]), partitions(p0) + select t21 xor t4 from t; -t21 xor t4 -0 ++------------+ +| t21 xor t4 | ++------------+ +| 0 | ++------------+ explain select t21 xor t4 from t; Query Plan =================================== @@ -9416,12 +11776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t21], [t.t4]), partitions(p0) + select t21 xor t5 from t; -t21 xor t5 -0 ++------------+ +| t21 xor t5 | ++------------+ +| 0 | ++------------+ explain select t21 xor t5 from t; Query Plan =================================== @@ -9432,12 +11796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t21], [t.t5]), partitions(p0) + select t21 xor t6 from t; -t21 xor t6 -0 ++------------+ +| t21 xor t6 | ++------------+ +| 0 | ++------------+ explain select t21 xor t6 from t; Query Plan =================================== @@ -9448,12 +11816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t21], [t.t6]), partitions(p0) + select t21 xor t7 from t; -t21 xor t7 -0 ++------------+ +| t21 xor t7 | ++------------+ +| 0 | ++------------+ explain select t21 xor t7 from t; Query Plan =================================== @@ -9464,12 +11836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t21], [t.t7]), partitions(p0) + select t21 xor t8 from t; -t21 xor t8 -0 ++------------+ +| t21 xor t8 | ++------------+ +| 0 | ++------------+ explain select t21 xor t8 from t; Query Plan =================================== @@ -9480,12 +11856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t21], [t.t8]), partitions(p0) + select t21 xor t9 from t; -t21 xor t9 -0 ++------------+ +| t21 xor t9 | ++------------+ +| 0 | ++------------+ explain select t21 xor t9 from t; Query Plan =================================== @@ -9496,12 +11876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t21], [t.t9]), partitions(p0) + select t21 xor t10 from t; -t21 xor t10 -0 ++-------------+ +| t21 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t10 from t; Query Plan =================================== @@ -9512,12 +11896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t21], [t.t10]), partitions(p0) + select t21 xor t11 from t; -t21 xor t11 -1 ++-------------+ +| t21 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t11 from t; Query Plan =================================== @@ -9528,12 +11916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t21], [t.t11]), partitions(p0) + select t21 xor t12 from t; -t21 xor t12 -1 ++-------------+ +| t21 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t12 from t; Query Plan =================================== @@ -9544,12 +11936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t21], [t.t12]), partitions(p0) + select t21 xor t13 from t; -t21 xor t13 -1 ++-------------+ +| t21 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t13 from t; Query Plan =================================== @@ -9563,9 +11959,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t21], [t.t13]), partitions(p0) + select t21 xor t14 from t; -t21 xor t14 -0 ++-------------+ +| t21 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t14 from t; Query Plan =================================== @@ -9576,12 +11976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t21], [t.t14]), partitions(p0) + select t21 xor t15 from t; -t21 xor t15 -0 ++-------------+ +| t21 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t15 from t; Query Plan =================================== @@ -9592,12 +11996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t21], [t.t15]), partitions(p0) + select t21 xor t16 from t; -t21 xor t16 -0 ++-------------+ +| t21 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t16 from t; Query Plan =================================== @@ -9608,12 +12016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t21], [t.t16]), partitions(p0) + select t21 xor t17 from t; -t21 xor t17 -0 ++-------------+ +| t21 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t17 from t; Query Plan =================================== @@ -9627,9 +12039,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t17]), partitions(p0) + select t21 xor t18 from t; -t21 xor t18 -0 ++-------------+ +| t21 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t18 from t; Query Plan =================================== @@ -9643,9 +12059,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t18]), partitions(p0) + select t21 xor t19 from t; -t21 xor t19 -0 ++-------------+ +| t21 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t19 from t; Query Plan =================================== @@ -9659,9 +12079,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t19]), partitions(p0) + select t21 xor t20 from t; -t21 xor t20 -0 ++-------------+ +| t21 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t20 from t; Query Plan =================================== @@ -9675,9 +12099,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t20]), partitions(p0) + select t21 xor t21 from t; -t21 xor t21 -0 ++-------------+ +| t21 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t21 from t; Query Plan =================================== @@ -9691,9 +12119,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t21]), partitions(p0) + select t21 xor t22 from t; -t21 xor t22 -0 ++-------------+ +| t21 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t22 from t; Query Plan =================================== @@ -9707,9 +12139,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t22]), partitions(p0) + select t21 xor t23 from t; -t21 xor t23 -0 ++-------------+ +| t21 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t23 from t; Query Plan =================================== @@ -9723,9 +12159,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t23]), partitions(p0) + select t21 xor t24 from t; -t21 xor t24 -0 ++-------------+ +| t21 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t24 from t; Query Plan =================================== @@ -9739,9 +12179,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t24]), partitions(p0) + select t21 xor t25 from t; -t21 xor t25 -0 ++-------------+ +| t21 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t25 from t; Query Plan =================================== @@ -9755,9 +12199,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t25]), partitions(p0) + select t21 xor t26 from t; -t21 xor t26 -0 ++-------------+ +| t21 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t26 from t; Query Plan =================================== @@ -9771,9 +12219,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t26]), partitions(p0) + select t21 xor t27 from t; -t21 xor t27 -0 ++-------------+ +| t21 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t27 from t; Query Plan =================================== @@ -9784,12 +12236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t21], [t.t27]), partitions(p0) + select t21 xor t28 from t; -t21 xor t28 -0 ++-------------+ +| t21 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t28 from t; Query Plan =================================== @@ -9803,9 +12259,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t28]), partitions(p0) + select t21 xor t29 from t; -t21 xor t29 -0 ++-------------+ +| t21 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t21 xor t29 from t; Query Plan =================================== @@ -9819,9 +12279,13 @@ Outputs & filters: 0 - output([cast(t.t21, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t21], [t.t29]), partitions(p0) + select t22 xor t1 from t; -t22 xor t1 -0 ++------------+ +| t22 xor t1 | ++------------+ +| 0 | ++------------+ explain select t22 xor t1 from t; Query Plan =================================== @@ -9832,12 +12296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t22], [t.t1]), partitions(p0) + select t22 xor t2 from t; -t22 xor t2 -0 ++------------+ +| t22 xor t2 | ++------------+ +| 0 | ++------------+ explain select t22 xor t2 from t; Query Plan =================================== @@ -9848,12 +12316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t22], [t.t2]), partitions(p0) + select t22 xor t3 from t; -t22 xor t3 -0 ++------------+ +| t22 xor t3 | ++------------+ +| 0 | ++------------+ explain select t22 xor t3 from t; Query Plan =================================== @@ -9864,12 +12336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t22], [t.t3]), partitions(p0) + select t22 xor t4 from t; -t22 xor t4 -0 ++------------+ +| t22 xor t4 | ++------------+ +| 0 | ++------------+ explain select t22 xor t4 from t; Query Plan =================================== @@ -9880,12 +12356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t22], [t.t4]), partitions(p0) + select t22 xor t5 from t; -t22 xor t5 -0 ++------------+ +| t22 xor t5 | ++------------+ +| 0 | ++------------+ explain select t22 xor t5 from t; Query Plan =================================== @@ -9896,12 +12376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t22], [t.t5]), partitions(p0) + select t22 xor t6 from t; -t22 xor t6 -0 ++------------+ +| t22 xor t6 | ++------------+ +| 0 | ++------------+ explain select t22 xor t6 from t; Query Plan =================================== @@ -9912,12 +12396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t22], [t.t6]), partitions(p0) + select t22 xor t7 from t; -t22 xor t7 -0 ++------------+ +| t22 xor t7 | ++------------+ +| 0 | ++------------+ explain select t22 xor t7 from t; Query Plan =================================== @@ -9928,12 +12416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t22], [t.t7]), partitions(p0) + select t22 xor t8 from t; -t22 xor t8 -0 ++------------+ +| t22 xor t8 | ++------------+ +| 0 | ++------------+ explain select t22 xor t8 from t; Query Plan =================================== @@ -9944,12 +12436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t22], [t.t8]), partitions(p0) + select t22 xor t9 from t; -t22 xor t9 -0 ++------------+ +| t22 xor t9 | ++------------+ +| 0 | ++------------+ explain select t22 xor t9 from t; Query Plan =================================== @@ -9960,12 +12456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t22], [t.t9]), partitions(p0) + select t22 xor t10 from t; -t22 xor t10 -0 ++-------------+ +| t22 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t10 from t; Query Plan =================================== @@ -9976,12 +12476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t22], [t.t10]), partitions(p0) + select t22 xor t11 from t; -t22 xor t11 -1 ++-------------+ +| t22 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t11 from t; Query Plan =================================== @@ -9992,12 +12496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t22], [t.t11]), partitions(p0) + select t22 xor t12 from t; -t22 xor t12 -1 ++-------------+ +| t22 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t12 from t; Query Plan =================================== @@ -10008,12 +12516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t22], [t.t12]), partitions(p0) + select t22 xor t13 from t; -t22 xor t13 -1 ++-------------+ +| t22 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t13 from t; Query Plan =================================== @@ -10027,9 +12539,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t22], [t.t13]), partitions(p0) + select t22 xor t14 from t; -t22 xor t14 -0 ++-------------+ +| t22 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t14 from t; Query Plan =================================== @@ -10040,12 +12556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t22], [t.t14]), partitions(p0) + select t22 xor t15 from t; -t22 xor t15 -0 ++-------------+ +| t22 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t15 from t; Query Plan =================================== @@ -10056,12 +12576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t22], [t.t15]), partitions(p0) + select t22 xor t16 from t; -t22 xor t16 -0 ++-------------+ +| t22 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t16 from t; Query Plan =================================== @@ -10072,12 +12596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t22], [t.t16]), partitions(p0) + select t22 xor t17 from t; -t22 xor t17 -0 ++-------------+ +| t22 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t17 from t; Query Plan =================================== @@ -10091,9 +12619,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t17]), partitions(p0) + select t22 xor t18 from t; -t22 xor t18 -0 ++-------------+ +| t22 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t18 from t; Query Plan =================================== @@ -10107,9 +12639,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t18]), partitions(p0) + select t22 xor t19 from t; -t22 xor t19 -0 ++-------------+ +| t22 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t19 from t; Query Plan =================================== @@ -10123,9 +12659,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t19]), partitions(p0) + select t22 xor t20 from t; -t22 xor t20 -0 ++-------------+ +| t22 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t20 from t; Query Plan =================================== @@ -10139,9 +12679,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t20]), partitions(p0) + select t22 xor t21 from t; -t22 xor t21 -0 ++-------------+ +| t22 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t21 from t; Query Plan =================================== @@ -10155,9 +12699,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t21]), partitions(p0) + select t22 xor t22 from t; -t22 xor t22 -0 ++-------------+ +| t22 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t22 from t; Query Plan =================================== @@ -10171,9 +12719,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t22]), partitions(p0) + select t22 xor t23 from t; -t22 xor t23 -0 ++-------------+ +| t22 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t23 from t; Query Plan =================================== @@ -10187,9 +12739,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t23]), partitions(p0) + select t22 xor t24 from t; -t22 xor t24 -0 ++-------------+ +| t22 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t24 from t; Query Plan =================================== @@ -10203,9 +12759,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t24]), partitions(p0) + select t22 xor t25 from t; -t22 xor t25 -0 ++-------------+ +| t22 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t25 from t; Query Plan =================================== @@ -10219,9 +12779,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t25]), partitions(p0) + select t22 xor t26 from t; -t22 xor t26 -0 ++-------------+ +| t22 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t26 from t; Query Plan =================================== @@ -10235,9 +12799,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t26]), partitions(p0) + select t22 xor t27 from t; -t22 xor t27 -0 ++-------------+ +| t22 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t27 from t; Query Plan =================================== @@ -10248,12 +12816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t22], [t.t27]), partitions(p0) + select t22 xor t28 from t; -t22 xor t28 -0 ++-------------+ +| t22 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t28 from t; Query Plan =================================== @@ -10267,9 +12839,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t28]), partitions(p0) + select t22 xor t29 from t; -t22 xor t29 -0 ++-------------+ +| t22 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t22 xor t29 from t; Query Plan =================================== @@ -10283,9 +12859,13 @@ Outputs & filters: 0 - output([cast(t.t22, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t22], [t.t29]), partitions(p0) + select t23 xor t1 from t; -t23 xor t1 -0 ++------------+ +| t23 xor t1 | ++------------+ +| 0 | ++------------+ explain select t23 xor t1 from t; Query Plan =================================== @@ -10296,12 +12876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t23], [t.t1]), partitions(p0) + select t23 xor t2 from t; -t23 xor t2 -0 ++------------+ +| t23 xor t2 | ++------------+ +| 0 | ++------------+ explain select t23 xor t2 from t; Query Plan =================================== @@ -10312,12 +12896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t23], [t.t2]), partitions(p0) + select t23 xor t3 from t; -t23 xor t3 -0 ++------------+ +| t23 xor t3 | ++------------+ +| 0 | ++------------+ explain select t23 xor t3 from t; Query Plan =================================== @@ -10328,12 +12916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t23], [t.t3]), partitions(p0) + select t23 xor t4 from t; -t23 xor t4 -0 ++------------+ +| t23 xor t4 | ++------------+ +| 0 | ++------------+ explain select t23 xor t4 from t; Query Plan =================================== @@ -10344,12 +12936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t23], [t.t4]), partitions(p0) + select t23 xor t5 from t; -t23 xor t5 -0 ++------------+ +| t23 xor t5 | ++------------+ +| 0 | ++------------+ explain select t23 xor t5 from t; Query Plan =================================== @@ -10360,12 +12956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t23], [t.t5]), partitions(p0) + select t23 xor t6 from t; -t23 xor t6 -0 ++------------+ +| t23 xor t6 | ++------------+ +| 0 | ++------------+ explain select t23 xor t6 from t; Query Plan =================================== @@ -10376,12 +12976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t23], [t.t6]), partitions(p0) + select t23 xor t7 from t; -t23 xor t7 -0 ++------------+ +| t23 xor t7 | ++------------+ +| 0 | ++------------+ explain select t23 xor t7 from t; Query Plan =================================== @@ -10392,12 +12996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t23], [t.t7]), partitions(p0) + select t23 xor t8 from t; -t23 xor t8 -0 ++------------+ +| t23 xor t8 | ++------------+ +| 0 | ++------------+ explain select t23 xor t8 from t; Query Plan =================================== @@ -10408,12 +13016,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t23], [t.t8]), partitions(p0) + select t23 xor t9 from t; -t23 xor t9 -0 ++------------+ +| t23 xor t9 | ++------------+ +| 0 | ++------------+ explain select t23 xor t9 from t; Query Plan =================================== @@ -10424,12 +13036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t23], [t.t9]), partitions(p0) + select t23 xor t10 from t; -t23 xor t10 -0 ++-------------+ +| t23 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t10 from t; Query Plan =================================== @@ -10440,12 +13056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t23], [t.t10]), partitions(p0) + select t23 xor t11 from t; -t23 xor t11 -1 ++-------------+ +| t23 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t11 from t; Query Plan =================================== @@ -10456,12 +13076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t23], [t.t11]), partitions(p0) + select t23 xor t12 from t; -t23 xor t12 -1 ++-------------+ +| t23 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t12 from t; Query Plan =================================== @@ -10472,12 +13096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t23], [t.t12]), partitions(p0) + select t23 xor t13 from t; -t23 xor t13 -1 ++-------------+ +| t23 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t13 from t; Query Plan =================================== @@ -10491,9 +13119,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t23], [t.t13]), partitions(p0) + select t23 xor t14 from t; -t23 xor t14 -0 ++-------------+ +| t23 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t14 from t; Query Plan =================================== @@ -10504,12 +13136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t23], [t.t14]), partitions(p0) + select t23 xor t15 from t; -t23 xor t15 -0 ++-------------+ +| t23 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t15 from t; Query Plan =================================== @@ -10520,12 +13156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t23], [t.t15]), partitions(p0) + select t23 xor t16 from t; -t23 xor t16 -0 ++-------------+ +| t23 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t16 from t; Query Plan =================================== @@ -10536,12 +13176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t23], [t.t16]), partitions(p0) + select t23 xor t17 from t; -t23 xor t17 -0 ++-------------+ +| t23 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t17 from t; Query Plan =================================== @@ -10555,9 +13199,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t17]), partitions(p0) + select t23 xor t18 from t; -t23 xor t18 -0 ++-------------+ +| t23 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t18 from t; Query Plan =================================== @@ -10571,9 +13219,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t18]), partitions(p0) + select t23 xor t19 from t; -t23 xor t19 -0 ++-------------+ +| t23 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t19 from t; Query Plan =================================== @@ -10587,9 +13239,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t19]), partitions(p0) + select t23 xor t20 from t; -t23 xor t20 -0 ++-------------+ +| t23 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t20 from t; Query Plan =================================== @@ -10603,9 +13259,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t20]), partitions(p0) + select t23 xor t21 from t; -t23 xor t21 -0 ++-------------+ +| t23 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t21 from t; Query Plan =================================== @@ -10619,9 +13279,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t21]), partitions(p0) + select t23 xor t22 from t; -t23 xor t22 -0 ++-------------+ +| t23 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t22 from t; Query Plan =================================== @@ -10635,9 +13299,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t22]), partitions(p0) + select t23 xor t23 from t; -t23 xor t23 -0 ++-------------+ +| t23 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t23 from t; Query Plan =================================== @@ -10651,9 +13319,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t23]), partitions(p0) + select t23 xor t24 from t; -t23 xor t24 -0 ++-------------+ +| t23 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t24 from t; Query Plan =================================== @@ -10667,9 +13339,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t24]), partitions(p0) + select t23 xor t25 from t; -t23 xor t25 -0 ++-------------+ +| t23 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t25 from t; Query Plan =================================== @@ -10683,9 +13359,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t25]), partitions(p0) + select t23 xor t26 from t; -t23 xor t26 -0 ++-------------+ +| t23 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t26 from t; Query Plan =================================== @@ -10699,9 +13379,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t26]), partitions(p0) + select t23 xor t27 from t; -t23 xor t27 -0 ++-------------+ +| t23 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t27 from t; Query Plan =================================== @@ -10712,12 +13396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t23], [t.t27]), partitions(p0) + select t23 xor t28 from t; -t23 xor t28 -0 ++-------------+ +| t23 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t28 from t; Query Plan =================================== @@ -10731,9 +13419,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t28]), partitions(p0) + select t23 xor t29 from t; -t23 xor t29 -0 ++-------------+ +| t23 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t23 xor t29 from t; Query Plan =================================== @@ -10747,9 +13439,13 @@ Outputs & filters: 0 - output([cast(t.t23, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t23], [t.t29]), partitions(p0) + select t24 xor t1 from t; -t24 xor t1 -0 ++------------+ +| t24 xor t1 | ++------------+ +| 0 | ++------------+ explain select t24 xor t1 from t; Query Plan =================================== @@ -10760,12 +13456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t24], [t.t1]), partitions(p0) + select t24 xor t2 from t; -t24 xor t2 -0 ++------------+ +| t24 xor t2 | ++------------+ +| 0 | ++------------+ explain select t24 xor t2 from t; Query Plan =================================== @@ -10776,12 +13476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t24], [t.t2]), partitions(p0) + select t24 xor t3 from t; -t24 xor t3 -0 ++------------+ +| t24 xor t3 | ++------------+ +| 0 | ++------------+ explain select t24 xor t3 from t; Query Plan =================================== @@ -10792,12 +13496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t24], [t.t3]), partitions(p0) + select t24 xor t4 from t; -t24 xor t4 -0 ++------------+ +| t24 xor t4 | ++------------+ +| 0 | ++------------+ explain select t24 xor t4 from t; Query Plan =================================== @@ -10808,12 +13516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t24], [t.t4]), partitions(p0) + select t24 xor t5 from t; -t24 xor t5 -0 ++------------+ +| t24 xor t5 | ++------------+ +| 0 | ++------------+ explain select t24 xor t5 from t; Query Plan =================================== @@ -10824,12 +13536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t24], [t.t5]), partitions(p0) + select t24 xor t6 from t; -t24 xor t6 -0 ++------------+ +| t24 xor t6 | ++------------+ +| 0 | ++------------+ explain select t24 xor t6 from t; Query Plan =================================== @@ -10840,12 +13556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t24], [t.t6]), partitions(p0) + select t24 xor t7 from t; -t24 xor t7 -0 ++------------+ +| t24 xor t7 | ++------------+ +| 0 | ++------------+ explain select t24 xor t7 from t; Query Plan =================================== @@ -10856,12 +13576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t24], [t.t7]), partitions(p0) + select t24 xor t8 from t; -t24 xor t8 -0 ++------------+ +| t24 xor t8 | ++------------+ +| 0 | ++------------+ explain select t24 xor t8 from t; Query Plan =================================== @@ -10872,12 +13596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t24], [t.t8]), partitions(p0) + select t24 xor t9 from t; -t24 xor t9 -0 ++------------+ +| t24 xor t9 | ++------------+ +| 0 | ++------------+ explain select t24 xor t9 from t; Query Plan =================================== @@ -10888,12 +13616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t24], [t.t9]), partitions(p0) + select t24 xor t10 from t; -t24 xor t10 -0 ++-------------+ +| t24 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t10 from t; Query Plan =================================== @@ -10904,12 +13636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t24], [t.t10]), partitions(p0) + select t24 xor t11 from t; -t24 xor t11 -1 ++-------------+ +| t24 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t11 from t; Query Plan =================================== @@ -10920,12 +13656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t24], [t.t11]), partitions(p0) + select t24 xor t12 from t; -t24 xor t12 -1 ++-------------+ +| t24 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t12 from t; Query Plan =================================== @@ -10936,12 +13676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t24], [t.t12]), partitions(p0) + select t24 xor t13 from t; -t24 xor t13 -1 ++-------------+ +| t24 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t13 from t; Query Plan =================================== @@ -10955,9 +13699,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t24], [t.t13]), partitions(p0) + select t24 xor t14 from t; -t24 xor t14 -0 ++-------------+ +| t24 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t14 from t; Query Plan =================================== @@ -10968,12 +13716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t24], [t.t14]), partitions(p0) + select t24 xor t15 from t; -t24 xor t15 -0 ++-------------+ +| t24 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t15 from t; Query Plan =================================== @@ -10984,12 +13736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t24], [t.t15]), partitions(p0) + select t24 xor t16 from t; -t24 xor t16 -0 ++-------------+ +| t24 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t16 from t; Query Plan =================================== @@ -11000,12 +13756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t24], [t.t16]), partitions(p0) + select t24 xor t17 from t; -t24 xor t17 -0 ++-------------+ +| t24 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t17 from t; Query Plan =================================== @@ -11019,9 +13779,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t17]), partitions(p0) + select t24 xor t18 from t; -t24 xor t18 -0 ++-------------+ +| t24 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t18 from t; Query Plan =================================== @@ -11035,9 +13799,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t18]), partitions(p0) + select t24 xor t19 from t; -t24 xor t19 -0 ++-------------+ +| t24 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t19 from t; Query Plan =================================== @@ -11051,9 +13819,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t19]), partitions(p0) + select t24 xor t20 from t; -t24 xor t20 -0 ++-------------+ +| t24 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t20 from t; Query Plan =================================== @@ -11067,9 +13839,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t20]), partitions(p0) + select t24 xor t21 from t; -t24 xor t21 -0 ++-------------+ +| t24 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t21 from t; Query Plan =================================== @@ -11083,9 +13859,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t21]), partitions(p0) + select t24 xor t22 from t; -t24 xor t22 -0 ++-------------+ +| t24 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t22 from t; Query Plan =================================== @@ -11099,9 +13879,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t22]), partitions(p0) + select t24 xor t23 from t; -t24 xor t23 -0 ++-------------+ +| t24 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t23 from t; Query Plan =================================== @@ -11115,9 +13899,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t23]), partitions(p0) + select t24 xor t24 from t; -t24 xor t24 -0 ++-------------+ +| t24 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t24 from t; Query Plan =================================== @@ -11131,9 +13919,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t24]), partitions(p0) + select t24 xor t25 from t; -t24 xor t25 -0 ++-------------+ +| t24 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t25 from t; Query Plan =================================== @@ -11147,9 +13939,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t25]), partitions(p0) + select t24 xor t26 from t; -t24 xor t26 -0 ++-------------+ +| t24 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t26 from t; Query Plan =================================== @@ -11163,9 +13959,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t26]), partitions(p0) + select t24 xor t27 from t; -t24 xor t27 -0 ++-------------+ +| t24 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t27 from t; Query Plan =================================== @@ -11176,12 +13976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t24], [t.t27]), partitions(p0) + select t24 xor t28 from t; -t24 xor t28 -0 ++-------------+ +| t24 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t28 from t; Query Plan =================================== @@ -11195,9 +13999,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t28]), partitions(p0) + select t24 xor t29 from t; -t24 xor t29 -0 ++-------------+ +| t24 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t24 xor t29 from t; Query Plan =================================== @@ -11211,9 +14019,13 @@ Outputs & filters: 0 - output([cast(t.t24, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t24], [t.t29]), partitions(p0) + select t25 xor t1 from t; -t25 xor t1 -0 ++------------+ +| t25 xor t1 | ++------------+ +| 0 | ++------------+ explain select t25 xor t1 from t; Query Plan =================================== @@ -11224,12 +14036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t25], [t.t1]), partitions(p0) + select t25 xor t2 from t; -t25 xor t2 -0 ++------------+ +| t25 xor t2 | ++------------+ +| 0 | ++------------+ explain select t25 xor t2 from t; Query Plan =================================== @@ -11240,12 +14056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t25], [t.t2]), partitions(p0) + select t25 xor t3 from t; -t25 xor t3 -0 ++------------+ +| t25 xor t3 | ++------------+ +| 0 | ++------------+ explain select t25 xor t3 from t; Query Plan =================================== @@ -11256,12 +14076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t25], [t.t3]), partitions(p0) + select t25 xor t4 from t; -t25 xor t4 -0 ++------------+ +| t25 xor t4 | ++------------+ +| 0 | ++------------+ explain select t25 xor t4 from t; Query Plan =================================== @@ -11272,12 +14096,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t25], [t.t4]), partitions(p0) + select t25 xor t5 from t; -t25 xor t5 -0 ++------------+ +| t25 xor t5 | ++------------+ +| 0 | ++------------+ explain select t25 xor t5 from t; Query Plan =================================== @@ -11288,12 +14116,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t25], [t.t5]), partitions(p0) + select t25 xor t6 from t; -t25 xor t6 -0 ++------------+ +| t25 xor t6 | ++------------+ +| 0 | ++------------+ explain select t25 xor t6 from t; Query Plan =================================== @@ -11304,12 +14136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t25], [t.t6]), partitions(p0) + select t25 xor t7 from t; -t25 xor t7 -0 ++------------+ +| t25 xor t7 | ++------------+ +| 0 | ++------------+ explain select t25 xor t7 from t; Query Plan =================================== @@ -11320,12 +14156,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t25], [t.t7]), partitions(p0) + select t25 xor t8 from t; -t25 xor t8 -0 ++------------+ +| t25 xor t8 | ++------------+ +| 0 | ++------------+ explain select t25 xor t8 from t; Query Plan =================================== @@ -11336,12 +14176,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t25], [t.t8]), partitions(p0) + select t25 xor t9 from t; -t25 xor t9 -0 ++------------+ +| t25 xor t9 | ++------------+ +| 0 | ++------------+ explain select t25 xor t9 from t; Query Plan =================================== @@ -11352,12 +14196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t25], [t.t9]), partitions(p0) + select t25 xor t10 from t; -t25 xor t10 -0 ++-------------+ +| t25 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t10 from t; Query Plan =================================== @@ -11368,12 +14216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t25], [t.t10]), partitions(p0) + select t25 xor t11 from t; -t25 xor t11 -1 ++-------------+ +| t25 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t11 from t; Query Plan =================================== @@ -11384,12 +14236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t25], [t.t11]), partitions(p0) + select t25 xor t12 from t; -t25 xor t12 -1 ++-------------+ +| t25 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t12 from t; Query Plan =================================== @@ -11400,12 +14256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t25], [t.t12]), partitions(p0) + select t25 xor t13 from t; -t25 xor t13 -1 ++-------------+ +| t25 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t13 from t; Query Plan =================================== @@ -11419,9 +14279,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t25], [t.t13]), partitions(p0) + select t25 xor t14 from t; -t25 xor t14 -0 ++-------------+ +| t25 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t14 from t; Query Plan =================================== @@ -11432,12 +14296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t25], [t.t14]), partitions(p0) + select t25 xor t15 from t; -t25 xor t15 -0 ++-------------+ +| t25 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t15 from t; Query Plan =================================== @@ -11448,12 +14316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t25], [t.t15]), partitions(p0) + select t25 xor t16 from t; -t25 xor t16 -0 ++-------------+ +| t25 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t16 from t; Query Plan =================================== @@ -11464,12 +14336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t25], [t.t16]), partitions(p0) + select t25 xor t17 from t; -t25 xor t17 -0 ++-------------+ +| t25 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t17 from t; Query Plan =================================== @@ -11483,9 +14359,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t17]), partitions(p0) + select t25 xor t18 from t; -t25 xor t18 -0 ++-------------+ +| t25 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t18 from t; Query Plan =================================== @@ -11499,9 +14379,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t18]), partitions(p0) + select t25 xor t19 from t; -t25 xor t19 -0 ++-------------+ +| t25 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t19 from t; Query Plan =================================== @@ -11515,9 +14399,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t19]), partitions(p0) + select t25 xor t20 from t; -t25 xor t20 -0 ++-------------+ +| t25 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t20 from t; Query Plan =================================== @@ -11531,9 +14419,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t20]), partitions(p0) + select t25 xor t21 from t; -t25 xor t21 -0 ++-------------+ +| t25 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t21 from t; Query Plan =================================== @@ -11547,9 +14439,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t21]), partitions(p0) + select t25 xor t22 from t; -t25 xor t22 -0 ++-------------+ +| t25 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t22 from t; Query Plan =================================== @@ -11563,9 +14459,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t22]), partitions(p0) + select t25 xor t23 from t; -t25 xor t23 -0 ++-------------+ +| t25 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t23 from t; Query Plan =================================== @@ -11579,9 +14479,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t23]), partitions(p0) + select t25 xor t24 from t; -t25 xor t24 -0 ++-------------+ +| t25 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t24 from t; Query Plan =================================== @@ -11595,9 +14499,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t24]), partitions(p0) + select t25 xor t25 from t; -t25 xor t25 -0 ++-------------+ +| t25 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t25 from t; Query Plan =================================== @@ -11611,9 +14519,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t25]), partitions(p0) + select t25 xor t26 from t; -t25 xor t26 -0 ++-------------+ +| t25 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t26 from t; Query Plan =================================== @@ -11627,9 +14539,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t26]), partitions(p0) + select t25 xor t27 from t; -t25 xor t27 -0 ++-------------+ +| t25 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t27 from t; Query Plan =================================== @@ -11640,12 +14556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t25], [t.t27]), partitions(p0) + select t25 xor t28 from t; -t25 xor t28 -0 ++-------------+ +| t25 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t28 from t; Query Plan =================================== @@ -11659,9 +14579,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t28]), partitions(p0) + select t25 xor t29 from t; -t25 xor t29 -0 ++-------------+ +| t25 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t25 xor t29 from t; Query Plan =================================== @@ -11675,9 +14599,13 @@ Outputs & filters: 0 - output([cast(t.t25, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t25], [t.t29]), partitions(p0) + select t26 xor t1 from t; -t26 xor t1 -0 ++------------+ +| t26 xor t1 | ++------------+ +| 0 | ++------------+ explain select t26 xor t1 from t; Query Plan =================================== @@ -11688,12 +14616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t26], [t.t1]), partitions(p0) + select t26 xor t2 from t; -t26 xor t2 -0 ++------------+ +| t26 xor t2 | ++------------+ +| 0 | ++------------+ explain select t26 xor t2 from t; Query Plan =================================== @@ -11704,12 +14636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t26], [t.t2]), partitions(p0) + select t26 xor t3 from t; -t26 xor t3 -0 ++------------+ +| t26 xor t3 | ++------------+ +| 0 | ++------------+ explain select t26 xor t3 from t; Query Plan =================================== @@ -11720,12 +14656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t26], [t.t3]), partitions(p0) + select t26 xor t4 from t; -t26 xor t4 -0 ++------------+ +| t26 xor t4 | ++------------+ +| 0 | ++------------+ explain select t26 xor t4 from t; Query Plan =================================== @@ -11736,12 +14676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t26], [t.t4]), partitions(p0) + select t26 xor t5 from t; -t26 xor t5 -0 ++------------+ +| t26 xor t5 | ++------------+ +| 0 | ++------------+ explain select t26 xor t5 from t; Query Plan =================================== @@ -11752,12 +14696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t26], [t.t5]), partitions(p0) + select t26 xor t6 from t; -t26 xor t6 -0 ++------------+ +| t26 xor t6 | ++------------+ +| 0 | ++------------+ explain select t26 xor t6 from t; Query Plan =================================== @@ -11768,12 +14716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t26], [t.t6]), partitions(p0) + select t26 xor t7 from t; -t26 xor t7 -0 ++------------+ +| t26 xor t7 | ++------------+ +| 0 | ++------------+ explain select t26 xor t7 from t; Query Plan =================================== @@ -11784,12 +14736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t26], [t.t7]), partitions(p0) + select t26 xor t8 from t; -t26 xor t8 -0 ++------------+ +| t26 xor t8 | ++------------+ +| 0 | ++------------+ explain select t26 xor t8 from t; Query Plan =================================== @@ -11800,12 +14756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t26], [t.t8]), partitions(p0) + select t26 xor t9 from t; -t26 xor t9 -0 ++------------+ +| t26 xor t9 | ++------------+ +| 0 | ++------------+ explain select t26 xor t9 from t; Query Plan =================================== @@ -11816,12 +14776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t26], [t.t9]), partitions(p0) + select t26 xor t10 from t; -t26 xor t10 -0 ++-------------+ +| t26 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t10 from t; Query Plan =================================== @@ -11832,12 +14796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t26], [t.t10]), partitions(p0) + select t26 xor t11 from t; -t26 xor t11 -1 ++-------------+ +| t26 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t11 from t; Query Plan =================================== @@ -11848,12 +14816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t26], [t.t11]), partitions(p0) + select t26 xor t12 from t; -t26 xor t12 -1 ++-------------+ +| t26 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t12 from t; Query Plan =================================== @@ -11864,12 +14836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t26], [t.t12]), partitions(p0) + select t26 xor t13 from t; -t26 xor t13 -1 ++-------------+ +| t26 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t13 from t; Query Plan =================================== @@ -11883,9 +14859,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t26], [t.t13]), partitions(p0) + select t26 xor t14 from t; -t26 xor t14 -0 ++-------------+ +| t26 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t14 from t; Query Plan =================================== @@ -11896,12 +14876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t26], [t.t14]), partitions(p0) + select t26 xor t15 from t; -t26 xor t15 -0 ++-------------+ +| t26 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t15 from t; Query Plan =================================== @@ -11912,12 +14896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t26], [t.t15]), partitions(p0) + select t26 xor t16 from t; -t26 xor t16 -0 ++-------------+ +| t26 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t16 from t; Query Plan =================================== @@ -11928,12 +14916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t26], [t.t16]), partitions(p0) + select t26 xor t17 from t; -t26 xor t17 -0 ++-------------+ +| t26 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t17 from t; Query Plan =================================== @@ -11947,9 +14939,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t17]), partitions(p0) + select t26 xor t18 from t; -t26 xor t18 -0 ++-------------+ +| t26 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t18 from t; Query Plan =================================== @@ -11963,9 +14959,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t18]), partitions(p0) + select t26 xor t19 from t; -t26 xor t19 -0 ++-------------+ +| t26 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t19 from t; Query Plan =================================== @@ -11979,9 +14979,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t19]), partitions(p0) + select t26 xor t20 from t; -t26 xor t20 -0 ++-------------+ +| t26 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t20 from t; Query Plan =================================== @@ -11995,9 +14999,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t20]), partitions(p0) + select t26 xor t21 from t; -t26 xor t21 -0 ++-------------+ +| t26 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t21 from t; Query Plan =================================== @@ -12011,9 +15019,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t21]), partitions(p0) + select t26 xor t22 from t; -t26 xor t22 -0 ++-------------+ +| t26 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t22 from t; Query Plan =================================== @@ -12027,9 +15039,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t22]), partitions(p0) + select t26 xor t23 from t; -t26 xor t23 -0 ++-------------+ +| t26 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t23 from t; Query Plan =================================== @@ -12043,9 +15059,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t23]), partitions(p0) + select t26 xor t24 from t; -t26 xor t24 -0 ++-------------+ +| t26 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t24 from t; Query Plan =================================== @@ -12059,9 +15079,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t24]), partitions(p0) + select t26 xor t25 from t; -t26 xor t25 -0 ++-------------+ +| t26 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t25 from t; Query Plan =================================== @@ -12075,9 +15099,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t25]), partitions(p0) + select t26 xor t26 from t; -t26 xor t26 -0 ++-------------+ +| t26 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t26 from t; Query Plan =================================== @@ -12091,9 +15119,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t26]), partitions(p0) + select t26 xor t27 from t; -t26 xor t27 -0 ++-------------+ +| t26 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t27 from t; Query Plan =================================== @@ -12104,12 +15136,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t26], [t.t27]), partitions(p0) + select t26 xor t28 from t; -t26 xor t28 -0 ++-------------+ +| t26 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t28 from t; Query Plan =================================== @@ -12123,9 +15159,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t28]), partitions(p0) + select t26 xor t29 from t; -t26 xor t29 -0 ++-------------+ +| t26 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t26 xor t29 from t; Query Plan =================================== @@ -12139,9 +15179,13 @@ Outputs & filters: 0 - output([cast(t.t26, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t26], [t.t29]), partitions(p0) + select t27 xor t1 from t; -t27 xor t1 -0 ++------------+ +| t27 xor t1 | ++------------+ +| 0 | ++------------+ explain select t27 xor t1 from t; Query Plan =================================== @@ -12152,12 +15196,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t1]), filter(nil), access([t.t27], [t.t1]), partitions(p0) + select t27 xor t2 from t; -t27 xor t2 -0 ++------------+ +| t27 xor t2 | ++------------+ +| 0 | ++------------+ explain select t27 xor t2 from t; Query Plan =================================== @@ -12168,12 +15216,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t2]), filter(nil), access([t.t27], [t.t2]), partitions(p0) + select t27 xor t3 from t; -t27 xor t3 -0 ++------------+ +| t27 xor t3 | ++------------+ +| 0 | ++------------+ explain select t27 xor t3 from t; Query Plan =================================== @@ -12184,12 +15236,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t3]), filter(nil), access([t.t27], [t.t3]), partitions(p0) + select t27 xor t4 from t; -t27 xor t4 -0 ++------------+ +| t27 xor t4 | ++------------+ +| 0 | ++------------+ explain select t27 xor t4 from t; Query Plan =================================== @@ -12200,12 +15256,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t4]), filter(nil), access([t.t27], [t.t4]), partitions(p0) + select t27 xor t5 from t; -t27 xor t5 -0 ++------------+ +| t27 xor t5 | ++------------+ +| 0 | ++------------+ explain select t27 xor t5 from t; Query Plan =================================== @@ -12216,12 +15276,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t5]), filter(nil), access([t.t27], [t.t5]), partitions(p0) + select t27 xor t6 from t; -t27 xor t6 -0 ++------------+ +| t27 xor t6 | ++------------+ +| 0 | ++------------+ explain select t27 xor t6 from t; Query Plan =================================== @@ -12232,12 +15296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t6]), filter(nil), access([t.t27], [t.t6]), partitions(p0) + select t27 xor t7 from t; -t27 xor t7 -0 ++------------+ +| t27 xor t7 | ++------------+ +| 0 | ++------------+ explain select t27 xor t7 from t; Query Plan =================================== @@ -12248,12 +15316,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t7]), filter(nil), access([t.t27], [t.t7]), partitions(p0) + select t27 xor t8 from t; -t27 xor t8 -0 ++------------+ +| t27 xor t8 | ++------------+ +| 0 | ++------------+ explain select t27 xor t8 from t; Query Plan =================================== @@ -12264,12 +15336,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t8]), filter(nil), access([t.t27], [t.t8]), partitions(p0) + select t27 xor t9 from t; -t27 xor t9 -0 ++------------+ +| t27 xor t9 | ++------------+ +| 0 | ++------------+ explain select t27 xor t9 from t; Query Plan =================================== @@ -12280,12 +15356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t9]), filter(nil), access([t.t27], [t.t9]), partitions(p0) + select t27 xor t10 from t; -t27 xor t10 -0 ++-------------+ +| t27 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t10 from t; Query Plan =================================== @@ -12296,12 +15376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t10]), filter(nil), access([t.t27], [t.t10]), partitions(p0) + select t27 xor t11 from t; -t27 xor t11 -1 ++-------------+ +| t27 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t11 from t; Query Plan =================================== @@ -12312,12 +15396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t11]), filter(nil), access([t.t27], [t.t11]), partitions(p0) + select t27 xor t12 from t; -t27 xor t12 -1 ++-------------+ +| t27 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t12 from t; Query Plan =================================== @@ -12328,12 +15416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t12]), filter(nil), access([t.t27], [t.t12]), partitions(p0) + select t27 xor t13 from t; -t27 xor t13 -1 ++-------------+ +| t27 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t13 from t; Query Plan =================================== @@ -12344,12 +15436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), + 0 - output([t.t27 XOR t.t13]), filter(nil), access([t.t27], [t.t13]), partitions(p0) + select t27 xor t14 from t; -t27 xor t14 -0 ++-------------+ +| t27 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t14 from t; Query Plan =================================== @@ -12360,12 +15456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t14]), filter(nil), access([t.t27], [t.t14]), partitions(p0) + select t27 xor t15 from t; -t27 xor t15 -0 ++-------------+ +| t27 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t15 from t; Query Plan =================================== @@ -12376,12 +15476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t15]), filter(nil), access([t.t27], [t.t15]), partitions(p0) + select t27 xor t16 from t; -t27 xor t16 -0 ++-------------+ +| t27 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t16 from t; Query Plan =================================== @@ -12392,12 +15496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t16]), filter(nil), access([t.t27], [t.t16]), partitions(p0) + select t27 xor t17 from t; -t27 xor t17 -0 ++-------------+ +| t27 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t17 from t; Query Plan =================================== @@ -12408,12 +15516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t17]), partitions(p0) + select t27 xor t18 from t; -t27 xor t18 -0 ++-------------+ +| t27 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t18 from t; Query Plan =================================== @@ -12424,12 +15536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t18]), partitions(p0) + select t27 xor t19 from t; -t27 xor t19 -0 ++-------------+ +| t27 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t19 from t; Query Plan =================================== @@ -12440,12 +15556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t19]), partitions(p0) + select t27 xor t20 from t; -t27 xor t20 -0 ++-------------+ +| t27 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t20 from t; Query Plan =================================== @@ -12456,12 +15576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t20]), partitions(p0) + select t27 xor t21 from t; -t27 xor t21 -0 ++-------------+ +| t27 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t21 from t; Query Plan =================================== @@ -12472,12 +15596,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t21]), partitions(p0) + select t27 xor t22 from t; -t27 xor t22 -0 ++-------------+ +| t27 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t22 from t; Query Plan =================================== @@ -12488,12 +15616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t22]), partitions(p0) + select t27 xor t23 from t; -t27 xor t23 -0 ++-------------+ +| t27 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t23 from t; Query Plan =================================== @@ -12504,12 +15636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t23]), partitions(p0) + select t27 xor t24 from t; -t27 xor t24 -0 ++-------------+ +| t27 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t24 from t; Query Plan =================================== @@ -12520,12 +15656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t24]), partitions(p0) + select t27 xor t25 from t; -t27 xor t25 -0 ++-------------+ +| t27 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t25 from t; Query Plan =================================== @@ -12536,12 +15676,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t25]), partitions(p0) + select t27 xor t26 from t; -t27 xor t26 -0 ++-------------+ +| t27 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t26 from t; Query Plan =================================== @@ -12552,12 +15696,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t26]), partitions(p0) + select t27 xor t27 from t; -t27 xor t27 -0 ++-------------+ +| t27 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t27 from t; Query Plan =================================== @@ -12568,12 +15716,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR t.t27]), filter(nil), access([t.t27]), partitions(p0) + select t27 xor t28 from t; -t27 xor t28 -0 ++-------------+ +| t27 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t28 from t; Query Plan =================================== @@ -12584,12 +15736,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t28]), partitions(p0) + select t27 xor t29 from t; -t27 xor t29 -0 ++-------------+ +| t27 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t27 xor t29 from t; Query Plan =================================== @@ -12600,12 +15756,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t27, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), + 0 - output([t.t27 XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t27], [t.t29]), partitions(p0) + select t28 xor t1 from t; -t28 xor t1 -0 ++------------+ +| t28 xor t1 | ++------------+ +| 0 | ++------------+ explain select t28 xor t1 from t; Query Plan =================================== @@ -12616,12 +15776,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t28], [t.t1]), partitions(p0) + select t28 xor t2 from t; -t28 xor t2 -0 ++------------+ +| t28 xor t2 | ++------------+ +| 0 | ++------------+ explain select t28 xor t2 from t; Query Plan =================================== @@ -12632,12 +15796,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t28], [t.t2]), partitions(p0) + select t28 xor t3 from t; -t28 xor t3 -0 ++------------+ +| t28 xor t3 | ++------------+ +| 0 | ++------------+ explain select t28 xor t3 from t; Query Plan =================================== @@ -12648,12 +15816,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t28], [t.t3]), partitions(p0) + select t28 xor t4 from t; -t28 xor t4 -0 ++------------+ +| t28 xor t4 | ++------------+ +| 0 | ++------------+ explain select t28 xor t4 from t; Query Plan =================================== @@ -12664,12 +15836,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t28], [t.t4]), partitions(p0) + select t28 xor t5 from t; -t28 xor t5 -0 ++------------+ +| t28 xor t5 | ++------------+ +| 0 | ++------------+ explain select t28 xor t5 from t; Query Plan =================================== @@ -12680,12 +15856,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t28], [t.t5]), partitions(p0) + select t28 xor t6 from t; -t28 xor t6 -0 ++------------+ +| t28 xor t6 | ++------------+ +| 0 | ++------------+ explain select t28 xor t6 from t; Query Plan =================================== @@ -12696,12 +15876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t28], [t.t6]), partitions(p0) + select t28 xor t7 from t; -t28 xor t7 -0 ++------------+ +| t28 xor t7 | ++------------+ +| 0 | ++------------+ explain select t28 xor t7 from t; Query Plan =================================== @@ -12712,12 +15896,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t28], [t.t7]), partitions(p0) + select t28 xor t8 from t; -t28 xor t8 -0 ++------------+ +| t28 xor t8 | ++------------+ +| 0 | ++------------+ explain select t28 xor t8 from t; Query Plan =================================== @@ -12728,12 +15916,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t28], [t.t8]), partitions(p0) + select t28 xor t9 from t; -t28 xor t9 -0 ++------------+ +| t28 xor t9 | ++------------+ +| 0 | ++------------+ explain select t28 xor t9 from t; Query Plan =================================== @@ -12744,12 +15936,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t28], [t.t9]), partitions(p0) + select t28 xor t10 from t; -t28 xor t10 -0 ++-------------+ +| t28 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t10 from t; Query Plan =================================== @@ -12760,12 +15956,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t28], [t.t10]), partitions(p0) + select t28 xor t11 from t; -t28 xor t11 -1 ++-------------+ +| t28 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t11 from t; Query Plan =================================== @@ -12776,12 +15976,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t28], [t.t11]), partitions(p0) + select t28 xor t12 from t; -t28 xor t12 -1 ++-------------+ +| t28 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t12 from t; Query Plan =================================== @@ -12792,12 +15996,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t28], [t.t12]), partitions(p0) + select t28 xor t13 from t; -t28 xor t13 -1 ++-------------+ +| t28 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t13 from t; Query Plan =================================== @@ -12811,9 +16019,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t28], [t.t13]), partitions(p0) + select t28 xor t14 from t; -t28 xor t14 -0 ++-------------+ +| t28 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t14 from t; Query Plan =================================== @@ -12824,12 +16036,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t28], [t.t14]), partitions(p0) + select t28 xor t15 from t; -t28 xor t15 -0 ++-------------+ +| t28 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t15 from t; Query Plan =================================== @@ -12840,12 +16056,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t28], [t.t15]), partitions(p0) + select t28 xor t16 from t; -t28 xor t16 -0 ++-------------+ +| t28 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t16 from t; Query Plan =================================== @@ -12856,12 +16076,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t28], [t.t16]), partitions(p0) + select t28 xor t17 from t; -t28 xor t17 -0 ++-------------+ +| t28 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t17 from t; Query Plan =================================== @@ -12875,9 +16099,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t17]), partitions(p0) + select t28 xor t18 from t; -t28 xor t18 -0 ++-------------+ +| t28 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t18 from t; Query Plan =================================== @@ -12891,9 +16119,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t18]), partitions(p0) + select t28 xor t19 from t; -t28 xor t19 -0 ++-------------+ +| t28 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t19 from t; Query Plan =================================== @@ -12907,9 +16139,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t19]), partitions(p0) + select t28 xor t20 from t; -t28 xor t20 -0 ++-------------+ +| t28 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t20 from t; Query Plan =================================== @@ -12923,9 +16159,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t20]), partitions(p0) + select t28 xor t21 from t; -t28 xor t21 -0 ++-------------+ +| t28 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t21 from t; Query Plan =================================== @@ -12939,9 +16179,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t21]), partitions(p0) + select t28 xor t22 from t; -t28 xor t22 -0 ++-------------+ +| t28 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t22 from t; Query Plan =================================== @@ -12955,9 +16199,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t22]), partitions(p0) + select t28 xor t23 from t; -t28 xor t23 -0 ++-------------+ +| t28 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t23 from t; Query Plan =================================== @@ -12971,9 +16219,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t23]), partitions(p0) + select t28 xor t24 from t; -t28 xor t24 -0 ++-------------+ +| t28 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t24 from t; Query Plan =================================== @@ -12987,9 +16239,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t24]), partitions(p0) + select t28 xor t25 from t; -t28 xor t25 -0 ++-------------+ +| t28 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t25 from t; Query Plan =================================== @@ -13003,9 +16259,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t25]), partitions(p0) + select t28 xor t26 from t; -t28 xor t26 -0 ++-------------+ +| t28 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t26 from t; Query Plan =================================== @@ -13019,9 +16279,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t26]), partitions(p0) + select t28 xor t27 from t; -t28 xor t27 -0 ++-------------+ +| t28 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t27 from t; Query Plan =================================== @@ -13032,12 +16296,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t28], [t.t27]), partitions(p0) + select t28 xor t28 from t; -t28 xor t28 -0 ++-------------+ +| t28 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t28 from t; Query Plan =================================== @@ -13051,9 +16319,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t28]), partitions(p0) + select t28 xor t29 from t; -t28 xor t29 -0 ++-------------+ +| t28 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t28 xor t29 from t; Query Plan =================================== @@ -13067,9 +16339,13 @@ Outputs & filters: 0 - output([cast(t.t28, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t28], [t.t29]), partitions(p0) + select t29 xor t1 from t; -t29 xor t1 -0 ++------------+ +| t29 xor t1 | ++------------+ +| 0 | ++------------+ explain select t29 xor t1 from t; Query Plan =================================== @@ -13080,12 +16356,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t1, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t1]), filter(nil), access([t.t29], [t.t1]), partitions(p0) + select t29 xor t2 from t; -t29 xor t2 -0 ++------------+ +| t29 xor t2 | ++------------+ +| 0 | ++------------+ explain select t29 xor t2 from t; Query Plan =================================== @@ -13096,12 +16376,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t2, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t2]), filter(nil), access([t.t29], [t.t2]), partitions(p0) + select t29 xor t3 from t; -t29 xor t3 -0 ++------------+ +| t29 xor t3 | ++------------+ +| 0 | ++------------+ explain select t29 xor t3 from t; Query Plan =================================== @@ -13112,12 +16396,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t3, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t3]), filter(nil), access([t.t29], [t.t3]), partitions(p0) + select t29 xor t4 from t; -t29 xor t4 -0 ++------------+ +| t29 xor t4 | ++------------+ +| 0 | ++------------+ explain select t29 xor t4 from t; Query Plan =================================== @@ -13128,12 +16416,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t4, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t4]), filter(nil), access([t.t29], [t.t4]), partitions(p0) + select t29 xor t5 from t; -t29 xor t5 -0 ++------------+ +| t29 xor t5 | ++------------+ +| 0 | ++------------+ explain select t29 xor t5 from t; Query Plan =================================== @@ -13144,12 +16436,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t5, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t5]), filter(nil), access([t.t29], [t.t5]), partitions(p0) + select t29 xor t6 from t; -t29 xor t6 -0 ++------------+ +| t29 xor t6 | ++------------+ +| 0 | ++------------+ explain select t29 xor t6 from t; Query Plan =================================== @@ -13160,12 +16456,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t6, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t6]), filter(nil), access([t.t29], [t.t6]), partitions(p0) + select t29 xor t7 from t; -t29 xor t7 -0 ++------------+ +| t29 xor t7 | ++------------+ +| 0 | ++------------+ explain select t29 xor t7 from t; Query Plan =================================== @@ -13176,12 +16476,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t7, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t7]), filter(nil), access([t.t29], [t.t7]), partitions(p0) + select t29 xor t8 from t; -t29 xor t8 -0 ++------------+ +| t29 xor t8 | ++------------+ +| 0 | ++------------+ explain select t29 xor t8 from t; Query Plan =================================== @@ -13192,12 +16496,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t8, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t8]), filter(nil), access([t.t29], [t.t8]), partitions(p0) + select t29 xor t9 from t; -t29 xor t9 -0 ++------------+ +| t29 xor t9 | ++------------+ +| 0 | ++------------+ explain select t29 xor t9 from t; Query Plan =================================== @@ -13208,12 +16516,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t9, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t9]), filter(nil), access([t.t29], [t.t9]), partitions(p0) + select t29 xor t10 from t; -t29 xor t10 -0 ++-------------+ +| t29 xor t10 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t10 from t; Query Plan =================================== @@ -13224,12 +16536,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t10, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t10]), filter(nil), access([t.t29], [t.t10]), partitions(p0) + select t29 xor t11 from t; -t29 xor t11 -1 ++-------------+ +| t29 xor t11 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t11 from t; Query Plan =================================== @@ -13240,12 +16556,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t11, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t11]), filter(nil), access([t.t29], [t.t11]), partitions(p0) + select t29 xor t12 from t; -t29 xor t12 -1 ++-------------+ +| t29 xor t12 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t12 from t; Query Plan =================================== @@ -13256,12 +16576,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t12, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t12]), filter(nil), access([t.t29], [t.t12]), partitions(p0) + select t29 xor t13 from t; -t29 xor t13 -1 ++-------------+ +| t29 xor t13 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t13 from t; Query Plan =================================== @@ -13275,9 +16599,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t13]), filter(nil), access([t.t29], [t.t13]), partitions(p0) + select t29 xor t14 from t; -t29 xor t14 -0 ++-------------+ +| t29 xor t14 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t14 from t; Query Plan =================================== @@ -13288,12 +16616,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t14, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t14]), filter(nil), access([t.t29], [t.t14]), partitions(p0) + select t29 xor t15 from t; -t29 xor t15 -0 ++-------------+ +| t29 xor t15 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t15 from t; Query Plan =================================== @@ -13304,12 +16636,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t15, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t15]), filter(nil), access([t.t29], [t.t15]), partitions(p0) + select t29 xor t16 from t; -t29 xor t16 -0 ++-------------+ +| t29 xor t16 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t16 from t; Query Plan =================================== @@ -13320,12 +16656,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t16, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t16]), filter(nil), access([t.t29], [t.t16]), partitions(p0) + select t29 xor t17 from t; -t29 xor t17 -0 ++-------------+ +| t29 xor t17 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t17 from t; Query Plan =================================== @@ -13339,9 +16679,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t17, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t17]), partitions(p0) + select t29 xor t18 from t; -t29 xor t18 -0 ++-------------+ +| t29 xor t18 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t18 from t; Query Plan =================================== @@ -13355,9 +16699,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t18, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t18]), partitions(p0) + select t29 xor t19 from t; -t29 xor t19 -0 ++-------------+ +| t29 xor t19 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t19 from t; Query Plan =================================== @@ -13371,9 +16719,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t19, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t19]), partitions(p0) + select t29 xor t20 from t; -t29 xor t20 -0 ++-------------+ +| t29 xor t20 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t20 from t; Query Plan =================================== @@ -13387,9 +16739,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t20, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t20]), partitions(p0) + select t29 xor t21 from t; -t29 xor t21 -0 ++-------------+ +| t29 xor t21 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t21 from t; Query Plan =================================== @@ -13403,9 +16759,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t21, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t21]), partitions(p0) + select t29 xor t22 from t; -t29 xor t22 -0 ++-------------+ +| t29 xor t22 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t22 from t; Query Plan =================================== @@ -13419,9 +16779,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t22, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t22]), partitions(p0) + select t29 xor t23 from t; -t29 xor t23 -0 ++-------------+ +| t29 xor t23 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t23 from t; Query Plan =================================== @@ -13435,9 +16799,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t23, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t23]), partitions(p0) + select t29 xor t24 from t; -t29 xor t24 -0 ++-------------+ +| t29 xor t24 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t24 from t; Query Plan =================================== @@ -13451,9 +16819,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t24, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t24]), partitions(p0) + select t29 xor t25 from t; -t29 xor t25 -0 ++-------------+ +| t29 xor t25 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t25 from t; Query Plan =================================== @@ -13467,9 +16839,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t25, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t25]), partitions(p0) + select t29 xor t26 from t; -t29 xor t26 -0 ++-------------+ +| t29 xor t26 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t26 from t; Query Plan =================================== @@ -13483,9 +16859,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t26, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t26]), partitions(p0) + select t29 xor t27 from t; -t29 xor t27 -0 ++-------------+ +| t29 xor t27 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t27 from t; Query Plan =================================== @@ -13496,12 +16876,16 @@ Query Plan Outputs & filters: ------------------------------------- - 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t27, DOUBLE(-1, -1))]), filter(nil), + 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR t.t27]), filter(nil), access([t.t29], [t.t27]), partitions(p0) + select t29 xor t28 from t; -t29 xor t28 -0 ++-------------+ +| t29 xor t28 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t28 from t; Query Plan =================================== @@ -13515,9 +16899,13 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t28, DOUBLE(-1, -1))]), filter(nil), access([t.t29], [t.t28]), partitions(p0) + select t29 xor t29 from t; -t29 xor t29 -0 ++-------------+ +| t29 xor t29 | ++-------------+ +| 0 | ++-------------+ explain select t29 xor t29 from t; Query Plan =================================== @@ -13531,5 +16919,6 @@ Outputs & filters: 0 - output([cast(t.t29, DOUBLE(-1, -1)) XOR cast(t.t29, DOUBLE(-1, -1))]), filter(nil), access([t.t29]), partitions(p0) + + drop table t; -connection conn_admin; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/hash_distinct.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/hash_distinct.result new file mode 100644 index 000000000..afd7245d1 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/hash_distinct.result @@ -0,0 +1,301 @@ +drop table t1; +drop table t2; +drop table t111_var; +create table t1(c1 int,c2 int,c3 int); +create table t2(c1 int,c2 int,c3 int); +insert into t1 values(1,2,3); +insert into t1 values(1,2,3); +insert into t1 values(0,2,3); +insert into t1 values(2,2,3); +insert into t1 values(3,2,3); +insert into t2 values(2,2,3); +insert into t2 values(2,0,3); +insert into t2 values(0,2,3); +insert into t2 values(1,2,3); +insert into t2 values(null,2,3); +insert into t2 values(1,2,3); +insert into t2 values(0,2,1); +insert into t2 values(2,2,3); +commit; +create table t111_var(c0 bigint,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000), c5 varchar(4000),c6 varchar(4000), c7 longtext); +insert into t111_var values(1,repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('abcdefghij',4000)); +insert into t111_var select c0+1,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+10,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+100,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+1000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+10000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+100000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+1000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+10000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+100000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var values(null,null,null,null,null,null,null,null); +insert into t111_var select * from t111_var; +commit; +result_format: 4 +explain_protocol: 1 +set @@ob_enable_plan_cache = 0; + +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct c1,c2 from t2; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH DISTINCT| | +|1 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + distinct([t2.c1], [t2.c2]) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ USE_HASH_AGGREGATION */distinct c1,c2 from t2; ++------+------+ +| c1 | c2 | ++------+------+ +| 2 | 2 | +| 2 | 0 | +| 0 | 2 | +| 1 | 2 | +| NULL | 2 | ++------+------+ +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct c2,c1 from t2; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH DISTINCT| | +|1 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2], [t2.c1]), filter(nil), + distinct([t2.c2], [t2.c1]) + 1 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+ USE_HASH_AGGREGATION */distinct c2,c1 from t2; ++------+------+ +| c2 | c1 | ++------+------+ +| 2 | 2 | +| 0 | 2 | +| 2 | 0 | +| 2 | 1 | +| 2 | NULL | ++------+------+ +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct c2,c1,c1+c2 from t2; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH DISTINCT| | +|1 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2], [t2.c1], [t2.c1 + t2.c2]), filter(nil), + distinct([t2.c2], [t2.c1], [t2.c1 + t2.c2]) + 1 - output([t2.c2], [t2.c1], [t2.c1 + t2.c2]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+ USE_HASH_AGGREGATION */distinct c2,c1,c1+c2 from t2; ++------+------+-------+ +| c2 | c1 | c1+c2 | ++------+------+-------+ +| 2 | 2 | 4 | +| 0 | 2 | 2 | +| 2 | 0 | 2 | +| 2 | 1 | 3 | +| 2 | NULL | NULL | ++------+------+-------+ +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct c1+c2,abs(c1) from t2; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH DISTINCT| | +|1 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1 + t2.c2], [abs(cast(t2.c1, BIGINT(-1, 0)))]), filter(nil), + distinct([t2.c1 + t2.c2], [abs(cast(t2.c1, BIGINT(-1, 0)))]) + 1 - output([t2.c1 + t2.c2], [abs(cast(t2.c1, BIGINT(-1, 0)))]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ USE_HASH_AGGREGATION */distinct c1+c2,abs(c1) from t2; ++-------+---------+ +| c1+c2 | abs(c1) | ++-------+---------+ +| 4 | 2 | +| 2 | 2 | +| 2 | 0 | +| 3 | 1 | +| NULL | NULL | ++-------+---------+ +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct c1+c2 from t2; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH DISTINCT| | +|1 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1 + t2.c2]), filter(nil), + distinct([t2.c1 + t2.c2]) + 1 - output([t2.c1 + t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ USE_HASH_AGGREGATION */distinct c1+c2 from t2; ++-------+ +| c1+c2 | ++-------+ +| 4 | +| 2 | +| 3 | +| NULL | ++-------+ +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct c2,c1,c3 from t2; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH DISTINCT| | +|1 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + distinct([t2.c2], [t2.c1], [t2.c3]) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +select /*+ USE_HASH_AGGREGATION */distinct c2,c1,c3 from t2; ++------+------+------+ +| c2 | c1 | c3 | ++------+------+------+ +| 2 | 2 | 3 | +| 0 | 2 | 3 | +| 2 | 0 | 3 | +| 2 | 1 | 3 | +| 2 | NULL | 3 | +| 2 | 0 | 1 | ++------+------+------+ +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct 1,2,3,5,'ab' from t2; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t2 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([1], [2], [3], [5], ['ab']), filter(nil), + access([t2.__pk_increment]), partitions(p0), + limit(1), offset(nil) + +select /*+ USE_HASH_AGGREGATION */distinct 1,2,3,5,'ab' from t2; ++---+---+---+---+----+ +| 1 | 2 | 3 | 5 | ab | ++---+---+---+---+----+ +| 1 | 2 | 3 | 5 | ab | ++---+---+---+---+----+ +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct 1,c2,2,3,c1,5,'ab' from t2; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH DISTINCT| | +|1 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([1], [t2.c2], [2], [3], [t2.c1], [5], ['ab']), filter(nil), + distinct([t2.c2], [t2.c1]) + 1 - output([t2.c2], [t2.c1]), filter(nil), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+ USE_HASH_AGGREGATION */distinct 1,c2,2,3,c1,5,'ab' from t2; ++---+------+---+---+------+---+----+ +| 1 | c2 | 2 | 3 | c1 | 5 | ab | ++---+------+---+---+------+---+----+ +| 1 | 2 | 2 | 3 | 2 | 5 | ab | +| 1 | 0 | 2 | 3 | 2 | 5 | ab | +| 1 | 2 | 2 | 3 | 0 | 5 | ab | +| 1 | 2 | 2 | 3 | 1 | 5 | ab | +| 1 | 2 | 2 | 3 | NULL | 5 | ab | ++---+------+---+---+------+---+----+ +EXPLAIN BASIC select /*+ USE_HASH_AGGREGATION */distinct 1,c2,2,3,c1,5,'ab' from t2 where c2=0; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH DISTINCT| | +|1 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([1], [t2.c2], [2], [3], [t2.c1], [5], ['ab']), filter(nil), + distinct([t2.c1]) + 1 - output([t2.c2], [t2.c1]), filter([t2.c2 = 0]), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+ USE_HASH_AGGREGATION */distinct 1,c2,2,3,c1,5,'ab' from t2 where c2=0; ++---+------+---+---+------+---+----+ +| 1 | c2 | 2 | 3 | c1 | 5 | ab | ++---+------+---+---+------+---+----+ +| 1 | 0 | 2 | 3 | 2 | 5 | ab | ++---+------+---+---+------+---+----+ + +## dump +set ob_query_timeout=30000000; +EXPLAIN BASIC select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) +from (select /*+ USE_HASH_AGGREGATION */ distinct * from t111_var) order by c1 limit 1; +Query Plan +============================== +|ID|OPERATOR |NAME | +------------------------------ +|0 |LIMIT | | +|1 | SCALAR GROUP BY| | +|2 | SUBPLAN SCAN | | +|3 | HASH DISTINCT| | +|4 | TABLE SCAN |t111_var| +============================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]), filter(nil), limit(1), offset(nil) + 1 - output([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]) + 2 - output([.c0], [.c2], [.c3], [.c4], [.c5], [.c6], [.c7], [length(.c1)]), filter(nil), + access([.c0], [.c1], [.c2], [.c3], [.c4], [.c5], [.c6], [.c7]) + 3 - output([t111_var.c0], [t111_var.c1], [t111_var.c2], [t111_var.c3], [t111_var.c4], [t111_var.c5], [t111_var.c6], [t111_var.c7]), filter(nil), + distinct([t111_var.c0], [t111_var.c1], [t111_var.c2], [t111_var.c3], [t111_var.c4], [t111_var.c5], [t111_var.c6], [t111_var.c7]) + 4 - output([t111_var.c0], [t111_var.c1], [t111_var.c2], [t111_var.c3], [t111_var.c4], [t111_var.c5], [t111_var.c6], [t111_var.c7]), filter(nil), + access([t111_var.c0], [t111_var.c1], [t111_var.c2], [t111_var.c3], [t111_var.c4], [t111_var.c5], [t111_var.c6], [t111_var.c7]), partitions(p0) + +select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) +from (select /*+ USE_HASH_AGGREGATION */ distinct * from t111_var) order by c1 limit 1; ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ +| sum(c0) | sum(length(c1)) | count(c2) | count(c3) | count(c4) | count(c5) | count(c6) | count(c7) | ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ +| 28444444928 | 2048000 | 512 | 512 | 512 | 512 | 512 | 512 | ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ + + +drop table t1; +drop table t2; +drop table t111_var; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/hash_set.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/hash_set.result new file mode 100644 index 000000000..3e2c373f2 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/hash_set.result @@ -0,0 +1,430 @@ +drop tenant dump_tenant force; +drop resource pool new_pool1; +drop resource unit new_box1; +set global parallel_max_servers=10; +set global parallel_servers_target=10; +alter system set _sort_area_size='2M'; +alter system set _hash_area_size='4M'; +drop table t11_set; +drop table t22_set; +drop table t111_var; +drop table t333_var; +create table t11_set(c1 int,c2 int); +create table t22_set(c1 int,c2 int); +insert into t11_set values(null,null); +insert into t11_set values(1,1); +insert into t11_set values(5,5); +insert into t11_set values(1,1); +insert into t11_set values(5,5); +insert into t11_set values(12,12); +insert into t11_set values(12,12); +insert into t11_set values(22,22); +insert into t11_set values(26,26); +insert into t11_set values(22,22); +insert into t11_set values(26,26); +insert into t22_set select * from t11_set; +create table t111_var(c0 bigint primary key,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000), c5 varchar(4000),c6 varchar(4000), c7 longtext); +insert into t111_var values(1,repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('a',4000)); +insert into t111_var select c0+1,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+10,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+100,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+1000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+10000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+100000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+1000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+10000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +insert into t111_var select c0+100000000,c1,c2,c3,c4,c5,c6,c7 from t111_var; +commit; +create table t333_var(c0 bigint ,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000), c5 varchar(4000),c6 varchar(4000), c7 longtext); +insert into t333_var values(1,repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('ab',1000),repeat('a',4000)); +insert into t333_var select c0+1,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var select c0+10,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var select c0+100,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var select c0+1000,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var select c0+10000,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var select c0+100000,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var select c0+1000000,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var select c0+10000000,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var select c0+100000000,c1,c2,c3,c4,c5,c6,c7 from t333_var; +insert into t333_var values(null,null,null,null,null,null,null,null); +commit; +result_format: 4 +explain_protocol: 1 +EXPLAIN BASIC select c1,c2 from t11_set union select c1,c2 from t22_set where c1 > 5 and c1 != 12; +Query Plan +================================ +|ID|OPERATOR |NAME | +-------------------------------- +|0 |HASH UNION DISTINCT| | +|1 | TABLE SCAN |t11_set| +|2 | TABLE SCAN |t22_set| +================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter(nil), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 2 - output([t22_set.c1], [t22_set.c2]), filter([t22_set.c1 > 5], [t22_set.c1 != 12]), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set union select c1,c2 from t22_set where c1 > 5 and c1 != 12; ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | NULL | +| 1 | 1 | +| 5 | 5 | +| 12 | 12 | +| 22 | 22 | +| 26 | 26 | ++------+------+ +EXPLAIN BASIC select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 > 5 and c1 != 12; +Query Plan +===================================== +|ID|OPERATOR |NAME | +------------------------------------- +|0 |MERGE INTERSECT DISTINCT| | +|1 | SORT | | +|2 | TABLE SCAN |t11_set| +|3 | SORT | | +|4 | TABLE SCAN |t22_set| +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([INTERSECT([1])], [INTERSECT([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter(nil), sort_keys([t11_set.c1, ASC], [t11_set.c2, ASC]) + 2 - output([t11_set.c1], [t11_set.c2]), filter([t11_set.c1 > 5], [t11_set.c1 != 12]), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 3 - output([t22_set.c1], [t22_set.c2]), filter(nil), sort_keys([t22_set.c1, ASC], [t22_set.c2, ASC]) + 4 - output([t22_set.c1], [t22_set.c2]), filter([t22_set.c1 > 5], [t22_set.c1 != 12]), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 > 5 and c1 != 12; ++------+------+ +| c1 | c2 | ++------+------+ +| 22 | 22 | +| 26 | 26 | ++------+------+ +EXPLAIN BASIC select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 > 5 and c1 != 12; +Query Plan +================================= +|ID|OPERATOR |NAME | +--------------------------------- +|0 |HASH EXCEPT DISTINCT| | +|1 | TABLE SCAN |t11_set| +|2 | TABLE SCAN |t22_set| +================================= + +Outputs & filters: +------------------------------------- + 0 - output([EXCEPT([1])], [EXCEPT([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter(nil), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 2 - output([t22_set.c1], [t22_set.c2]), filter([t22_set.c1 > 5], [t22_set.c1 != 12]), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 > 5 and c1 != 12; ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | NULL | +| 1 | 1 | +| 5 | 5 | +| 12 | 12 | ++------+------+ + +EXPLAIN BASIC select c1,c2 from t11_set where c1 > 5 and c1 != 12 union select c1,c2 from t22_set; +Query Plan +================================ +|ID|OPERATOR |NAME | +-------------------------------- +|0 |HASH UNION DISTINCT| | +|1 | TABLE SCAN |t11_set| +|2 | TABLE SCAN |t22_set| +================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter([t11_set.c1 > 5], [t11_set.c1 != 12]), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 2 - output([t22_set.c1], [t22_set.c2]), filter(nil), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set where c1 > 5 and c1 != 12 union select c1,c2 from t22_set; ++------+------+ +| c1 | c2 | ++------+------+ +| 22 | 22 | +| 26 | 26 | +| NULL | NULL | +| 1 | 1 | +| 5 | 5 | +| 12 | 12 | ++------+------+ +EXPLAIN BASIC select c1,c2 from t11_set where c1 > 5 and c1 != 12 intersect select c1,c2 from t22_set; +Query Plan +===================================== +|ID|OPERATOR |NAME | +------------------------------------- +|0 |MERGE INTERSECT DISTINCT| | +|1 | SORT | | +|2 | TABLE SCAN |t11_set| +|3 | SORT | | +|4 | TABLE SCAN |t22_set| +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([INTERSECT([1])], [INTERSECT([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter(nil), sort_keys([t11_set.c1, ASC], [t11_set.c2, ASC]) + 2 - output([t11_set.c1], [t11_set.c2]), filter([t11_set.c1 > 5], [t11_set.c1 != 12]), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 3 - output([t22_set.c1], [t22_set.c2]), filter(nil), sort_keys([t22_set.c1, ASC], [t22_set.c2, ASC]) + 4 - output([t22_set.c1], [t22_set.c2]), filter([t22_set.c1 > 5], [t22_set.c1 != 12]), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set where c1 > 5 and c1 != 12 intersect select c1,c2 from t22_set; ++------+------+ +| c1 | c2 | ++------+------+ +| 22 | 22 | +| 26 | 26 | ++------+------+ +EXPLAIN BASIC select c1,c2 from t11_set where c1 > 5 and c1 != 12 minus select c1,c2 from t22_set; +Query Plan +================================== +|ID|OPERATOR |NAME | +---------------------------------- +|0 |MERGE EXCEPT DISTINCT| | +|1 | SORT | | +|2 | TABLE SCAN |t11_set| +|3 | SORT | | +|4 | TABLE SCAN |t22_set| +================================== + +Outputs & filters: +------------------------------------- + 0 - output([EXCEPT([1])], [EXCEPT([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter(nil), sort_keys([t11_set.c1, ASC], [t11_set.c2, ASC]) + 2 - output([t11_set.c1], [t11_set.c2]), filter([t11_set.c1 > 5], [t11_set.c1 != 12]), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 3 - output([t22_set.c1], [t22_set.c2]), filter(nil), sort_keys([t22_set.c1, ASC], [t22_set.c2, ASC]) + 4 - output([t22_set.c1], [t22_set.c2]), filter([t22_set.c1 > 5], [t22_set.c1 != 12]), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set where c1 > 5 and c1 != 12 minus select c1,c2 from t22_set; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ + +EXPLAIN BASIC select c1,c2 from t11_set union select c1,c2 from t22_set where c1 <22; +Query Plan +================================ +|ID|OPERATOR |NAME | +-------------------------------- +|0 |HASH UNION DISTINCT| | +|1 | TABLE SCAN |t11_set| +|2 | TABLE SCAN |t22_set| +================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter(nil), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 2 - output([t22_set.c1], [t22_set.c2]), filter([t22_set.c1 < 22]), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set union select c1,c2 from t22_set where c1 <22; ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | NULL | +| 1 | 1 | +| 5 | 5 | +| 12 | 12 | +| 22 | 22 | +| 26 | 26 | ++------+------+ +EXPLAIN BASIC select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 <22; +Query Plan +==================================== +|ID|OPERATOR |NAME | +------------------------------------ +|0 |HASH INTERSECT DISTINCT| | +|1 | TABLE SCAN |t11_set| +|2 | TABLE SCAN |t22_set| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([INTERSECT([1])], [INTERSECT([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter([t11_set.c1 < 22]), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 2 - output([t22_set.c1], [t22_set.c2]), filter([t22_set.c1 < 22]), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 <22; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 5 | 5 | +| 12 | 12 | ++------+------+ +EXPLAIN BASIC select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 <22; +Query Plan +================================= +|ID|OPERATOR |NAME | +--------------------------------- +|0 |HASH EXCEPT DISTINCT| | +|1 | TABLE SCAN |t11_set| +|2 | TABLE SCAN |t22_set| +================================= + +Outputs & filters: +------------------------------------- + 0 - output([EXCEPT([1])], [EXCEPT([2])]), filter(nil) + 1 - output([t11_set.c1], [t11_set.c2]), filter(nil), + access([t11_set.c1], [t11_set.c2]), partitions(p0) + 2 - output([t22_set.c1], [t22_set.c2]), filter([t22_set.c1 < 22]), + access([t22_set.c1], [t22_set.c2]), partitions(p0) + +select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 <22; ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | NULL | +| 22 | 22 | +| 26 | 26 | ++------+------+ + +## dump +set ob_query_timeout=30000000; +EXPLAIN BASIC select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) +from (select * from t111_var a union select * from t333_var b) order by c1 limit 1; +Query Plan +================================ +|ID|OPERATOR |NAME| +-------------------------------- +|0 |LIMIT | | +|1 | SCALAR GROUP BY | | +|2 | SUBPLAN SCAN | | +|3 | HASH UNION DISTINCT| | +|4 | TABLE SCAN |a | +|5 | TABLE SCAN |b | +================================ + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]), filter(nil), limit(1), offset(nil) + 1 - output([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]) + 2 - output([.c0], [.c2], [.c3], [.c4], [.c5], [.c6], [.c7], [length(.c1)]), filter(nil), + access([.c0], [.c1], [.c2], [.c3], [.c4], [.c5], [.c6], [.c7]) + 3 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])], [UNION([5])], [UNION([6])], [UNION([7])], [UNION([8])]), filter(nil) + 4 - output([a.c0], [a.c1], [a.c2], [a.c3], [a.c4], [a.c5], [a.c6], [a.c7]), filter(nil), + access([a.c0], [a.c1], [a.c2], [a.c3], [a.c4], [a.c5], [a.c6], [a.c7]), partitions(p0) + 5 - output([b.c0], [b.c1], [b.c2], [b.c3], [b.c4], [b.c5], [b.c6], [b.c7]), filter(nil), + access([b.c0], [b.c1], [b.c2], [b.c3], [b.c4], [b.c5], [b.c6], [b.c7]), partitions(p0) + +select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) +from (select * from t111_var a union select * from t333_var b) order by c1 limit 1; ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ +| sum(c0) | sum(length(c1)) | count(c2) | count(c3) | count(c4) | count(c5) | count(c6) | count(c7) | ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ +| 28444444928 | 1024000 | 512 | 512 | 512 | 512 | 512 | 512 | ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ + +EXPLAIN BASIC select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) +from (select * from t111_var a intersect select * from t333_var b) order by c1 limit 1; +Query Plan +==================================== +|ID|OPERATOR |NAME| +------------------------------------ +|0 |LIMIT | | +|1 | SCALAR GROUP BY | | +|2 | SUBPLAN SCAN | | +|3 | HASH INTERSECT DISTINCT| | +|4 | TABLE SCAN |b | +|5 | TABLE SCAN |a | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]), filter(nil), limit(1), offset(nil) + 1 - output([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]) + 2 - output([.c0], [.c2], [.c3], [.c4], [.c5], [.c6], [.c7], [length(.c1)]), filter(nil), + access([.c0], [.c1], [.c2], [.c3], [.c4], [.c5], [.c6], [.c7]) + 3 - output([INTERSECT([1])], [INTERSECT([2])], [INTERSECT([3])], [INTERSECT([4])], [INTERSECT([5])], [INTERSECT([6])], [INTERSECT([7])], [INTERSECT([8])]), filter(nil) + 4 - output([b.c0], [b.c1], [b.c2], [b.c3], [b.c4], [b.c5], [b.c6], [b.c7]), filter(nil), + access([b.c0], [b.c1], [b.c2], [b.c3], [b.c4], [b.c5], [b.c6], [b.c7]), partitions(p0) + 5 - output([a.c0], [a.c1], [a.c2], [a.c3], [a.c4], [a.c5], [a.c6], [a.c7]), filter(nil), + access([a.c0], [a.c1], [a.c2], [a.c3], [a.c4], [a.c5], [a.c6], [a.c7]), partitions(p0) + +select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) +from (select * from t111_var a intersect select * from t333_var b) order by c1 limit 1; ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ +| sum(c0) | sum(length(c1)) | count(c2) | count(c3) | count(c4) | count(c5) | count(c6) | count(c7) | ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ +| 28444444928 | 1024000 | 512 | 512 | 512 | 512 | 512 | 512 | ++-------------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ + +EXPLAIN BASIC select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) +from (select * from t111_var a minus select * from t333_var b) order by c1 limit 1; +Query Plan +================================= +|ID|OPERATOR |NAME| +--------------------------------- +|0 |LIMIT | | +|1 | SCALAR GROUP BY | | +|2 | SUBPLAN SCAN | | +|3 | HASH EXCEPT DISTINCT| | +|4 | TABLE SCAN |a | +|5 | TABLE SCAN |b | +================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]), filter(nil), limit(1), offset(nil) + 1 - output([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.c0)], [T_FUN_SUM(length(.c1))], [T_FUN_COUNT(.c2)], [T_FUN_COUNT(.c3)], [T_FUN_COUNT(.c4)], [T_FUN_COUNT(.c5)], [T_FUN_COUNT(.c6)], [T_FUN_COUNT(.c7)]) + 2 - output([.c0], [.c2], [.c3], [.c4], [.c5], [.c6], [.c7], [length(.c1)]), filter(nil), + access([.c0], [.c1], [.c2], [.c3], [.c4], [.c5], [.c6], [.c7]) + 3 - output([EXCEPT([1])], [EXCEPT([2])], [EXCEPT([3])], [EXCEPT([4])], [EXCEPT([5])], [EXCEPT([6])], [EXCEPT([7])], [EXCEPT([8])]), filter(nil) + 4 - output([a.c0], [a.c1], [a.c2], [a.c3], [a.c4], [a.c5], [a.c6], [a.c7]), filter(nil), + access([a.c0], [a.c1], [a.c2], [a.c3], [a.c4], [a.c5], [a.c6], [a.c7]), partitions(p0) + 5 - output([b.c0], [b.c1], [b.c2], [b.c3], [b.c4], [b.c5], [b.c6], [b.c7]), filter(nil), + access([b.c0], [b.c1], [b.c2], [b.c3], [b.c4], [b.c5], [b.c6], [b.c7]), partitions(p0) + +select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) +from (select * from t111_var a minus select * from t333_var b) order by c1 limit 1; ++---------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ +| sum(c0) | sum(length(c1)) | count(c2) | count(c3) | count(c4) | count(c5) | count(c6) | count(c7) | ++---------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ +| NULL | NULL | 0 | 0 | 0 | 0 | 0 | 0 | ++---------+-----------------+-----------+-----------+-----------+-----------+-----------+-----------+ + +explain_protocol: 0 +select operation_type, + case when sum(optimal_executions)>0 then 1 else 0 end pass1, + case when sum(onepass_executions)>0 then 1 else 0 end pass2, + case when sum(multipasses_executions)>0 then 1 else 0 end pass3 +from oceanbase.gv$sql_workarea where con_id =xxx group by operation_type order by 1,2,3,4; ++--------------------+-------+-------+-------+ +| operation_type | pass1 | pass2 | pass3 | ++--------------------+-------+-------+-------+ +| PHY_HASH_EXCEPT | 0 | 1 | 0 | +| PHY_HASH_INTERSECT | 0 | 1 | 0 | +| PHY_HASH_UNION | 0 | 1 | 0 | ++--------------------+-------+-------+-------+ + +drop tenant dump_tenant force; +drop resource pool new_pool1; +drop resource unit new_box1; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/material.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/material.result new file mode 100644 index 000000000..19e890fd7 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/material.result @@ -0,0 +1,99 @@ +result_format: 4 +explain_protocol: 0 + + + +drop table if exists t1; +drop table if exists t2; +create table t1(c1 int,c2 int,c3 int); +create table t2(c1 int,c2 int,c3 int); + +insert into t1 values(1,2,3); +insert into t1 values(1,2,3); +insert into t1 values(0,2,3); +insert into t1 values(2,2,3); +insert into t1 values(3,2,3); + +insert into t2 values(2,2,3); +insert into t2 values(2,2,3); +insert into t2 values(0,2,3); +insert into t2 values(1,2,3); +insert into t2 values(null,2,3); +commit; + + +explain_protocol: 2 +set @@ob_enable_plan_cache = 0; +explain select * from t1,t2; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |25 |95 | +|1 | TABLE SCAN |t1 |5 |37 | +|2 | MATERIAL | |5 |40 | +|3 | TABLE SCAN |t2 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +EXPLAIN select * from t1,t2; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |25 |95 | +|1 | TABLE SCAN |t1 |5 |37 | +|2 | MATERIAL | |5 |40 | +|3 | TABLE SCAN |t2 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1,t2; ++------+------+------+------+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+------+------+------+------+------+ +| 1 | 2 | 3 | 2 | 2 | 3 | +| 1 | 2 | 3 | 2 | 2 | 3 | +| 1 | 2 | 3 | 0 | 2 | 3 | +| 1 | 2 | 3 | 1 | 2 | 3 | +| 1 | 2 | 3 | NULL | 2 | 3 | +| 1 | 2 | 3 | 2 | 2 | 3 | +| 1 | 2 | 3 | 2 | 2 | 3 | +| 1 | 2 | 3 | 0 | 2 | 3 | +| 1 | 2 | 3 | 1 | 2 | 3 | +| 1 | 2 | 3 | NULL | 2 | 3 | +| 0 | 2 | 3 | 2 | 2 | 3 | +| 0 | 2 | 3 | 2 | 2 | 3 | +| 0 | 2 | 3 | 0 | 2 | 3 | +| 0 | 2 | 3 | 1 | 2 | 3 | +| 0 | 2 | 3 | NULL | 2 | 3 | +| 2 | 2 | 3 | 2 | 2 | 3 | +| 2 | 2 | 3 | 2 | 2 | 3 | +| 2 | 2 | 3 | 0 | 2 | 3 | +| 2 | 2 | 3 | 1 | 2 | 3 | +| 2 | 2 | 3 | NULL | 2 | 3 | +| 3 | 2 | 3 | 2 | 2 | 3 | +| 3 | 2 | 3 | 2 | 2 | 3 | +| 3 | 2 | 3 | 0 | 2 | 3 | +| 3 | 2 | 3 | 1 | 2 | 3 | +| 3 | 2 | 3 | NULL | 2 | 3 | ++------+------+------+------+------+------+ + diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/merge_set.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/merge_set.result similarity index 90% rename from test/mysql_test/test_suite/static_engine/r/mysql/merge_set.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/merge_set.result index 0d97230fd..cf9b5cc70 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/merge_set.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/merge_set.result @@ -1,5 +1,3 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection default; drop table t11_set; drop table t22_set; create table t11_set(c1 int,c2 int); @@ -18,8 +16,6 @@ insert into t11_set values(26,26); insert into t22_set select * from t11_set; create index idx_t11_set on t11_set(c1,c2); create index idx_t22_set on t22_set(c1,c2); -connection syscon; -connection default; set @@ob_enable_plan_cache = 0; select c1,c2 from t11_set union select c1,c2 from t22_set where c1 > 5 and c1 != 12; c1 c2 @@ -71,7 +67,5 @@ c1 c2 NULL NULL 22 22 26 26 -connection syscon; -connection default; drop table t11_set; drop table t22_set; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/partition_split.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/partition_split.result similarity index 84% rename from test/mysql_test/test_suite/static_engine/r/mysql/partition_split.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/partition_split.result index a2fd47214..7f22026d5 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/partition_split.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/partition_split.result @@ -1,7 +1,7 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT; -connection conn_admin; +result_format: 4 alter system flush plan cache global; -connection default; + + drop table if exists t; create table t(c1 int, c2 int, primary key(c1, c2)); @@ -11,12 +11,16 @@ insert into t values(3,3); insert into t values(4,4); insert into t values(5,5); insert into t values(6,6); + alter table t partition by range(c1) (partition p0 values less than (4), partition p1 values less than MAXVALUE); select c2 from t partition(p1); -c2 -4 -5 -6 ++----+ +| c2 | ++----+ +| 4 | +| 5 | +| 6 | ++----+ explain select c2 from t partition(p1); Query Plan @@ -31,5 +35,6 @@ Outputs & filters: 0 - output([t.c2]), filter([calc_partition_id(t.c1) = ?]), access([t.c2], [t.c1]), partitions(p2) + drop table t; -connection conn_admin; + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/px_basic.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/px_basic.result new file mode 100644 index 000000000..9fba12ba6 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/px_basic.result @@ -0,0 +1,423 @@ +drop table t1; +drop table t2; +drop table t3; +drop table t4; +drop table t5; +create table t3(c1 int primary key,c2 int) partition by hash(c1) partitions 5; +create table t4(c1 int primary key,c2 int) partition by hash(c1) partitions 6; +insert into t3 values(0,0); +insert into t3 values(1,0); +insert into t3 values(2,1); +insert into t3 values(3,2); +insert into t3 values(4,3); +insert into t3 values(5,4); +insert into t3 values(6,5); +insert into t4 values(1,0); +insert into t4 values(2,1); +insert into t4 values(3,2); +insert into t4 values(4,3); +insert into t4 values(5,4); +insert into t4 values(6,5); +insert into t4 values(7,5); +commit; +create table t5(c1 int primary key,c2 int); +insert into t5 values(1,1); +insert into t5 values(2,2); +insert into t5 values(3,3); +insert into t5 values(4,4); +insert into t5 values(5,5); +insert into t5 values(6,6); +commit; +create table t1(c1 int,c2 int) partition by hash(c1) partitions 5; +create table t2(c1 int,c2 int) partition by hash(c2) partitions 6; +insert into t1 values(1,1); +insert into t1 values(2,2); +insert into t1 values(3,3); +insert into t1 values(4,4); +insert into t1 values(5,5); +insert into t1 values(6,6); +insert into t2 values(1,1); +insert into t2 values(2,2); +insert into t2 values(3,3); +insert into t2 values(4,4); +insert into t2 values(5,5); +insert into t2 values(6,6); +commit; +result_format: 4 +explain_protocol: 1 +set @@ob_enable_plan_cache = 0; + +EXPLAIN BASIC select * from t3 a ; +Query Plan +===================================== +|ID|OPERATOR |NAME | +------------------------------------- +|0 |PX COORDINATOR | | +|1 | EXCHANGE OUT DISTR |:EX10000| +|2 | PX PARTITION ITERATOR| | +|3 | TABLE SCAN |a | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil) + 1 - output([a.c1], [a.c2]), filter(nil), dop=1 + 2 - output([a.c1], [a.c2]), filter(nil) + 3 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p[0-4]) + +select * from t3 a ; ++----+------+ +| c1 | c2 | ++----+------+ +| 0 | 0 | +| 5 | 4 | +| 1 | 0 | +| 6 | 5 | +| 2 | 1 | +| 3 | 2 | +| 4 | 3 | ++----+------+ + +##ms coord output 列与child不一致,所以后续就改成了拿数据时直接采用child_expxs +EXPLAIN BASIC select /*+ parallel(2) NO_USE_HASH_AGGREGATION */ a.c1,a.c2+a.c1 from t3 a group by a.c1,a.c2 order by a.c2+1+a.c1; +Query Plan +======================================== +|ID|OPERATOR |NAME | +---------------------------------------- +|0 |PX COORDINATOR MERGE SORT | | +|1 | EXCHANGE OUT DISTR |:EX10000| +|2 | SORT | | +|3 | PX BLOCK ITERATOR | | +|4 | TABLE SCAN |a | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2 + a.c1]), filter(nil), sort_keys([a.c2 + 1 + a.c1, ASC]) + 1 - output([a.c1], [a.c2 + a.c1], [a.c2 + 1 + a.c1]), filter(nil), dop=2 + 2 - output([a.c1], [a.c2 + a.c1], [a.c2 + 1 + a.c1]), filter(nil), sort_keys([a.c2 + 1 + a.c1, ASC]) + 3 - output([a.c1], [a.c2], [a.c2 + 1 + a.c1]), filter(nil) + 4 - output([a.c1], [a.c2], [a.c2 + 1 + a.c1]), filter(nil), + access([a.c1], [a.c2]), partitions(p[0-4]) + +select /*+ parallel(2) NO_USE_HASH_AGGREGATION */ a.c1,a.c2+a.c1 from t3 a group by a.c1,a.c2 order by a.c2+1+a.c1; ++----+-----------+ +| c1 | a.c2+a.c1 | ++----+-----------+ +| 0 | 0 | +| 1 | 1 | +| 2 | 3 | +| 3 | 5 | +| 4 | 7 | +| 5 | 9 | +| 6 | 11 | ++----+-----------+ + +##ms receieve local order +EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2=b.c1 order by a.c1,a.c2; +Query Plan +============================================== +|ID|OPERATOR |NAME | +---------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | | +|1 | EXCHANGE OUT DISTR |:EX10002| +|2 | SORT | | +|3 | MERGE OUTER JOIN | | +|4 | EXCHANGE IN MERGE SORT DISTR| | +|5 | EXCHANGE OUT DISTR (HASH) |:EX10000| +|6 | PX BLOCK ITERATOR | | +|7 | TABLE SCAN |b | +|8 | SORT | | +|9 | EXCHANGE IN DISTR | | +|10| EXCHANGE OUT DISTR (HASH) |:EX10001| +|11| PX BLOCK ITERATOR | | +|12| TABLE SCAN |a | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), sort_keys([a.c1, ASC], [a.c2, ASC]) + 1 - output([a.c1], [a.c2]), filter(nil), dop=2 + 2 - output([a.c1], [a.c2]), filter(nil), sort_keys([a.c1, ASC], [a.c2, ASC]) + 3 - output([a.c1], [a.c2]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 4 - output([b.c1]), filter(nil), sort_keys([b.c1, ASC]), Local Order + 5 - (#keys=1, [b.c1]), output([b.c1]), filter(nil), dop=2 + 6 - output([b.c1]), filter(nil) + 7 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p[0-4]) + 8 - output([a.c1], [a.c2]), filter(nil), sort_keys([a.c2, ASC]) + 9 - output([a.c1], [a.c2]), filter(nil) + 10 - (#keys=1, [a.c2]), output([a.c1], [a.c2]), filter(nil), dop=2 + 11 - output([a.c1], [a.c2]), filter(nil) + 12 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p[0-4]) + +select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2=b.c1 order by a.c1,a.c2; ++----+------+ +| c1 | c2 | ++----+------+ +| NULL | NULL | +| 0 | 0 | +| 1 | 0 | +| 2 | 1 | +| 3 | 2 | +| 4 | 3 | +| 5 | 4 | +| 6 | 5 | ++----+------+ +EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2+2=b.c1+1 order by a.c1,a.c2+2; +Query Plan +============================================ +|ID|OPERATOR |NAME | +-------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | | +|1 | EXCHANGE OUT DISTR |:EX10002| +|2 | SORT | | +|3 | HASH OUTER JOIN | | +|4 | EXCHANGE IN DISTR | | +|5 | EXCHANGE OUT DISTR (HASH)|:EX10000| +|6 | PX BLOCK ITERATOR | | +|7 | TABLE SCAN |b | +|8 | EXCHANGE IN DISTR | | +|9 | EXCHANGE OUT DISTR (HASH)|:EX10001| +|10| PX BLOCK ITERATOR | | +|11| TABLE SCAN |a | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), sort_keys([a.c1, ASC], [a.c2 + 2, ASC]) + 1 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil), dop=2 + 2 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil), sort_keys([a.c1, ASC], [a.c2 + 2, ASC]) + 3 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil), + equal_conds([a.c2 + 2 = b.c1 + 1]), other_conds(nil) + 4 - output([b.c1 + 1]), filter(nil) + 5 - (#keys=1, [b.c1 + 1]), output([b.c1 + 1]), filter(nil), dop=2 + 6 - output([b.c1 + 1]), filter(nil) + 7 - output([b.c1 + 1]), filter(nil), + access([b.c1]), partitions(p[0-4]) + 8 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil) + 9 - (#keys=1, [a.c2 + 2]), output([a.c1], [a.c2], [a.c2 + 2]), filter(nil), dop=2 + 10 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil) + 11 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil), + access([a.c1], [a.c2]), partitions(p[0-4]) + +select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on a.c2+2=b.c1+1 order by a.c1,a.c2+2; ++----+------+ +| c1 | c2 | ++----+------+ +| NULL | NULL | +| 0 | 0 | +| 1 | 0 | +| 2 | 1 | +| 3 | 2 | +| 4 | 3 | +| 5 | 4 | +| 6 | 5 | ++----+------+ +EXPLAIN BASIC select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on abs(a.c2)+2=b.c1 order by a.c1,a.c2+2; +Query Plan +============================================== +|ID|OPERATOR |NAME | +---------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | | +|1 | EXCHANGE OUT DISTR |:EX10002| +|2 | SORT | | +|3 | MERGE OUTER JOIN | | +|4 | EXCHANGE IN MERGE SORT DISTR| | +|5 | EXCHANGE OUT DISTR (HASH) |:EX10000| +|6 | PX BLOCK ITERATOR | | +|7 | TABLE SCAN |b | +|8 | SORT | | +|9 | EXCHANGE IN DISTR | | +|10| EXCHANGE OUT DISTR (HASH) |:EX10001| +|11| PX BLOCK ITERATOR | | +|12| TABLE SCAN |a | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), sort_keys([a.c1, ASC], [a.c2 + 2, ASC]) + 1 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil), dop=2 + 2 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil), sort_keys([a.c1, ASC], [a.c2 + 2, ASC]) + 3 - output([a.c1], [a.c2], [a.c2 + 2]), filter(nil), + equal_conds([abs(cast(a.c2, BIGINT(-1, 0))) + 2 = b.c1]), other_conds(nil) + 4 - output([b.c1]), filter(nil), sort_keys([b.c1, ASC]), Local Order + 5 - (#keys=1, [b.c1]), output([b.c1]), filter(nil), dop=2 + 6 - output([b.c1]), filter(nil) + 7 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p[0-4]) + 8 - output([a.c1], [a.c2], [abs(cast(a.c2, BIGINT(-1, 0))) + 2]), filter(nil), sort_keys([abs(cast(a.c2, BIGINT(-1, 0))) + 2, ASC]) + 9 - output([a.c1], [a.c2], [abs(cast(a.c2, BIGINT(-1, 0))) + 2]), filter(nil) + 10 - (#keys=1, [abs(cast(a.c2, BIGINT(-1, 0))) + 2]), output([a.c1], [a.c2], [abs(cast(a.c2, BIGINT(-1, 0))) + 2]), filter(nil), dop=2 + 11 - output([a.c1], [a.c2], [abs(cast(a.c2, BIGINT(-1, 0))) + 2]), filter(nil) + 12 - output([a.c1], [a.c2], [abs(cast(a.c2, BIGINT(-1, 0))) + 2]), filter(nil), + access([a.c1], [a.c2]), partitions(p[0-4]) + +select /*+ parallel(2) pq_distribute(a hash hash) NO_USE_HASH_AGGREGATION */ a.c1,a.c2 from t3 a right outer join t3 b on abs(a.c2)+2=b.c1 order by a.c1,a.c2+2; ++----+------+ +| c1 | c2 | ++----+------+ +| NULL | NULL | +| NULL | NULL | +| 0 | 0 | +| 1 | 0 | +| 2 | 1 | +| 3 | 2 | +| 4 | 3 | +| 5 | 4 | ++----+------+ + +## ms receive global order subplan not supported, core, ignore +## broadcast shuffle +EXPLAIN BASIC select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1=b.c2 order by a.c1,b.c1; +Query Plan +================================================= +|ID|OPERATOR |NAME | +------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | | +|1 | EXCHANGE OUT DISTR |:EX10001| +|2 | SORT | | +|3 | MERGE JOIN | | +|4 | EXCHANGE IN MERGE SORT DISTR | | +|5 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000| +|6 | PX BLOCK ITERATOR | | +|7 | TABLE SCAN |a | +|8 | SORT | | +|9 | PX BLOCK ITERATOR | | +|10| TABLE SCAN |b | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2]), filter(nil), sort_keys([a.c1, ASC], [b.c1, ASC]) + 1 - output([a.c1], [a.c2], [b.c1], [b.c2]), filter(nil), dop=2 + 2 - output([a.c1], [a.c2], [b.c1], [b.c2]), filter(nil), sort_keys([a.c1, ASC], [b.c1, ASC]), prefix_pos(1) + 3 - output([a.c1], [a.c2], [b.c1], [b.c2]), filter(nil), + equal_conds([a.c1 = b.c2]), other_conds(nil) + 4 - output([a.c1], [a.c2]), filter(nil), sort_keys([a.c1, ASC]), Local Order + 5 - output([a.c1], [a.c2]), filter(nil), dop=2 + 6 - output([a.c1], [a.c2]), filter(nil) + 7 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p[0-4]) + 8 - output([b.c1], [b.c2]), filter(nil), sort_keys([b.c2, ASC]), local merge sort + 9 - output([b.c2], [b.c1]), filter(nil) + 10 - output([b.c2], [b.c1]), filter(nil), + access([b.c2], [b.c1]), partitions(p[0-5]) + +select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1=b.c2 order by a.c1,b.c1; ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 3 | 3 | 3 | 3 | +| 4 | 4 | 4 | 4 | +| 5 | 5 | 5 | 5 | +| 6 | 6 | 6 | 6 | ++------+------+------+------+ + +EXPLAIN BASIC select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1+2=b.c2 + 1 order by a.c1,b.c1+2; +Query Plan +================================================= +|ID|OPERATOR |NAME | +------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | | +|1 | EXCHANGE OUT DISTR |:EX10001| +|2 | SORT | | +|3 | HASH JOIN | | +|4 | EXCHANGE IN DISTR | | +|5 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000| +|6 | PX BLOCK ITERATOR | | +|7 | TABLE SCAN |a | +|8 | PX BLOCK ITERATOR | | +|9 | TABLE SCAN |b | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2]), filter(nil), sort_keys([a.c1, ASC], [b.c1 + 2, ASC]) + 1 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c1 + 2]), filter(nil), dop=2 + 2 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c1 + 2]), filter(nil), sort_keys([a.c1, ASC], [b.c1 + 2, ASC]) + 3 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c1 + 2]), filter(nil), + equal_conds([a.c1 + 2 = b.c2 + 1]), other_conds(nil) + 4 - output([a.c1], [a.c2], [a.c1 + 2]), filter(nil) + 5 - output([a.c1], [a.c2], [a.c1 + 2]), filter(nil), dop=2 + 6 - output([a.c1], [a.c2], [a.c1 + 2]), filter(nil) + 7 - output([a.c1], [a.c2], [a.c1 + 2]), filter(nil), + access([a.c1], [a.c2]), partitions(p[0-4]) + 8 - output([b.c2], [b.c1], [b.c2 + 1]), filter(nil) + 9 - output([b.c2], [b.c1], [b.c2 + 1]), filter(nil), + access([b.c2], [b.c1]), partitions(p[0-5]) + +select /*+ parallel(2) pq_distribute(b broadcast none) */ * from t1 a, t2 b where a.c1+2=b.c2 + 1 order by a.c1,b.c1+2; ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 2 | 2 | +| 2 | 2 | 3 | 3 | +| 3 | 3 | 4 | 4 | +| 4 | 4 | 5 | 5 | +| 5 | 5 | 6 | 6 | ++------+------+------+------+ + +EXPLAIN BASIC select /*+ use_px parallel(2) */ c2,sum(c1) from (select a.c1,b.c2 from t5 a , t5 b where a.c1=b.c2) group by c2 order by 1,2; +Query Plan +=================================================== +|ID|OPERATOR |NAME | +--------------------------------------------------- +|0 |PX COORDINATOR MERGE SORT | | +|1 | EXCHANGE OUT DISTR |:EX10002| +|2 | MERGE GROUP BY | | +|3 | EXCHANGE IN MERGE SORT DISTR | | +|4 | EXCHANGE OUT DISTR (HASH) |:EX10001| +|5 | MERGE JOIN | | +|6 | EXCHANGE IN MERGE SORT DISTR | | +|7 | EXCHANGE OUT DISTR (BROADCAST)|:EX10000| +|8 | PX BLOCK ITERATOR | | +|9 | TABLE SCAN |a | +|10| SORT | | +|11| PX BLOCK ITERATOR | | +|12| TABLE SCAN |b | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([b.c2], [T_FUN_SUM(a.c1)]), filter(nil), sort_keys([b.c2, ASC], [T_FUN_SUM(a.c1), ASC]) + 1 - output([b.c2], [T_FUN_SUM(a.c1)]), filter(nil), dop=2 + 2 - output([b.c2], [T_FUN_SUM(a.c1)]), filter(nil), + group([b.c2]), agg_func([T_FUN_SUM(a.c1)]) + 3 - output([b.c2], [a.c1]), filter(nil), sort_keys([b.c2, ASC]) + 4 - (#keys=1, [b.c2]), output([b.c2], [a.c1]), filter(nil), dop=2 + 5 - output([b.c2], [a.c1]), filter(nil), + equal_conds([a.c1 = b.c2]), other_conds(nil) + 6 - output([a.c1]), filter(nil), sort_keys([a.c1, ASC]), Local Order + 7 - output([a.c1]), filter(nil), dop=2 + 8 - output([a.c1]), filter(nil) + 9 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0) + 10 - output([b.c2]), filter(nil), sort_keys([b.c2, ASC]) + 11 - output([b.c2]), filter(nil) + 12 - output([b.c2]), filter(nil), + access([b.c2]), partitions(p0) + +select /*+ use_px parallel(2) */ c2,sum(c1) from (select a.c1,b.c2 from t5 a , t5 b where a.c1=b.c2) group by c2 order by 1,2; ++------+---------+ +| c2 | sum(c1) | ++------+---------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 5 | +| 6 | 6 | ++------+---------+ + + +drop table t1; +drop table t2; +drop table t3; +drop table t4; +drop table t5; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_case.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_case.result new file mode 100644 index 000000000..85aae16e6 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_case.result @@ -0,0 +1,479 @@ +result_format: 4 +explain_protocol: 2 + +// Case1: normal test,测试是否将带参数的case转为不带参数的case +// Case2: 测试case表达式里面有列的情况 +// Case3: 测试空串以及NULL的情况 +alter system flush plan cache global; +set @@ob_enable_plan_cache = 0; +// Case1: normal test. +// 所有带参数的case表达式都被转为不带参数的case表达式 +EXPLAIN select case 1 when 1 then 'a' when 2 then 'b' else 'c' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END]), filter(nil) + values({CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END}) + +select case 1 when 1 then 'a' when 2 then 'b' else 'c' end from dual; ++-----------------------------------------------------+ +| case 1 when 1 then 'a' when 2 then 'b' else 'c' end | ++-----------------------------------------------------+ +| a | ++-----------------------------------------------------+ +// 应该命中else expr +EXPLAIN select case 100 when 1 then 'a' when 2 then 'b' else 'c' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END]), filter(nil) + values({CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END}) + +select case 100 when 1 then 'a' when 2 then 'b' else 'c' end from dual; ++-------------------------------------------------------+ +| case 100 when 1 then 'a' when 2 then 'b' else 'c' end | ++-------------------------------------------------------+ +| c | ++-------------------------------------------------------+ + +// MySQL允许各个when/then expr结果类型不一致 +// 1和'1'的类型不一致,会被加上cast,都被转为decimal再进行比较,返回'a' +EXPLAIN select case 1 when '1' then 'a' when 2 then 'b' else 'c' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END]), filter(nil) + values({CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END}) + +select case 1 when '1' then 'a' when 2 then 'b' else 'c' end from dual; ++-------------------------------------------------------+ +| case 1 when '1' then 'a' when 2 then 'b' else 'c' end | ++-------------------------------------------------------+ +| a | ++-------------------------------------------------------+ +// 第二个then 应该要加cast,返回'a' +EXPLAIN select case 1 when 1 then 'a' when 2 then 'b' else 3 end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE ? END]), filter(nil) + values({CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE ? END}) + +select case 1 when 1 then 'a' when 2 then 'b' else 3 end from dual; ++---------------------------------------------------+ +| case 1 when 1 then 'a' when 2 then 'b' else 3 end | ++---------------------------------------------------+ +| a | ++---------------------------------------------------+ + +// 不带参数的case的测试 +// normal test +// 应该返回'a' +EXPLAIN select case when 1=1 then 'a' when 2 then 'b' else 'c' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'a' WHEN 2 THEN 'b' ELSE 'c' END]), filter(nil) + values({CASE WHEN ? THEN 'a' WHEN 2 THEN 'b' ELSE 'c' END}) + +select case when 1=1 then 'a' when 2 then 'b' else 'c' end from dual; ++-----------------------------------------------------+ +| case when 1=1 then 'a' when 2 then 'b' else 'c' end | ++-----------------------------------------------------+ +| a | ++-----------------------------------------------------+ +// 应该返回'c' +EXPLAIN select case when 0=1 then 'a' when 0.0 then 'b' else 'c' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END]), filter(nil) + values({CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END}) + +select case when 0=1 then 'a' when 0.0 then 'b' else 'c' end from dual; ++-------------------------------------------------------+ +| case when 0=1 then 'a' when 0.0 then 'b' else 'c' end | ++-------------------------------------------------------+ +| c | ++-------------------------------------------------------+ + +// 应该返回'a',且0='1'中要加cast +EXPLAIN select case when 1='1' then 'a' when 2 then 'b' else 'c' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'a' WHEN 2 THEN 'b' ELSE 'c' END]), filter(nil) + values({CASE WHEN ? THEN 'a' WHEN 2 THEN 'b' ELSE 'c' END}) + +select case when 1='1' then 'a' when 2 then 'b' else 'c' end from dual; ++-------------------------------------------------------+ +| case when 1='1' then 'a' when 2 then 'b' else 'c' end | ++-------------------------------------------------------+ +| a | ++-------------------------------------------------------+ +// 应该返回'c',且0='1'中要加cast +EXPLAIN select case when 0='1' then 'a' when 0.0 then 'b' else 'c' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END]), filter(nil) + values({CASE WHEN ? THEN 'a' WHEN ? THEN 'b' ELSE 'c' END}) + +select case when 0='1' then 'a' when 0.0 then 'b' else 'c' end from dual; ++---------------------------------------------------------+ +| case when 0='1' then 'a' when 0.0 then 'b' else 'c' end | ++---------------------------------------------------------+ +| c | ++---------------------------------------------------------+ + +explain_protocol: 0 +// Case2: 测试建表的情况 +drop table if exists t1; +create table t1 (col_null int, col_int int, col_char char); +insert into t1 values(null, 1, 'a'); + +explain_protocol: 2 +set @@ob_enable_plan_cache = 0; +alter system flush plan cache global; +// 测试int的normal case,应该返回'a' +EXPLAIN select case col_int when 1 then 'a' when 2 then 'b' else 'c' end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN t1.col_int = 1 THEN 'a' WHEN t1.col_int = 2 THEN 'b' ELSE 'c' END]), filter(nil), + access([t1.col_int]), partitions(p0) + +select case col_int when 1 then 'a' when 2 then 'b' else 'c' end from t1; ++-----------------------------------------------------------+ +| case col_int when 1 then 'a' when 2 then 'b' else 'c' end | ++-----------------------------------------------------------+ +| a | ++-----------------------------------------------------------+ +// 测试int需要加cast的情况,第一个when需要加cast, 第二个when不需要 +EXPLAIN select case col_int when '1' then 'a' when 2 then 'b' else 'c' end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN cast(t1.col_int, DECIMAL(11, 0)) = ? THEN 'a' WHEN t1.col_int = 2 THEN 'b' ELSE 'c' END]), filter(nil), + access([t1.col_int]), partitions(p0) + +select case col_int when '1' then 'a' when 2 then 'b' else 'c' end from t1; ++-------------------------------------------------------------+ +| case col_int when '1' then 'a' when 2 then 'b' else 'c' end | ++-------------------------------------------------------------+ +| a | ++-------------------------------------------------------------+ +// 测试null的情况,应该返回'c',而且没有cast出现 +EXPLAIN select case col_null when 1 then 'a' when 2 then 'b' else 'c' end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN t1.col_null = 1 THEN 'a' WHEN t1.col_null = 2 THEN 'b' ELSE 'c' END]), filter(nil), + access([t1.col_null]), partitions(p0) + +select case col_null when 1 then 'a' when 2 then 'b' else 'c' end from t1; ++------------------------------------------------------------+ +| case col_null when 1 then 'a' when 2 then 'b' else 'c' end | ++------------------------------------------------------------+ +| c | ++------------------------------------------------------------+ + +// Case3: 测试空串以及NULL的情况 +// 应该返回1, MySQL没有把空串看成NULL +EXPLAIN select case '' when '' then 1 when 'here' then 2 else 'hh' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN ? WHEN ? THEN ? ELSE 'hh' END]), filter(nil) + values({CASE WHEN ? THEN ? WHEN ? THEN ? ELSE 'hh' END}) + +select case '' when '' then 1 when 'here' then 2 else 'hh' end from dual; ++---------------------------------------------------------+ +| case '' when '' then 1 when 'here' then 2 else 'hh' end | ++---------------------------------------------------------+ +| 1 | ++---------------------------------------------------------+ +// 应该返回'hh' +EXPLAIN select case NULL when NULL then 1 when 'here' then 2 else 'hh' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN ? WHEN ? THEN ? ELSE 'hh' END]), filter(nil) + values({CASE WHEN ? THEN ? WHEN ? THEN ? ELSE 'hh' END}) + +select case NULL when NULL then 1 when 'here' then 2 else 'hh' end from dual; ++-------------------------------------------------------------+ +| case NULL when NULL then 1 when 'here' then 2 else 'hh' end | ++-------------------------------------------------------------+ +| hh | ++-------------------------------------------------------------+ +// 应该返回1, MySQL没有把空串看成NULL +EXPLAIN select case when '' = '' then 1 when 'here' then 2 else 'hh' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN ? WHEN ? THEN ? ELSE 'hh' END]), filter(nil) + values({CASE WHEN ? THEN ? WHEN ? THEN ? ELSE 'hh' END}) + +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'here' +select case when '' = '' then 1 when 'here' then 2 else 'hh' end from dual; ++-----------------------------------------------------------+ +| case when '' = '' then 1 when 'here' then 2 else 'hh' end | ++-----------------------------------------------------------+ +| 1 | ++-----------------------------------------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'here' +// 应该返回'hh', 因为'here'cast为double会失败,返回值应该是0 +EXPLAIN select case when NULL=NULL then 1 when 'here' then 2 else 'hh' end from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN ? THEN ? WHEN ? THEN ? ELSE 'hh' END]), filter(nil) + values({CASE WHEN ? THEN ? WHEN ? THEN ? ELSE 'hh' END}) + +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'here' +select case when NULL=NULL then 1 when 'here' then 2 else 'hh' end from dual; ++-------------------------------------------------------------+ +| case when NULL=NULL then 1 when 'here' then 2 else 'hh' end | ++-------------------------------------------------------------+ +| hh | ++-------------------------------------------------------------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'here' + +// Case4: 测试不同字符集,大小写问题 +drop table t1; +create table t1 (a varchar(100) collate utf8_general_ci, cond1 varchar(100) collate utf8_bin, cond2 varchar(100) collate utf8_general_ci); +EXPLAIN insert into t1 values('cond', 'COND', 'COND'); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.a)], [column_conv(VARCHAR,utf8mb4_bin,length:100,NULL,__values.cond1)], [column_conv(VARCHAR,utf8mb4_general_ci,length:100,NULL,__values.cond2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.cond1, t1.cond2)})}]), partitions(p0) + 1 - output([__values.a], [__values.cond1], [__values.cond2]), filter(nil) + values({'cond', 'COND', 'COND'}) + +insert into t1 values('cond', 'COND', 'COND'); +explain_protocol: 2 +// 返回Null,a和cond1以及a和cond2比较都会使用utf8_bin作为collation type(因为有aggregate collation的过程) +EXPLAIN select case a when cond1 then '1' when cond2 then '2' end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN cast(t1.a, VARCHAR(1048576)) = t1.cond1 THEN '1' WHEN cast(t1.a, VARCHAR(1048576)) = cast(t1.cond2, VARCHAR(1048576)) THEN '2' ELSE NULL END]), filter(nil), + access([t1.a], [t1.cond1], [t1.cond2]), partitions(p0) + +select case a when cond1 then '1' when cond2 then '2' end from t1; ++----------------------------------------------------+ +| case a when cond1 then '1' when cond2 then '2' end | ++----------------------------------------------------+ +| NULL | ++----------------------------------------------------+ +// 返回'neq', a和cond1比较使用的是utf8_bin +EXPLAIN select case a when cond1 then 'eq' else 'neq' end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN cast(t1.a, VARCHAR(1048576)) = t1.cond1 THEN 'eq' ELSE 'neq' END]), filter(nil), + access([t1.a], [t1.cond1]), partitions(p0) + +select case a when cond1 then 'eq' else 'neq' end from t1; ++--------------------------------------------+ +| case a when cond1 then 'eq' else 'neq' end | ++--------------------------------------------+ +| neq | ++--------------------------------------------+ +// 返回'eq', a和cond1比较使用的是utf8_general_ci +EXPLAIN select case a when cond2 then 'eq' else 'neq' end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN t1.a = t1.cond2 THEN 'eq' ELSE 'neq' END]), filter(nil), + access([t1.a], [t1.cond2]), partitions(p0) + +select case a when cond2 then 'eq' else 'neq' end from t1; ++--------------------------------------------+ +| case a when cond2 then 'eq' else 'neq' end | ++--------------------------------------------+ +| eq | ++--------------------------------------------+ +// arg case子节点也是arg case的情况测试,应该都被改为case expr(应该返回'ok') +EXPLAIN select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN CASE WHEN t1.a = 'cond' THEN 'eq' ELSE 'neq' END = 'eq' THEN 'ok' ELSE 'not ok' END]), filter(nil), + access([t1.a]), partitions(p0) + +select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1; ++----------------------------------------------------------------------------------------+ +| case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end | ++----------------------------------------------------------------------------------------+ +| ok | ++----------------------------------------------------------------------------------------+ +explain_protocol: 0 +// Case5: show create view/table +drop view if exists v1; +drop table if exists t2; +create view v1 as select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1; +select * from v1; ++------------+ +| Name_exp_1 | ++------------+ +| ok | ++------------+ +// arg case expr的改写不应该影响show create view,结果应该还是arg case expr 而非改写后的case expr +show create view v1; +View Create View character_set_client collation_connection +v1 CREATE VIEW `v1` AS select (case (case `test`.`t1`.`a` when 'cond' then 'eq' else 'neq' end) when 'eq' then 'ok' else 'not ok' end) AS `Name_exp_1` from `test`.`t1` utf8mb4 utf8mb4_general_ci +drop view v1; +create table t2 as select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1; +select * from t2; ++----------------------------------------------------------------------------------------+ +| case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end | ++----------------------------------------------------------------------------------------+ +| ok | ++----------------------------------------------------------------------------------------+ +// arg case expr的改写不应该影响show create table,结果应该还是arg case expr 而非改写后的case expr +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end` varchar(6) NOT NULL +) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 + +drop table t1; +drop table t2; + +## bugfix#https://work.aone.alibaba-inc.com/issue/37018706 +SELECT CASE 'A' WHEN 0 THEN 0 ELSE 1 END VAL; ++-----+ +| VAL | ++-----+ +| 0 | ++-----+ + +alter system set _enable_static_typing_engine = false; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_cmp_null.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_cmp_null.result new file mode 100644 index 000000000..b51ce9c50 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_cmp_null.result @@ -0,0 +1,1684 @@ +result_format: 4 + +alter system flush plan cache global; + +set ob_enable_plan_cache=false; + +drop table if exists t; +create table t (tinyint_t tinyint, + smallint_t smallint, + mediumint_t mediumint, + int32_t integer, + bigint_t bigint, + utinyint_t tinyint unsigned, + usmallint_t smallint unsigned, + umedium_t mediumint unsigned, + uint32_t integer unsigned, + ubigint_t bigint unsigned, + float_t float, + ufloat_t float unsigned, + double_t double, + udouble_t double unsigned, + number_t number, + unumber_t number unsigned, + datetime_t datetime, + timestamp_t timestamp, + date_t date, + time_t time, + year_t year, + varchar_t varchar(255), + char_t char(255), + tinytext_t tinytext, + mediumtext_t mediumtext, + longtext_t longtext, + bit_t bit, + enum_t enum('a', 'b', 'c'), + set_t set('a', 'b', 'c')); + +insert into t values (NULL, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.00, 1.000, 1.0000, 1.00000, 1.000000, + '1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '1.0', '1.00', '1.000', '1.0000', + '1.00000', 1, 'b', 'b'); +explain_protocol: 2 +EXPLAIN select NULL = tinyint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.tinyint_t]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = tinyint_t from t limit 1; ++------------------+ +| NULL = tinyint_t | ++------------------+ +| NULL | ++------------------+ +EXPLAIN select NULL = smallint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.smallint_t]), filter(nil), + access([t.smallint_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = smallint_t from t limit 1; ++--------------------+ +| NULL = smallint_t | ++--------------------+ +| NULL | ++--------------------+ +EXPLAIN select NULL = mediumint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.mediumint_t]), filter(nil), + access([t.mediumint_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = mediumint_t from t limit 1; ++---------------------+ +| NULL = mediumint_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select NULL = int32_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.int32_t]), filter(nil), + access([t.int32_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = int32_t from t limit 1; ++-----------------+ +| NULL = int32_t | ++-----------------+ +| NULL | ++-----------------+ +EXPLAIN select NULL = bigint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.bigint_t]), filter(nil), + access([t.bigint_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = bigint_t from t limit 1; ++------------------+ +| NULL = bigint_t | ++------------------+ +| NULL | ++------------------+ +EXPLAIN select NULL = utinyint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.utinyint_t]), filter(nil), + access([t.utinyint_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = utinyint_t from t limit 1; ++-------------------+ +| NULL = utinyint_t | ++-------------------+ +| NULL | ++-------------------+ +EXPLAIN select NULL = usmallint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.usmallint_t]), filter(nil), + access([t.usmallint_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = usmallint_t from t limit 1; ++---------------------+ +| NULL = usmallint_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select NULL = umedium_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.umedium_t]), filter(nil), + access([t.umedium_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = umedium_t from t limit 1; ++-------------------+ +| NULL = umedium_t | ++-------------------+ +| NULL | ++-------------------+ +EXPLAIN select NULL = uint32_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.uint32_t]), filter(nil), + access([t.uint32_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = uint32_t from t limit 1; ++------------------+ +| NULL = uint32_t | ++------------------+ +| NULL | ++------------------+ +EXPLAIN select NULL = ubigint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.ubigint_t]), filter(nil), + access([t.ubigint_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = ubigint_t from t limit 1; ++-------------------+ +| NULL = ubigint_t | ++-------------------+ +| NULL | ++-------------------+ +EXPLAIN select NULL = float_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.float_t]), filter(nil), + access([t.float_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = float_t from t limit 1; ++----------------+ +| NULL = float_t | ++----------------+ +| NULL | ++----------------+ +EXPLAIN select NULL = ufloat_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.ufloat_t]), filter(nil), + access([t.ufloat_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = ufloat_t from t limit 1; ++------------------+ +| NULL = ufloat_t | ++------------------+ +| NULL | ++------------------+ +EXPLAIN select NULL = double_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.double_t]), filter(nil), + access([t.double_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = double_t from t limit 1; ++-----------------+ +| NULL = double_t | ++-----------------+ +| NULL | ++-----------------+ +EXPLAIN select NULL = udouble_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.udouble_t]), filter(nil), + access([t.udouble_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = udouble_t from t limit 1; ++-------------------+ +| NULL = udouble_t | ++-------------------+ +| NULL | ++-------------------+ +EXPLAIN select NULL = number_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.number_t]), filter(nil), + access([t.number_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = number_t from t limit 1; ++-----------------+ +| NULL = number_t | ++-----------------+ +| NULL | ++-----------------+ +EXPLAIN select NULL = unumber_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.unumber_t]), filter(nil), + access([t.unumber_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = unumber_t from t limit 1; ++-------------------+ +| NULL = unumber_t | ++-------------------+ +| NULL | ++-------------------+ +EXPLAIN select NULL = datetime_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.datetime_t]), filter(nil), + access([t.datetime_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = datetime_t from t limit 1; ++-------------------+ +| NULL = datetime_t | ++-------------------+ +| NULL | ++-------------------+ +EXPLAIN select NULL = timestamp_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.timestamp_t]), filter(nil), + access([t.timestamp_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = timestamp_t from t limit 1; ++---------------------+ +| NULL = timestamp_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select NULL = date_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.date_t]), filter(nil), + access([t.date_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = date_t from t limit 1; ++----------------+ +| NULL = date_t | ++----------------+ +| NULL | ++----------------+ +EXPLAIN select NULL = time_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.time_t]), filter(nil), + access([t.time_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = time_t from t limit 1; ++----------------+ +| NULL = time_t | ++----------------+ +| NULL | ++----------------+ +EXPLAIN select NULL = year_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.year_t]), filter(nil), + access([t.year_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = year_t from t limit 1; ++----------------+ +| NULL = year_t | ++----------------+ +| NULL | ++----------------+ +EXPLAIN select NULL = varchar_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.varchar_t]), filter(nil), + access([t.varchar_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = varchar_t from t limit 1; ++------------------+ +| NULL = varchar_t | ++------------------+ +| NULL | ++------------------+ +EXPLAIN select NULL = char_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.char_t]), filter(nil), + access([t.char_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = char_t from t limit 1; ++----------------+ +| NULL = char_t | ++----------------+ +| NULL | ++----------------+ +EXPLAIN select NULL = tinytext_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.tinytext_t]), filter(nil), + access([t.tinytext_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = tinytext_t from t limit 1; ++--------------------+ +| NULL = tinytext_t | ++--------------------+ +| NULL | ++--------------------+ +EXPLAIN select NULL = mediumtext_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.mediumtext_t]), filter(nil), + access([t.mediumtext_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = mediumtext_t from t limit 1; ++----------------------+ +| NULL = mediumtext_t | ++----------------------+ +| NULL | ++----------------------+ +EXPLAIN select NULL = longtext_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.longtext_t]), filter(nil), + access([t.longtext_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = longtext_t from t limit 1; ++--------------------+ +| NULL = longtext_t | ++--------------------+ +| NULL | ++--------------------+ +EXPLAIN select NULL = bit_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.bit_t]), filter(nil), + access([t.bit_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = bit_t from t limit 1; ++--------------+ +| NULL = bit_t | ++--------------+ +| NULL | ++--------------+ +EXPLAIN select NULL = enum_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.enum_t]), filter(nil), + access([t.enum_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = enum_t from t limit 1; ++----------------+ +| NULL = enum_t | ++----------------+ +| NULL | ++----------------+ +EXPLAIN select NULL = set_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([NULL = t.set_t]), filter(nil), + access([t.set_t]), partitions(p0), + limit(1), offset(nil) + +select NULL = set_t from t limit 1; ++---------------+ +| NULL = set_t | ++---------------+ +| NULL | ++---------------+ + +EXPLAIN select tinyint_t = tinyint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.tinyint_t]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = tinyint_t from t limit 1; ++-----------------------+ +| tinyint_t = tinyint_t | ++-----------------------+ +| NULL | ++-----------------------+ +EXPLAIN select tinyint_t = smallint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.smallint_t]), filter(nil), + access([t.tinyint_t], [t.smallint_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = smallint_t from t limit 1; ++-------------------------+ +| tinyint_t = smallint_t | ++-------------------------+ +| NULL | ++-------------------------+ +EXPLAIN select tinyint_t = mediumint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.mediumint_t]), filter(nil), + access([t.tinyint_t], [t.mediumint_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = mediumint_t from t limit 1; ++--------------------------+ +| tinyint_t = mediumint_t | ++--------------------------+ +| NULL | ++--------------------------+ +EXPLAIN select tinyint_t = int32_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.int32_t]), filter(nil), + access([t.tinyint_t], [t.int32_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = int32_t from t limit 1; ++----------------------+ +| tinyint_t = int32_t | ++----------------------+ +| NULL | ++----------------------+ +EXPLAIN select tinyint_t = bigint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.bigint_t]), filter(nil), + access([t.tinyint_t], [t.bigint_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = bigint_t from t limit 1; ++-----------------------+ +| tinyint_t = bigint_t | ++-----------------------+ +| NULL | ++-----------------------+ +EXPLAIN select tinyint_t = utinyint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.utinyint_t]), filter(nil), + access([t.tinyint_t], [t.utinyint_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = utinyint_t from t limit 1; ++------------------------+ +| tinyint_t = utinyint_t | ++------------------------+ +| NULL | ++------------------------+ +EXPLAIN select tinyint_t = usmallint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.usmallint_t]), filter(nil), + access([t.tinyint_t], [t.usmallint_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = usmallint_t from t limit 1; ++--------------------------+ +| tinyint_t = usmallint_t | ++--------------------------+ +| NULL | ++--------------------------+ +EXPLAIN select tinyint_t = umedium_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.umedium_t]), filter(nil), + access([t.tinyint_t], [t.umedium_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = umedium_t from t limit 1; ++------------------------+ +| tinyint_t = umedium_t | ++------------------------+ +| NULL | ++------------------------+ +EXPLAIN select tinyint_t = uint32_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.uint32_t]), filter(nil), + access([t.tinyint_t], [t.uint32_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = uint32_t from t limit 1; ++-----------------------+ +| tinyint_t = uint32_t | ++-----------------------+ +| NULL | ++-----------------------+ +EXPLAIN select tinyint_t = ubigint_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.ubigint_t]), filter(nil), + access([t.tinyint_t], [t.ubigint_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = ubigint_t from t limit 1; ++------------------------+ +| tinyint_t = ubigint_t | ++------------------------+ +| NULL | ++------------------------+ +EXPLAIN select tinyint_t = float_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DOUBLE(-1, -1)) = cast(t.float_t, DOUBLE(-1, -1))]), filter(nil), + access([t.tinyint_t], [t.float_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = float_t from t limit 1; ++---------------------+ +| tinyint_t = float_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select tinyint_t = ufloat_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DOUBLE(-1, -1)) = cast(t.ufloat_t, DOUBLE(-1, -1))]), filter(nil), + access([t.tinyint_t], [t.ufloat_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = ufloat_t from t limit 1; ++-----------------------+ +| tinyint_t = ufloat_t | ++-----------------------+ +| NULL | ++-----------------------+ +EXPLAIN select tinyint_t = double_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DOUBLE(-1, -1)) = t.double_t]), filter(nil), + access([t.tinyint_t], [t.double_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = double_t from t limit 1; ++----------------------+ +| tinyint_t = double_t | ++----------------------+ +| NULL | ++----------------------+ +EXPLAIN select tinyint_t = udouble_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DOUBLE(-1, -1)) = cast(t.udouble_t, DOUBLE(-1, -1))]), filter(nil), + access([t.tinyint_t], [t.udouble_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = udouble_t from t limit 1; ++------------------------+ +| tinyint_t = udouble_t | ++------------------------+ +| NULL | ++------------------------+ +EXPLAIN select tinyint_t = number_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = t.number_t]), filter(nil), + access([t.tinyint_t], [t.number_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = number_t from t limit 1; ++----------------------+ +| tinyint_t = number_t | ++----------------------+ +| NULL | ++----------------------+ +EXPLAIN select tinyint_t = unumber_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = cast(t.unumber_t, DECIMAL(10, 0))]), filter(nil), + access([t.tinyint_t], [t.unumber_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = unumber_t from t limit 1; ++------------------------+ +| tinyint_t = unumber_t | ++------------------------+ +| NULL | ++------------------------+ +EXPLAIN select tinyint_t = datetime_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DATETIME(-1, -1)) = t.datetime_t]), filter(nil), + access([t.tinyint_t], [t.datetime_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = datetime_t from t limit 1; ++------------------------+ +| tinyint_t = datetime_t | ++------------------------+ +| NULL | ++------------------------+ +EXPLAIN select tinyint_t = timestamp_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, TIMESTAMP(-1, -1)) = t.timestamp_t]), filter(nil), + access([t.tinyint_t], [t.timestamp_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = timestamp_t from t limit 1; ++--------------------------+ +| tinyint_t = timestamp_t | ++--------------------------+ +| NULL | ++--------------------------+ +EXPLAIN select tinyint_t = date_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DATE(-1, -1)) = t.date_t]), filter(nil), + access([t.tinyint_t], [t.date_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = date_t from t limit 1; ++---------------------+ +| tinyint_t = date_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select tinyint_t = time_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, TIME(-1, -1)) = t.time_t]), filter(nil), + access([t.tinyint_t], [t.time_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = time_t from t limit 1; ++---------------------+ +| tinyint_t = time_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select tinyint_t = year_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = cast(t.year_t, DECIMAL(4, 0))]), filter(nil), + access([t.tinyint_t], [t.year_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = year_t from t limit 1; ++---------------------+ +| tinyint_t = year_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select tinyint_t = varchar_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = cast(t.varchar_t, DECIMAL(-1, -1))]), filter(nil), + access([t.tinyint_t], [t.varchar_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = varchar_t from t limit 1; ++-----------------------+ +| tinyint_t = varchar_t | ++-----------------------+ +| NULL | ++-----------------------+ +EXPLAIN select tinyint_t = char_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = cast(t.char_t, DECIMAL(-1, -1))]), filter(nil), + access([t.tinyint_t], [t.char_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = char_t from t limit 1; ++---------------------+ +| tinyint_t = char_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select tinyint_t = tinytext_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = cast(t.tinytext_t, DECIMAL(-1, -1))]), filter(nil), + access([t.tinyint_t], [t.tinytext_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = tinytext_t from t limit 1; ++-------------------------+ +| tinyint_t = tinytext_t | ++-------------------------+ +| NULL | ++-------------------------+ +EXPLAIN select tinyint_t = mediumtext_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = cast(t.mediumtext_t, DECIMAL(-1, -1))]), filter(nil), + access([t.tinyint_t], [t.mediumtext_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = mediumtext_t from t limit 1; ++---------------------------+ +| tinyint_t = mediumtext_t | ++---------------------------+ +| NULL | ++---------------------------+ +EXPLAIN select tinyint_t = longtext_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = cast(t.longtext_t, DECIMAL(-1, -1))]), filter(nil), + access([t.tinyint_t], [t.longtext_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = longtext_t from t limit 1; ++-------------------------+ +| tinyint_t = longtext_t | ++-------------------------+ +| NULL | ++-------------------------+ +EXPLAIN select tinyint_t = bit_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([cast(t.tinyint_t, DECIMAL(4, 0)) = cast(t.bit_t, DECIMAL(1, 0))]), filter(nil), + access([t.tinyint_t], [t.bit_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = bit_t from t limit 1; ++-------------------+ +| tinyint_t = bit_t | ++-------------------+ +| NULL | ++-------------------+ +EXPLAIN select tinyint_t = enum_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.enum_t]), filter(nil), + access([t.tinyint_t], [t.enum_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = enum_t from t limit 1; ++---------------------+ +| tinyint_t = enum_t | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select tinyint_t = set_t from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.tinyint_t = t.set_t]), filter(nil), + access([t.tinyint_t], [t.set_t]), partitions(p0), + limit(1), offset(nil) + +select tinyint_t = set_t from t limit 1; ++--------------------+ +| tinyint_t = set_t | ++--------------------+ +| NULL | ++--------------------+ + +Row With NULL +EXPLAIN select (1, 1) = (1, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) = (1, null) from dual; ++--------------------+ +| (1, 1) = (1, null) | ++--------------------+ +| NULL | ++--------------------+ +EXPLAIN select (1, 1) = (2, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) = (2, null) from dual; ++--------------------+ +| (1, 1) = (2, null) | ++--------------------+ +| 0 | ++--------------------+ + +EXPLAIN select (1, 1) < (1, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) < (1, null) from dual; ++--------------------+ +| (1, 1) < (1, null) | ++--------------------+ +| NULL | ++--------------------+ +EXPLAIN select (1, 1) < (2, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) < (2, null) from dual; ++--------------------+ +| (1, 1) < (2, null) | ++--------------------+ +| 1 | ++--------------------+ + +EXPLAIN select (1, 1) <= (1, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) <= (1, null) from dual; ++---------------------+ +| (1, 1) <= (1, null) | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select (1, 1) <= (2, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) <= (2, null) from dual; ++---------------------+ +| (1, 1) <= (2, null) | ++---------------------+ +| 1 | ++---------------------+ + +EXPLAIN select (1, 1) > (1, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) > (1, null) from dual; ++--------------------+ +| (1, 1) > (1, null) | ++--------------------+ +| NULL | ++--------------------+ +EXPLAIN select (1, 1) > (2, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) > (2, null) from dual; ++--------------------+ +| (1, 1) > (2, null) | ++--------------------+ +| 0 | ++--------------------+ + +EXPLAIN select (1, 1) >= (1, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) >= (1, null) from dual; ++---------------------+ +| (1, 1) >= (1, null) | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select (1, 1) >= (2, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) >= (2, null) from dual; ++---------------------+ +| (1, 1) >= (2, null) | ++---------------------+ +| 0 | ++---------------------+ + +EXPLAIN select (1, 1) != (1, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) != (1, null) from dual; ++---------------------+ +| (1, 1) != (1, null) | ++---------------------+ +| NULL | ++---------------------+ +EXPLAIN select (1, 1) != (2, null) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil) + values({?}) + +select (1, 1) != (2, null) from dual; ++---------------------+ +| (1, 1) != (2, null) | ++---------------------+ +| 1 | ++---------------------+ + +EXPLAIN select (1, 1) = (1, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) = (1, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) = (1, tinyint_t) from t limit 1; ++-------------------------+ +| (1, 1) = (1, tinyint_t) | ++-------------------------+ +| NULL | ++-------------------------+ +EXPLAIN select (1, 1) = (2, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) = (2, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) = (2, tinyint_t) from t limit 1; ++-------------------------+ +| (1, 1) = (2, tinyint_t) | ++-------------------------+ +| 0 | ++-------------------------+ + +EXPLAIN select (1, 1) < (1, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) < (1, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) < (1, tinyint_t) from t limit 1; ++-------------------------+ +| (1, 1) < (1, tinyint_t) | ++-------------------------+ +| NULL | ++-------------------------+ +EXPLAIN select (1, 1) < (2, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) < (2, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) < (2, tinyint_t) from t limit 1; ++-------------------------+ +| (1, 1) < (2, tinyint_t) | ++-------------------------+ +| 1 | ++-------------------------+ + +EXPLAIN select (1, 1) <= (1, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) <= (1, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) <= (1, tinyint_t) from t limit 1; ++--------------------------+ +| (1, 1) <= (1, tinyint_t) | ++--------------------------+ +| NULL | ++--------------------------+ +EXPLAIN select (1, 1) <= (2, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) <= (2, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) <= (2, tinyint_t) from t limit 1; ++--------------------------+ +| (1, 1) <= (2, tinyint_t) | ++--------------------------+ +| 1 | ++--------------------------+ + +EXPLAIN select (1, 1) > (1, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) > (1, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) > (1, tinyint_t) from t limit 1; ++-------------------------+ +| (1, 1) > (1, tinyint_t) | ++-------------------------+ +| NULL | ++-------------------------+ +EXPLAIN select (1, 1) > (2, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) > (2, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) > (2, tinyint_t) from t limit 1; ++-------------------------+ +| (1, 1) > (2, tinyint_t) | ++-------------------------+ +| 0 | ++-------------------------+ + +EXPLAIN select (1, 1) >= (1, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) >= (1, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) >= (1, tinyint_t) from t limit 1; ++--------------------------+ +| (1, 1) >= (1, tinyint_t) | ++--------------------------+ +| NULL | ++--------------------------+ +EXPLAIN select (1, 1) >= (2, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) >= (2, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) >= (2, tinyint_t) from t limit 1; ++--------------------------+ +| (1, 1) >= (2, tinyint_t) | ++--------------------------+ +| 0 | ++--------------------------+ + +EXPLAIN select (1, 1) != (1, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) != (1, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) != (1, tinyint_t) from t limit 1; ++--------------------------+ +| (1, 1) != (1, tinyint_t) | ++--------------------------+ +| NULL | ++--------------------------+ +EXPLAIN select (1, 1) != (2, tinyint_t) from t limit 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |1 |36 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([(1, 1) != (2, t.tinyint_t)]), filter(nil), + access([t.tinyint_t]), partitions(p0), + limit(1), offset(nil) + +select (1, 1) != (2, tinyint_t) from t limit 1; ++--------------------------+ +| (1, 1) != (2, tinyint_t) | ++--------------------------+ +| 1 | ++--------------------------+ + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_hash.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_hash.result new file mode 100644 index 000000000..f63ba23e5 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/static_engine_hash.result @@ -0,0 +1,59 @@ +result_format: 4 +alter system set enable_async_syslog = false; +set @@ob_enable_plan_cache = 0; + +drop table if exists t1; +drop table if exists t2; +drop table if exists t3; + +create table t1(c1 tinyint, c2 smallint, c3 mediumint, c4 int, c5 bigint, c6 tinyint unsigned, c7 smallint unsigned, c8 mediumint unsigned, c9 int unsigned, c10 bigint unsigned, c11 float, c12 double, c13 float unsigned, c14 double unsigned); +insert into t1 values(null,null,null,null,null,null,null,null,null,null,null,null,null,null); +insert into t1 values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11.1, 12.2, 13.3, 14.4); +create table t2(c1 date, c2 time, c3 datetime, c4 timestamp, c5 year); +insert into t2 values(null,null,null,null,null); +insert into t2 values('0000-00-00', '12:34:56', '2019-12-25 12:34:56', '2019-12-25 12:34:56', 2020); +create table t3(c1 char(10), c2 varchar(10), c3 binary(10), c4 varbinary(10), c5 blob, c6 text, c7 enum('','abc'), c8 set('','abc')); +insert into t3 values(null,null,null,null,null,null,null,null); +insert into t3 values('abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc', 'abc'); + + +select c1, partition_key_v2(null), partition_key_v2(c1), partition_key_v2(c2), partition_key_v2(c3), partition_key_v2(c4), partition_key_v2(c5), partition_key_v2(c6), partition_key_v2(c7), partition_key_v2(c8), partition_key_v2(c9), partition_key_v2(c10), partition_key_v2(c11), partition_key_v2(c12), partition_key_v2(c13), partition_key_v2(c14) from t1; ++------+------------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| c1 | partition_key_v2(null) | partition_key_v2(c1) | partition_key_v2(c2) | partition_key_v2(c3) | partition_key_v2(c4) | partition_key_v2(c5) | partition_key_v2(c6) | partition_key_v2(c7) | partition_key_v2(c8) | partition_key_v2(c9) | partition_key_v2(c10) | partition_key_v2(c11) | partition_key_v2(c12) | partition_key_v2(c13) | partition_key_v2(c14) | ++------+------------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +| NULL | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | +| 1 | 6960269033020761575 | 8089716718896805586 | 4083905729319787502 | 5173830478357570162 | 4802761344231991206 | 208465272938114760 | 3091397795597481564 | 6469252686979372057 | 5312865287321056581 | 3253817828616337504 | 7188666914263997357 | 554171766401687642 | 1209923708429642637 | 3652659264439090126 | 1116622728199546839 | ++------+------------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+-----------------------+-----------------------+-----------------------+-----------------------+-----------------------+ +select partition_key_v2(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14) from t1; ++-------------------------------------------------------------------------------+ +| partition_key_v2(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14) | ++-------------------------------------------------------------------------------+ +| 8669936285899323595 | +| 3319342296135249634 | ++-------------------------------------------------------------------------------+ +select c1, partition_key_v2(c1), partition_key_v2(c2), partition_key_v2(c3), partition_key_v2(c4), partition_key_v2(c5) from t2; ++------------+----------------------+----------------------+----------------------+----------------------+----------------------+ +| c1 | partition_key_v2(c1) | partition_key_v2(c2) | partition_key_v2(c3) | partition_key_v2(c4) | partition_key_v2(c5) | ++------------+----------------------+----------------------+----------------------+----------------------+----------------------+ +| NULL | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | +| 0000-00-00 | 4118494407655268559 | 7068692680032799961 | 905094948208870081 | 6483578642322323262 | 1051853082033653591 | ++------------+----------------------+----------------------+----------------------+----------------------+----------------------+ +select partition_key_v2(c1, c2, c3, c4, c5 from t2; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'from t2' at line 1 +select c1, partition_key_v2(c1), partition_key_v2(c2), partition_key_v2(c3), partition_key_v2(c4), partition_key_v2(c5), partition_key_v2(c6), partition_key_v2(c7), partition_key_v2(c8) from t3; ++------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+ +| c1 | partition_key_v2(c1) | partition_key_v2(c2) | partition_key_v2(c3) | partition_key_v2(c4) | partition_key_v2(c5) | partition_key_v2(c6) | partition_key_v2(c7) | partition_key_v2(c8) | ++------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+ +| NULL | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | 6960269033020761575 | +| abc | 258901174748407223 | 258901174748407223 | 1050281475281956529 | 7076783908008484943 | 7076783908008484943 | 258901174748407223 | 4083905729319787502 | 4083905729319787502 | ++------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+ +select partition_key_v2(c1, c2, c3, c4, c5, c6, c7, c8) from t3; ++--------------------------------------------------+ +| partition_key_v2(c1, c2, c3, c4, c5, c6, c7, c8) | ++--------------------------------------------------+ +| 6029179996760524639 | +| 644396205906272596 | ++--------------------------------------------------+ +drop table t1; +drop table t2; +drop table t3; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/subplan_filter.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/subplan_filter.result new file mode 100644 index 000000000..66e5d11af --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/subplan_filter.result @@ -0,0 +1,667 @@ +result_format: 4 + +drop table if exists t1; +drop table if exists t2; +create table t1 (c1 int primary key, c2 decimal, c3 int, c4 varchar(20)); +create table t2 (c1 int primary key, c2 decimal, c3 int, c4 varchar(20)); +insert into t1 (c1, c2, c3, c4) values (1, 1, 1, 'a'); +insert into t1 (c1, c2, c3, c4) values (2, 2, null, 'a'); +insert into t1 (c1, c2, c3, c4) values (3, 3, null, 'a'); +insert into t2 (c1, c2, c3, c4) values (1, 1, 1, 'a'); +insert into t2 (c1, c2, c3, c4) values (2, 2, null, 'a'); +insert into t2 (c1, c2, c3, c4) values (3, 3, null, 'a'); + + + +set @@ob_enable_plan_cache = 0; +set ob_enable_transformation = off; +select (1, 1) = (1, 0); ++-----------------+ +| (1, 1) = (1, 0) | ++-----------------+ +| 0 | ++-----------------+ +select (1, 1) = (1, 1); ++-----------------+ +| (1, 1) = (1, 1) | ++-----------------+ +| 1 | ++-----------------+ + +select 1 <=> 1; ++---------+ +| 1 <=> 1 | ++---------+ +| 1 | ++---------+ +select 1 <=> 0; ++---------+ +| 1 <=> 0 | ++---------+ +| 0 | ++---------+ +select 1 <=> null; ++------------+ +| 1 <=> null | ++------------+ +| 0 | ++------------+ +select null <=> 1; ++------------+ +| null <=> 1 | ++------------+ +| 0 | ++------------+ +select null <=> null; ++---------------+ +| null <=> null | ++---------------+ +| 1 | ++---------------+ + +select (1, 1) <=> (1, 1); ++-------------------+ +| (1, 1) <=> (1, 1) | ++-------------------+ +| 1 | ++-------------------+ +select (1, null) <=> (1, 1); ++----------------------+ +| (1, null) <=> (1, 1) | ++----------------------+ +| 0 | ++----------------------+ +select (1, null) <=> (1, null); ++-------------------------+ +| (1, null) <=> (1, null) | ++-------------------------+ +| 1 | ++-------------------------+ +select (1, null) <=> (null, null); ++----------------------------+ +| (1, null) <=> (null, null) | ++----------------------------+ +| 0 | ++----------------------------+ +select (null, null) <=> (null, null); ++-------------------------------+ +| (null, null) <=> (null, null) | ++-------------------------------+ +| 1 | ++-------------------------------+ + +select (select c1, c2 from t1 where c1 = 1) = (1, 1) from t2 where c1 = 1; ++-----------------------------------------------+ +| (select c1, c2 from t1 where c1 = 1) = (1, 1) | ++-----------------------------------------------+ +| 1 | ++-----------------------------------------------+ +select (select c1, c2 from t1 where c1 = 1) = (c2, c1) from t2 where c1 = 1; ++-------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 1) = (c2, c1) | ++-------------------------------------------------+ +| 1 | ++-------------------------------------------------+ + +select (select c1 from t1 where c1 = 1) + 1 from t2 where c1 = 1; ++--------------------------------------+ +| (select c1 from t1 where c1 = 1) + 1 | ++--------------------------------------+ +| 2 | ++--------------------------------------+ +select (select c1 from t1 where 1 = 0) + 1 from t2 where c1 = 1; ++-------------------------------------+ +| (select c1 from t1 where 1 = 0) + 1 | ++-------------------------------------+ +| NULL | ++-------------------------------------+ + +select c2 in (select c2 from t2) from t1; ++---------------------------+ +| c2 in (select c2 from t2) | ++---------------------------+ +| 1 | +| 1 | +| 1 | ++---------------------------+ +select c2 = any(select c2 from t2) from t1; ++-----------------------------+ +| c2 = any(select c2 from t2) | ++-----------------------------+ +| 1 | +| 1 | +| 1 | ++-----------------------------+ +select c2 != any(select c2 from t2) from t1; ++------------------------------+ +| c2 != any(select c2 from t2) | ++------------------------------+ +| 1 | +| 1 | +| 1 | ++------------------------------+ +select c2 < any(select c2 from t2) from t1; ++-----------------------------+ +| c2 < any(select c2 from t2) | ++-----------------------------+ +| 1 | +| 1 | +| 0 | ++-----------------------------+ +select c2 <= any(select c2 from t2) from t1; ++------------------------------+ +| c2 <= any(select c2 from t2) | ++------------------------------+ +| 1 | +| 1 | +| 1 | ++------------------------------+ +select c2 > any(select c2 from t2) from t1; ++-----------------------------+ +| c2 > any(select c2 from t2) | ++-----------------------------+ +| 0 | +| 1 | +| 1 | ++-----------------------------+ +select c2 >= any(select c2 from t2) from t1; ++------------------------------+ +| c2 >= any(select c2 from t2) | ++------------------------------+ +| 1 | +| 1 | +| 1 | ++------------------------------+ +select c2 <=> any(select c2 from t2) from t1; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '(select c2 from t2) from t1' at line 1 +select exists (select * from t2), not exists (select * from t2) from t1; ++---------------------------+-------------------------------+ +| exists (select * from t2) | not exists (select * from t2) | ++---------------------------+-------------------------------+ +| 1 | 0 | +| 1 | 0 | +| 1 | 0 | ++---------------------------+-------------------------------+ +select exists (select * from t2 where 1 = 0), not exists (select * from t2 where 1 = 0) from t1; ++---------------------------------------+-------------------------------------------+ +| exists (select * from t2 where 1 = 0) | not exists (select * from t2 where 1 = 0) | ++---------------------------------------+-------------------------------------------+ +| 0 | 1 | +| 0 | 1 | +| 0 | 1 | ++---------------------------------------+-------------------------------------------+ + +select c2 = all (select c2 from t2) from t1; ++------------------------------+ +| c2 = all (select c2 from t2) | ++------------------------------+ +| 0 | +| 0 | +| 0 | ++------------------------------+ +select c2 = any (select c2 from t2) from t1; ++------------------------------+ +| c2 = any (select c2 from t2) | ++------------------------------+ +| 1 | +| 1 | +| 1 | ++------------------------------+ + +select c2 = all (select c3 from t2) from t1; ++------------------------------+ +| c2 = all (select c3 from t2) | ++------------------------------+ +| NULL | +| 0 | +| 0 | ++------------------------------+ +select c2 = any (select c3 from t2) from t1; ++------------------------------+ +| c2 = any (select c3 from t2) | ++------------------------------+ +| 1 | +| NULL | +| NULL | ++------------------------------+ + +select c3 = all (select c2 from t2) from t1; ++------------------------------+ +| c3 = all (select c2 from t2) | ++------------------------------+ +| 0 | +| NULL | +| NULL | ++------------------------------+ +select c3 = any (select c2 from t2) from t1; ++------------------------------+ +| c3 = any (select c2 from t2) | ++------------------------------+ +| 1 | +| NULL | +| NULL | ++------------------------------+ + +select c3 <=> (select c2 from t2) from t1; +ERROR 21000: Subquery returns more than 1 row + +select (c1, c3) = all (select c1, c2 from t2) from t1; ++----------------------------------------+ +| (c1, c3) = all (select c1, c2 from t2) | ++----------------------------------------+ +| 0 | +| 0 | +| 0 | ++----------------------------------------+ +select (c1, c3) = any (select c1, c2 from t2) from t1; ++----------------------------------------+ +| (c1, c3) = any (select c1, c2 from t2) | ++----------------------------------------+ +| 1 | +| NULL | +| NULL | ++----------------------------------------+ +select (c1, c3) <=> (select c1, c2 from t2) from t1; +ERROR 21000: Subquery returns more than 1 row + +select exists (select 1); ++-------------------+ +| exists (select 1) | ++-------------------+ +| 1 | ++-------------------+ +select not exists (select 1); ++-----------------------+ +| not exists (select 1) | ++-----------------------+ +| 0 | ++-----------------------+ +select 1 from dual where exists (select c1 from t2); ++---+ +| 1 | ++---+ +| 1 | ++---+ +select 1 from dual where not exists (select c1 from t2); ++---+ +| 1 | ++---+ ++---+ +select * from t1 where exists (select * from t2 where c1 < 0); ++----+------+------+------+ +| c1 | c2 | c3 | c4 | ++----+------+------+------+ ++----+------+------+------+ +select * from t1 where exists (select * from t2 where c1 > 0); ++----+------+------+------+ +| c1 | c2 | c3 | c4 | ++----+------+------+------+ +| 1 | 1 | 1 | a | +| 2 | 2 | NULL | a | +| 3 | 3 | NULL | a | ++----+------+------+------+ + +select (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 = 1); ++-----------------------------------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 = 1) | ++-----------------------------------------------------------------------------+ +| 1 | ++-----------------------------------------------------------------------------+ +select (select c1, c2 from t1 where c1 = 0) = (select c1, c2 from t2 where c1 = 1); ++-----------------------------------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 0) = (select c1, c2 from t2 where c1 = 1) | ++-----------------------------------------------------------------------------+ +| NULL | ++-----------------------------------------------------------------------------+ +select (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 = 0); ++-----------------------------------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 = 0) | ++-----------------------------------------------------------------------------+ +| NULL | ++-----------------------------------------------------------------------------+ +select (select c1, c2 from t1 where c1 = 0) = (select c1, c2 from t2 where c1 = 0); ++-----------------------------------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 0) = (select c1, c2 from t2 where c1 = 0) | ++-----------------------------------------------------------------------------+ +| NULL | ++-----------------------------------------------------------------------------+ +select (select c1, c2 from t1 where c1 = 1) <=> (select c1, c2 from t2 where c1 = 1); ++-------------------------------------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 1) <=> (select c1, c2 from t2 where c1 = 1) | ++-------------------------------------------------------------------------------+ +| 1 | ++-------------------------------------------------------------------------------+ +select (select c1, c2 from t1 where c1 = 0) <=> (select c1, c2 from t2 where c1 = 1); ++-------------------------------------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 0) <=> (select c1, c2 from t2 where c1 = 1) | ++-------------------------------------------------------------------------------+ +| 0 | ++-------------------------------------------------------------------------------+ +select (select c1, c2 from t1 where c1 = 1) <=> (select c1, c2 from t2 where c1 = 0); ++-------------------------------------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 1) <=> (select c1, c2 from t2 where c1 = 0) | ++-------------------------------------------------------------------------------+ +| 0 | ++-------------------------------------------------------------------------------+ +select (select c1, c2 from t1 where c1 = 0) <=> (select c1, c2 from t2 where c1 = 0); ++-------------------------------------------------------------------------------+ +| (select c1, c2 from t1 where c1 = 0) <=> (select c1, c2 from t2 where c1 = 0) | ++-------------------------------------------------------------------------------+ +| 1 | ++-------------------------------------------------------------------------------+ +select (select c1, c2 from t1 where c1 > 1) = (select c1, c2 from t2 where c1 = 1); +ERROR 21000: Subquery returns more than 1 row +select (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 > 1); +ERROR 21000: Subquery returns more than 1 row +select (select c1, c2 from t1 where c1 > 1) = (select c1, c2 from t2 where c1 > 1); +ERROR 21000: Subquery returns more than 1 row + +explain_protocol: 2 +EXPLAIN select c1 + (select c2 from t2 where c1 = 2), c2 in (select c3 from t2) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |128 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |52 | +|3 | TABLE SCAN |t2 |3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c1, DECIMAL(11, 0)) + ?], [t1.c2 = ANY(subquery(2))]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_([2]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 3 - output([cast(t2.c3, DECIMAL(11, 0))]), filter(nil), + access([t2.c3]), partitions(p0) + +select c1 + (select c2 from t2 where c1 = 2), c2 in (select c3 from t2) from t1; ++---------------------------------------+---------------------------+ +| c1 + (select c2 from t2 where c1 = 2) | c2 in (select c3 from t2) | ++---------------------------------------+---------------------------+ +| 3 | 1 | +| 4 | NULL | +| 5 | NULL | ++---------------------------------------+---------------------------+ +EXPLAIN select c1 + (select c2 from t2 where c1 = t1.c2 and c3 <= t1.c2) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |146 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([cast(t1.c1, DECIMAL(11, 0)) + subquery(1)]), filter(nil), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 2 - output([t2.c2]), filter([cast(t2.c3, DECIMAL(11, 0)) <= ?]), + access([t2.c3], [t2.c2]), partitions(p0) + +select c1 + (select c2 from t2 where c1 = t1.c2 and c3 <= t1.c2) from t1; ++-----------------------------------------------------------+ +| c1 + (select c2 from t2 where c1 = t1.c2 and c3 <= t1.c2) | ++-----------------------------------------------------------+ +| 2 | +| NULL | +| NULL | ++-----------------------------------------------------------+ +EXPLAIN select * from t1 where c1 + (select c2 from t2 where c1 = t1.c2 and c3 <= t1.c2) < 10; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |146 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4]), filter([cast(t1.c1, DECIMAL(11, 0)) + subquery(1) < ?]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c2], [t1.c1], [t1.c3], [t1.c4]), filter(nil), + access([t1.c2], [t1.c1], [t1.c3], [t1.c4]), partitions(p0) + 2 - output([t2.c2]), filter([cast(t2.c3, DECIMAL(11, 0)) <= ?]), + access([t2.c3], [t2.c2]), partitions(p0) + +select * from t1 where c1 + (select c2 from t2 where c1 = t1.c2 and c3 <= t1.c2) < 10; ++----+------+------+------+ +| c1 | c2 | c3 | c4 | ++----+------+------+------+ +| 1 | 1 | 1 | a | ++----+------+------+------+ + +EXPLAIN select (select c1, c2 from t2 where c1 = 1) = (c2, c1) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |90 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |52 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([subquery(1) = (t1.c2, cast(t1.c1, DECIMAL(11, 0)))]), filter(nil), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 2 - output([cast(t2.c1, DECIMAL(11, 0))], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select (select c1, c2 from t2 where c1 = 1) = (c2, c1) from t1; ++-------------------------------------------------+ +| (select c1, c2 from t2 where c1 = 1) = (c2, c1) | ++-------------------------------------------------+ +| 1 | +| 0 | +| 0 | ++-------------------------------------------------+ +EXPLAIN select (select c1, c2 from t2 where c1 = 1) = (c1, c2) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |90 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |52 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([subquery(1) = (t1.c1, t1.c2)]), filter(nil), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select (select c1, c2 from t2 where c1 = 1) = (c1, c2) from t1; ++-------------------------------------------------+ +| (select c1, c2 from t2 where c1 = 1) = (c1, c2) | ++-------------------------------------------------+ +| 1 | +| 0 | +| 0 | ++-------------------------------------------------+ +EXPLAIN select (c2, c1) <= (select c1, c2 from t2 where c1 = 1) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |90 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |52 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([(t1.c2, cast(t1.c1, DECIMAL(11, 0))) <= subquery(1)]), filter(nil), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 2 - output([cast(t2.c1, DECIMAL(11, 0))], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select (c2, c1) <= (select c1, c2 from t2 where c1 = 1) from t1; ++--------------------------------------------------+ +| (c2, c1) <= (select c1, c2 from t2 where c1 = 1) | ++--------------------------------------------------+ +| 1 | +| 0 | +| 0 | ++--------------------------------------------------+ +EXPLAIN select (c1, c2) <= (select c1, c2 from t2 where c1 = 1) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |90 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |52 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([(t1.c1, t1.c2) <= subquery(1)]), filter(nil), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select (c1, c2) <= (select c1, c2 from t2 where c1 = 1) from t1; ++--------------------------------------------------+ +| (c1, c2) <= (select c1, c2 from t2 where c1 = 1) | ++--------------------------------------------------+ +| 1 | +| 0 | +| 0 | ++--------------------------------------------------+ +EXPLAIN select (select c2, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |141 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |52 | +|3 | TABLE GET |t2 |1 |52 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1) >= subquery(2)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c2], [cast(t2.c1, DECIMAL(11, 0))]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 3 - output([cast(t2.c1, DECIMAL(11, 0))], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select (select c2, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) from t1; ++------------------------------------------------------------------------------+ +| (select c2, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) | ++------------------------------------------------------------------------------+ +| 1 | +| 1 | +| 1 | ++------------------------------------------------------------------------------+ +EXPLAIN select (select c1, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |141 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |52 | +|3 | TABLE GET |t2 |1 |52 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1) >= subquery(2)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c1], [cast(t2.c1, DECIMAL(11, 0))]), filter(nil), + access([t2.c1]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select (select c1, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) from t1; ++------------------------------------------------------------------------------+ +| (select c1, c1 from t2 where c1 = 2) >= (select c1, c2 from t2 where c1 = 1) | ++------------------------------------------------------------------------------+ +| 1 | +| 1 | +| 1 | ++------------------------------------------------------------------------------+ + +EXPLAIN select c2 > (select c1 from t2 where c3 is not null) from t1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |74 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE SCAN |t2 |3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2 > ?]), filter(nil), + exec_params_(nil), onetime_exprs_([cast(subquery(1), DECIMAL(11, 0))]), init_plan_idxs_(nil) + 1 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 2 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1]), partitions(p0) + +select c2 > (select c1 from t2 where c3 is not null) from t1; ++-----------------------------------------------+ +| c2 > (select c1 from t2 where c3 is not null) | ++-----------------------------------------------+ +| 0 | +| 1 | +| 1 | ++-----------------------------------------------+ +EXPLAIN select * from t1 where c2 + (select c1 from t2 where c1 = t1.c2) < 10; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |145 | +|1 | TABLE SCAN |t1 |3 |37 | +|2 | TABLE GET |t2 |1 |36 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4]), filter([t1.c2 + cast(subquery(1), DECIMAL(11, 0)) < ?]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c2], [t1.c1], [t1.c3], [t1.c4]), filter(nil), + access([t1.c2], [t1.c1], [t1.c3], [t1.c4]), partitions(p0) + 2 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select * from t1 where c2 + (select c1 from t2 where c1 = t1.c2) < 10; ++----+------+------+------+ +| c1 | c2 | c3 | c4 | ++----+------+------+------+ +| 1 | 1 | 1 | a | +| 2 | 2 | NULL | a | +| 3 | 3 | NULL | a | ++----+------+------+------+ + +set ob_enable_transformation = on; diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/subplan_scan.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/subplan_scan.result similarity index 87% rename from test/mysql_test/test_suite/static_engine/r/mysql/subplan_scan.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/subplan_scan.result index 841f97a2d..9fba0c85e 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/subplan_scan.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/subplan_scan.result @@ -1,6 +1,5 @@ -connect syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection syscon; -connection default; +result_format: 4 + drop table if exists t1; create table t1 (c1 int, c2 int); insert into t1 (c1, c2) values (1, 1); @@ -8,9 +7,11 @@ insert into t1 (c1, c2) values (1, 1); insert into t1 (c1, c2) values (1, 2); insert into t1 (c1, c2) values (10, 10); insert into t1 (c1, c2) values (10, 10); -connection syscon; -connection default; + + + set @@ob_enable_plan_cache = 0; + explain select c2, sum(c1) from (select distinct c2, c1 from t1) x group by c2; Query Plan ========================================= @@ -36,10 +37,14 @@ Outputs & filters: access([t1.c2], [t1.c1]), partitions(p0) select c2, sum(c1) from (select distinct c2, c1 from t1) x group by c2; -c2 sum(c1) -1 1 -2 1 -10 10 ++------+---------+ +| c2 | sum(c1) | ++------+---------+ +| 1 | 1 | +| 2 | 1 | +| 10 | 10 | ++------+---------+ + explain select c2, sum(c1 + c2) from (select distinct c2, c1 from t1) x group by c2; Query Plan ========================================= @@ -65,10 +70,14 @@ Outputs & filters: access([t1.c2], [t1.c1]), partitions(p0) select c2, sum(c1 + c2) from (select distinct c2, c1 from t1) x group by c2; -c2 sum(c1 + c2) -1 2 -2 3 -10 20 ++------+--------------+ +| c2 | sum(c1 + c2) | ++------+--------------+ +| 1 | 2 | +| 2 | 3 | +| 10 | 20 | ++------+--------------+ + explain select c2, sum(c1 + c2), max(c3) from (select c1, c2, c1 + 2 as c3 from (select distinct c2, c1 from t1) x ) y group by c2; Query Plan ========================================= @@ -94,10 +103,14 @@ Outputs & filters: access([t1.c2], [t1.c1]), partitions(p0) select c2, sum(c1 + c2), max(c3) from (select c1, c2, c1 + 2 as c3 from (select distinct c2, c1 from t1) x ) y group by c2; -c2 sum(c1 + c2) max(c3) -1 2 3 -2 3 3 -10 20 12 ++------+--------------+---------+ +| c2 | sum(c1 + c2) | max(c3) | ++------+--------------+---------+ +| 1 | 2 | 3 | +| 2 | 3 | 3 | +| 10 | 20 | 12 | ++------+--------------+---------+ + explain select * from t1 where c2 in (select 1 from t1); Query Plan ======================================= @@ -122,7 +135,10 @@ Outputs & filters: access([t1.c2], [t1.c1]), partitions(p0) select * from t1 where c2 in (select 1 from t1); -c1 c2 -1 1 -1 1 -connection syscon; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 1 | ++------+------+ + diff --git a/test/mysql_test/test_suite/static_engine/r/mysql/table_insert.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/table_insert.result similarity index 53% rename from test/mysql_test/test_suite/static_engine/r/mysql/table_insert.result rename to tools/deploy/mysql_test/test_suite/static_engine/r/mysql/table_insert.result index 91691e524..5884f4725 100644 --- a/test/mysql_test/test_suite/static_engine/r/mysql/table_insert.result +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/table_insert.result @@ -1,36 +1,56 @@ -connect conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn_admin; +result_format: 4 alter system set enable_async_syslog = false; -connection default; + set @@ob_enable_plan_cache = 0; + drop table if exists t1, t2; create table t1 (c1 int primary key, c2 int unsigned, -c3 tinyint, c4 tinyint unsigned, -c5 smallint, c6 smallint unsigned, -c7 mediumint, c8 mediumint unsigned, -c9 integer, c10 integer unsigned, -c11 bigint, c12 bigint unsigned, -c13 float, c14 float unsigned, -c15 double, c16 double unsigned, -c17 decimal, c18 decimal unsigned, -c19 datetime, c20 timestamp, -c21 varchar(30), c22 char(30)); + c3 tinyint, c4 tinyint unsigned, + c5 smallint, c6 smallint unsigned, + c7 mediumint, c8 mediumint unsigned, + c9 integer, c10 integer unsigned, + c11 bigint, c12 bigint unsigned, + c13 float, c14 float unsigned, + c15 double, c16 double unsigned, + c17 decimal, c18 decimal unsigned, + c19 datetime, c20 timestamp, + c21 varchar(30), c22 char(30)); + insert into t1 values(1, 1, 1, 1, -1, 6, 7, 8, 9, 10, -11, 12, -13.1, 14.2, -15.01, 16.10, 17.001, 18.002, '2019-10-10 10:00:00', '2019-10-10 10:00:00', '21varchar', '22char'); insert into t1 values('2', '1', '1', '1', '-1', '6', '7', '8', '9', '10', '-11', '12', '-13.1', '14.2', '-15.01', '16.10', '17.001', '18.002', '2019-10-10 10:00:00', '2019-10-10 10:00:00', '21varchar', '22char'); insert into t1 values('3', '1', '1', '1', '-1', '6', '7', '8', '9', '10', '-11', '12', '-13.1', '14.2', '-15.01', '16.10', '17.001', '18.002', '2019-10-10 10:00:00', '2019-10-10 10:00:00', '21varchar', '22char'), ('4', '1', '1', '1', '-1', '16', '17', '18', '19', '11', '-11', '121', '-13.11', '14.21', '-15.011', '16.101', '17.1001', '18.1002', '2019-10-10 10:00:00.00', '2019-10-10 10:00:00.000', '21varchar1', '22char1'); + +explain_protocol: 2 +EXPLAIN select * from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |4 |39 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10], [t1.c11], [t1.c12], [t1.c13], [t1.c14], [t1.c15], [t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5], [t1.c6], [t1.c7], [t1.c8], [t1.c9], [t1.c10], [t1.c11], [t1.c12], [t1.c13], [t1.c14], [t1.c15], [t1.c16], [t1.c17], [t1.c18], [t1.c19], [t1.c20], [t1.c21], [t1.c22]), partitions(p0) + select * from t1; -c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 -1 1 1 1 -1 6 7 8 9 10 -11 12 -13.1 14.2 -15.01 16.1 17 18 2019-10-10 10:00:00 2019-10-10 10:00:00 21varchar 22char -2 1 1 1 -1 6 7 8 9 10 -11 12 -13.1 14.2 -15.01 16.1 17 18 2019-10-10 10:00:00 2019-10-10 10:00:00 21varchar 22char -3 1 1 1 -1 6 7 8 9 10 -11 12 -13.1 14.2 -15.01 16.1 17 18 2019-10-10 10:00:00 2019-10-10 10:00:00 21varchar 22char -4 1 1 1 -1 16 17 18 19 11 -11 121 -13.11 14.21 -15.011 16.101 17 18 2019-10-10 10:00:00 2019-10-10 10:00:00 21varchar1 22char1 ++----+------+------+------+------+------+------+------+------+------+------+------+--------+-------+---------+--------+------+------+---------------------+---------------------+------------+---------+ +| c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 | c16 | c17 | c18 | c19 | c20 | c21 | c22 | ++----+------+------+------+------+------+------+------+------+------+------+------+--------+-------+---------+--------+------+------+---------------------+---------------------+------------+---------+ +| 1 | 1 | 1 | 1 | -1 | 6 | 7 | 8 | 9 | 10 | -11 | 12 | -13.1 | 14.2 | -15.01 | 16.1 | 17 | 18 | 2019-10-10 10:00:00 | 2019-10-10 10:00:00 | 21varchar | 22char | +| 2 | 1 | 1 | 1 | -1 | 6 | 7 | 8 | 9 | 10 | -11 | 12 | -13.1 | 14.2 | -15.01 | 16.1 | 17 | 18 | 2019-10-10 10:00:00 | 2019-10-10 10:00:00 | 21varchar | 22char | +| 3 | 1 | 1 | 1 | -1 | 6 | 7 | 8 | 9 | 10 | -11 | 12 | -13.1 | 14.2 | -15.01 | 16.1 | 17 | 18 | 2019-10-10 10:00:00 | 2019-10-10 10:00:00 | 21varchar | 22char | +| 4 | 1 | 1 | 1 | -1 | 16 | 17 | 18 | 19 | 11 | -11 | 121 | -13.11 | 14.21 | -15.011 | 16.101 | 17 | 18 | 2019-10-10 10:00:00 | 2019-10-10 10:00:00 | 21varchar1 | 22char1 | ++----+------+------+------+------+------+------+------+------+------+------+------+--------+-------+---------+--------+------+------+---------------------+---------------------+------------+---------+ +explain_protocol: 0 set @@ob_enable_plan_cache = 1; // test ObDatumCaster::to_type() in ObExprValuesOp drop table t1; create table t1(c1 varchar(100) collate utf16_bin, -c2 varchar(100) collate utf8_general_ci, -c3 char(100) collate utf16_bin, -c4 char(100) collate utf8_general_ci); + c2 varchar(100) collate utf8_general_ci, + c3 char(100) collate utf16_bin, + c4 char(100) collate utf8_general_ci); ERROR HY000: Unknown collation: 'utf16_bin' // different value type, but will use same plan, so will to ObDatumCaster::to_type() insert into t1 values(123, 123, 123, 123); @@ -42,10 +62,11 @@ ERROR 42S02: Table 'test.t1' doesn't exist insert into t1 values('', '123', '123', 123); ERROR 42S02: Table 'test.t1' doesn't exist select c1, length(c1), -c2, length(c2), -c3, length(c3), -c4, length(c4) from t1; + c2, length(c2), + c3, length(c3), + c4, length(c4) from t1; ERROR 42S02: Table 'test.t1' doesn't exist + // insert decimal/int using different collation string delete from t1; ERROR 42S02: Table 'test.t1' doesn't exist @@ -63,22 +84,29 @@ ERROR 42S02: Table 'test.t1' doesn't exist insert into t2 select c4, c4, c4 from t1; ERROR 42S02: Table 'test.t1' doesn't exist select * from t2; -c1 c2 c3 -NULL NULL 1 -NULL NULL NULL ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ +| NULL | NULL | 1 | +| NULL | NULL | NULL | ++------+------+------+ + // test enumset drop table t1; ERROR 42S02: Unknown table 'test.t1' create table t1(c1 enum('a', 'b', 'c'), c2 set('a', 'b', 'c')); insert into t1 values(1, 1), (2, 2); select * from t1; -c1 c2 -a a -b b ++------+------+ +| c1 | c2 | ++------+------+ +| a | a | +| b | b | ++------+------+ drop table t2; create table t2(col_utf16 varchar(100) collate utf16_bin, -col_gbk varchar(100) collate gbk_chinese_ci, -col_utf8 varchar(100) collate utf8_general_ci); + col_gbk varchar(100) collate gbk_chinese_ci, + col_utf8 varchar(100) collate utf8_general_ci); ERROR HY000: Unknown collation: 'utf16_bin' insert into t2 values('a', 'a', 'a'); ERROR 42S02: Table 'test.t2' doesn't exist @@ -90,17 +118,24 @@ ERROR 42S02: Table 'test.t2' doesn't exist insert into t1 select col_utf8, col_utf8 from t2; ERROR 42S02: Table 'test.t2' doesn't exist select * from t1; -c1 c2 -a a -b b ++------+------+ +| c1 | c2 | ++------+------+ +| a | a | +| b | b | ++------+------+ + delete from t1; delete from t2; ERROR 42S02: Table 'test.t2' doesn't exist insert into t1 values('a', 'b'), ('b', 'c'); select * from t1; -c1 c2 -a b -b c ++------+------+ +| c1 | c2 | ++------+------+ +| a | b | +| b | c | ++------+------+ // insert different collation string using enum/set insert into t2 select c1, c1, c1 from t1; ERROR 42S02: Table 'test.t2' doesn't exist @@ -119,14 +154,19 @@ insert into t2 select c1, c1, c2 from t1; ERROR 42S02: Table 'test.t2' doesn't exist select * from t2; ERROR 42S02: Table 'test.t2' doesn't exist + drop table t1; drop table t2; ERROR 42S02: Unknown table 'test.t2' + drop table if exists t2; create table t2 (c1 int primary key, c2 int) partition by hash(c1) partitions 3; insert into t2 select -127,30 from dual; select * from t2 partition (p1); -c1 c2 --127 30 ++------+------+ +| c1 | c2 | ++------+------+ +| -127 | 30 | ++------+------+ drop table t2; -connection conn_admin; + diff --git a/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/table_scan.result b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/table_scan.result new file mode 100644 index 000000000..10c325aca --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/r/mysql/table_scan.result @@ -0,0 +1,309 @@ +result_format: 4 +explain_protocol: 0 + +drop table if exists t1; +create table t1 (c1 number, c2 number, c3 char(20), c4 varchar(20), primary key(c1, c2), index i1 (c2)); + +insert into t1 (c1, c2, c3, c4) values (1, 2, 'a', 'b'); +insert into t1 (c1, c2, c3, c4) values (3, 4, 'c', 'd'); +insert into t1 (c1, c2, c3, c4) values (5, 1, 'xx', 'yy'); +insert into t1 (c1, c2, c3, c4) values (5, 2, 'xx', 'yy'); +insert into t1 (c1, c2, c3, c4) values (7, 5, 'xx1', 'yy2'); +insert into t1 (c1, c2, c3, c4) values (7, 6, 'xx1', 'yy2'); +insert into t1 (c1, c2, c3, c4) values (8, 7, 'xx1', 'yy2'); + +alter table t1 add column c5 varchar(20) default 'c5_default'; + + + +set @@ob_enable_plan_cache = 0; +explain_protocol: 2 +EXPLAIN select * from t1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |7 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), partitions(p0) + +select * from t1; ++----+----+------+------+------------+ +| c1 | c2 | c3 | c4 | c5 | ++----+----+------+------+------------+ +| 1 | 2 | a | b | c5_default | +| 3 | 4 | c | d | c5_default | +| 5 | 1 | xx | yy | c5_default | +| 5 | 2 | xx | yy | c5_default | +| 7 | 5 | xx1 | yy2 | c5_default | +| 7 | 6 | xx1 | yy2 | c5_default | +| 8 | 7 | xx1 | yy2 | c5_default | ++----+----+------+------+------------+ +EXPLAIN select * from t1 order by c1 desc, c2 desc; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |TABLE SCAN|t1(Reverse)|7 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), partitions(p0) + +select * from t1 order by c1 desc, c2 desc; ++----+----+------+------+------------+ +| c1 | c2 | c3 | c4 | c5 | ++----+----+------+------+------------+ +| 8 | 7 | xx1 | yy2 | c5_default | +| 7 | 6 | xx1 | yy2 | c5_default | +| 7 | 5 | xx1 | yy2 | c5_default | +| 5 | 2 | xx | yy | c5_default | +| 5 | 1 | xx | yy | c5_default | +| 3 | 4 | c | d | c5_default | +| 1 | 2 | a | b | c5_default | ++----+----+------+------+------------+ +EXPLAIN select * from t1 where c1 + c2 < 10; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |3 |39 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter([t1.c1 + t1.c2 < ?]), + access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), partitions(p0) + +select * from t1 where c1 + c2 < 10; ++----+----+------+------+------------+ +| c1 | c2 | c3 | c4 | c5 | ++----+----+------+------+------------+ +| 1 | 2 | a | b | c5_default | +| 3 | 4 | c | d | c5_default | +| 5 | 1 | xx | yy | c5_default | +| 5 | 2 | xx | yy | c5_default | ++----+----+------+------+------------+ +EXPLAIN select * from t1 limit 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), partitions(p0), + limit(2), offset(nil) + +select * from t1 limit 2; ++----+----+------+------+------------+ +| c1 | c2 | c3 | c4 | c5 | ++----+----+------+------+------------+ +| 1 | 2 | a | b | c5_default | +| 3 | 4 | c | d | c5_default | ++----+----+------+------+------------+ +EXPLAIN select * from t1 where c1 = 5; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |2 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), partitions(p0) + +select * from t1 where c1 = 5; ++----+----+------+------+------------+ +| c1 | c2 | c3 | c4 | c5 | ++----+----+------+------+------------+ +| 5 | 1 | xx | yy | c5_default | +| 5 | 2 | xx | yy | c5_default | ++----+----+------+------+------------+ +EXPLAIN select * from t1 where c1 = 5 or c1 = 7; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |4 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), partitions(p0) + +select * from t1 where c1 = 5 or c1 = 7; ++----+----+------+------+------------+ +| c1 | c2 | c3 | c4 | c5 | ++----+----+------+------+------------+ +| 5 | 1 | xx | yy | c5_default | +| 5 | 2 | xx | yy | c5_default | +| 7 | 5 | xx1 | yy2 | c5_default | +| 7 | 6 | xx1 | yy2 | c5_default | ++----+----+------+------+------------+ +EXPLAIN select * from t1 where (c1 = 2 and c2 = 4) or (c1 = 7 and c2 = 5) or (c1 = 8 and c2 = 7); +Query Plan +================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------- +|0 |TABLE GET|t1 |3 |63 | +================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), partitions(p0) + +select * from t1 where (c1 = 2 and c2 = 4) or (c1 = 7 and c2 = 5) or (c1 = 8 and c2 = 7); ++----+----+------+------+------------+ +| c1 | c2 | c3 | c4 | c5 | ++----+----+------+------+------------+ +| 7 | 5 | xx1 | yy2 | c5_default | +| 8 | 7 | xx1 | yy2 | c5_default | ++----+----+------+------+------------+ + +EXPLAIN select * from t1 where c2 = 2 and c1 + c2 < 10 and c4 > c3; +Query Plan +===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |TABLE SCAN|t1(i1)|1 |88 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t1.c4], [t1.c5]), filter([t1.c1 + t1.c2 < ?], [t1.c4 > t1.c3]), + access([t1.c2], [t1.c1], [t1.c4], [t1.c3], [t1.c5]), partitions(p0) + +select * from t1 where c2 = 2 and c1 + c2 < 10 and c4 > c3; ++----+----+------+------+------------+ +| c1 | c2 | c3 | c4 | c5 | ++----+----+------+------+------------+ +| 1 | 2 | a | b | c5_default | +| 5 | 2 | xx | yy | c5_default | ++----+----+------+------+------------+ + +EXPLAIN select c1, c2 from t1 where c2 > 4; +Query Plan +===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |TABLE SCAN|t1(i1)|3 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select c1, c2 from t1 where c2 > 4; ++----+----+ +| c1 | c2 | ++----+----+ +| 7 | 5 | +| 7 | 6 | +| 8 | 7 | ++----+----+ + +***** test index back +drop table t1; +create table t1(c1 int primary key, c2 int, c3 int, index idx(c2)); +EXPLAIN insert into t1 values(1,1,1), (2,2,2), (3,3,3), (4,4,4),(5,5,5), (6,6,6), (7,7,7); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |7 |2 | +|1 | EXPRESSION| |7 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(INT,PS:(11,0),NULL,__values.c3)]), filter(nil), + columns([{t1: ({t1: (t1.c1, t1.c2, t1.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 1, 1}, {2, 2, 2}, {3, 3, 3}, {4, 4, 4}, {5, 5, 5}, {6, 6, 6}, {7, 7, 7}) + +insert into t1 values(1,1,1), (2,2,2), (3,3,3), (4,4,4),(5,5,5), (6,6,6), (7,7,7); + + +# case 1: index back with before_index_back_filter +EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c1 < 4; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t1(idx)|1 |88 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c1 < 4]), + access([t1.c2], [t1.c1], [t1.c3]), partitions(p0) + +select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c1 < 4; ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 2 | 2 | 2 | +| 3 | 3 | 3 | ++----+------+------+ + + +# case 2: index back without before_index_back_filter +EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c3 < 4; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t1(idx)|1 |116 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c3 < 4]), + access([t1.c2], [t1.c3], [t1.c1]), partitions(p0) + +select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c3 < 4; ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 2 | 2 | 2 | +| 3 | 3 | 3 | ++----+------+------+ + +EXPLAIN select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c3 != 1 limit 2; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t1(idx)|2 |96 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c3 != 1]), + access([t1.c3], [t1.c1], [t1.c2]), partitions(p0), + limit(2), offset(nil) + +select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c3 != 1 limit 2; ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ +| 2 | 2 | 2 | +| 3 | 3 | 3 | ++----+------+------+ + +drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/t/explicit_cast.test b/tools/deploy/mysql_test/test_suite/static_engine/t/explicit_cast.test similarity index 98% rename from test/mysql_test/test_suite/static_engine/t/explicit_cast.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/explicit_cast.test index 57ec98ec3..f9e2fdca5 100644 --- a/test/mysql_test/test_suite/static_engine/t/explicit_cast.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/explicit_cast.test @@ -1,5 +1,7 @@ +# owner: luofan.zp +# owner group: sql2 - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection conn_admin; --disable_warnings diff --git a/test/mysql_test/test_suite/static_engine/t/expr_abs.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_abs.test similarity index 98% rename from test/mysql_test/test_suite/static_engine/t/expr_abs.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_abs.test index 35f97f873..8a51f0831 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_abs.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_abs.test @@ -1,6 +1,7 @@ +#owner: peihan.dph --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_and_or.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_and_or.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_and_or.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_and_or.test index 09de2e1a2..7cc944b81 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_and_or.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_and_or.test @@ -1,6 +1,8 @@ +# owner: peihan.dph +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; @@ -19,7 +21,7 @@ create table t1(col_int int, col_varchar_zero varchar(100)); insert into t1 values(1, 0, null, 'abc', '1', '', '0'); - +--explain_protocol 2 --echo // Case1: normal test --echo // Case1.1: int test --echo // bool expr exists, no cast expr, res is NULL @@ -157,7 +159,7 @@ select '' or 0 or col_null from t1; --disable_warnings drop table if exists t1; --enable_warnings - +--explain_protocol 0 create table t1 (c1 int, c2 int, c3 int, c4 float, c5 float, c6 float, c7 double, c8 double, c9 double, @@ -179,7 +181,7 @@ insert into t1 values(0, 1, null, '0', '123', null, '0', 'abc', null); - +--explain_protocol 2 set @@ob_enable_plan_cache = 0; let $cnt=3; @@ -202,4 +204,4 @@ drop table t1; CREATE TABLE t1(c0 VARCHAR(500), c1 DECIMAL); insert into t1 values('', 123); SELECT ALL t1.c0 AS ref0 FROM t1 WHERE (NULL AND ( CAST(COALESCE(t1.c0, EXISTS (SELECT 1)) AS SIGNED) IS NOT NULL)) IS NULL; -drop table t1; +drop table t1; \ No newline at end of file diff --git a/test/mysql_test/test_suite/static_engine/t/expr_assign.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_assign.test similarity index 94% rename from test/mysql_test/test_suite/static_engine/t/expr_assign.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_assign.test index ebad5b0fc..8fe6ae372 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_assign.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_assign.test @@ -1,6 +1,8 @@ +# owner: dachuan.sdc +# owner group: SQL2 - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_bool.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_bool.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_bool.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_bool.test index 3a3430e14..3894b64b6 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_bool.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_bool.test @@ -1,5 +1,7 @@ +# owner: peihan.dph +# owner group: SQL2 - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; @@ -7,7 +9,7 @@ connection conn_admin; --disable_warnings drop table if exists t1, t2; --enable_warnings - +--explain_protocol 0 create table t1 ( col_tinyint tinyint, col_smallint smallint, @@ -79,7 +81,7 @@ insert into t2 values(1); --echo // Case1: AND/OR测试 set ob_enable_plan_cache = 0; --sleep 2 - +--explain_protocol 2 --echo // 两个col_int上面应该有bool expr select col_int and col_int from t1; --echo // 两个col_xxx上面都应该有bool expr,col_varchar上面应该有cast,转换为decimal @@ -116,7 +118,7 @@ select 1 from t1 inner join t2 on t2.c1 = t1.col_int; --echo // 需要想一些不带有布尔语义的作为各个子句的条件 --echo // Case4: 对各种类型进行测试,看能否顺利转换,且结果跟不加bool expr是一致的 - +--explain_protocol 0 --disable_warnings drop table if exists t1; --enable_warnings @@ -144,7 +146,7 @@ insert into t1 values(1, 2, '9.5', '10.5', 'blob type', 'text type'); -- sleep 2 set ob_enable_plan_cache = 0; - +--explain_protocol 2 let $cnt=24; let $left=1; while ($left <= $cnt) diff --git a/test/mysql_test/test_suite/static_engine/t/expr_char_length.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_char_length.test similarity index 75% rename from test/mysql_test/test_suite/static_engine/t/expr_char_length.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_char_length.test index 3070844d3..452f98f37 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_char_length.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_char_length.test @@ -1,5 +1,7 @@ +# owner: luofan.zp +# owner group: SQL2 - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; alter system flush plan cache global; @@ -32,3 +34,16 @@ select char_length(c5) from t1; sleep 2; +#bug 43837470 + +drop table if exists t1; +create table t1 (a int); +insert into t1 values (1), (2); +--error 1242 +select CHAR_LENGTH( + case when 62 <= ( + select a from t1 + ) then '1' else '22' end); + +drop table t1; + diff --git a/test/mysql_test/test_suite/static_engine/t/expr_collation.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_collation.test similarity index 94% rename from test/mysql_test/test_suite/static_engine/t/expr_collation.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_collation.test index 6042dcf27..5d9f2ab63 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_collation.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_collation.test @@ -1,7 +1,9 @@ +#owner: luofan.zp +#owner group: sql2 --disable_abort_on_error - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); @@ -52,7 +54,7 @@ insert into t1 values(-1, 2, --sleep 1 - +#--explain_protocol 2 let $cnt=22; let $left=1; while ($left <= $cnt) diff --git a/test/mysql_test/test_suite/static_engine/t/expr_concat.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_concat.test similarity index 98% rename from test/mysql_test/test_suite/static_engine/t/expr_concat.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_concat.test index b5bad77a0..908eb5822 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_concat.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_concat.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_conv.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_conv.test similarity index 88% rename from test/mysql_test/test_suite/static_engine/t/expr_conv.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_conv.test index abb8d9210..fa250d1b5 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_conv.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_conv.test @@ -1,6 +1,8 @@ +# owner: xiaoyi.xy +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); --sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/expr_date.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_date.test similarity index 88% rename from test/mysql_test/test_suite/static_engine/t/expr_date.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_date.test index e28ca47a9..dbf733fc8 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_date.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_date.test @@ -1,6 +1,8 @@ +# owner: xiaoyi.xy +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); --sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/expr_datediff.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_datediff.test similarity index 93% rename from test/mysql_test/test_suite/static_engine/t/expr_datediff.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_datediff.test index 10875fe54..e93bfd0ec 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_datediff.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_datediff.test @@ -1,6 +1,8 @@ +# owner: xiaoyi.xy +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); --sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/expr_des_hex_str.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_des_hex_str.test similarity index 90% rename from test/mysql_test/test_suite/static_engine/t/expr_des_hex_str.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_des_hex_str.test index 15eb17644..8f7a41827 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_des_hex_str.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_des_hex_str.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_dump.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_dump.test similarity index 87% rename from test/mysql_test/test_suite/static_engine/t/expr_dump.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_dump.test index ef32b4808..66555c802 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_dump.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_dump.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_empty_arg.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_empty_arg.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_empty_arg.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_empty_arg.test index ea8d57929..57df24fbe 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_empty_arg.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_empty_arg.test @@ -1,7 +1,9 @@ +#owner: dachuan.sdc +#owner group: sql2 --disable_abort_on_error - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_field.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_field.test similarity index 89% rename from test/mysql_test/test_suite/static_engine/t/expr_field.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_field.test index 1c156a311..8f95fe611 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_field.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_field.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_get_sys_var.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_get_sys_var.test similarity index 89% rename from test/mysql_test/test_suite/static_engine/t/expr_get_sys_var.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_get_sys_var.test index 46d593f78..ffe0643b9 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_get_sys_var.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_get_sys_var.test @@ -1,7 +1,9 @@ +#owner: peihan.dph +#owner group: sql2 --disable_abort_on_error - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_get_user_var.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_get_user_var.test similarity index 91% rename from test/mysql_test/test_suite/static_engine/t/expr_get_user_var.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_get_user_var.test index 1c69282db..87e8df311 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_get_user_var.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_get_user_var.test @@ -1,6 +1,8 @@ +#owner: peihan.dph +#owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_is.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_is.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_is.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_is.test index b35dbca56..bb739ad42 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_is.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_is.test @@ -1,4 +1,6 @@ - +# owner: dachuan.sdc +# owner group: SQL2 +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; --sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/expr_is_serving_tenant.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_is_serving_tenant.test similarity index 91% rename from test/mysql_test/test_suite/static_engine/t/expr_is_serving_tenant.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_is_serving_tenant.test index ed5e212b8..f3b19e1a6 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_is_serving_tenant.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_is_serving_tenant.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_length.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_length.test similarity index 96% rename from test/mysql_test/test_suite/static_engine/t/expr_length.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_length.test index 181906334..79b4a281d 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_length.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_length.test @@ -1,4 +1,6 @@ - +# owner: dachuan.sdc +# owner group: SQL2 +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; --sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/expr_lnnvl.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_lnnvl.test similarity index 86% rename from test/mysql_test/test_suite/static_engine/t/expr_lnnvl.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_lnnvl.test index c80c91290..7634d69de 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_lnnvl.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_lnnvl.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_location.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_location.test similarity index 91% rename from test/mysql_test/test_suite/static_engine/t/expr_location.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_location.test index 5fb496a9d..ad4fcb243 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_location.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_location.test @@ -1,7 +1,10 @@ +#owner: luofan.zp +#owner group: sql2 +#description: locate/instr/reverse test --disable_abort_on_error - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_lower_upper.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_lower_upper.test similarity index 96% rename from test/mysql_test/test_suite/static_engine/t/expr_lower_upper.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_lower_upper.test index 40fdcfeba..d801ec5d0 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_lower_upper.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_lower_upper.test @@ -1,4 +1,6 @@ - +# owner: dachuan.sdc +# owner group: SQL2 +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; --sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/expr_nextval.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_nextval.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_nextval.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_nextval.test index 1b8d9d62b..3f82cefeb 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_nextval.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_nextval.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection default; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_not.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_not.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_not.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_not.test index 583ffe30b..3f39ef281 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_not.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_not.test @@ -1,6 +1,7 @@ +#owner: dachuan.sdc --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_nullif_ifnull.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_nullif_ifnull.test similarity index 84% rename from test/mysql_test/test_suite/static_engine/t/expr_nullif_ifnull.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_nullif_ifnull.test index 387e65977..20efc5bce 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_nullif_ifnull.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_nullif_ifnull.test @@ -1,7 +1,9 @@ +#owner: peihan.dph +#owner group: sql2 --disable_abort_on_error - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); @@ -52,7 +54,7 @@ insert into t1 values(-1, 2, --sleep 2 - +#--explain_protocol 2 eval select nullif(null, null), nullif(1, null), nullif(null, 1); eval select ifnull(null, null), ifnull(1, null), ifnull(null, 1); let $cnt=22; @@ -77,12 +79,12 @@ drop view if exists v1; create table t1 (c1 datetime(5), c2 year); insert into t1 values('1901-01-01', 1901); --echo // transformed to case when expr - +--explain_protocol 2 select nullif(c1, c2) from t1; select nullif(c2, c1) from t1; select nullif(c1, c1) from t1; select nullif(c2, c2) from t1; - +--explain_protocol 0 --echo // nullif改写不应该影响show create view,所以show create view还应该是nullif,而非case expr create view v1 as select nullif(c1, c2) from t1; @@ -155,3 +157,31 @@ insert into t1 values('10:10:10'); select nullif(z0_test0,'中文字符') from t1; drop table t1; --sleep 2 + + + +--echo ##bugfix: https://work.aone.alibaba-inc.com/issue/37798920 +create table t1 (pk double) PARTITION BY key (pk) partitions 1; +insert into t1 values( NULLIF( 100.2345, 1 )); +select * from t1; +drop table t1; + +--disable_result_log +select + subq_0.c3, + nullif(subq_0.c3, cast(32 as decimal)) as c14 +from + ( + select + cast( + ( + select + help_keyword_id + from + mysql.help_keyword + limit + 1 offset 4 + ) as DECIMAL + ) as c3 + ) as subq_0; +--enable_result_log diff --git a/test/mysql_test/test_suite/static_engine/t/expr_nvl.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_nvl.test similarity index 74% rename from test/mysql_test/test_suite/static_engine/t/expr_nvl.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_nvl.test index cd06bfd5d..a1b6fe46c 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_nvl.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_nvl.test @@ -1,11 +1,9 @@ +#owner: dachuan.sdc +#owner group: sql2 --disable_abort_on_error - - - -connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); - -connection conn_admin; +--result_format 4 +--explain_protocol 0 set @@ob_enable_plan_cache = 0; #set @@ob_log_level='debug'; @@ -53,7 +51,7 @@ insert into t1 values(-1, 2, --sleep 1 - +--explain_protocol 2 eval select nvl(c_null, c_null) from t1; eval select nvl2(c_null, c_null, c_null) from t1; let $cnt=22; @@ -72,3 +70,16 @@ while ($left <= $cnt) } --sleep 2 +--explain_protocol 0 +set timestamp = 1600000000; +--echo ##bugfix: https://work.aone.alibaba-inc.com/issue/37931049 +select ifnull(null, utc_time(4)); + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a bigint primary key, b datetime(3)); +insert into t1 values(1, now()); +insert into t1 values(2, now(6)); +select nvl(null,b) from t1; +drop table t1; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_pad.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_pad.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_pad.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_pad.test index 3789be962..97e2b49f1 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_pad.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_pad.test @@ -1,6 +1,9 @@ +# owner: luofan.zp +# owner group: SQL2 +# description: test lpad/rpad/pad --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_part_hash.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_part_hash.test similarity index 92% rename from test/mysql_test/test_suite/static_engine/t/expr_part_hash.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_part_hash.test index e4a132aa7..0026f5fa1 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_part_hash.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_part_hash.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); --sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/expr_part_key.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_part_key.test similarity index 96% rename from test/mysql_test/test_suite/static_engine/t/expr_part_key.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_part_key.test index 9a4b1f22e..a317cdf04 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_part_key.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_part_key.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_regexp.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_regexp.test similarity index 94% rename from test/mysql_test/test_suite/static_engine/t/expr_regexp.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_regexp.test index d8b97388d..3683f08d6 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_regexp.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_regexp.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection default; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_regexp_func.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_regexp_func.test similarity index 98% rename from test/mysql_test/test_suite/static_engine/t/expr_regexp_func.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_regexp_func.test index 3f74d379a..0c46005de 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_regexp_func.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_regexp_func.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_repeat.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_repeat.test similarity index 91% rename from test/mysql_test/test_suite/static_engine/t/expr_repeat.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_repeat.test index a13941ca6..584ea553e 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_repeat.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_repeat.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_replace.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_replace.test similarity index 91% rename from test/mysql_test/test_suite/static_engine/t/expr_replace.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_replace.test index d114581ab..507f9a47e 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_replace.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_replace.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection default; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_sign.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_sign.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_sign.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_sign.test index 09505a7b1..fd6d447e8 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_sign.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_sign.test @@ -1,7 +1,9 @@ +# owner: dachuan.sdc +# owner group: sql2 --disable_abort_on_error - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; @@ -75,7 +77,7 @@ insert into t2 values('GG1',3,'DD1',0.053,date'1974-03-19'); --sleep 1 - +--explain_protocol 2 select sign(null) from dual; let $cnt=22; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_str.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_str.test similarity index 93% rename from test/mysql_test/test_suite/static_engine/t/expr_str.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_str.test index 4a81bbd5d..05d538b7a 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_str.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_str.test @@ -1,6 +1,9 @@ +#owner: luofan.zp +#owner group: sql2 +# description: quote/interval/make_set/concat_ws/sys_op_opnsize - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); @@ -52,7 +55,7 @@ insert into t1 values(-1, 2, --sleep 1 - +# --explain_protocol 2 select quote(null); select interval(null, null), interval(null, 1), interval(null, 1, 2), interval(null, 1, null), interval(1, 1,1,2), interval('1', '2'); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_substr.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_substr.test similarity index 96% rename from test/mysql_test/test_suite/static_engine/t/expr_substr.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_substr.test index 3b2cf03d9..e2081c5cc 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_substr.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_substr.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_substring_index.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_substring_index.test similarity index 98% rename from test/mysql_test/test_suite/static_engine/t/expr_substring_index.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_substring_index.test index 3f38b5e5a..416b26ca5 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_substring_index.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_substring_index.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection default; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_sys_privilege_check.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_sys_privilege_check.test similarity index 94% rename from test/mysql_test/test_suite/static_engine/t/expr_sys_privilege_check.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_sys_privilege_check.test index ee982851b..8d651c151 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_sys_privilege_check.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_sys_privilege_check.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connect (rootcon, $OBMYSQL_MS0,root@$TENANT,,test,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_time_diff.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_time_diff.test similarity index 95% rename from test/mysql_test/test_suite/static_engine/t/expr_time_diff.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_time_diff.test index 10de679dd..0e1ab25fa 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_time_diff.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_time_diff.test @@ -1,3 +1,6 @@ +# owner: dachuan.sdc +# owner group: SQL2 +# tag: expr --disable_abort_on_error --disable_warnings connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_timestampadd.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_timestampadd.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_timestampadd.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_timestampadd.test index 03db31b9d..90d3dbf7d 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_timestampadd.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_timestampadd.test @@ -1,6 +1,8 @@ +# owner: dachuan.sdc +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; @@ -32,7 +34,7 @@ insert into t1 values(1, 2, --echo // Case1: normal test.测试各种类型组合, 跟不开新引擎开关进行对比 alter system flush plan cache global; - +--explain_protocol 2 set @@ob_enable_plan_cache = 0; let $cnt=22; let $left=1; @@ -138,25 +140,25 @@ select timestampadd(year,-123456789,"2015-05-07"); select timestampadd(year,1,"9999-05-07"); select timestampadd(year,1,"2036-05-07"); - +--explain_protocol 0 set time_zone='-5:00'; create table sb(a timestamp); insert into sb values ("2010-01-01 00:00:00"); set time_zone='-5:00'; alter system flush plan cache global; - +--explain_protocol 2 set @@ob_enable_plan_cache = 0; select timestampadd(hour,1,a) from sb; select timestampadd(hour,-1,a) from sb; drop table sb; - +--explain_protocol 0 set time_zone='+6:00'; create table sb(a datetime); insert into sb values ("2010-08-06 12:34:56"); set time_zone='-7:00'; alter system flush plan cache global; - +--explain_protocol 2 select timestampadd(hour,1,a) from sb; select timestampadd(hour,-1,a) from sb; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_todays.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_todays.test similarity index 96% rename from test/mysql_test/test_suite/static_engine/t/expr_todays.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_todays.test index 49d9a4d97..4e3c0b2c5 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_todays.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_todays.test @@ -1,5 +1,8 @@ +# owner: dachuan.sdc +# owner group: sql2 +# description: to_days, time_to_usec, usec_to_time, str_to_day - +--result_format 4 --disable_abort_on_error connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); diff --git a/test/mysql_test/test_suite/static_engine/t/expr_trim.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_trim.test similarity index 96% rename from test/mysql_test/test_suite/static_engine/t/expr_trim.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_trim.test index 3d45ecf28..20dd877fc 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_trim.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_trim.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection default; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_trunc.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_trunc.test similarity index 95% rename from test/mysql_test/test_suite/static_engine/t/expr_trunc.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_trunc.test index 6042c31a9..c82d4fd3d 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_trunc.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_trunc.test @@ -1,7 +1,9 @@ +# owner: dachuan.sdc +# owner group: sql2 --disable_abort_on_error - - +--result_format 4 +--explain_protocol 0 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); @@ -57,7 +59,7 @@ insert into t1(c13) values(100.156), (123.111), (151); --sleep 1 - +--explain_protocol 2 select truncate(c_null, c_null) from t1; select truncate(1.11, c_null) from t1; select truncate(c_null, -1) from t1; diff --git a/tools/deploy/mysql_test/test_suite/static_engine/t/expr_unhex.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_unhex.test new file mode 100644 index 000000000..29ab99b32 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_unhex.test @@ -0,0 +1,40 @@ +# owner: xiaoyi.xy +# owner group: sql2 + +--disable_abort_on_error +--result_format 4 + +connect (sys, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); +connection default; + +--disable_warnings +drop table if exists t1; +create table t1 (c1 varchar(2000)); +insert into t1 values(hex("ABC")), (hex("123")); + +connection sys; +sleep 2; +connection default; +set @@ob_enable_plan_cache = 0; +select unhex(c1) from t1; +select unhex("4142") from dual; + +--disable_warnings +drop table if exists t2; + +CREATE TABLE t2 (a VARBINARY(2000)); +set sql_mode = STRICT_TRANS_TABLES; +insert into t2 VALUES (UNHEX('54455354')); +--error 5342 +insert into t2 VALUES (UNHEX('TEST')); +select a from t2 where a = UNHEX('TEST'); +select a from t2 where a = UNHEX('54455354'); +set sql_mode = ""; +insert into t2 VALUES (UNHEX('54455354')); +insert into t2 VALUES (UNHEX('TEST')); +select a from t2 where a = UNHEX('TEST'); +select a from t2 where a = UNHEX('54455354'); + +connection sys; + +--sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/expr_unix_timestamp.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_unix_timestamp.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/expr_unix_timestamp.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_unix_timestamp.test index 35a8c5509..01d0bc0a7 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_unix_timestamp.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_unix_timestamp.test @@ -1,6 +1,8 @@ +# owner: xiaoyi.xy +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; alter system flush plan cache global; diff --git a/test/mysql_test/test_suite/static_engine/t/expr_xor.test b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_xor.test similarity index 98% rename from test/mysql_test/test_suite/static_engine/t/expr_xor.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/expr_xor.test index 41cf59dd8..12e1c180a 100644 --- a/test/mysql_test/test_suite/static_engine/t/expr_xor.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/expr_xor.test @@ -1,6 +1,7 @@ +#owner: peihan.dph --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/hash_distinct.test b/tools/deploy/mysql_test/test_suite/static_engine/t/hash_distinct.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/hash_distinct.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/hash_distinct.test index 7e83f73f6..0cf0fb92d 100644 --- a/test/mysql_test/test_suite/static_engine/t/hash_distinct.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/hash_distinct.test @@ -1,3 +1,5 @@ +# owner: peihan.dph +# owner group: sql2 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); @@ -54,8 +56,8 @@ connection syscon; sleep 2; - - +--result_format 4 +--explain_protocol 1 connection default; set @@ob_enable_plan_cache = 0; diff --git a/test/mysql_test/test_suite/static_engine/t/hash_set.test b/tools/deploy/mysql_test/test_suite/static_engine/t/hash_set.test similarity index 96% rename from test/mysql_test/test_suite/static_engine/t/hash_set.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/hash_set.test index c96a65797..70d368c0e 100644 --- a/test/mysql_test/test_suite/static_engine/t/hash_set.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/hash_set.test @@ -1,3 +1,5 @@ + #owner: peihan.dph + #owner group: sql2 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); @@ -95,17 +97,20 @@ insert into t333_var select c0+100000000,c1,c2,c3,c4,c5,c6,c7 from t333_var; insert into t333_var values(null,null,null,null,null,null,null,null); commit; +--result_format 4 +--explain_protocol 1 - - +#union: first row left less than right select c1,c2 from t11_set union select c1,c2 from t22_set where c1 > 5 and c1 != 12; select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 > 5 and c1 != 12; select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 > 5 and c1 != 12; +#union: first row left is greater than right select c1,c2 from t11_set where c1 > 5 and c1 != 12 union select c1,c2 from t22_set; select c1,c2 from t11_set where c1 > 5 and c1 != 12 intersect select c1,c2 from t22_set; select c1,c2 from t11_set where c1 > 5 and c1 != 12 minus select c1,c2 from t22_set; +#union: left has left row select c1,c2 from t11_set union select c1,c2 from t22_set where c1 <22; select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 <22; select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 <22; @@ -121,7 +126,7 @@ from (select * from t111_var a intersect select * from t333_var b) order by c1 l select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7) from (select * from t111_var a minus select * from t333_var b) order by c1 limit 1; - +--explain_protocol 0 --replace_regex /con_id =[0-9]*/con_id =xxx/ eval select operation_type, case when sum(optimal_executions)>0 then 1 else 0 end pass1, diff --git a/test/mysql_test/test_suite/static_engine/t/material.test b/tools/deploy/mysql_test/test_suite/static_engine/t/material.test similarity index 89% rename from test/mysql_test/test_suite/static_engine/t/material.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/material.test index eac01e59a..e8618d038 100644 --- a/test/mysql_test/test_suite/static_engine/t/material.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/material.test @@ -1,6 +1,8 @@ +# owner: peihan.dph +# owner group: sql2 - - +--result_format 4 +--explain_protocol 0 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); sleep 2; @@ -31,7 +33,7 @@ commit; connection syscon; sleep 2; - +--explain_protocol 2 connection default; set @@ob_enable_plan_cache = 0; #set @@ob_enable_trace_log=1; diff --git a/test/mysql_test/test_suite/static_engine/t/merge_set.test b/tools/deploy/mysql_test/test_suite/static_engine/t/merge_set.test similarity index 92% rename from test/mysql_test/test_suite/static_engine/t/merge_set.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/merge_set.test index 91fd24082..673d6bfae 100644 --- a/test/mysql_test/test_suite/static_engine/t/merge_set.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/merge_set.test @@ -1,3 +1,5 @@ + #owner: peihan.dph + #owner group: sql2 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); @@ -45,14 +47,17 @@ connection default; set @@ob_enable_plan_cache = 0; +#union: first row left less than right select c1,c2 from t11_set union select c1,c2 from t22_set where c1 > 5 and c1 != 12; select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 > 5 and c1 != 12; select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 > 5 and c1 != 12; +#union: first row left is greater than right select c1,c2 from t11_set where c1 > 5 and c1 != 12 union select c1,c2 from t22_set; select c1,c2 from t11_set where c1 > 5 and c1 != 12 intersect select c1,c2 from t22_set; select c1,c2 from t11_set where c1 > 5 and c1 != 12 minus select c1,c2 from t22_set; +#union: left has left row select c1,c2 from t11_set union select c1,c2 from t22_set where c1 <22; select c1,c2 from t11_set intersect select c1,c2 from t22_set where c1 <22; select c1,c2 from t11_set minus select c1,c2 from t22_set where c1 <22; diff --git a/test/mysql_test/test_suite/static_engine/t/partition_split.test b/tools/deploy/mysql_test/test_suite/static_engine/t/partition_split.test similarity index 92% rename from test/mysql_test/test_suite/static_engine/t/partition_split.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/partition_split.test index 29863070d..21cef35c9 100644 --- a/test/mysql_test/test_suite/static_engine/t/partition_split.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/partition_split.test @@ -1,6 +1,8 @@ +# owner: xiaoyi.xy +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/px_basic.test b/tools/deploy/mysql_test/test_suite/static_engine/t/px_basic.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/px_basic.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/px_basic.test index 00b12faed..9f6dd8f02 100644 --- a/test/mysql_test/test_suite/static_engine/t/px_basic.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/px_basic.test @@ -1,3 +1,5 @@ +# owner: peihan.dph +# owner group: sql2 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); @@ -80,8 +82,8 @@ connection syscon; sleep 2; - - +--result_format 4 +--explain_protocol 1 connection default; set @@ob_enable_plan_cache = 0; #set @@ob_enable_trace_log=1; diff --git a/test/mysql_test/test_suite/static_engine/t/static_engine_case.test b/tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_case.test similarity index 93% rename from test/mysql_test/test_suite/static_engine/t/static_engine_case.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_case.test index 4f8d6e999..395158d44 100644 --- a/test/mysql_test/test_suite/static_engine/t/static_engine_case.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_case.test @@ -1,6 +1,9 @@ +# owner: peihan.dph +# owner group: SQL2 +# description: 测试执行引擎3.0下case表达式 - - +--result_format 4 +--explain_protocol 2 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); @@ -36,7 +39,7 @@ select case when 1='1' then 'a' when 2 then 'b' else 'c' end from dual; --echo // 应该返回'c',且0='1'中要加cast select case when 0='1' then 'a' when 0.0 then 'b' else 'c' end from dual; - +--explain_protocol 0 --echo // Case2: 测试建表的情况 --disable_warnings drop table if exists t1; @@ -44,7 +47,7 @@ drop table if exists t1; create table t1 (col_null int, col_int int, col_char char); insert into t1 values(null, 1, 'a'); - +--explain_protocol 2 set @@ob_enable_plan_cache = 0; alter system flush plan cache global; --echo // 测试int的normal case,应该返回'a' @@ -68,7 +71,7 @@ select case when NULL=NULL then 1 when 'here' then 2 else 'hh' end from dual; drop table t1; create table t1 (a varchar(100) collate utf8_general_ci, cond1 varchar(100) collate utf8_bin, cond2 varchar(100) collate utf8_general_ci); insert into t1 values('cond', 'COND', 'COND'); - +--explain_protocol 2 --echo // 返回Null,a和cond1以及a和cond2比较都会使用utf8_bin作为collation type(因为有aggregate collation的过程) select case a when cond1 then '1' when cond2 then '2' end from t1; --echo // 返回'neq', a和cond1比较使用的是utf8_bin @@ -77,7 +80,7 @@ select case a when cond1 then 'eq' else 'neq' end from t1; select case a when cond2 then 'eq' else 'neq' end from t1; --echo // arg case子节点也是arg case的情况测试,应该都被改为case expr(应该返回'ok') select case case a when 'cond' then 'eq' else 'neq' end when 'eq' then 'ok' else 'not ok' end from t1; - +--explain_protocol 0 --echo // Case5: show create view/table --disable_warnings @@ -99,5 +102,8 @@ show create table t2; drop table t1; drop table t2; +## bugfix#https://work.aone.alibaba-inc.com/issue/37018706 +SELECT CASE 'A' WHEN 0 THEN 0 ELSE 1 END VAL; + alter system set _enable_static_typing_engine = false; --sleep 2 diff --git a/test/mysql_test/test_suite/static_engine/t/static_engine_cmp_null.test b/tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_cmp_null.test similarity index 98% rename from test/mysql_test/test_suite/static_engine/t/static_engine_cmp_null.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_cmp_null.test index 6fcec66b1..1bc275709 100644 --- a/test/mysql_test/test_suite/static_engine/t/static_engine_cmp_null.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_cmp_null.test @@ -1,5 +1,6 @@ +#owner: peihan.dph - +--result_format 4 --disable_abort_on_error connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection conn_admin; @@ -48,7 +49,7 @@ insert into t values (NULL, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.0, 1.00, 1.000, 1.0000, '1.00000', 1, 'b', 'b'); connection conn_admin; connection default; - +--explain_protocol 2 select NULL = tinyint_t from t limit 1; select NULL = smallint_t from t limit 1; select NULL = mediumint_t from t limit 1; diff --git a/test/mysql_test/test_suite/static_engine/t/static_engine_hash.test b/tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_hash.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/static_engine_hash.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_hash.test index 58c33f23d..a4c41bca6 100644 --- a/test/mysql_test/test_suite/static_engine/t/static_engine_hash.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/static_engine_hash.test @@ -1,5 +1,7 @@ +#owner: dachuan.sdc +#owner group: sql2 --disable_abort_on_error - +--result_format 4 --disable_warnings connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection conn_admin; diff --git a/test/mysql_test/test_suite/static_engine/t/subplan_filter.test b/tools/deploy/mysql_test/test_suite/static_engine/t/subplan_filter.test similarity index 98% rename from test/mysql_test/test_suite/static_engine/t/subplan_filter.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/subplan_filter.test index cca144c4e..d3caa382e 100644 --- a/test/mysql_test/test_suite/static_engine/t/subplan_filter.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/subplan_filter.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection default; @@ -101,7 +103,7 @@ select (select c1, c2 from t1 where c1 > 1) = (select c1, c2 from t2 where c1 = select (select c1, c2 from t1 where c1 = 1) = (select c1, c2 from t2 where c1 > 1); select (select c1, c2 from t1 where c1 > 1) = (select c1, c2 from t2 where c1 > 1); - +--explain_protocol 2 # subplan filter diff --git a/test/mysql_test/test_suite/static_engine/t/subplan_scan.test b/tools/deploy/mysql_test/test_suite/static_engine/t/subplan_scan.test similarity index 95% rename from test/mysql_test/test_suite/static_engine/t/subplan_scan.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/subplan_scan.test index 8d536d332..2ca8023b6 100644 --- a/test/mysql_test/test_suite/static_engine/t/subplan_scan.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/subplan_scan.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection syscon; diff --git a/test/mysql_test/test_suite/static_engine/t/table_insert.test b/tools/deploy/mysql_test/test_suite/static_engine/t/table_insert.test similarity index 97% rename from test/mysql_test/test_suite/static_engine/t/table_insert.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/table_insert.test index b44c93983..c1ba52151 100644 --- a/test/mysql_test/test_suite/static_engine/t/table_insert.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/table_insert.test @@ -1,6 +1,8 @@ +# owner: xiaoyi.xy +# owner group: sql2 --disable_abort_on_error - +--result_format 4 connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection conn_admin; @@ -29,9 +31,9 @@ insert into t1 values(1, 1, 1, 1, -1, 6, 7, 8, 9, 10, -11, 12, -13.1, 14.2, -15. insert into t1 values('2', '1', '1', '1', '-1', '6', '7', '8', '9', '10', '-11', '12', '-13.1', '14.2', '-15.01', '16.10', '17.001', '18.002', '2019-10-10 10:00:00', '2019-10-10 10:00:00', '21varchar', '22char'); insert into t1 values('3', '1', '1', '1', '-1', '6', '7', '8', '9', '10', '-11', '12', '-13.1', '14.2', '-15.01', '16.10', '17.001', '18.002', '2019-10-10 10:00:00', '2019-10-10 10:00:00', '21varchar', '22char'), ('4', '1', '1', '1', '-1', '16', '17', '18', '19', '11', '-11', '121', '-13.11', '14.21', '-15.011', '16.101', '17.1001', '18.1002', '2019-10-10 10:00:00.00', '2019-10-10 10:00:00.000', '21varchar1', '22char1'); - +--explain_protocol 2 select * from t1; - +--explain_protocol 0 set @@ob_enable_plan_cache = 1; --echo // test ObDatumCaster::to_type() in ObExprValuesOp diff --git a/test/mysql_test/test_suite/static_engine/t/table_scan.test b/tools/deploy/mysql_test/test_suite/static_engine/t/table_scan.test similarity index 89% rename from test/mysql_test/test_suite/static_engine/t/table_scan.test rename to tools/deploy/mysql_test/test_suite/static_engine/t/table_scan.test index 09a90947d..66cc59612 100644 --- a/test/mysql_test/test_suite/static_engine/t/table_scan.test +++ b/tools/deploy/mysql_test/test_suite/static_engine/t/table_scan.test @@ -1,6 +1,8 @@ +# owner: bin.lb +# owner group: sql2 - - +--result_format 4 +--explain_protocol 0 connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); --sleep 2 connection default; @@ -26,7 +28,7 @@ sleep 2; connection default; set @@ob_enable_plan_cache = 0; - +--explain_protocol 2 # base table select * from t1; @@ -52,9 +54,11 @@ create table t1(c1 int primary key, c2 int, c3 int, index idx(c2)); insert into t1 values(1,1,1), (2,2,2), (3,3,3), (4,4,4),(5,5,5), (6,6,6), (7,7,7); --echo +--echo # case 1: index back with before_index_back_filter select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c1 < 4; --echo +--echo # case 2: index back without before_index_back_filter select /*+index(t1 idx)*/ c1, c2, c3 from t1 where c2 > 1 and c3 < 4; # index back + limit diff --git a/test/mysql_test/test_suite/subquery/r/mysql/order_by_subquery.result b/tools/deploy/mysql_test/test_suite/subquery/r/mysql/order_by_subquery.result similarity index 100% rename from test/mysql_test/test_suite/subquery/r/mysql/order_by_subquery.result rename to tools/deploy/mysql_test/test_suite/subquery/r/mysql/order_by_subquery.result diff --git a/test/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result b/tools/deploy/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result similarity index 100% rename from test/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result rename to tools/deploy/mysql_test/test_suite/subquery/r/mysql/subquery_sj_innodb.result diff --git a/test/mysql_test/test_suite/subquery/t/order_by_subquery.test b/tools/deploy/mysql_test/test_suite/subquery/t/order_by_subquery.test similarity index 94% rename from test/mysql_test/test_suite/subquery/t/order_by_subquery.test rename to tools/deploy/mysql_test/test_suite/subquery/t/order_by_subquery.test index 320823ad1..190e653c9 100644 --- a/test/mysql_test/test_suite/subquery/t/order_by_subquery.test +++ b/tools/deploy/mysql_test/test_suite/subquery/t/order_by_subquery.test @@ -1,6 +1,11 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: ryan.ly +#owner group: SQL1 +# tags: optimizer +#tags: optimizer +#description: subquery in order by clause # --disable_warnings diff --git a/test/mysql_test/test_suite/subquery/t/subquery_sj_innodb.test b/tools/deploy/mysql_test/test_suite/subquery/t/subquery_sj_innodb.test similarity index 95% rename from test/mysql_test/test_suite/subquery/t/subquery_sj_innodb.test rename to tools/deploy/mysql_test/test_suite/subquery/t/subquery_sj_innodb.test index d05699d63..3a25d2b44 100644 --- a/test/mysql_test/test_suite/subquery/t/subquery_sj_innodb.test +++ b/tools/deploy/mysql_test/test_suite/subquery/t/subquery_sj_innodb.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: guoping.wgp +# owner group: sql4 +# tags: optimizer +# description: 从mysql中迁移过来的基础subquery_sj_innodb.test测试集 --disable_warnings drop table if exists t0, t1, t2, t3; drop view if exists v1, v2, v3, v_t2, view_b, view_c; @@ -18,6 +22,7 @@ drop view if exists v1, v2, v3, v_t2, view_b, view_c; create table t0 (a int); insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); +# First test simple cases: I20 order, no join buffering. create table t1 ( a int, diff --git a/test/mysql_test/test_suite/transformer/r/mysql/transformer_add_limit_for_union.result b/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_add_limit_for_union.result similarity index 99% rename from test/mysql_test/test_suite/transformer/r/mysql/transformer_add_limit_for_union.result rename to tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_add_limit_for_union.result index f95c0c7a2..5b3bb82ae 100644 --- a/test/mysql_test/test_suite/transformer/r/mysql/transformer_add_limit_for_union.result +++ b/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_add_limit_for_union.result @@ -38,7 +38,7 @@ c2 10 select found_rows(); found_rows() -10 +5 (select c2 from t1) union all (select c2 from t2) limit 10; c2 2 @@ -70,7 +70,7 @@ c2 9 select found_rows(); found_rows() -20 +15 (select c2 from t1 limit 2) union all (select c2 from t2) limit 15; c2 2 @@ -118,7 +118,7 @@ c2 c3 5 e select found_rows(); found_rows() -10 +5 (select c2, c3 from t1) union all (select c2, c3 from t2) order by c2 limit 15; c2 c3 1 a @@ -138,7 +138,7 @@ c2 c3 15 p select found_rows(); found_rows() -20 +15 (select c2, c3 from t1) union all (select c2, c3 from t2) order by c3, c2 limit 5; c2 c3 1 a @@ -182,7 +182,7 @@ c2 c3 15 p select found_rows(); found_rows() -20 +15 (select c2, c3 from t1) union all (select c2, c3 from t2 order by c2) order by c3, c2 limit 5; c2 c3 1 a diff --git a/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_outer_join_simplification.result b/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_outer_join_simplification.result new file mode 100644 index 000000000..26a533b9e --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_outer_join_simplification.result @@ -0,0 +1,78050 @@ +explain_protocol: 2 +result_format: 4 +set autocommit=0; + +##case arithmatic and basic compare +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |85 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |43 | +|3 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([(T_OP_NOT_BTW, cast(t1.c2, DECIMAL(11, 0)), ?, ?)], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([(T_OP_NOT_BTW, cast(v.c2, DECIMAL(11, 0)), ?, ?)], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |86 | +|1 | SUBPLAN SCAN |VIEW1|3 |85 | +|2 | MERGE OUTER JOIN| |3 |85 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([(T_OP_NOT_BTW, cast(t1.c2, DECIMAL(11, 0)), ?, ?)], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |87 | +|1 | SUBPLAN SCAN |VIEW1|3 |86 | +|2 | MERGE OUTER JOIN| |3 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([(T_OP_NOT_BTW, cast(v.c2, DECIMAL(11, 0)), ?, ?)], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); + +rollback; +EXPLAIN update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |3 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([(T_OP_NOT_BTW, cast(t1.c2, DECIMAL(11, 0)), ?, ?)], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |3 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([v.c1]), filter([(T_OP_NOT_BTW, cast(v.c2, DECIMAL(11, 0)), ?, ?)], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |123 | +|1 | SUBPLAN FILTER | |1 |122 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |3 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter([(T_OP_NOT_BTW, cast(t1.c2, DECIMAL(11, 0)), ?, ?)], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |124 | +|1 | SUBPLAN FILTER | |1 |123 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |3 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([v.c1]), filter([(T_OP_NOT_BTW, cast(v.c2, DECIMAL(11, 0)), ?, ?)], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 not between 1 and 2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case arithmatic and basic compare +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |0 |85 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |43 | +|3 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([t1.c2 <=> NULL], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |0 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([v.c2 <=> NULL], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |0 |85 | +|1 | SUBPLAN SCAN |VIEW1|0 |85 | +|2 | MERGE OUTER JOIN| |0 |85 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([t1.c2 <=> NULL], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |0 |86 | +|1 | SUBPLAN SCAN |VIEW1|0 |86 | +|2 | MERGE OUTER JOIN| |0 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([v.c2 <=> NULL], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); + +rollback; +EXPLAIN update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |0 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([t1.c2 <=> NULL], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |0 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([v.c1]), filter([v.c2 <=> NULL], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |123 | +|1 | SUBPLAN FILTER | |1 |122 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |0 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter([t1.c2 <=> NULL], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |124 | +|1 | SUBPLAN FILTER | |1 |123 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |0 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([v.c1]), filter([v.c2 <=> NULL], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (v.c2 <=> null)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case arithmatic and basic compare +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |0 |38 | +|1 | TABLE SCAN |t1 |0 |38 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 1 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [t1.c2 + 2 > 1 + 2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([v.c2 + 2 > 1 + 2 < 0], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |0 |38 | +|1 | SUBPLAN SCAN |VIEW1|0 |38 | +|2 | NESTED-LOOP JOIN| |0 |38 | +|3 | TABLE SCAN |t1 |0 |38 | +|4 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 3 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [t1.c2 + 2 > 1 + 2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |86 | +|1 | SUBPLAN SCAN |VIEW1|2 |86 | +|2 | MERGE OUTER JOIN| |2 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([v.c2 + 2 > 1 + 2 < 0], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); + +rollback; +EXPLAIN update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |82 | +|1 | SUBPLAN FILTER | |6 |76 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP JOIN| |0 |38 | +|4 | TABLE SCAN |t1 |0 |38 | +|5 | TABLE GET |t2 |1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 4 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [t1.c2 + 2 > 1 + 2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |2 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([v.c1]), filter([v.c2 + 2 > 1 + 2 < 0], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |77 | +|1 | SUBPLAN FILTER | |1 |76 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP JOIN| |0 |38 | +|4 | TABLE SCAN |t1 |0 |38 | +|5 | TABLE GET |t2 |1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 4 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [t1.c2 + 2 > 1 + 2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |124 | +|1 | SUBPLAN FILTER | |1 |123 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |2 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([v.c1]), filter([v.c2 + 2 > 1 + 2 < 0], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and ((v.c2 + 2 > 1) + 2 < 0)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case should not be eliminated +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |5 |85 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |43 | +|3 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [(T_OP_NOT, t1.c2) OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false)); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |5 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([(T_OP_IS, v.c2, NULL, 0)], [(T_OP_NOT, v.c2) OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false)); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |5 |86 | +|1 | SUBPLAN SCAN |VIEW1|5 |86 | +|2 | MERGE OUTER JOIN| |5 |85 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [(T_OP_NOT, t1.c2) OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |5 |87 | +|1 | SUBPLAN SCAN |VIEW1|5 |87 | +|2 | MERGE OUTER JOIN| |5 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([(T_OP_IS, v.c2, NULL, 0)], [(T_OP_NOT, v.c2) OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); + +rollback; +EXPLAIN update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |127 | +|1 | SUBPLAN FILTER | |6 |121 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |5 |84 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |42 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS, t1.c2, NULL, 0)], [(T_OP_NOT, t1.c2) OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |128 | +|1 | SUBPLAN FILTER | |6 |122 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |5 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS, v.c2, NULL, 0)], [(T_OP_NOT, v.c2) OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2]), filter(nil), + access([v.c2]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |122 | +|1 | SUBPLAN FILTER | |1 |121 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |5 |84 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |42 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS, t1.c2, NULL, 0)], [(T_OP_NOT, t1.c2) OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |123 | +|1 | SUBPLAN FILTER | |1 |122 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |5 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS, v.c2, NULL, 0)], [(T_OP_NOT, v.c2) OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2]), filter(nil), + access([v.c2]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not(v.c2 and false))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case should not be eliminated +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |5 |85 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |43 | +|3 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? <= t1.c2 OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false)); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |5 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([(T_OP_IS, v.c2, NULL, 0)], [? <= v.c2 OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false)); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |5 |86 | +|1 | SUBPLAN SCAN |VIEW1|5 |86 | +|2 | MERGE OUTER JOIN| |5 |85 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? <= t1.c2 OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |5 |87 | +|1 | SUBPLAN SCAN |VIEW1|5 |87 | +|2 | MERGE OUTER JOIN| |5 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([(T_OP_IS, v.c2, NULL, 0)], [? <= v.c2 OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); + +rollback; +EXPLAIN update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |5 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? <= t1.c2 OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |5 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([v.c1]), filter([(T_OP_IS, v.c2, NULL, 0)], [? <= v.c2 OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |123 | +|1 | SUBPLAN FILTER | |1 |122 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |5 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? <= t1.c2 OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |124 | +|1 | SUBPLAN FILTER | |1 |123 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |5 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([v.c1]), filter([(T_OP_IS, v.c2, NULL, 0)], [? <= v.c2 OR (T_OP_NOT, ?)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (not((1 + 2 > v.c2) and false))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case should not be eliminated +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |85 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |43 | +|3 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([? > t1.c2 AND ? + 2 > -2], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([? > v.c2 AND ? + 2 > -2], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |86 | +|1 | SUBPLAN SCAN |VIEW1|2 |85 | +|2 | MERGE OUTER JOIN| |2 |85 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([? > t1.c2 AND ? + 2 > -2], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |86 | +|1 | SUBPLAN SCAN |VIEW1|2 |86 | +|2 | MERGE OUTER JOIN| |2 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([? > v.c2 AND ? + 2 > -2], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); + +rollback; +EXPLAIN update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |127 | +|1 | SUBPLAN FILTER | |6 |121 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |2 |84 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |42 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter([? > t1.c2 AND ? + 2 > -2], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |128 | +|1 | SUBPLAN FILTER | |6 |122 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |2 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter([? > v.c2 AND ? + 2 > -2], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2]), filter(nil), + access([v.c2]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |122 | +|1 | SUBPLAN FILTER | |1 |121 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |2 |84 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |42 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([? > t1.c2 AND ? + 2 > -2], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |123 | +|1 | SUBPLAN FILTER | |1 |122 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |2 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([? > v.c2 AND ? + 2 > -2], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2]), filter(nil), + access([v.c2]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (((1 + 2 > v.c2) and false) + 2 > -2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case arithmatic operator +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |0 |39 | +|1 | TABLE SCAN |t1 |0 |39 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 1 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? > t1.c2]), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([? > v.c2], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |0 |39 | +|1 | SUBPLAN SCAN |VIEW1|0 |39 | +|2 | NESTED-LOOP JOIN| |0 |39 | +|3 | TABLE SCAN |t1 |0 |39 | +|4 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 3 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? > t1.c2]), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |87 | +|1 | SUBPLAN SCAN |VIEW1|3 |86 | +|2 | MERGE OUTER JOIN| |3 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([? > v.c2], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); + +rollback; +EXPLAIN update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |83 | +|1 | SUBPLAN FILTER | |6 |77 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP JOIN| |0 |39 | +|4 | TABLE SCAN |t1 |0 |39 | +|5 | TABLE GET |t2 |1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 4 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? > t1.c2]), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |3 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([v.c1]), filter([? > v.c2], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |77 | +|1 | SUBPLAN FILTER | |1 |76 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP JOIN| |0 |39 | +|4 | TABLE SCAN |t1 |0 |39 | +|5 | TABLE GET |t2 |1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 4 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? > t1.c2]), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |124 | +|1 | SUBPLAN FILTER | |1 |123 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |3 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([v.c1]), filter([? > v.c2], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > v.c2)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |85 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |43 | +|3 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([? > (T_OP_IS_NOT, t1.c2, NULL, 0)], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null)); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([? > (T_OP_IS_NOT, v.c2, NULL, 0)], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null)); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ +| 3 | 5 | b | NULL | NULL | ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |86 | +|1 | SUBPLAN SCAN |VIEW1|2 |85 | +|2 | MERGE OUTER JOIN| |2 |85 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter([? > (T_OP_IS_NOT, t1.c2, NULL, 0)], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |86 | +|1 | SUBPLAN SCAN |VIEW1|2 |86 | +|2 | MERGE OUTER JOIN| |2 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([? > (T_OP_IS_NOT, v.c2, NULL, 0)], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); + +rollback; +EXPLAIN update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |2 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([? > (T_OP_IS_NOT, t1.c2, NULL, 0)], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |2 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([v.c1]), filter([? > (T_OP_IS_NOT, v.c2, NULL, 0)], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |123 | +|1 | SUBPLAN FILTER | |1 |122 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |2 |85 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter([? > (T_OP_IS_NOT, t1.c2, NULL, 0)], [(T_OP_IS, t1.c2, NULL, 0)]), + equal_conds([t2.c1 = t1.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select v.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |124 | +|1 | SUBPLAN FILTER | |1 |123 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |2 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([v.c1]), filter([? > (T_OP_IS_NOT, v.c2, NULL, 0)], [(T_OP_IS, v.c2, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */v.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |0 |39 | +|1 | TABLE SCAN |t1 |0 |39 | +|2 | TABLE GET |t2 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 1 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? > (T_OP_IS_NOT, t1.c2, NULL, 0)]), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null)); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ ++----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |86 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | SORT | |6 |44 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([? > (T_OP_IS_NOT, v.c2, NULL, 0)], [(T_OP_IS, v.c2, NULL, 0)], [(T_OP_IS_NOT, v.c1, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 3 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null)); ++----+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | ++----+------+------+----+------+ ++----+------+------+----+------+ +EXPLAIN insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |0 |39 | +|1 | SUBPLAN SCAN |VIEW1|0 |39 | +|2 | NESTED-LOOP JOIN| |0 |39 | +|3 | TABLE SCAN |t1 |0 |39 | +|4 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 3 - output([t1.c1], [t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? > (T_OP_IS_NOT, t1.c2, NULL, 0)]), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t1_temp (select * from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |86 | +|1 | SUBPLAN SCAN |VIEW1|2 |86 | +|2 | MERGE OUTER JOIN| |2 |86 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | SORT | |6 |44 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2]), filter([? > (T_OP_IS_NOT, v.c2, NULL, 0)], [(T_OP_IS, v.c2, NULL, 0)], [(T_OP_IS_NOT, v.c1, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([v.c1], [v.c2]), filter(nil), sort_keys([v.c2, ASC]) + 5 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); + +rollback; +EXPLAIN update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |83 | +|1 | SUBPLAN FILTER | |6 |77 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP JOIN| |0 |39 | +|4 | TABLE SCAN |t1 |0 |39 | +|5 | TABLE GET |t2 |1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 4 - output([t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? > (T_OP_IS_NOT, t1.c2, NULL, 0)]), + access([t1.c2]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |2 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter([? > (T_OP_IS_NOT, v.c2, NULL, 0)], [(T_OP_IS, v.c2, NULL, 0)], [(T_OP_IS_NOT, v.c1, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c2], [v.c1]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |77 | +|1 | SUBPLAN FILTER | |1 |76 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP JOIN| |0 |39 | +|4 | TABLE SCAN |t1 |0 |39 | +|5 | TABLE GET |t2 |1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter(nil), + conds(nil), nl_params_([t1.c2]) + 4 - output([t1.c2]), filter([(T_OP_IS, t1.c2, NULL, 0)], [? > (T_OP_IS_NOT, t1.c2, NULL, 0)]), + access([t1.c2]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t2 left join (select * from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |124 | +|1 | SUBPLAN FILTER | |1 |123 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |2 |86 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | SORT | |6 |44 | +|6 | SUBPLAN SCAN |v |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([? > (T_OP_IS_NOT, v.c2, NULL, 0)], [(T_OP_IS, v.c2, NULL, 0)], [(T_OP_IS_NOT, v.c1, NULL, 0)]), + equal_conds([t2.c1 = v.c2]), other_conds(nil) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([v.c2], [v.c1]), filter(nil), sort_keys([v.c2, ASC]) + 6 - output([v.c2], [v.c1]), filter(nil), + access([v.c2], [v.c1]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join (select /*+ NO_REWRITE */* from t1) as v on t2.c1 = v.c2 where (v.c2 is null) and (1 + 2 > (v.c2 is not null) and (v.c1 is not null))); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 left join t2 using(c1) where (t2.c1 is not null)=0; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |1 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0) = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 using(c1) where (t2.c1 is not null)=0; ++----+------+------+------+ +| c1 | c2 | c2 | c3 | ++----+------+------+------+ ++----+------+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null)=0; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |1 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0) = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null)=0; ++----+------+------+------+ +| c1 | c2 | c2 | c3 | ++----+------+------+------+ ++----+------+------+------+ +EXPLAIN insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |80 | +|1 | SUBPLAN SCAN |VIEW1|1 |80 | +|2 | MERGE OUTER JOIN| |1 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t3_temp: ({t3_temp: (t3_temp.__pk_increment, t3_temp.a, t3_temp.b, t3_temp.c, t3_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0) = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is not null)=0); + +rollback; +EXPLAIN insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |80 | +|1 | SUBPLAN SCAN |VIEW1|1 |80 | +|2 | MERGE OUTER JOIN| |1 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t3_temp: ({t3_temp: (t3_temp.__pk_increment, t3_temp.a, t3_temp.b, t3_temp.c, t3_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0) = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null)=0); + +rollback; +EXPLAIN update t1 set c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |123 | +|1 | SUBPLAN FILTER | |6 |117 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |1 |79 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0) = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |123 | +|1 | SUBPLAN FILTER | |6 |117 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |1 |79 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0) = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |118 | +|1 | SUBPLAN FILTER | |1 |117 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |1 |79 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0) = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |118 | +|1 | SUBPLAN FILTER | |1 |117 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |1 |79 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0) = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null)=0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case: +EXPLAIN select * from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |102 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t1 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null); ++----+------+------+------+ +| c1 | c2 | c2 | c3 | ++----+------+------+------+ ++----+------+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |5 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null); ++----+------+------+------+ +| c1 | c2 | c2 | c3 | ++----+------+------+------+ ++----+------+------+------+ +EXPLAIN insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |112 | +|1 | SUBPLAN SCAN |VIEW1|36 |107 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |102 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t3_temp: ({t3_temp: (t3_temp.__pk_increment, t3_temp.a, t3_temp.b, t3_temp.c, t3_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); + +rollback; +EXPLAIN insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |5 |81 | +|1 | SUBPLAN SCAN |VIEW1|5 |80 | +|2 | MERGE OUTER JOIN| |5 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t3_temp: ({t3_temp: (t3_temp.__pk_increment, t3_temp.a, t3_temp.b, t3_temp.c, t3_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |144 | +|1 | SUBPLAN FILTER | |6 |138 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |100 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([1]), filter(nil) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |123 | +|1 | SUBPLAN FILTER | |6 |117 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |5 |79 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |139 | +|1 | SUBPLAN FILTER | |1 |138 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |100 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 4 - output([1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |118 | +|1 | SUBPLAN FILTER | |1 |117 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |5 |79 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 using(c1) where (t2.c1 is not null) and (t2.c1 is null)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |102 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t1 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0); ++----+------+------+------+ +| c1 | c2 | c2 | c3 | ++----+------+------+------+ ++----+------+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |1 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([t2.c1 > 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0); ++----+------+------+------+ +| c1 | c2 | c2 | c3 | ++----+------+------+------+ ++----+------+------+------+ +EXPLAIN insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |112 | +|1 | SUBPLAN SCAN |VIEW1|36 |107 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |102 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t3_temp: ({t3_temp: (t3_temp.__pk_increment, t3_temp.a, t3_temp.b, t3_temp.c, t3_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); + +rollback; +EXPLAIN insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |80 | +|1 | SUBPLAN SCAN |VIEW1|1 |80 | +|2 | MERGE OUTER JOIN| |1 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t3_temp: ({t3_temp: (t3_temp.__pk_increment, t3_temp.a, t3_temp.b, t3_temp.c, t3_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([t2.c1 > 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |144 | +|1 | SUBPLAN FILTER | |6 |138 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |100 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([1]), filter(nil) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |6 |123 | +|1 | SUBPLAN FILTER | |6 |117 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |1 |79 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([t2.c1 > 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |139 | +|1 | SUBPLAN FILTER | |1 |138 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |100 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([1]), filter(nil) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |118 | +|1 | SUBPLAN FILTER | |1 |117 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |1 |79 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter([t2.c1 > 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 is null) and (t2.c1 > 0)); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case null and false and parent is not and +EXPLAIN select * from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([t2.c1 AND ? < ?]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1; ++----+------+------+------+ +| c1 | c2 | c2 | c3 | ++----+------+------+------+ +| 1 | 1 | 1 | o | +| 2 | 5 | 5 | c | +| 3 | 2 | 5 | b | +| 4 | 6 | 6 | o | +| 5 | 4 | 7 | d | +| 6 | 7 | 8 | c | ++----+------+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([t2.c1 AND ? < ?]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1; ++----+------+------+------+ +| c1 | c2 | c2 | c3 | ++----+------+------+------+ +| 1 | 1 | 1 | o | +| 2 | 5 | 5 | c | +| 3 | 2 | 5 | b | +| 4 | 6 | 6 | o | +| 5 | 4 | 7 | d | +| 6 | 7 | 8 | c | ++----+------+------+------+ +EXPLAIN insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |80 | +|1 | SUBPLAN SCAN |VIEW1|2 |80 | +|2 | MERGE OUTER JOIN| |2 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t3_temp: ({t3_temp: (t3_temp.__pk_increment, t3_temp.a, t3_temp.b, t3_temp.c, t3_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([t2.c1 AND ? < ?]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t3_temp (select * from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1); + +rollback; +EXPLAIN insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |80 | +|1 | SUBPLAN SCAN |VIEW1|2 |80 | +|2 | MERGE OUTER JOIN| |2 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t3_temp: ({t3_temp: (t3_temp.__pk_increment, t3_temp.a, t3_temp.b, t3_temp.c, t3_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c2], [t2.c3]), filter([t2.c1 AND ? < ?]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t3_temp (select /*+ NO_REWRITE */* from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |120 | +|1 | SUBPLAN FILTER | |6 |114 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |76 | +|4 | MERGE OUTER JOIN| |1 |76 | +|5 | TABLE SCAN |t1 |5 |37 | +|6 | TABLE SCAN |t2 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 AND ? < ?]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |120 | +|1 | SUBPLAN FILTER | |6 |114 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |76 | +|4 | MERGE OUTER JOIN| |1 |76 | +|5 | TABLE SCAN |t1 |5 |37 | +|6 | TABLE SCAN |t2 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 AND ? < ?]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |115 | +|1 | SUBPLAN FILTER | |1 |114 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |76 | +|4 | MERGE OUTER JOIN| |1 |76 | +|5 | TABLE SCAN |t1 |5 |37 | +|6 | TABLE SCAN |t2 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 AND ? < ?]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |115 | +|1 | SUBPLAN FILTER | |1 |114 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |76 | +|4 | MERGE OUTER JOIN| |1 |76 | +|5 | TABLE SCAN |t1 |5 |37 | +|6 | TABLE SCAN |t2 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 AND ? < ?]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 using(c1) where (t2.c1 and false) < 1 + 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |6 |263 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |2 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([lnnvl(cast(t2.c2, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | NULL | NULL | NULL | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |6 |263 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |2 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([lnnvl(cast(t2.c2, TINYINT(-1, 0)))]), startup_filter([1]), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | NULL | NULL | NULL | ++----+------+----+------+------+ +EXPLAIN insert into t1_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |265 | +|1 | SUBPLAN SCAN |VIEW1|6 |264 | +|2 | NESTED-LOOP OUTER JOIN| |6 |263 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,cast(VIEW1.c1, VARCHAR(1048576)))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.c3, INT(-1, 0)))]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([lnnvl(cast(t2.c2, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t1_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |265 | +|1 | SUBPLAN SCAN |VIEW1|6 |264 | +|2 | NESTED-LOOP OUTER JOIN| |6 |263 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,cast(VIEW1.c1, VARCHAR(1048576)))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.c3, INT(-1, 0)))]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([1]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([lnnvl(cast(t2.c2, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |306 | +|1 | SUBPLAN FILTER | |6 |300 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP OUTER JOIN| |6 |262 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([lnnvl(cast(t2.c2, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |306 | +|1 | SUBPLAN FILTER | |6 |300 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP OUTER JOIN| |6 |262 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([lnnvl(cast(t2.c2, TINYINT(-1, 0)))]), startup_filter([1]), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |301 | +|1 | SUBPLAN FILTER | |1 |300 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP OUTER JOIN| |6 |262 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([lnnvl(cast(t2.c2, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |301 | +|1 | SUBPLAN FILTER | |1 |300 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP OUTER JOIN| |6 |262 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter([lnnvl(cast(t2.c2, TINYINT(-1, 0)))]), startup_filter([1]), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2) and 1 > 0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |6 |263 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |2 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([lnnvl(cast(t2.c2 + 2 - 1, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | NULL | NULL | NULL | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |6 |263 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |2 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([lnnvl(cast(t2.c2 + 2 - 1, TINYINT(-1, 0)))]), startup_filter([1]), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | NULL | NULL | NULL | ++----+------+----+------+------+ +EXPLAIN insert into t1_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |265 | +|1 | SUBPLAN SCAN |VIEW1|6 |264 | +|2 | NESTED-LOOP OUTER JOIN| |6 |263 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,cast(VIEW1.c1, VARCHAR(1048576)))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.c3, INT(-1, 0)))]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([lnnvl(cast(t2.c2 + 2 - 1, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t1_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); + +rollback; +EXPLAIN insert into t1_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |265 | +|1 | SUBPLAN SCAN |VIEW1|6 |264 | +|2 | NESTED-LOOP OUTER JOIN| |6 |263 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,cast(VIEW1.c1, VARCHAR(1048576)))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.c3, INT(-1, 0)))]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.c, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([1]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([lnnvl(cast(t2.c2 + 2 - 1, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t1_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |306 | +|1 | SUBPLAN FILTER | |6 |300 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP OUTER JOIN| |6 |262 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([lnnvl(cast(t2.c2 + 2 - 1, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |306 | +|1 | SUBPLAN FILTER | |6 |300 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP OUTER JOIN| |6 |262 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([lnnvl(cast(t2.c2 + 2 - 1, TINYINT(-1, 0)))]), startup_filter([1]), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |301 | +|1 | SUBPLAN FILTER | |1 |300 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP OUTER JOIN| |6 |262 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter([lnnvl(cast(t2.c2 + 2 - 1, TINYINT(-1, 0)))]), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |301 | +|1 | SUBPLAN FILTER | |1 |300 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP OUTER JOIN| |6 |262 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter([lnnvl(cast(t2.c2 + 2 - 1, TINYINT(-1, 0)))]), startup_filter([1]), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where lnnvl(t2.c2 + 2 - 1) and 1 > 0); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN | |4 |332 | +|1 | NESTED-LOOP OUTER JOIN| |12 |263 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |2 |37 | +|4 | MATERIAL | |6 |46 | +|5 | SUBPLAN SCAN |VIEW1|6 |44 | +|6 | HASH GROUP BY | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t2.c1 + 1 <= VIEW1.c1 OR (T_OP_IS, t2.c1 + 1, NULL, 0)]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([VIEW1.c1]), filter(nil) + 5 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 6 - output([t3.c1]), filter(nil), + group([t3.c2]), agg_func(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 4 | 6 | 3 | 5 | b | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |SUBPLAN FILTER | |6 |326 | +|1 | NESTED-LOOP OUTER JOIN| |12 |263 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |2 |37 | +|4 | HASH GROUP BY | |6 |44 | +|5 | TABLE SCAN |t3 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 + 1 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1]), filter(nil), + group([t3.c2]), agg_func(nil) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 4 | 6 | 3 | 5 | b | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2)); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |4 |333 | +|1 | SUBPLAN SCAN |VIEW1|4 |333 | +|2 | NESTED-LOOP ANTI JOIN | |4 |332 | +|3 | NESTED-LOOP OUTER JOIN| |12 |263 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +|6 | MATERIAL | |6 |46 | +|7 | SUBPLAN SCAN |VIEW2|6 |44 | +|8 | HASH GROUP BY | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t2.c1 + 1 <= VIEW2.c1 OR (T_OP_IS, t2.c1 + 1, NULL, 0)]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([VIEW2.c1]), filter(nil) + 7 - output([VIEW2.c1]), filter(nil), + access([VIEW2.c1]) + 8 - output([t3.c1]), filter(nil), + group([t3.c2]), agg_func(nil) + 9 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2)); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |6 |327 | +|1 | SUBPLAN SCAN |VIEW1|6 |327 | +|2 | SUBPLAN FILTER | |6 |326 | +|3 | NESTED-LOOP OUTER JOIN| |12 |263 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +|6 | HASH GROUP BY | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 + 1 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + group([t3.c2]), agg_func(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2) and t2.c1=1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | NESTED-LOOP JOIN CARTESIAN| |2 |111 | +|4 | NESTED-LOOP ANTI JOIN | |1 |98 | +|5 | TABLE GET |t2 |1 |52 | +|6 | SUBPLAN SCAN |VIEW1|6 |44 | +|7 | HASH GROUP BY | |6 |44 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([1]), filter(nil), + conds([t2.c1 + 1 <= VIEW1.c1 OR (T_OP_IS, t2.c1 + 1, NULL, 0)]), nl_params_(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 7 - output([t3.c1]), filter(nil), + group([t3.c2]), agg_func(nil) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2) and t2.c1=1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2) and t2.c1=1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |355 | +|1 | SUBPLAN FILTER | |6 |349 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SUBPLAN FILTER | |1 |311 | +|4 | NESTED-LOOP OUTER JOIN| |2 |262 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |2 |37 | +|7 | HASH GROUP BY | |6 |44 | +|8 | TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter([t2.c1 + 1 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 4 - output([t1.c1], [t2.c1]), filter([t2.c1 = 1]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t3.c1]), filter(nil), + group([t3.c2]), agg_func(nil) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2) and t2.c1=1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2) and t2.c1=1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |150 | +|1 | SUBPLAN FILTER | |1 |149 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | NESTED-LOOP JOIN CARTESIAN| |2 |111 | +|4 | NESTED-LOOP ANTI JOIN | |1 |98 | +|5 | TABLE GET |t2 |1 |52 | +|6 | SUBPLAN SCAN |VIEW1|6 |44 | +|7 | HASH GROUP BY | |6 |44 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([1]), filter(nil), + conds([t2.c1 + 1 <= VIEW1.c1 OR (T_OP_IS, t2.c1 + 1, NULL, 0)]), nl_params_(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 7 - output([t3.c1]), filter(nil), + group([t3.c2]), agg_func(nil) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select c1 from t3 group by c2) and t2.c1=1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2) and t2.c1=1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |350 | +|1 | SUBPLAN FILTER | |1 |349 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | SUBPLAN FILTER | |1 |311 | +|4 | NESTED-LOOP OUTER JOIN| |2 |262 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |2 |37 | +|7 | HASH GROUP BY | |6 |44 | +|8 | TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter([t2.c1 + 1 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 4 - output([t1.c1], [t2.c1]), filter([t2.c1 = 1]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t3.c1]), filter(nil), + group([t3.c2]), agg_func(nil) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 > t2.c1 where t2.c1 + 1 > all(select /*+ NO_REWRITE */c1 from t3 group by c2) and t2.c1=1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | NULL | NULL | NULL | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | NULL | NULL | NULL | +| 6 | 7 | 6 | 8 | c | NULL | NULL | NULL | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |1 |120 | +|1 | MERGE OUTER JOIN| |1 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 > 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | NULL | NULL | NULL | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | NULL | NULL | NULL | +| 6 | 7 | 6 | 8 | c | NULL | NULL | NULL | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH RIGHT OUTER JOIN| |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE JOIN | |6 |80 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |120 | +|1 | SUBPLAN SCAN |VIEW1|1 |120 | +|2 | HASH OUTER JOIN | |1 |120 | +|3 | MERGE OUTER JOIN| |1 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 > 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN | |1 |117 | +|5 | HASH RIGHT OUTER JOIN| |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |163 | +|1 | SUBPLAN FILTER | |6 |157 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |119 | +|4 | HASH OUTER JOIN | |1 |119 | +|5 | MERGE OUTER JOIN| |1 |79 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | TABLE SCAN |t3 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter([t2.c1 > 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |156 | +|1 | SUBPLAN FILTER | |1 |155 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN | |1 |117 | +|5 | HASH RIGHT OUTER JOIN| |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |158 | +|1 | SUBPLAN FILTER | |1 |157 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |119 | +|4 | HASH OUTER JOIN | |1 |119 | +|5 | MERGE OUTER JOIN| |1 |79 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | TABLE SCAN |t3 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter([t2.c1 > 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t2.c1 > 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |1 |119 | +|1 | MERGE OUTER JOIN| |1 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE NULL END = 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |1 |119 | +|1 | MERGE OUTER JOIN| |1 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE NULL END = 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |119 | +|1 | SUBPLAN SCAN |VIEW1|1 |119 | +|2 | HASH OUTER JOIN | |1 |119 | +|3 | MERGE OUTER JOIN| |1 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE NULL END = 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |119 | +|1 | SUBPLAN SCAN |VIEW1|1 |119 | +|2 | HASH OUTER JOIN | |1 |119 | +|3 | MERGE OUTER JOIN| |1 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE NULL END = 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |162 | +|1 | SUBPLAN FILTER | |6 |156 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | HASH OUTER JOIN | |1 |118 | +|4 | MERGE OUTER JOIN| |1 |79 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | TABLE SCAN |t3 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE NULL END = 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |162 | +|1 | SUBPLAN FILTER | |6 |156 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | HASH OUTER JOIN | |1 |118 | +|4 | MERGE OUTER JOIN| |1 |79 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | TABLE SCAN |t3 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE NULL END = 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |157 | +|1 | SUBPLAN FILTER | |1 |156 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | HASH OUTER JOIN | |1 |118 | +|4 | MERGE OUTER JOIN| |1 |79 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | TABLE SCAN |t3 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE NULL END = 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |157 | +|1 | SUBPLAN FILTER | |1 |156 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | HASH OUTER JOIN | |1 |118 | +|4 | MERGE OUTER JOIN| |1 |79 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | TABLE SCAN |t3 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE NULL END = 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where (case t2.c2 when 0 then 1 end) = 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +## case +EXPLAIN select * from t1, t1 as v join t2 on v.c1 = t2.c1; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |144 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN |v |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t1 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [v.c1], [v.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([v.c1], [v.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([v.c1 = t2.c1]), other_conds(nil) + 2 - output([v.c1], [v.c2]), filter(nil), + access([v.c1], [v.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1, t1 as v join t2 on v.c1 = t2.c1; ++----+------+----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+----+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | o | +| 1 | 1 | 2 | 5 | 2 | 5 | c | +| 1 | 1 | 3 | 2 | 3 | 5 | b | +| 1 | 1 | 4 | 6 | 4 | 6 | o | +| 1 | 1 | 5 | 4 | 5 | 7 | d | +| 1 | 1 | 6 | 7 | 6 | 8 | c | +| 2 | 5 | 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 2 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | 4 | 6 | o | +| 2 | 5 | 5 | 4 | 5 | 7 | d | +| 2 | 5 | 6 | 7 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | 4 | 6 | o | +| 3 | 2 | 5 | 4 | 5 | 7 | d | +| 3 | 2 | 6 | 7 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | 2 | 5 | c | +| 4 | 6 | 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 4 | 5 | 7 | d | +| 4 | 6 | 6 | 7 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | 2 | 5 | c | +| 5 | 4 | 3 | 2 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 7 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | 2 | 5 | c | +| 6 | 7 | 3 | 2 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | 4 | 6 | o | +| 6 | 7 | 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 7 | 6 | 8 | c | ++----+------+----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t1 as v join t2 on v.c1 = t2.c1; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |144 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN |v |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t1 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [v.c1], [v.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([v.c1], [v.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([v.c1 = t2.c1]), other_conds(nil) + 2 - output([v.c1], [v.c2]), filter(nil), + access([v.c1], [v.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t1 as v join t2 on v.c1 = t2.c1; ++----+------+----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+----+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | o | +| 1 | 1 | 2 | 5 | 2 | 5 | c | +| 1 | 1 | 3 | 2 | 3 | 5 | b | +| 1 | 1 | 4 | 6 | 4 | 6 | o | +| 1 | 1 | 5 | 4 | 5 | 7 | d | +| 1 | 1 | 6 | 7 | 6 | 8 | c | +| 2 | 5 | 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 2 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | 4 | 6 | o | +| 2 | 5 | 5 | 4 | 5 | 7 | d | +| 2 | 5 | 6 | 7 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | 4 | 6 | o | +| 3 | 2 | 5 | 4 | 5 | 7 | d | +| 3 | 2 | 6 | 7 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | 2 | 5 | c | +| 4 | 6 | 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 4 | 5 | 7 | d | +| 4 | 6 | 6 | 7 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | 2 | 5 | c | +| 5 | 4 | 3 | 2 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 7 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | 2 | 5 | c | +| 6 | 7 | 3 | 2 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | 4 | 6 | o | +| 6 | 7 | 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 7 | 6 | 8 | c | ++----+------+----+------+----+------+------+ +EXPLAIN insert into t6_temp (select * from t1, t1 as v join t2 on v.c1 = t2.c1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |154 | +|1 | SUBPLAN SCAN |VIEW1|36 |149 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |144 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN |v |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t6_temp: ({t6_temp: (t6_temp.__pk_increment, t6_temp.a, t6_temp.b, t6_temp.c, t6_temp.d, t6_temp.e, t6_temp.f, t6_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [v.c1], [v.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([v.c1], [v.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([v.c1 = t2.c1]), other_conds(nil) + 4 - output([v.c1], [v.c2]), filter(nil), + access([v.c1], [v.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t6_temp (select * from t1, t1 as v join t2 on v.c1 = t2.c1); + +rollback; +EXPLAIN insert into t6_temp (select /*+ NO_REWRITE */* from t1, t1 as v join t2 on v.c1 = t2.c1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |154 | +|1 | SUBPLAN SCAN |VIEW1|36 |149 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |144 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN |v |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t6_temp: ({t6_temp: (t6_temp.__pk_increment, t6_temp.a, t6_temp.b, t6_temp.c, t6_temp.d, t6_temp.e, t6_temp.f, t6_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [v.c1], [v.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([v.c1], [v.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([v.c1 = t2.c1]), other_conds(nil) + 4 - output([v.c1], [v.c2]), filter(nil), + access([v.c1], [v.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t6_temp (select /*+ NO_REWRITE */* from t1, t1 as v join t2 on v.c1 = t2.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |111 | +|5 | MERGE JOIN | |1 |73 | +|6 | TABLE SCAN |v |1 |36 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + equal_conds([v.c1 = t2.c1]), other_conds(nil) + 6 - output([v.c1]), filter(nil), + access([v.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |111 | +|5 | MERGE JOIN | |1 |73 | +|6 | TABLE SCAN |v |1 |36 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + equal_conds([v.c1 = t2.c1]), other_conds(nil) + 6 - output([v.c1]), filter(nil), + access([v.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |150 | +|1 | SUBPLAN FILTER | |1 |149 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |111 | +|5 | MERGE JOIN | |1 |73 | +|6 | TABLE SCAN |v |1 |36 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + equal_conds([v.c1 = t2.c1]), other_conds(nil) + 6 - output([v.c1]), filter(nil), + access([v.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |150 | +|1 | SUBPLAN FILTER | |1 |149 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |111 | +|5 | MERGE JOIN | |1 |73 | +|6 | TABLE SCAN |v |1 |36 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + equal_conds([v.c1 = t2.c1]), other_conds(nil) + 6 - output([v.c1]), filter(nil), + access([v.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t1 as v join t2 on v.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | +| NULL | NULL | NULL | NULL | NULL | 1 | 2 | 3 | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | +| NULL | NULL | NULL | NULL | NULL | 1 | 2 | 3 | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH OUTER JOIN | |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE OUTER JOIN| |6 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH OUTER JOIN | |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE OUTER JOIN| |6 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |158 | +|1 | SUBPLAN FILTER | |6 |152 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |114 | +|4 | NESTED-LOOP OUTER JOIN| |1 |114 | +|5 | HASH OUTER JOIN | |1 |77 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | TABLE GET |t1 |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t3.c2]), other_conds(nil) + 6 - output([VIEW1.t3.c2]), filter(nil), + access([VIEW1.t3.c2]) + 7 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0), + limit(1), offset(nil) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP OUTER JOIN| |1 |117 | +|5 | HASH OUTER JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |152 | +|1 | SUBPLAN FILTER | |1 |151 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |114 | +|4 | NESTED-LOOP OUTER JOIN| |1 |114 | +|5 | HASH OUTER JOIN | |1 |77 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | TABLE GET |t1 |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t3.c2]), other_conds(nil) + 6 - output([VIEW1.t3.c2]), filter(nil), + access([VIEW1.t3.c2]) + 7 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0), + limit(1), offset(nil) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |156 | +|1 | SUBPLAN FILTER | |1 |155 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP OUTER JOIN| |1 |117 | +|5 | HASH OUTER JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |216 |359 | +|1 | NESTED-LOOP JOIN CARTESIAN| |36 |150 | +|2 | MERGE OUTER JOIN | |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |44 | +|6 | TABLE SCAN |v |6 |37 | +|7 | MATERIAL | |6 |45 | +|8 | TABLE SCAN |t3 |6 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2], [v.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2], [v.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([v.c1], [v.c2], [v.c3]), filter(nil) + 6 - output([v.c1], [v.c2], [v.c3]), filter(nil), + access([v.c1], [v.c2], [v.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 8 - output([t3.c2], [t3.c1], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +select * from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |216 |359 | +|1 | NESTED-LOOP JOIN CARTESIAN| |36 |150 | +|2 | MERGE OUTER JOIN | |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |44 | +|6 | TABLE SCAN |v |6 |37 | +|7 | MATERIAL | |6 |45 | +|8 | TABLE SCAN |t3 |6 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2], [v.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2], [v.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([v.c1], [v.c2], [v.c3]), filter(nil) + 6 - output([v.c1], [v.c2], [v.c3]), filter(nil), + access([v.c1], [v.c2], [v.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 8 - output([t3.c2], [t3.c1], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 6 | 5 | c | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |216 |418 | +|1 | SUBPLAN SCAN |VIEW1|216 |388 | +|2 | NESTED-LOOP JOIN CARTESIAN | |216 |359 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |150 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |v |6 |37 | +|9 | MATERIAL | |6 |45 | +|10| TABLE SCAN |t3 |6 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2], [v.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2], [v.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([v.c1], [v.c2], [v.c3]), filter(nil) + 8 - output([v.c1], [v.c2], [v.c3]), filter(nil), + access([v.c1], [v.c2], [v.c3]), partitions(p0) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 10 - output([t3.c2], [t3.c1], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +insert into t7_temp (select * from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |216 |418 | +|1 | SUBPLAN SCAN |VIEW1|216 |388 | +|2 | NESTED-LOOP JOIN CARTESIAN | |216 |359 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |150 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |v |6 |37 | +|9 | MATERIAL | |6 |45 | +|10| TABLE SCAN |t3 |6 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2], [v.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [v.c1], [v.c2], [v.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([v.c1], [v.c2], [v.c3]), filter(nil) + 8 - output([v.c1], [v.c2], [v.c3]), filter(nil), + access([v.c1], [v.c2], [v.c3]), partitions(p0) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 10 - output([t3.c2], [t3.c1], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |193 | +|1 | SUBPLAN FILTER | |6 |187 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |149 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |149 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |110 | +|6 | MERGE OUTER JOIN | |1 |72 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE SCAN |t1 |1 |36 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |v |6 |37 | +|11| MATERIAL | |6 |39 | +|12| TABLE SCAN |t3 |6 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([v.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |193 | +|1 | SUBPLAN FILTER | |6 |187 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |149 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |149 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |110 | +|6 | MERGE OUTER JOIN | |1 |72 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE SCAN |t1 |1 |36 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |v |6 |37 | +|11| MATERIAL | |6 |39 | +|12| TABLE SCAN |t3 |6 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([v.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |188 | +|1 | SUBPLAN FILTER | |1 |187 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |149 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |149 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |110 | +|6 | MERGE OUTER JOIN | |1 |72 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE SCAN |t1 |1 |36 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |v |6 |37 | +|11| MATERIAL | |6 |39 | +|12| TABLE SCAN |t3 |6 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([v.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |188 | +|1 | SUBPLAN FILTER | |1 |187 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |149 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |149 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |110 | +|6 | MERGE OUTER JOIN | |1 |72 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE SCAN |t1 |1 |36 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |v |6 |37 | +|11| MATERIAL | |6 |39 | +|12| TABLE SCAN |t3 |6 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([v.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1, t2 as v, t3 where t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +##case resolver only support one joined table +##case same table alias twice +EXPLAIN select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |MERGE JOIN | |3 |84 | +|1 | SORT | |6 |43 | +|2 | TABLE SCAN|table1|6 |37 | +|3 | TABLE SCAN |table2|6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([table1.c1], [table1.c2], [table2.c1], [table2.c2]), filter(nil), + equal_conds([table1.c2 = table2.c1]), other_conds([table1.c1 < table2.c1 OR table1.c1 = table2.c2]) + 1 - output([table1.c1], [table1.c2]), filter(nil), sort_keys([table1.c2, ASC]) + 2 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 3 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2; ++----+------+----+------+ +| c1 | c2 | c1 | c2 | ++----+------+----+------+ +| 1 | 1 | 1 | 1 | +| 2 | 5 | 5 | 4 | +| 4 | 6 | 6 | 7 | ++----+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2; +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |MERGE OUTER JOIN| |3 |85 | +|1 | SORT | |6 |43 | +|2 | TABLE SCAN |table1|6 |37 | +|3 | TABLE SCAN |table2|6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([table1.c1], [table1.c2], [table2.c1], [table2.c2]), filter([table1.c1 < table2.c1 OR table1.c1 = table2.c2]), + equal_conds([table1.c2 = table2.c1]), other_conds(nil) + 1 - output([table1.c1], [table1.c2]), filter(nil), sort_keys([table1.c2, ASC]) + 2 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 3 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2; ++----+------+----+------+ +| c1 | c2 | c1 | c2 | ++----+------+----+------+ +| 1 | 1 | 1 | 1 | +| 2 | 5 | 5 | 4 | +| 4 | 6 | 6 | 7 | ++----+------+----+------+ +EXPLAIN insert into t8_temp (select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |INSERT | |3 |85 | +|1 | SUBPLAN SCAN |VIEW1 |3 |84 | +|2 | MERGE JOIN | |3 |84 | +|3 | SORT | |6 |43 | +|4 | TABLE SCAN|table1|6 |37 | +|5 | TABLE SCAN |table2|6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t8_temp: ({t8_temp: (t8_temp.__pk_increment, t8_temp.a, t8_temp.b, t8_temp.c, t8_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([table1.c1], [table1.c2], [table2.c1], [table2.c2]), filter(nil), + equal_conds([table1.c2 = table2.c1]), other_conds([table1.c1 < table2.c1 OR table1.c1 = table2.c2]) + 3 - output([table1.c1], [table1.c2]), filter(nil), sort_keys([table1.c2, ASC]) + 4 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 5 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +insert into t8_temp (select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2); + +rollback; +EXPLAIN insert into t8_temp (select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |3 |86 | +|1 | SUBPLAN SCAN |VIEW1 |3 |85 | +|2 | MERGE OUTER JOIN| |3 |85 | +|3 | SORT | |6 |43 | +|4 | TABLE SCAN |table1|6 |37 | +|5 | TABLE SCAN |table2|6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t8_temp: ({t8_temp: (t8_temp.__pk_increment, t8_temp.a, t8_temp.b, t8_temp.c, t8_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([table1.c1], [table1.c2], [table2.c1], [table2.c2]), filter([table1.c1 < table2.c1 OR table1.c1 = table2.c2]), + equal_conds([table1.c2 = table2.c1]), other_conds(nil) + 3 - output([table1.c1], [table1.c2]), filter(nil), sort_keys([table1.c2, ASC]) + 4 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 5 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +insert into t8_temp (select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2); + +rollback; +EXPLAIN update t1 set c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |6 |127 | +|1 | SUBPLAN FILTER| |6 |121 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |83 | +|4 | HASH JOIN | |1 |83 | +|5 | TABLE SCAN |table1|6 |37 | +|6 | TABLE SCAN |table2|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([table1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([table1.c1]), filter(nil), + equal_conds([table1.c2 = table2.c1]), other_conds([table1.c1 < table2.c1 OR table1.c1 = table2.c2]) + 5 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 6 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +update t1 set c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |127 | +|1 | SUBPLAN FILTER | |6 |121 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |83 | +|4 | HASH OUTER JOIN| |1 |83 | +|5 | TABLE SCAN |table1|6 |37 | +|6 | TABLE SCAN |table2|3 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([table1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([table1.c1]), filter([table1.c1 < table2.c1 OR table1.c1 = table2.c2]), + equal_conds([table1.c2 = table2.c1]), other_conds(nil) + 5 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 6 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |1 |121 | +|1 | SUBPLAN FILTER| |1 |120 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |83 | +|4 | HASH JOIN | |1 |83 | +|5 | TABLE SCAN |table1|6 |37 | +|6 | TABLE SCAN |table2|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([table1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([table1.c1]), filter(nil), + equal_conds([table1.c2 = table2.c1]), other_conds([table1.c1 < table2.c1 OR table1.c1 = table2.c2]) + 5 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 6 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +delete from t1 where c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |122 | +|1 | SUBPLAN FILTER | |1 |121 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |83 | +|4 | HASH OUTER JOIN| |1 |83 | +|5 | TABLE SCAN |table1|6 |37 | +|6 | TABLE SCAN |table2|3 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([table1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([table1.c1]), filter([table1.c1 < table2.c1 OR table1.c1 = table2.c2]), + equal_conds([table1.c2 = table2.c1]), other_conds(nil) + 5 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 6 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 or table1.c1 = table2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +##case same table alias twice +EXPLAIN select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |MERGE JOIN | |2 |79 | +|1 | TABLE SCAN |table1|2 |38 | +|2 | SORT | |2 |39 | +|3 | TABLE SCAN|table2|2 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([table1.c1], [table1.c2], [table2.c1], [table2.c2]), filter(nil), + equal_conds([table1.c1 = table2.c2], [table1.c2 = table2.c1]), other_conds(nil) + 1 - output([table1.c2], [table1.c1]), filter([table1.c2 > table1.c1]), + access([table1.c2], [table1.c1]), partitions(p0) + 2 - output([table2.c1], [table2.c2]), filter(nil), sort_keys([table2.c2, ASC], [table2.c1, ASC]) + 3 - output([table2.c1], [table2.c2]), filter([table2.c1 > table2.c2]), + access([table2.c1], [table2.c2]), partitions(p0) + +select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2; ++----+------+----+------+ +| c1 | c2 | c1 | c2 | ++----+------+----+------+ ++----+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2; +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |MERGE OUTER JOIN| |1 |85 | +|1 | SORT | |6 |43 | +|2 | TABLE SCAN |table1|6 |37 | +|3 | TABLE SCAN |table2|6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([table1.c1], [table1.c2], [table2.c1], [table2.c2]), filter([table1.c1 = table2.c2], [table1.c1 < table2.c1]), + equal_conds([table1.c2 = table2.c1]), other_conds(nil) + 1 - output([table1.c1], [table1.c2]), filter(nil), sort_keys([table1.c2, ASC]) + 2 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 3 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2; ++----+------+----+------+ +| c1 | c2 | c1 | c2 | ++----+------+----+------+ ++----+------+----+------+ +EXPLAIN insert into t8_temp (select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |INSERT | |2 |79 | +|1 | SUBPLAN SCAN |VIEW1 |2 |79 | +|2 | MERGE JOIN | |2 |79 | +|3 | TABLE SCAN |table1|2 |38 | +|4 | SORT | |2 |39 | +|5 | TABLE SCAN|table2|2 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t8_temp: ({t8_temp: (t8_temp.__pk_increment, t8_temp.a, t8_temp.b, t8_temp.c, t8_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([table1.c1], [table1.c2], [table2.c1], [table2.c2]), filter(nil), + equal_conds([table1.c1 = table2.c2], [table1.c2 = table2.c1]), other_conds(nil) + 3 - output([table1.c2], [table1.c1]), filter([table1.c2 > table1.c1]), + access([table1.c2], [table1.c1]), partitions(p0) + 4 - output([table2.c1], [table2.c2]), filter(nil), sort_keys([table2.c2, ASC], [table2.c1, ASC]) + 5 - output([table2.c1], [table2.c2]), filter([table2.c1 > table2.c2]), + access([table2.c1], [table2.c2]), partitions(p0) + +insert into t8_temp (select * from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); + +rollback; +EXPLAIN insert into t8_temp (select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |85 | +|1 | SUBPLAN SCAN |VIEW1 |1 |85 | +|2 | MERGE OUTER JOIN| |1 |85 | +|3 | SORT | |6 |43 | +|4 | TABLE SCAN |table1|6 |37 | +|5 | TABLE SCAN |table2|6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t8_temp: ({t8_temp: (t8_temp.__pk_increment, t8_temp.a, t8_temp.b, t8_temp.c, t8_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([table1.c1], [table1.c2], [table2.c1], [table2.c2]), filter([table1.c1 = table2.c2], [table1.c1 < table2.c1]), + equal_conds([table1.c2 = table2.c1]), other_conds(nil) + 3 - output([table1.c1], [table1.c2]), filter(nil), sort_keys([table1.c2, ASC]) + 4 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 5 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +insert into t8_temp (select /*+ NO_REWRITE */* from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); + +rollback; +EXPLAIN update t1 set c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |6 |122 | +|1 | SUBPLAN FILTER| |6 |116 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE JOIN | |2 |79 | +|4 | TABLE SCAN |table1|2 |38 | +|5 | SORT | |2 |39 | +|6 | TABLE SCAN |table2|2 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([table1.c1]), filter(nil), + equal_conds([table1.c1 = table2.c2], [table1.c2 = table2.c1]), other_conds(nil) + 4 - output([table1.c2], [table1.c1]), filter([table1.c2 > table1.c1]), + access([table1.c2], [table1.c1]), partitions(p0) + 5 - output([table2.c2], [table2.c1]), filter(nil), sort_keys([table2.c2, ASC], [table2.c1, ASC]) + 6 - output([table2.c1], [table2.c2]), filter([table2.c1 > table2.c2]), + access([table2.c1], [table2.c2]), partitions(p0) + +update t1 set c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |129 | +|1 | SUBPLAN FILTER | |6 |123 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE OUTER JOIN| |1 |85 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |table1|6 |37 | +|6 | TABLE SCAN |table2|6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([table1.c1]), filter([table1.c1 = table2.c2], [table1.c1 < table2.c1]), + equal_conds([table1.c2 = table2.c1]), other_conds(nil) + 4 - output([table1.c1], [table1.c2]), filter(nil), sort_keys([table1.c2, ASC]) + 5 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 6 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |1 |117 | +|1 | SUBPLAN FILTER| |1 |116 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE JOIN | |2 |79 | +|4 | TABLE SCAN |table1|2 |38 | +|5 | SORT | |2 |39 | +|6 | TABLE SCAN |table2|2 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([table1.c1]), filter(nil), + equal_conds([table1.c1 = table2.c2], [table1.c2 = table2.c1]), other_conds(nil) + 4 - output([table1.c2], [table1.c1]), filter([table1.c2 > table1.c1]), + access([table1.c2], [table1.c1]), partitions(p0) + 5 - output([table2.c2], [table2.c1]), filter(nil), sort_keys([table2.c2, ASC], [table2.c1, ASC]) + 6 - output([table2.c1], [table2.c2]), filter([table2.c1 > table2.c2]), + access([table2.c1], [table2.c2]), partitions(p0) + +delete from t1 where c2 = (select table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |123 | +|1 | SUBPLAN FILTER | |1 |122 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | MERGE OUTER JOIN| |1 |85 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |table1|6 |37 | +|6 | TABLE SCAN |table2|6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([table1.c1]), filter([table1.c1 = table2.c2], [table1.c1 < table2.c1]), + equal_conds([table1.c2 = table2.c1]), other_conds(nil) + 4 - output([table1.c1], [table1.c2]), filter(nil), sort_keys([table1.c2, ASC]) + 5 - output([table1.c2], [table1.c1]), filter(nil), + access([table1.c2], [table1.c1]), partitions(p0) + 6 - output([table2.c1], [table2.c2]), filter(nil), + access([table2.c1], [table2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */table1.c1 from t1 as table1 left join t1 as table2 on table1.c2 = table2.c1 where table1.c1 < table2.c1 and table1.c1 = table2.c2); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +######################################################################## +### null-reject satisfied +##case +EXPLAIN select * from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |122 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |38 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |123 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SUBPLAN SCAN |v |6 |38 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | TABLE SCAN |t3 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [v.c1], [v.c2], [v.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [v.c1], [v.c2], [v.c3]), filter(nil), + equal_conds([t1.c1 = v.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([v.c1], [v.c2], [v.c3]), filter(nil), + access([v.c1], [v.c2], [v.c3]) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |124 | +|1 | SUBPLAN SCAN |VIEW1|6 |123 | +|2 | MERGE JOIN | |6 |122 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select * from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |124 | +|1 | SUBPLAN SCAN |VIEW1|6 |123 | +|2 | MERGE OUTER JOIN| |6 |123 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SUBPLAN SCAN |v |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | TABLE SCAN |t3 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [v.c1], [v.c2], [v.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [v.c1], [v.c2], [v.c3]), filter(nil), + equal_conds([t1.c1 = v.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([v.c1], [v.c2], [v.c3]), filter(nil), + access([v.c1], [v.c2], [v.c3]) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP OUTER JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | SUBPLAN SCAN |v |3 |37 | +|8 | TABLE SCAN |t2 |3 |37 | +|9 | TABLE GET |t3 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = v.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([v.c1]), filter(nil), + access([v.c1]) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 9 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |149 | +|1 | SUBPLAN FILTER | |1 |148 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 join (select * from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |150 | +|1 | SUBPLAN FILTER | |1 |149 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP OUTER JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | SUBPLAN SCAN |v |3 |37 | +|8 | TABLE SCAN |t2 |3 |37 | +|9 | TABLE GET |t3 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = v.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([v.c1]), filter(nil), + access([v.c1]) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 9 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join (select /*+ NO_REWRITE */* from t2) as v on t1.c1 = v.c1 left join t3 on t1.c1 = t3.c1 where t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |122 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |38 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |122 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |38 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |124 | +|1 | SUBPLAN SCAN |VIEW1|6 |123 | +|2 | MERGE JOIN | |6 |122 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select * from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |124 | +|1 | SUBPLAN SCAN |VIEW1|6 |123 | +|2 | MERGE JOIN | |6 |122 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |149 | +|1 | SUBPLAN FILTER | |1 |148 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |149 | +|1 | SUBPLAN FILTER | |1 |148 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([(T_OP_IS_NOT, t3.c2, NULL, 0)]), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t1.c1 = t3.c1 and t3.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +##case +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |HASH JOIN | |6 |137 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE JOIN | |6 |82 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |40 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c3], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c1], [t2.c3], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN | |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c3], [t2.c2]), filter(nil), + access([t2.c1], [t2.c3], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |139 | +|1 | SUBPLAN SCAN |VIEW1|6 |138 | +|2 | HASH JOIN | |6 |137 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE JOIN | |6 |82 | +|5 | TABLE SCAN|t1 |6 |37 | +|6 | TABLE SCAN|t2 |6 |40 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c3], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c1], [t2.c3], [t2.c2]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH RIGHT OUTER JOIN| |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c3], [t2.c2]), filter(nil), + access([t2.c1], [t2.c3], [t2.c2]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |162 | +|1 | SUBPLAN FILTER | |6 |156 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |118 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE GET |t2 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |162 | +|1 | SUBPLAN FILTER | |6 |156 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |119 | +|4 | NESTED-LOOP OUTER JOIN| |1 |119 | +|5 | HASH OUTER JOIN | |1 |82 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)], [(T_OP_IS_NOT, t3.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c2], [t3.c1]), filter(nil), + access([t3.c2], [t3.c1]), partitions(p0) + 8 - output([t2.c3]), filter(nil), + access([t2.c3]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |157 | +|1 | SUBPLAN FILTER | |1 |156 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |118 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE GET |t2 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |157 | +|1 | SUBPLAN FILTER | |1 |156 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |119 | +|4 | NESTED-LOOP OUTER JOIN| |1 |119 | +|5 | HASH OUTER JOIN | |1 |82 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)], [(T_OP_IS_NOT, t3.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c2], [t3.c1]), filter(nil), + access([t3.c2], [t3.c1]), partitions(p0) + 8 - output([t2.c3]), filter(nil), + access([t2.c3]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |161 | +|1 | HASH JOIN | |6 |88 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MATERIAL | |6 |47 | +|5 | TABLE SCAN |t2 |6 |40 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + +select * from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | 2 | 5 | 4 | +| 2 | 5 | 1 | 1 | o | 4 | 5 | 1 | +| 2 | 5 | 1 | 1 | o | 5 | 5 | 5 | +| 2 | 5 | 1 | 1 | o | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 2 | 5 | 3 | 5 | b | 2 | 5 | 4 | +| 2 | 5 | 3 | 5 | b | 4 | 5 | 1 | +| 2 | 5 | 3 | 5 | b | 5 | 5 | 5 | +| 2 | 5 | 3 | 5 | b | 6 | 5 | c | +| 2 | 5 | 4 | 6 | o | 2 | 5 | 4 | +| 2 | 5 | 4 | 6 | o | 4 | 5 | 1 | +| 2 | 5 | 4 | 6 | o | 5 | 5 | 5 | +| 2 | 5 | 4 | 6 | o | 6 | 5 | c | +| 2 | 5 | 5 | 7 | d | 2 | 5 | 4 | +| 2 | 5 | 5 | 7 | d | 4 | 5 | 1 | +| 2 | 5 | 5 | 7 | d | 5 | 5 | 5 | +| 2 | 5 | 5 | 7 | d | 6 | 5 | c | +| 2 | 5 | 6 | 8 | c | 2 | 5 | 4 | +| 2 | 5 | 6 | 8 | c | 4 | 5 | 1 | +| 2 | 5 | 6 | 8 | c | 5 | 5 | 5 | +| 2 | 5 | 6 | 8 | c | 6 | 5 | c | +| 3 | 2 | 1 | 1 | o | 1 | 2 | 3 | +| 3 | 2 | 2 | 5 | c | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 3 | 2 | 4 | 6 | o | 1 | 2 | 3 | +| 3 | 2 | 5 | 7 | d | 1 | 2 | 3 | +| 3 | 2 | 6 | 8 | c | 1 | 2 | 3 | +| 4 | 6 | 1 | 1 | o | 3 | 6 | 1 | +| 4 | 6 | 2 | 5 | c | 3 | 6 | 1 | +| 4 | 6 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | +| 4 | 6 | 5 | 7 | d | 3 | 6 | 1 | +| 4 | 6 | 6 | 8 | c | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |162 | +|1 | HASH JOIN | |6 |88 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t3 |6 |38 | +|4 | MATERIAL | |6 |47 | +|5 | TABLE SCAN |t2 |6 |40 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | 2 | 5 | 4 | +| 2 | 5 | 1 | 1 | o | 4 | 5 | 1 | +| 2 | 5 | 1 | 1 | o | 5 | 5 | 5 | +| 2 | 5 | 1 | 1 | o | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 2 | 5 | 3 | 5 | b | 2 | 5 | 4 | +| 2 | 5 | 3 | 5 | b | 4 | 5 | 1 | +| 2 | 5 | 3 | 5 | b | 5 | 5 | 5 | +| 2 | 5 | 3 | 5 | b | 6 | 5 | c | +| 2 | 5 | 4 | 6 | o | 2 | 5 | 4 | +| 2 | 5 | 4 | 6 | o | 4 | 5 | 1 | +| 2 | 5 | 4 | 6 | o | 5 | 5 | 5 | +| 2 | 5 | 4 | 6 | o | 6 | 5 | c | +| 2 | 5 | 5 | 7 | d | 2 | 5 | 4 | +| 2 | 5 | 5 | 7 | d | 4 | 5 | 1 | +| 2 | 5 | 5 | 7 | d | 5 | 5 | 5 | +| 2 | 5 | 5 | 7 | d | 6 | 5 | c | +| 2 | 5 | 6 | 8 | c | 2 | 5 | 4 | +| 2 | 5 | 6 | 8 | c | 4 | 5 | 1 | +| 2 | 5 | 6 | 8 | c | 5 | 5 | 5 | +| 2 | 5 | 6 | 8 | c | 6 | 5 | c | +| 3 | 2 | 1 | 1 | o | 1 | 2 | 3 | +| 3 | 2 | 2 | 5 | c | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 3 | 2 | 4 | 6 | o | 1 | 2 | 3 | +| 3 | 2 | 5 | 7 | d | 1 | 2 | 3 | +| 3 | 2 | 6 | 8 | c | 1 | 2 | 3 | +| 4 | 6 | 1 | 1 | o | 3 | 6 | 1 | +| 4 | 6 | 2 | 5 | c | 3 | 6 | 1 | +| 4 | 6 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | +| 4 | 6 | 5 | 7 | d | 3 | 6 | 1 | +| 4 | 6 | 6 | 8 | c | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |171 | +|1 | SUBPLAN SCAN |VIEW1|36 |166 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |161 | +|3 | HASH JOIN | |6 |88 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |47 | +|7 | TABLE SCAN |t2 |6 |40 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 4 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + +insert into t5_temp (select * from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |172 | +|1 | SUBPLAN SCAN |VIEW1|36 |167 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |162 | +|3 | HASH JOIN | |6 |88 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t3 |6 |38 | +|6 | MATERIAL | |6 |47 | +|7 | TABLE SCAN |t2 |6 |40 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 4 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |169 | +|1 | SUBPLAN FILTER | |6 |163 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |125 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |125 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |6 |88 | +|7 | HASH JOIN | |6 |86 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |t3 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 9 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |170 | +|1 | SUBPLAN FILTER | |6 |164 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |127 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |127 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |6 |90 | +|7 | HASH JOIN | |6 |87 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |t3 |6 |38 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 9 - output([t3.c2]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + access([t3.c1], [t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |164 | +|1 | SUBPLAN FILTER | |1 |163 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |125 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |125 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |6 |88 | +|7 | HASH JOIN | |6 |86 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |t3 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 9 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |165 | +|1 | SUBPLAN FILTER | |1 |164 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |127 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |127 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |6 |90 | +|7 | HASH JOIN | |6 |87 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |t3 |6 |38 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 9 - output([t3.c2]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + access([t3.c1], [t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t1, t2, t3 where t3.c1 is not null and t1.c2 = t3.c2 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH JOIN | |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN | |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH JOIN | |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE OUTER JOIN| |6 |80 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH RIGHT OUTER JOIN| |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |125 | +|1 | SUBPLAN FILTER| |6 |119 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |81 | +|4 | HASH JOIN | |1 |81 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |162 | +|1 | SUBPLAN FILTER | |6 |156 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |119 | +|4 | NESTED-LOOP OUTER JOIN| |1 |119 | +|5 | HASH OUTER JOIN | |1 |82 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c2], [t3.c1]), filter(nil), + access([t3.c2], [t3.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |119 | +|1 | SUBPLAN FILTER| |1 |118 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |81 | +|4 | HASH JOIN | |1 |81 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |157 | +|1 | SUBPLAN FILTER | |1 |156 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |119 | +|4 | NESTED-LOOP OUTER JOIN| |1 |119 | +|5 | HASH OUTER JOIN | |1 |82 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c2], [t3.c1]), filter(nil), + access([t3.c2], [t3.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 left join t3 on t1.c2 = t3.c2 where t3.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH JOIN | |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH JOIN | |6 |135 | +|1 | TABLE SCAN |t3 |6 |38 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH JOIN | |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE OUTER JOIN| |6 |80 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH JOIN | |6 |135 | +|3 | TABLE SCAN |t3 |6 |38 | +|4 | MERGE OUTER JOIN| |6 |80 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |125 | +|1 | SUBPLAN FILTER| |6 |119 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |81 | +|4 | HASH JOIN | |1 |81 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |162 | +|1 | SUBPLAN FILTER | |6 |156 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |119 | +|4 | NESTED-LOOP OUTER JOIN| |1 |119 | +|5 | HASH JOIN | |1 |82 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t3 |1 |37 | +|8 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c2]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |119 | +|1 | SUBPLAN FILTER| |1 |118 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |81 | +|4 | HASH JOIN | |1 |81 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |157 | +|1 | SUBPLAN FILTER | |1 |156 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |119 | +|4 | NESTED-LOOP OUTER JOIN| |1 |119 | +|5 | HASH JOIN | |1 |82 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t3 |1 |37 | +|8 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t3.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c2]), filter([(T_OP_IS_NOT, t3.c1, NULL, 0)]), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1, t3 where t3.c1 is not null and t1.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 join t2 on t1.c1 = t2.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 join t2 on t1.c1 = t2.c1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 join t2 on t1.c1 = t2.c1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN|VIEW1|6 |80 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 join t2 on t1.c1 = t2.c1); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN|VIEW1|6 |80 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1, t2 where t1.c1 = t2.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1, t2 where t1.c1 = t2.c1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t1.c1 = t2.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t1.c1 = t2.c1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1 = t2.c1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN|VIEW1|6 |80 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1 = t2.c1); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 = t2.c1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN|VIEW1|6 |80 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 = t2.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |122 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |122 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |123 | +|1 | SUBPLAN SCAN |VIEW1|6 |123 | +|2 | MERGE JOIN | |6 |122 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |123 | +|1 | SUBPLAN SCAN |VIEW1|6 |123 | +|2 | MERGE JOIN | |6 |122 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |149 | +|1 | SUBPLAN FILTER | |1 |148 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |149 | +|1 | SUBPLAN FILTER | |1 |148 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |122 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |122 | +|1 | MERGE JOIN | |6 |80 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |123 | +|1 | SUBPLAN SCAN |VIEW1|6 |123 | +|2 | MERGE JOIN | |6 |122 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select * from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |123 | +|1 | SUBPLAN SCAN |VIEW1|6 |123 | +|2 | MERGE JOIN | |6 |122 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |149 | +|1 | SUBPLAN FILTER | |1 |148 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |149 | +|1 | SUBPLAN FILTER | |1 |148 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE GET |t3 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1 = t2.c1 and t2.c1 = t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN|VIEW1|6 |80 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN|VIEW1|6 |80 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t2.c1 is not null and t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1>1 where t2.c1 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1>1 where t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is not null; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |6 |98 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |44 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + conds([t1.c1 > 1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1>1 where t2.c1 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1>1 where t2.c1 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is not null); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |99 | +|1 | SUBPLAN SCAN |VIEW1|6 |99 | +|2 | NESTED-LOOP OUTER JOIN| |6 |98 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + conds([t1.c1 > 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |121 | +|1 | SUBPLAN FILTER | |6 |115 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |77 | +|4 | NESTED-LOOP OUTER JOIN| |1 |77 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + conds([t1.c1 > 1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |115 | +|1 | SUBPLAN FILTER | |1 |114 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |77 | +|4 | NESTED-LOOP OUTER JOIN| |1 |77 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + conds([t1.c1 > 1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 4 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 4 | ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN |VIEW1|6 |81 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |116 | +|1 | SUBPLAN FILTER | |6 |110 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + conds(nil), nl_params_([t1.c1], [t1.c2]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c2]), filter([? = t2.c2]), + access([t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + conds(nil), nl_params_([t1.c1], [t1.c2]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c2]), filter([? = t2.c2]), + access([t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 4 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 4 | ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 = t2.c1 and t1.c2 = t2.c2 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|1 | TABLE SCAN |t2 |6 |40 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|1 | TABLE SCAN |t2 |6 |40 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |109 | +|1 | SUBPLAN SCAN |VIEW1|30 |104 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|3 | TABLE SCAN |t2 |6 |40 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |109 | +|1 | SUBPLAN SCAN |VIEW1|30 |104 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|3 | TABLE SCAN |t2 |6 |40 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|1 | TABLE SCAN |t2 |6 |40 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|1 | TABLE SCAN |t2 |6 |40 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |109 | +|1 | SUBPLAN SCAN |VIEW1|30 |104 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|3 | TABLE SCAN |t2 |6 |40 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |109 | +|1 | SUBPLAN SCAN |VIEW1|30 |104 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|3 | TABLE SCAN |t2 |6 |40 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN|VIEW1|6 |80 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN|VIEW1|6 |80 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 4 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 4 | ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c1 and t1.c2 = t2.c2 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 4 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |6 |80 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 4 | ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN|VIEW1|6 |81 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1], [t1.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1], [t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 and t1.c2=t2.c2 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 inner join t2 on t1.c1>1 where t2.c1 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 inner join t2 on t1.c1>1 where t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c1 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c1 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c1 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c1 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c1 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c1, NULL, 0)]), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|1 | TABLE SCAN |t2 |6 |38 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c2 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |106 | +|1 | SUBPLAN SCAN |VIEW1|30 |102 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |98 | +|3 | TABLE SCAN |t2 |6 |38 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c2], [t2.c1], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c2 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c2, NULL, 0)]), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c2 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|1 | TABLE SCAN |t2 |6 |40 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|1 | TABLE SCAN |t2 |6 |40 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |109 | +|1 | SUBPLAN SCAN |VIEW1|30 |104 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|3 | TABLE SCAN |t2 |6 |40 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |109 | +|1 | SUBPLAN SCAN |VIEW1|30 |104 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|3 | TABLE SCAN |t2 |6 |40 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1>1 where t2.c3 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1>1 where t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|1 | TABLE SCAN |t2 |6 |40 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|1 | TABLE SCAN |t2 |6 |40 | +|2 | MATERIAL | |5 |39 | +|3 | TABLE SCAN |t1 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 2 | 5 | 3 | 5 | b | +| 2 | 5 | 4 | 6 | o | +| 2 | 5 | 5 | 7 | d | +| 2 | 5 | 6 | 8 | c | +| 3 | 2 | 1 | 1 | o | +| 3 | 2 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 3 | 2 | 4 | 6 | o | +| 3 | 2 | 5 | 7 | d | +| 3 | 2 | 6 | 8 | c | +| 4 | 6 | 1 | 1 | o | +| 4 | 6 | 2 | 5 | c | +| 4 | 6 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 4 | 6 | 5 | 7 | d | +| 4 | 6 | 6 | 8 | c | +| 5 | 4 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 5 | 4 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 5 | 4 | 6 | 8 | c | +| 6 | 7 | 1 | 1 | o | +| 6 | 7 | 2 | 5 | c | +| 6 | 7 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| 6 | 7 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |109 | +|1 | SUBPLAN SCAN |VIEW1|30 |104 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|3 | TABLE SCAN |t2 |6 |40 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1 > 1 and t2.c3 is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |30 |109 | +|1 | SUBPLAN SCAN |VIEW1|30 |104 | +|2 | NESTED-LOOP JOIN CARTESIAN| |30 |100 | +|3 | TABLE SCAN |t2 |6 |40 | +|4 | MATERIAL | |5 |39 | +|5 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c3], [t2.c1], [t2.c2]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1 > 1 and t2.c3 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |5 |38 | +|7 | TABLE SCAN |t1 |5 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([(T_OP_IS_NOT, t2.c3, NULL, 0)]), + access([t2.c3]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1 > 1 and t2.c3 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +################################################################################################################ +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |6 |138 | +|1 | MERGE OUTER JOIN | |6 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t3 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 = t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |6 |138 | +|1 | MERGE OUTER JOIN | |6 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t3 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 = t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |140 | +|1 | SUBPLAN SCAN |VIEW1|6 |139 | +|2 | NESTED-LOOP OUTER JOIN| |6 |138 | +|3 | MERGE OUTER JOIN | |6 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 = t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |140 | +|1 | SUBPLAN SCAN |VIEW1|6 |139 | +|2 | NESTED-LOOP OUTER JOIN| |6 |138 | +|3 | MERGE OUTER JOIN | |6 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 = t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |157 | +|1 | SUBPLAN FILTER | |6 |151 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |113 | +|4 | NESTED-LOOP OUTER JOIN | |1 |113 | +|5 | NESTED-LOOP OUTER JOIN| |1 |73 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t3 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + conds([VIEW1.t1.c1 = t2.c1]), nl_params_(nil) + 5 - output([VIEW1.t1.c1], [t2.c1]), filter(nil), + conds(nil), nl_params_([VIEW1.t1.c1]) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |158 | +|1 | SUBPLAN FILTER | |6 |152 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |114 | +|4 | NESTED-LOOP OUTER JOIN| |1 |114 | +|5 | MERGE OUTER JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 = t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |152 | +|1 | SUBPLAN FILTER | |1 |151 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |113 | +|4 | NESTED-LOOP OUTER JOIN | |1 |113 | +|5 | NESTED-LOOP OUTER JOIN| |1 |73 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t3 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + conds([VIEW1.t1.c1 = t2.c1]), nl_params_(nil) + 5 - output([VIEW1.t1.c1], [t2.c1]), filter(nil), + conds(nil), nl_params_([VIEW1.t1.c1]) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |153 | +|1 | SUBPLAN FILTER | |1 |152 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |114 | +|4 | NESTED-LOOP OUTER JOIN| |1 |114 | +|5 | MERGE OUTER JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 = t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |216 |390 | +|1 | NESTED-LOOP JOIN CARTESIAN| |36 |196 | +|2 | MERGE OUTER JOIN | |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +|5 | MATERIAL | |6 |88 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | TABLE SCAN |t |6 |37 | +|9 | MATERIAL | |6 |40 | +|10| TABLE SCAN |tt |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), startup_filter([1]), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil) + 6 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + 9 - output([tt.c1], [tt.c2]), filter(nil) + 10 - output([tt.c1], [tt.c2]), filter(nil), + access([tt.c1], [tt.c2]), partitions(p0) + +select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null; ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 6 | 7 | ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |216 |390 | +|1 | NESTED-LOOP JOIN CARTESIAN| |36 |196 | +|2 | MERGE OUTER JOIN | |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +|5 | MATERIAL | |6 |89 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t1 |6 |38 | +|8 | TABLE SCAN |t |6 |37 | +|9 | MATERIAL | |6 |40 | +|10| TABLE SCAN |tt |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil) + 6 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter([(T_OP_IS_NOT, t1.c1, NULL, 0)]), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + 9 - output([tt.c1], [tt.c2]), filter(nil) + 10 - output([tt.c1], [tt.c2]), filter(nil), + access([tt.c1], [tt.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null; ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | 6 | 7 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 1 | 1 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 2 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 3 | 2 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 4 | 6 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | 6 | 7 | ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +EXPLAIN insert into t10_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |216 |449 | +|1 | SUBPLAN SCAN |VIEW1|216 |420 | +|2 | NESTED-LOOP JOIN CARTESIAN | |216 |390 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |196 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | MATERIAL | |6 |88 | +|8 | MERGE OUTER JOIN | |6 |80 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| TABLE SCAN |t |6 |37 | +|11| MATERIAL | |6 |40 | +|12| TABLE SCAN |tt |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t10_temp: ({t10_temp: (t10_temp.__pk_increment, t10_temp.a, t10_temp.b, t10_temp.c, t10_temp.d, t10_temp.e, t10_temp.f, t10_temp.g, t10_temp.h, t10_temp.i, t10_temp.j, t10_temp.k, t10_temp.l, t10_temp.m)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([1]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil) + 8 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 10 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + 11 - output([tt.c1], [tt.c2]), filter(nil) + 12 - output([tt.c1], [tt.c2]), filter(nil), + access([tt.c1], [tt.c2]), partitions(p0) + +insert into t10_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null); + +rollback; +EXPLAIN insert into t10_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |216 |450 | +|1 | SUBPLAN SCAN |VIEW1|216 |420 | +|2 | NESTED-LOOP JOIN CARTESIAN | |216 |390 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |196 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | MATERIAL | |6 |89 | +|8 | MERGE OUTER JOIN | |6 |80 | +|9 | TABLE SCAN |t1 |6 |38 | +|10| TABLE SCAN |t |6 |37 | +|11| MATERIAL | |6 |40 | +|12| TABLE SCAN |tt |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t10_temp: ({t10_temp: (t10_temp.__pk_increment, t10_temp.a, t10_temp.b, t10_temp.c, t10_temp.d, t10_temp.e, t10_temp.f, t10_temp.g, t10_temp.h, t10_temp.i, t10_temp.j, t10_temp.k, t10_temp.l, t10_temp.m)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil) + 8 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 9 - output([t1.c1], [t1.c2]), filter([(T_OP_IS_NOT, t1.c1, NULL, 0)]), + access([t1.c1], [t1.c2]), partitions(p0) + 10 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + 11 - output([tt.c1], [tt.c2]), filter(nil) + 12 - output([tt.c1], [tt.c2]), filter(nil), + access([tt.c1], [tt.c2]), partitions(p0) + +insert into t10_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |156 | +|1 | SUBPLAN FILTER | |6 |150 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |113 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |113 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |tt |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([1]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([tt.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |236 | +|1 | SUBPLAN FILTER | |6 |230 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |192 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |192 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |153 | +|6 | MERGE OUTER JOIN | |1 |72 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE SCAN |t |1 |36 | +|9 | MATERIAL | |6 |81 | +|10| MERGE OUTER JOIN | |6 |79 | +|11| TABLE SCAN |t2 |6 |37 | +|12| TABLE SCAN |t3 |6 |37 | +|13| MATERIAL | |6 |38 | +|14| TABLE SCAN |tt |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 7 - output([t1.c1]), filter([(T_OP_IS_NOT, t1.c1, NULL, 0)]), + access([t1.c1]), partitions(p0) + 8 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 13 - output([1]), filter(nil) + 14 - output([1]), filter(nil), + access([tt.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |151 | +|1 | SUBPLAN FILTER | |1 |150 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |113 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |113 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |tt |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([1]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([tt.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |230 | +|1 | SUBPLAN FILTER | |1 |229 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |192 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |192 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |153 | +|6 | MERGE OUTER JOIN | |1 |72 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE SCAN |t |1 |36 | +|9 | MATERIAL | |6 |81 | +|10| MERGE OUTER JOIN | |6 |79 | +|11| TABLE SCAN |t2 |6 |37 | +|12| TABLE SCAN |t3 |6 |37 | +|13| MATERIAL | |6 |38 | +|14| TABLE SCAN |tt |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 7 - output([t1.c1]), filter([(T_OP_IS_NOT, t1.c1, NULL, 0)]), + access([t1.c1]), partitions(p0) + 8 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 13 - output([1]), filter(nil) + 14 - output([1]), filter(nil), + access([tt.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |NESTED-LOOP JOIN | |1 |145 | +|1 | NESTED-LOOP JOIN| |1 |138 | +|2 | HASH JOIN | |6 |87 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |tt |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | TABLE GET |t3 |1 |36 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 2 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |NESTED-LOOP JOIN | |1 |145 | +|1 | NESTED-LOOP JOIN| |1 |138 | +|2 | HASH JOIN | |6 |87 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |tt |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | TABLE GET |t3 |1 |36 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 2 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |145 | +|1 | SUBPLAN SCAN |VIEW1|1 |145 | +|2 | NESTED-LOOP JOIN | |1 |145 | +|3 | NESTED-LOOP JOIN| |1 |138 | +|4 | HASH JOIN | |6 |87 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |tt |6 |37 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | TABLE GET |t3 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 4 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |145 | +|1 | SUBPLAN SCAN |VIEW1|1 |145 | +|2 | NESTED-LOOP JOIN | |1 |145 | +|3 | NESTED-LOOP JOIN| |1 |138 | +|4 | HASH JOIN | |6 |87 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |tt |6 |37 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | TABLE GET |t3 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 4 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |189 | +|1 | SUBPLAN FILTER | |6 |183 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |145 | +|4 | NESTED-LOOP JOIN | |1 |145 | +|5 | NESTED-LOOP JOIN| |1 |138 | +|6 | HASH JOIN | |6 |87 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | TABLE SCAN |tt |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| TABLE GET |t3 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 6 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |189 | +|1 | SUBPLAN FILTER | |6 |183 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |145 | +|4 | NESTED-LOOP JOIN | |1 |145 | +|5 | NESTED-LOOP JOIN| |1 |138 | +|6 | HASH JOIN | |6 |87 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | TABLE SCAN |tt |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| TABLE GET |t3 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 6 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |184 | +|1 | SUBPLAN FILTER | |1 |183 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |145 | +|4 | NESTED-LOOP JOIN | |1 |145 | +|5 | NESTED-LOOP JOIN| |1 |138 | +|6 | HASH JOIN | |6 |87 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | TABLE SCAN |tt |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| TABLE GET |t3 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 6 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |184 | +|1 | SUBPLAN FILTER | |1 |183 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |145 | +|4 | NESTED-LOOP JOIN | |1 |145 | +|5 | NESTED-LOOP JOIN| |1 |138 | +|6 | HASH JOIN | |6 |87 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | TABLE SCAN |tt |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| TABLE GET |t3 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 6 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |196 | +|1 | MERGE OUTER JOIN | |6 |80 | +|2 | TABLE SCAN |t2 |6 |37 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MATERIAL | |6 |88 | +|5 | MERGE OUTER JOIN | |6 |80 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil) + 5 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |196 | +|1 | MERGE OUTER JOIN | |6 |80 | +|2 | TABLE SCAN |t2 |6 |37 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MATERIAL | |6 |88 | +|5 | MERGE OUTER JOIN | |6 |80 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil) + 5 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | +| 1 | 1 | 1 | 1 | o | 2 | 5 | c | 2 | 5 | 4 | +| 1 | 1 | 1 | 1 | o | 3 | 5 | b | 3 | 6 | 1 | +| 1 | 1 | 1 | 1 | o | 4 | 6 | o | 4 | 5 | 1 | +| 1 | 1 | 1 | 1 | o | 5 | 7 | d | 5 | 5 | 5 | +| 1 | 1 | 1 | 1 | o | 6 | 8 | c | 6 | 5 | c | +| 2 | 5 | 2 | 5 | c | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 3 | 5 | b | 3 | 6 | 1 | +| 2 | 5 | 2 | 5 | c | 4 | 6 | o | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 7 | d | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 8 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 1 | 1 | o | 1 | 2 | 3 | +| 3 | 2 | 3 | 5 | b | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | +| 3 | 2 | 3 | 5 | b | 4 | 6 | o | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 7 | d | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 8 | c | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 1 | 1 | o | 1 | 2 | 3 | +| 4 | 6 | 4 | 6 | o | 2 | 5 | c | 2 | 5 | 4 | +| 4 | 6 | 4 | 6 | o | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | +| 4 | 6 | 4 | 6 | o | 5 | 7 | d | 5 | 5 | 5 | +| 4 | 6 | 4 | 6 | o | 6 | 8 | c | 6 | 5 | c | +| 5 | 4 | 5 | 7 | d | 1 | 1 | o | 1 | 2 | 3 | +| 5 | 4 | 5 | 7 | d | 2 | 5 | c | 2 | 5 | 4 | +| 5 | 4 | 5 | 7 | d | 3 | 5 | b | 3 | 6 | 1 | +| 5 | 4 | 5 | 7 | d | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | +| 5 | 4 | 5 | 7 | d | 6 | 8 | c | 6 | 5 | c | +| 6 | 7 | 6 | 8 | c | 1 | 1 | o | 1 | 2 | 3 | +| 6 | 7 | 6 | 8 | c | 2 | 5 | c | 2 | 5 | 4 | +| 6 | 7 | 6 | 8 | c | 3 | 5 | b | 3 | 6 | 1 | +| 6 | 7 | 6 | 8 | c | 4 | 6 | o | 4 | 5 | 1 | +| 6 | 7 | 6 | 8 | c | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |206 | +|1 | SUBPLAN SCAN |VIEW1|36 |201 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |196 | +|3 | MERGE OUTER JOIN | |6 |80 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |88 | +|7 | MERGE OUTER JOIN | |6 |80 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |t |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil) + 7 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |206 | +|1 | SUBPLAN SCAN |VIEW1|36 |201 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |196 | +|3 | MERGE OUTER JOIN | |6 |80 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |88 | +|7 | MERGE OUTER JOIN | |6 |80 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |t |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil) + 7 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |198 | +|1 | SUBPLAN FILTER | |6 |192 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |154 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |154 | +|5 | MERGE OUTER JOIN | |1 |73 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | TABLE SCAN |t |1 |36 | +|8 | MATERIAL | |6 |81 | +|9 | MERGE OUTER JOIN | |6 |79 | +|10| TABLE SCAN |t2 |6 |37 | +|11| TABLE SCAN |t3 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |193 | +|1 | SUBPLAN FILTER | |1 |192 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |154 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |154 | +|5 | MERGE OUTER JOIN | |1 |73 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | TABLE SCAN |t |1 |36 | +|8 | MATERIAL | |6 |81 | +|9 | MERGE OUTER JOIN | |6 |79 | +|10| TABLE SCAN |t2 |6 |37 | +|11| TABLE SCAN |t3 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |151 | +|1 | NESTED-LOOP JOIN | |1 |150 | +|2 | NESTED-LOOP JOIN | |1 |143 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |92 | +|5 | HASH JOIN | |6 |87 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |tt |6 |37 | +|8 | TABLE GET |t3 |1 |36 | +|9 | TABLE GET |t |1 |36 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_([t1.c1], [t2.c1]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [tt.c1], [tt.c2]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [tt.c1], [tt.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2], [tt.c1], [tt.c2]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 9 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | ++----+------+----+------+------+----+------+------+----+------+------+----+------+ ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP OUTER JOIN | |1 |151 | +|1 | NESTED-LOOP OUTER JOIN| |1 |150 | +|2 | NESTED-LOOP JOIN | |1 |143 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |92 | +|5 | HASH JOIN | |6 |87 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |tt |6 |37 | +|8 | TABLE GET |t3 |1 |36 | +|9 | TABLE GET |t |1 |36 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter([t1.c1 = t3.c1]), + conds(nil), nl_params_([t2.c1]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [tt.c1], [tt.c2]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [tt.c1], [tt.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2], [tt.c1], [tt.c2]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 9 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1; ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | ++----+------+----+------+------+----+------+------+----+------+------+----+------+ ++----+------+----+------+------+----+------+------+----+------+------+----+------+ +EXPLAIN insert into t10_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |151 | +|1 | SUBPLAN SCAN |VIEW1|1 |151 | +|2 | NESTED-LOOP OUTER JOIN| |1 |151 | +|3 | NESTED-LOOP JOIN | |1 |150 | +|4 | NESTED-LOOP JOIN | |1 |143 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |92 | +|7 | HASH JOIN | |6 |87 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |tt |6 |37 | +|10| TABLE GET |t3 |1 |36 | +|11| TABLE GET |t |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t10_temp: ({t10_temp: (t10_temp.__pk_increment, t10_temp.a, t10_temp.b, t10_temp.c, t10_temp.d, t10_temp.e, t10_temp.f, t10_temp.g, t10_temp.h, t10_temp.i, t10_temp.j, t10_temp.k, t10_temp.l, t10_temp.m)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_([t1.c1], [t2.c1]) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [tt.c1], [tt.c2]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [tt.c1], [tt.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2], [tt.c1], [tt.c2]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 10 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 11 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +insert into t10_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); + +rollback; +EXPLAIN insert into t10_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |1 |151 | +|1 | SUBPLAN SCAN |VIEW1|1 |151 | +|2 | NESTED-LOOP OUTER JOIN | |1 |151 | +|3 | NESTED-LOOP OUTER JOIN| |1 |150 | +|4 | NESTED-LOOP JOIN | |1 |143 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |92 | +|7 | HASH JOIN | |6 |87 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |tt |6 |37 | +|10| TABLE GET |t3 |1 |36 | +|11| TABLE GET |t |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t10_temp: ({t10_temp: (t10_temp.__pk_increment, t10_temp.a, t10_temp.b, t10_temp.c, t10_temp.d, t10_temp.e, t10_temp.f, t10_temp.g, t10_temp.h, t10_temp.i, t10_temp.j, t10_temp.k, t10_temp.l, t10_temp.m)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [tt.c1], [tt.c2]), filter([t1.c1 = t3.c1]), + conds(nil), nl_params_([t2.c1]) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [tt.c1], [tt.c2]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [tt.c1], [tt.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2], [tt.c1], [tt.c2]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 10 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 11 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +insert into t10_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |189 | +|1 | SUBPLAN FILTER | |6 |183 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |145 | +|4 | NESTED-LOOP JOIN | |1 |145 | +|5 | NESTED-LOOP JOIN| |1 |138 | +|6 | HASH JOIN | |6 |87 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | TABLE SCAN |tt |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| TABLE GET |t3 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1], [t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 6 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |190 | +|1 | SUBPLAN FILTER | |6 |184 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |146 | +|4 | NESTED-LOOP OUTER JOIN | |1 |146 | +|5 | NESTED-LOOP OUTER JOIN| |1 |145 | +|6 | NESTED-LOOP JOIN | |1 |138 | +|7 | HASH JOIN | |6 |87 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |tt |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t2 |6 |37 | +|12| TABLE GET |t3 |1 |36 | +|13| TABLE GET |t |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter([t1.c1 = t3.c1]), + conds(nil), nl_params_([t2.c1]) + 6 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 7 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 13 - output([1]), filter(nil), + access([t.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |184 | +|1 | SUBPLAN FILTER | |1 |183 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |145 | +|4 | NESTED-LOOP JOIN | |1 |145 | +|5 | NESTED-LOOP JOIN| |1 |138 | +|6 | HASH JOIN | |6 |87 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | TABLE SCAN |tt |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| TABLE GET |t3 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1], [t2.c1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 6 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |185 | +|1 | SUBPLAN FILTER | |1 |184 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |146 | +|4 | NESTED-LOOP OUTER JOIN | |1 |146 | +|5 | NESTED-LOOP OUTER JOIN| |1 |145 | +|6 | NESTED-LOOP JOIN | |1 |138 | +|7 | HASH JOIN | |6 |87 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |tt |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t2 |6 |37 | +|12| TABLE GET |t3 |1 |36 | +|13| TABLE GET |t |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter([t1.c1 = t3.c1]), + conds(nil), nl_params_([t2.c1]) + 6 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 + t2.c1 = tt.c1]), nl_params_(nil) + 7 - output([t1.c1], [tt.c1]), filter(nil), + equal_conds([t1.c2 = tt.c2]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([tt.c2], [tt.c1]), filter(nil), + access([tt.c2], [tt.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 13 - output([1]), filter(nil), + access([t.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1, t1 tt where t1.c1=t3.c1 and t1.c2=tt.c2 and t1.c1+t2.c1=tt.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |6 |80 | +|1 | MERGE JOIN | |6 |79 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |6 |80 | +|1 | MERGE JOIN | |6 |79 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN insert into t4_temp (select * from t1, t2 where t1.c1=t2.c1 limit 100); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN |VIEW1|6 |81 | +|2 | LIMIT | |6 |80 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1, t2 where t1.c1=t2.c1 limit 100); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 limit 100); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN |VIEW1|6 |81 | +|2 | LIMIT | |6 |80 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1, t2 where t1.c1=t2.c1 limit 100); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select sum(c1), count(*) from t1 group by c2 order by c2 limit 100; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |LIMIT | |6 |46 | +|1 | MERGE GROUP BY| |6 |45 | +|2 | SORT | |6 |43 | +|3 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), limit(100), offset(nil) + 1 - output([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), + group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select sum(c1), count(*) from t1 group by c2 order by c2 limit 100; ++---------+----------+ +| sum(c1) | count(*) | ++---------+----------+ +| 1 | 1 | +| 2 | 1 | +| 3 | 1 | +| 4 | 1 | +| 5 | 1 | +| 6 | 1 | ++---------+----------+ +EXPLAIN select /*+ NO_REWRITE */sum(c1), count(*) from t1 group by c2 order by c2 limit 100; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |LIMIT | |6 |46 | +|1 | MERGE GROUP BY| |6 |45 | +|2 | SORT | |6 |43 | +|3 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), limit(100), offset(nil) + 1 - output([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), + group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */sum(c1), count(*) from t1 group by c2 order by c2 limit 100; ++---------+----------+ +| sum(c1) | count(*) | ++---------+----------+ +| 1 | 1 | +| 2 | 1 | +| 3 | 1 | +| 4 | 1 | +| 5 | 1 | +| 6 | 1 | ++---------+----------+ +EXPLAIN insert into t11_temp (select sum(c1), count(*) from t1 group by c2 order by c2 limit 100); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |INSERT | |6 |47 | +|1 | SUBPLAN SCAN |VIEW1|6 |47 | +|2 | LIMIT | |6 |46 | +|3 | MERGE GROUP BY| |6 |45 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.sum(c1), INT(-1, 0)))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.count(*), INT(-1, 0)))]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.sum(c1)], [VIEW1.count(*)]), filter(nil), + access([VIEW1.sum(c1)], [VIEW1.count(*)]) + 2 - output([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), limit(100), offset(nil) + 3 - output([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), + group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t11_temp (select sum(c1), count(*) from t1 group by c2 order by c2 limit 100); + +rollback; +EXPLAIN insert into t11_temp (select /*+ NO_REWRITE */sum(c1), count(*) from t1 group by c2 order by c2 limit 100); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |INSERT | |6 |47 | +|1 | SUBPLAN SCAN |VIEW1|6 |47 | +|2 | LIMIT | |6 |46 | +|3 | MERGE GROUP BY| |6 |45 | +|4 | SORT | |6 |43 | +|5 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.sum(c1), INT(-1, 0)))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.count(*), INT(-1, 0)))]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.sum(c1)], [VIEW1.count(*)]), filter(nil), + access([VIEW1.sum(c1)], [VIEW1.count(*)]) + 2 - output([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), limit(100), offset(nil) + 3 - output([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]), filter(nil), + group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_COUNT(*)]) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t11_temp (select /*+ NO_REWRITE */sum(c1), count(*) from t1 group by c2 order by c2 limit 100); + +rollback; +EXPLAIN update t1 set c2 = (select sum(c1) from t1 group by c2 order by c2 limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |6 |87 | +|1 | SUBPLAN FILTER | |6 |81 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |43 | +|4 | MERGE GROUP BY| |1 |43 | +|5 | SORT | |1 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([cast(subquery(1), INT(-1, 0))]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([T_FUN_SUM(t1.c1)]), filter(nil), limit(1), offset(nil) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select sum(c1) from t1 group by c2 order by c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */sum(c1) from t1 group by c2 order by c2 limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |6 |87 | +|1 | SUBPLAN FILTER | |6 |81 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |43 | +|4 | MERGE GROUP BY| |1 |43 | +|5 | SORT | |1 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([cast(subquery(1), INT(-1, 0))]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([T_FUN_SUM(t1.c1)]), filter(nil), limit(1), offset(nil) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */sum(c1) from t1 group by c2 order by c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select sum(c1) from t1 group by c2 order by c2 limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |1 |81 | +|1 | SUBPLAN FILTER | |1 |81 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |43 | +|4 | MERGE GROUP BY| |1 |43 | +|5 | SORT | |1 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([cast(t1.c2, DECIMAL(11, 0)) = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([T_FUN_SUM(t1.c1)]), filter(nil), limit(1), offset(nil) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select sum(c1) from t1 group by c2 order by c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */sum(c1) from t1 group by c2 order by c2 limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |1 |81 | +|1 | SUBPLAN FILTER | |1 |81 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |43 | +|4 | MERGE GROUP BY| |1 |43 | +|5 | SORT | |1 |43 | +|6 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([cast(t1.c2, DECIMAL(11, 0)) = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([T_FUN_SUM(t1.c1)]), filter(nil), limit(1), offset(nil) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group([t1.c2]), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */sum(c1) from t1 group by c2 order by c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select c1 from t1 as t order by c1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |6 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0) + +select c1 from t1 as t order by c1; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN select /*+ NO_REWRITE */c1 from t1 as t order by c1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t |6 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0) + +select /*+ NO_REWRITE */c1 from t1 as t order by c1; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN insert into t12_temp (select c1 from t1 as t order by c1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |39 | +|1 | SUBPLAN SCAN|VIEW1|6 |38 | +|2 | TABLE SCAN |t |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0) + +insert into t12_temp (select c1 from t1 as t order by c1); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */c1 from t1 as t order by c1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |39 | +|1 | SUBPLAN SCAN|VIEW1|6 |38 | +|2 | TABLE SCAN |t |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */c1 from t1 as t order by c1); + +rollback; +EXPLAIN update t1 set c2 = (select c1 from t1 as t order by c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0), + limit(1), offset(nil) + +update t1 set c2 = (select c1 from t1 as t order by c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */c1 from t1 as t order by c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0), + limit(1), offset(nil) + +update t1 set c2 = (select /*+ NO_REWRITE */c1 from t1 as t order by c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select c1 from t1 as t order by c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |75 | +|1 | SUBPLAN FILTER| |1 |74 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | TABLE SCAN |t |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1 where c2 = (select c1 from t1 as t order by c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */c1 from t1 as t order by c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |75 | +|1 | SUBPLAN FILTER| |1 |74 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | TABLE SCAN |t |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t.c1]), filter(nil), + access([t.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1 where c2 = (select /*+ NO_REWRITE */c1 from t1 as t order by c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |1 |80 | +|1 | TABLE SCAN|t2 |6 |37 | +|2 | TABLE SCAN|t3 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c3 > t3.c3], [t2.c2 < t3.c2]) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; ++----+------+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+----+------+------+ +| 1 | 1 | o | 1 | 2 | 3 | +| 3 | 5 | b | 3 | 6 | 1 | ++----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |78 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | TABLE SCAN |t3 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t2.c3 > t3.c3]), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c2 < t3.c2]) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; ++----+------+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+----+------+------+ +| 1 | 1 | o | 1 | 2 | 3 | +| 3 | 5 | b | 3 | 6 | 1 | ++----+------+------+----+------+------+ +EXPLAIN insert into t13_temp (select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |80 | +|1 | SUBPLAN SCAN|VIEW1|1 |80 | +|2 | MERGE JOIN | |1 |80 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN|t3 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t13_temp: ({t13_temp: (t13_temp.__pk_increment, t13_temp.a, t13_temp.b, t13_temp.c, t13_temp.d, t13_temp.e, t13_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c3 > t3.c3], [t2.c2 < t3.c2]) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t13_temp (select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); + +rollback; +EXPLAIN insert into t13_temp (select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |79 | +|1 | SUBPLAN SCAN |VIEW1|2 |78 | +|2 | MERGE OUTER JOIN| |2 |78 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t13_temp: ({t13_temp: (t13_temp.__pk_increment, t13_temp.a, t13_temp.b, t13_temp.c, t13_temp.d, t13_temp.e, t13_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t2.c3 > t3.c3]), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c2 < t3.c2]) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t13_temp (select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); + +rollback; +EXPLAIN update t1 set c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |124 | +|1 | SUBPLAN FILTER| |6 |118 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |80 | +|4 | MERGE JOIN | |1 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c3 > t3.c3], [t2.c2 < t3.c2]) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +update t1 set c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |120 | +|1 | SUBPLAN FILTER | |6 |114 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |76 | +|4 | MERGE OUTER JOIN| |1 |76 | +|5 | TABLE SCAN |t2 |5 |37 | +|6 | TABLE SCAN |t3 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter([t2.c3 > t3.c3]), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c2 < t3.c2]) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |119 | +|1 | SUBPLAN FILTER| |1 |118 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |80 | +|4 | MERGE JOIN | |1 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c3 > t3.c3], [t2.c2 < t3.c2]) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |115 | +|1 | SUBPLAN FILTER | |1 |114 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |76 | +|4 | MERGE OUTER JOIN| |1 |76 | +|5 | TABLE SCAN |t2 |5 |37 | +|6 | TABLE SCAN |t3 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter([t2.c3 > t3.c3]), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c2 < t3.c2]) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |HASH JOIN | |1 |136 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MERGE JOIN | |6 |79 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t3 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil) + 1 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c3]), filter(nil), + access([t3.c1], [t3.c3]), partitions(p0) + +select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |HASH JOIN | |1 |136 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MERGE JOIN | |6 |79 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t3 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil) + 1 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c3]), filter(nil), + access([t3.c1], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |1 |136 | +|1 | SUBPLAN SCAN |VIEW1|1 |136 | +|2 | HASH JOIN | |1 |136 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MERGE JOIN | |6 |79 | +|5 | TABLE SCAN|t1 |6 |37 | +|6 | TABLE SCAN|t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil) + 3 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c3]), filter(nil), + access([t3.c1], [t3.c3]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |1 |136 | +|1 | SUBPLAN SCAN |VIEW1|1 |136 | +|2 | HASH JOIN | |1 |136 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MERGE JOIN | |6 |79 | +|5 | TABLE SCAN|t1 |6 |37 | +|6 | TABLE SCAN|t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil) + 3 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c3]), filter(nil), + access([t3.c1], [t3.c3]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |180 | +|1 | SUBPLAN FILTER| |6 |174 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |136 | +|4 | HASH JOIN | |1 |136 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MERGE JOIN | |6 |79 | +|7 | TABLE SCAN|t1 |6 |37 | +|8 | TABLE SCAN|t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil) + 5 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t3.c1], [t3.c3]), filter(nil), + access([t3.c1], [t3.c3]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |180 | +|1 | SUBPLAN FILTER| |6 |174 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |136 | +|4 | HASH JOIN | |1 |136 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MERGE JOIN | |6 |79 | +|7 | TABLE SCAN|t1 |6 |37 | +|8 | TABLE SCAN|t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil) + 5 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t3.c1], [t3.c3]), filter(nil), + access([t3.c1], [t3.c3]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |174 | +|1 | SUBPLAN FILTER| |1 |173 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |136 | +|4 | HASH JOIN | |1 |136 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MERGE JOIN | |6 |79 | +|7 | TABLE SCAN|t1 |6 |37 | +|8 | TABLE SCAN|t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil) + 5 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t3.c1], [t3.c3]), filter(nil), + access([t3.c1], [t3.c3]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |174 | +|1 | SUBPLAN FILTER| |1 |173 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |136 | +|4 | HASH JOIN | |1 |136 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MERGE JOIN | |6 |79 | +|7 | TABLE SCAN|t1 |6 |37 | +|8 | TABLE SCAN|t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c2], [t2.c3 = t3.c3]), other_conds(nil) + 5 - output([t2.c2], [t2.c3]), filter(nil), + access([t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t3.c1], [t3.c3]), filter(nil), + access([t3.c1], [t3.c3]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1,t2,t3 where t1.c1=t3.c1 and t1.c2=t2.c2 and t2.c3=t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1; +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |MERGE JOIN | |6 |164 | +|1 | MERGE JOIN | |6 |122 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t |6 |37 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |MERGE OUTER JOIN | |6 |181 | +|1 | MERGE JOIN | |6 |139 | +|2 | SORT | |6 |97 | +|3 | MERGE OUTER JOIN| |6 |80 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), sort_keys([t3.c1, ASC]) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | 1 | 1 | o | 1 | 2 | 3 | +| 2 | 5 | 2 | 5 | c | 2 | 5 | c | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 3 | 5 | b | 3 | 6 | 1 | +| 4 | 6 | 4 | 6 | o | 4 | 6 | o | 4 | 5 | 1 | +| 5 | 4 | 5 | 7 | d | 5 | 7 | d | 5 | 5 | 5 | +| 6 | 7 | 6 | 8 | c | 6 | 8 | c | 6 | 5 | c | ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |INSERT | |6 |166 | +|1 | SUBPLAN SCAN |VIEW1|6 |165 | +|2 | MERGE JOIN | |6 |164 | +|3 | MERGE JOIN | |6 |122 | +|4 | MERGE OUTER JOIN| |6 |80 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t |6 |37 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |INSERT | |6 |183 | +|1 | SUBPLAN SCAN |VIEW1|6 |182 | +|2 | MERGE OUTER JOIN | |6 |181 | +|3 | MERGE JOIN | |6 |139 | +|4 | SORT | |6 |97 | +|5 | MERGE OUTER JOIN| |6 |80 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE SCAN |t |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t.c1], [t.c2], [t.c3], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), sort_keys([t3.c1, ASC]) + 5 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t.c1], [t.c2], [t.c3]), filter(nil), + access([t.c1], [t.c2], [t.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |155 | +|1 | SUBPLAN FILTER | |6 |149 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t3 |3 |37 | +|8 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t3.c1]) + 5 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |203 | +|1 | SUBPLAN FILTER | |6 |197 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |159 | +|4 | NESTED-LOOP OUTER JOIN| |1 |159 | +|5 | MERGE JOIN | |1 |122 | +|6 | SORT | |3 |85 | +|7 | MERGE OUTER JOIN | |6 |79 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t1 |3 |37 | +|11| TABLE GET |t |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 7 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([1]), filter(nil), + access([t.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |149 | +|1 | SUBPLAN FILTER | |1 |148 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |111 | +|4 | NESTED-LOOP JOIN| |1 |111 | +|5 | MERGE JOIN | |1 |74 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t3 |3 |37 | +|8 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t3.c1]) + 5 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |197 | +|1 | SUBPLAN FILTER | |1 |196 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |159 | +|4 | NESTED-LOOP OUTER JOIN| |1 |159 | +|5 | MERGE JOIN | |1 |122 | +|6 | SORT | |3 |85 | +|7 | MERGE OUTER JOIN | |6 |79 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t1 |3 |37 | +|11| TABLE GET |t |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 7 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([1]), filter(nil), + access([t.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 t on t1.c1=t.c1,t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where false; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), startup_filter([0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where false; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 where false; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), startup_filter([0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 where false; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where false); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where false); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 where false); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 where false); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |75 | +|1 | SUBPLAN FILTER| |1 |74 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |102 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t1 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |98 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |44 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 1], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 > 1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |112 | +|1 | SUBPLAN SCAN |VIEW1|36 |107 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |102 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t1 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |98 | +|1 | SUBPLAN SCAN |VIEW1|1 |98 | +|2 | NESTED-LOOP OUTER JOIN| |1 |98 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 1], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 > 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |135 | +|1 | SUBPLAN FILTER | |6 |129 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |92 | +|4 | NESTED-LOOP OUTER JOIN| |1 |92 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 1], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 > 1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |130 | +|1 | SUBPLAN FILTER | |1 |129 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |92 | +|4 | NESTED-LOOP OUTER JOIN| |1 |92 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 1], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 > 1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1>1 where t2.c1 is null and t2.c2>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 right join t2 on t1.c1 = t2.c2; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |6 |88 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +select * from t1 right join t2 on t1.c1 = t2.c2; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| NULL | NULL | 5 | 7 | d | +| NULL | NULL | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c2; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |6 |88 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c2; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | +| NULL | NULL | 5 | 7 | d | +| NULL | NULL | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 right join t2 on t1.c1 = t2.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |6 |89 | +|1 | SUBPLAN SCAN |VIEW1|6 |88 | +|2 | HASH RIGHT OUTER JOIN| |6 |88 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 right join t2 on t1.c1 = t2.c2); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |6 |89 | +|1 | SUBPLAN SCAN |VIEW1|6 |88 | +|2 | HASH RIGHT OUTER JOIN| |6 |88 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c2); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | SUBPLAN SCAN |VIEW1|1 |37 | +|6 | TABLE SCAN |t2 |1 |36 | +|7 | TABLE GET |t1 |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([VIEW1.t2.c2]) + 5 - output([VIEW1.t2.c2]), filter(nil), + access([VIEW1.t2.c2]) + 6 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + limit(1), offset(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | TABLE GET |t1 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c2]) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | SUBPLAN SCAN |VIEW1|1 |37 | +|6 | TABLE SCAN |t2 |1 |36 | +|7 | TABLE GET |t1 |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([VIEW1.t2.c2]) + 5 - output([VIEW1.t2.c2]), filter(nil), + access([VIEW1.t2.c2]) + 6 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + limit(1), offset(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | TABLE GET |t1 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c2]) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 inner join t2 on t1.c1 = t2.c2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |6 |88 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +select * from t1 inner join t2 on t1.c1 = t2.c2; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |6 |88 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c2; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 5 | 4 | 2 | 5 | c | +| 5 | 4 | 3 | 5 | b | +| 6 | 7 | 4 | 6 | o | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 inner join t2 on t1.c1 = t2.c2); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |89 | +|1 | SUBPLAN SCAN|VIEW1|6 |88 | +|2 | HASH JOIN | |6 |88 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 inner join t2 on t1.c1 = t2.c2); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c2); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |6 |89 | +|1 | SUBPLAN SCAN|VIEW1|6 |88 | +|2 | HASH JOIN | |6 |88 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c2], [t2.c1], [t2.c3]), filter(nil), + access([t2.c2], [t2.c1], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 inner join t2 on t1.c1 = t2.c2); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c2]) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c2]) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c2]) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c2]) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 inner join t2 on t1.c1 = t2.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +## case +EXPLAIN select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |1 |39 | +|1 | TOP-N SORT | |1 |39 | +|2 | TABLE SCAN|t1 |1 |38 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), topn(100) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |1 |39 | +|1 | TOP-N SORT | |1 |39 | +|2 | TABLE SCAN|t1 |1 |38 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), topn(100) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN insert into t12_temp (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |1 |39 | +|1 | SUBPLAN SCAN |VIEW1|1 |39 | +|2 | LIMIT | |1 |39 | +|3 | TOP-N SORT | |1 |39 | +|4 | TABLE SCAN|t1 |1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), topn(100) + 4 - output([t1.c1], [t1.c2]), filter([t1.c2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t12_temp (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |1 |39 | +|1 | SUBPLAN SCAN |VIEW1|1 |39 | +|2 | LIMIT | |1 |39 | +|3 | TOP-N SORT | |1 |39 | +|4 | TABLE SCAN|t1 |1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), topn(100) + 4 - output([t1.c1], [t1.c2]), filter([t1.c2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 100); + +rollback; +EXPLAIN update t1 set c2 = (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |83 | +|1 | SUBPLAN FILTER| |6 |77 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |39 | +|4 | TOP-N SORT | |1 |39 | +|5 | TABLE SCAN |t1 |1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), topn(1) + 5 - output([t1.c1], [t1.c2]), filter([t1.c2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |83 | +|1 | SUBPLAN FILTER| |6 |77 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |39 | +|4 | TOP-N SORT | |1 |39 | +|5 | TABLE SCAN |t1 |1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), topn(1) + 5 - output([t1.c1], [t1.c2]), filter([t1.c2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |77 | +|1 | SUBPLAN FILTER| |1 |76 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |39 | +|4 | TOP-N SORT | |1 |39 | +|5 | TABLE SCAN |t1 |1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), topn(1) + 5 - output([t1.c1], [t1.c2]), filter([t1.c2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |77 | +|1 | SUBPLAN FILTER| |1 |76 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |39 | +|4 | TOP-N SORT | |1 |39 | +|5 | TABLE SCAN |t1 |1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]), topn(1) + 5 - output([t1.c1], [t1.c2]), filter([t1.c2 < 0]), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */c1 from t1 where c1 > 0 and c2 < 0 order by c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +## case join +EXPLAIN select t1.c1 from t1, t2 limit 100; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |LIMIT | |36 |105 | +|1 | NESTED-LOOP JOIN CARTESIAN| |36 |100 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |6 |38 | +|4 | TABLE SCAN |t2 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +select t1.c1 from t1, t2 limit 100; ++----+ +| c1 | ++----+ +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | +| 2 | +| 2 | +| 2 | +| 2 | +| 2 | +| 2 | +| 3 | +| 3 | +| 3 | +| 3 | +| 3 | +| 3 | +| 4 | +| 4 | +| 4 | +| 4 | +| 4 | +| 4 | +| 5 | +| 5 | +| 5 | +| 5 | +| 5 | +| 5 | +| 6 | +| 6 | +| 6 | +| 6 | +| 6 | +| 6 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 100; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |LIMIT | |36 |105 | +|1 | NESTED-LOOP JOIN CARTESIAN| |36 |100 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |6 |38 | +|4 | TABLE SCAN |t2 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 100; ++----+ +| c1 | ++----+ +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | +| 2 | +| 2 | +| 2 | +| 2 | +| 2 | +| 2 | +| 3 | +| 3 | +| 3 | +| 3 | +| 3 | +| 3 | +| 4 | +| 4 | +| 4 | +| 4 | +| 4 | +| 4 | +| 5 | +| 5 | +| 5 | +| 5 | +| 5 | +| 5 | +| 6 | +| 6 | +| 6 | +| 6 | +| 6 | +| 6 | ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1, t2 limit 100); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |36 |115 | +|1 | SUBPLAN SCAN |VIEW1|36 |110 | +|2 | LIMIT | |36 |105 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |100 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([1]), filter(nil) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1, t2 limit 100); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 100); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |36 |115 | +|1 | SUBPLAN SCAN |VIEW1|36 |110 | +|2 | LIMIT | |36 |105 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |100 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t2 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([1]), filter(nil) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 100); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |75 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t2 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +## case join with predicate +EXPLAIN select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |6 |80 | +|1 | MERGE JOIN | |6 |79 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |6 |80 | +|1 | MERGE JOIN | |6 |79 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN |VIEW1|6 |81 | +|2 | LIMIT | |6 |80 | +|3 | MERGE JOIN | |6 |79 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN |VIEW1|6 |81 | +|2 | LIMIT | |6 |80 | +|3 | MERGE JOIN | |6 |79 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 ; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 ; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 ; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 ; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 ); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 = t2.c1 ); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |75 | +|1 | SUBPLAN FILTER| |1 |74 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |6 |80 | +|1 | MERGE JOIN | |6 |79 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |6 |80 | +|1 | MERGE JOIN | |6 |79 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 1 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN |VIEW1|6 |81 | +|2 | LIMIT | |6 |80 | +|3 | MERGE JOIN | |6 |79 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |82 | +|1 | SUBPLAN SCAN |VIEW1|6 |81 | +|2 | LIMIT | |6 |80 | +|3 | MERGE JOIN | |6 |79 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(100), offset(nil) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 100); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2 where t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |HASH JOIN | |2 |125 | +|1 | MERGE JOIN | |2 |78 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |5 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t2.c3 = t3.c3]), other_conds(nil) + 1 - output([t1.c1], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c2 > t2.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |HASH JOIN | |2 |125 | +|1 | MERGE JOIN | |2 |78 | +|2 | TABLE SCAN|t1 |6 |37 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN |t3 |5 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t2.c3 = t3.c3]), other_conds(nil) + 1 - output([t1.c1], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c2 > t2.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |2 |126 | +|1 | SUBPLAN SCAN |VIEW1|2 |126 | +|2 | HASH JOIN | |2 |125 | +|3 | MERGE JOIN | |2 |78 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |5 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t2.c3 = t3.c3]), other_conds(nil) + 3 - output([t1.c1], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c2 > t2.c2]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |2 |126 | +|1 | SUBPLAN SCAN |VIEW1|2 |126 | +|2 | HASH JOIN | |2 |125 | +|3 | MERGE JOIN | |2 |78 | +|4 | TABLE SCAN|t1 |6 |37 | +|5 | TABLE SCAN|t2 |6 |37 | +|6 | TABLE SCAN |t3 |5 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + equal_conds([t2.c3 = t3.c3]), other_conds(nil) + 3 - output([t1.c1], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c2 > t2.c2]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |167 | +|1 | SUBPLAN FILTER| |6 |161 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |123 | +|4 | HASH JOIN | |1 |123 | +|5 | MERGE JOIN | |2 |78 | +|6 | TABLE SCAN|t1 |6 |37 | +|7 | TABLE SCAN|t2 |6 |37 | +|8 | TABLE SCAN |t3 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c3 = t3.c3]), other_conds(nil) + 5 - output([t1.c1], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c2 > t2.c2]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |167 | +|1 | SUBPLAN FILTER| |6 |161 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |123 | +|4 | HASH JOIN | |1 |123 | +|5 | MERGE JOIN | |2 |78 | +|6 | TABLE SCAN|t1 |6 |37 | +|7 | TABLE SCAN|t2 |6 |37 | +|8 | TABLE SCAN |t3 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c3 = t3.c3]), other_conds(nil) + 5 - output([t1.c1], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c2 > t2.c2]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |162 | +|1 | SUBPLAN FILTER| |1 |161 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |123 | +|4 | HASH JOIN | |1 |123 | +|5 | MERGE JOIN | |2 |78 | +|6 | TABLE SCAN|t1 |6 |37 | +|7 | TABLE SCAN|t2 |6 |37 | +|8 | TABLE SCAN |t3 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c3 = t3.c3]), other_conds(nil) + 5 - output([t1.c1], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c2 > t2.c2]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |162 | +|1 | SUBPLAN FILTER| |1 |161 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |123 | +|4 | HASH JOIN | |1 |123 | +|5 | MERGE JOIN | |2 |78 | +|6 | TABLE SCAN|t1 |6 |37 | +|7 | TABLE SCAN|t2 |6 |37 | +|8 | TABLE SCAN |t3 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c3 = t3.c3]), other_conds(nil) + 5 - output([t1.c1], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c2 > t2.c2]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1, t2, t3 where t1.c1=t2.c1 and t1.c2>t2.c2 and t2.c3=t3.c3 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |1 |80 | +|1 | TABLE SCAN|t2 |6 |37 | +|2 | TABLE SCAN|t3 |6 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c3 > t3.c3], [t2.c2 < t3.c2]) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; ++----+------+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+----+------+------+ +| 1 | 1 | o | 1 | 2 | 3 | +| 3 | 5 | b | 3 | 6 | 1 | ++----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |78 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | TABLE SCAN |t3 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t2.c3 > t3.c3]), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c2 < t3.c2]) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3; ++----+------+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+----+------+------+ +| 1 | 1 | o | 1 | 2 | 3 | +| 3 | 5 | b | 3 | 6 | 1 | ++----+------+------+----+------+------+ +EXPLAIN insert into t13_temp (select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |80 | +|1 | SUBPLAN SCAN|VIEW1|1 |80 | +|2 | MERGE JOIN | |1 |80 | +|3 | TABLE SCAN|t2 |6 |37 | +|4 | TABLE SCAN|t3 |6 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t13_temp: ({t13_temp: (t13_temp.__pk_increment, t13_temp.a, t13_temp.b, t13_temp.c, t13_temp.d, t13_temp.e, t13_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c3 > t3.c3], [t2.c2 < t3.c2]) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t13_temp (select * from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); + +rollback; +EXPLAIN insert into t13_temp (select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |79 | +|1 | SUBPLAN SCAN |VIEW1|2 |78 | +|2 | MERGE OUTER JOIN| |2 |78 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t3 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t13_temp: ({t13_temp: (t13_temp.__pk_increment, t13_temp.a, t13_temp.b, t13_temp.c, t13_temp.d, t13_temp.e, t13_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t2.c3 > t3.c3]), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c2 < t3.c2]) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t13_temp (select /*+ NO_REWRITE */* from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3); + +rollback; +EXPLAIN update t1 set c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |124 | +|1 | SUBPLAN FILTER| |6 |118 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |80 | +|4 | MERGE JOIN | |1 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c3 > t3.c3], [t2.c2 < t3.c2]) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +update t1 set c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |120 | +|1 | SUBPLAN FILTER | |6 |114 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |76 | +|4 | MERGE OUTER JOIN| |1 |76 | +|5 | TABLE SCAN |t2 |5 |37 | +|6 | TABLE SCAN |t3 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter([t2.c3 > t3.c3]), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c2 < t3.c2]) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |119 | +|1 | SUBPLAN FILTER| |1 |118 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |80 | +|4 | MERGE JOIN | |1 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t3 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c3 > t3.c3], [t2.c2 < t3.c2]) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +delete from t1 where c2 = (select t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |115 | +|1 | SUBPLAN FILTER | |1 |114 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |76 | +|4 | MERGE OUTER JOIN| |1 |76 | +|5 | TABLE SCAN |t2 |5 |37 | +|6 | TABLE SCAN |t3 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t2.c1]), filter([t2.c3 > t3.c3]), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c2 < t3.c2]) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t2.c1 from t2 left join t3 on t2.c1=t3.c1 and t2.c2t3.c3 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |60 | +|1 | TABLE SCAN |t2 |1 |38 | +|2 | TABLE GET |t1 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 1 - output([t2.c1]), filter([t2.c2 > 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1; ++----+ +| c1 | ++----+ +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |1 |79 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([t2.c2 > 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1; ++----+ +| c1 | ++----+ +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | ++----+ +EXPLAIN insert into t12_temp (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |61 | +|1 | SUBPLAN SCAN |VIEW1|1 |60 | +|2 | NESTED-LOOP JOIN| |1 |60 | +|3 | TABLE SCAN |t2 |1 |38 | +|4 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 3 - output([t2.c1]), filter([t2.c2 > 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +insert into t12_temp (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1); + +rollback; +EXPLAIN insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |79 | +|1 | SUBPLAN SCAN |VIEW1|1 |79 | +|2 | MERGE OUTER JOIN| |1 |79 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{t12_temp: ({t12_temp: (t12_temp.__pk_increment, t12_temp.a)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter([t2.c2 > 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t12_temp (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |104 | +|1 | SUBPLAN FILTER | |6 |98 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |60 | +|4 | NESTED-LOOP JOIN| |1 |60 | +|5 | TABLE SCAN |t2 |1 |38 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([t2.c2 > 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |123 | +|1 | SUBPLAN FILTER | |6 |117 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |79 | +|4 | MERGE OUTER JOIN| |1 |79 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |99 | +|1 | SUBPLAN FILTER | |1 |98 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |60 | +|4 | NESTED-LOOP JOIN| |1 |60 | +|5 | TABLE SCAN |t2 |1 |38 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([t2.c2 > 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |118 | +|1 | SUBPLAN FILTER | |1 |117 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |79 | +|4 | MERGE OUTER JOIN| |1 |79 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c2>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |77 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c1 > 1]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | NULL | NULL | NULL | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |78 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c1 > 1]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | NULL | NULL | NULL | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |79 | +|1 | SUBPLAN SCAN |VIEW1|6 |78 | +|2 | MERGE OUTER JOIN| |6 |77 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c1 > 1]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |79 | +|1 | SUBPLAN SCAN |VIEW1|6 |79 | +|2 | MERGE OUTER JOIN| |6 |78 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds([t1.c1 > 1]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter([? > 1]), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |75 | +|1 | SUBPLAN FILTER| |1 |74 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |111 | +|1 | SUBPLAN FILTER | |1 |110 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter([? > 1]), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 and t1.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |HASH JOIN | |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |HASH JOIN | |6 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE JOIN | |6 |80 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | 2 | 5 | 4 | +| 2 | 5 | 2 | 5 | c | 4 | 5 | 1 | +| 2 | 5 | 2 | 5 | c | 5 | 5 | 5 | +| 2 | 5 | 2 | 5 | c | 6 | 5 | c | +| 3 | 2 | 3 | 5 | b | 2 | 5 | 4 | +| 3 | 2 | 3 | 5 | b | 4 | 5 | 1 | +| 3 | 2 | 3 | 5 | b | 5 | 5 | 5 | +| 3 | 2 | 3 | 5 | b | 6 | 5 | c | +| 4 | 6 | 4 | 6 | o | 3 | 6 | 1 | ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH JOIN | |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE JOIN | |6 |80 | +|5 | TABLE SCAN|t1 |6 |37 | +|6 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH JOIN | |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE JOIN | |6 |80 | +|5 | TABLE SCAN|t1 |6 |37 | +|6 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |117 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |117 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |156 | +|1 | SUBPLAN FILTER | |1 |155 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |117 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |156 | +|1 | SUBPLAN FILTER | |1 |155 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |117 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t1.c2 where t2.c2 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH JOIN | |1 |117 | +|1 | NESTED-LOOP JOIN| |1 |75 | +|2 | TABLE SCAN |t2 |1 |38 | +|3 | TABLE GET |t1 |1 |36 | +|4 | TABLE SCAN |t3 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 = 1]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t1.c2 where t2.c2 = 1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t1.c2 where t2.c2 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |1 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t2.c2 = 1]), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t1.c2 where t2.c2 = 1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH JOIN | |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE JOIN | |6 |80 | +|5 | TABLE SCAN|t1 |6 |37 | +|6 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select * from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |136 | +|1 | SUBPLAN SCAN |VIEW1|6 |135 | +|2 | HASH JOIN | |6 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE JOIN | |6 |80 | +|5 | TABLE SCAN|t1 |6 |37 | +|6 | TABLE SCAN|t2 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |117 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |117 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |156 | +|1 | SUBPLAN FILTER | |1 |155 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |117 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |156 | +|1 | SUBPLAN FILTER | |1 |155 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN| |1 |117 | +|5 | HASH JOIN | |1 |81 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = t3.c2]), other_conds(nil) + 6 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 join t2 on t1.c1 = t2.c1 join t3 on t2.c2 = t3.c2 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |1 |115 | +|1 | NESTED-LOOP OUTER JOIN | |1 |75 | +|2 | TABLE SCAN |t2 |1 |38 | +|3 | TABLE GET |t1 |1 |36 | +|4 | MATERIAL | |1 |40 | +|5 | TABLE SCAN |t3 |1 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 = 1]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 5 - output([t3.c2], [t3.c1], [t3.c3]), filter([t3.c2 = 1]), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |1 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t2.c2 = 1]), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |1 |115 | +|1 | SUBPLAN SCAN |VIEW1|1 |115 | +|2 | NESTED-LOOP JOIN CARTESIAN| |1 |115 | +|3 | NESTED-LOOP OUTER JOIN | |1 |75 | +|4 | TABLE SCAN |t2 |1 |38 | +|5 | TABLE GET |t1 |1 |36 | +|6 | MATERIAL | |1 |40 | +|7 | TABLE SCAN |t3 |1 |38 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 = 1]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c2], [t3.c1], [t3.c3]), filter([t3.c2 = 1]), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |134 | +|1 | SUBPLAN SCAN |VIEW1|1 |134 | +|2 | HASH OUTER JOIN | |1 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE OUTER JOIN| |6 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t2.c2 = 1]), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |158 | +|1 | SUBPLAN FILTER | |6 |152 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |114 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |114 | +|5 | NESTED-LOOP OUTER JOIN | |1 |75 | +|6 | TABLE SCAN |t2 |1 |38 | +|7 | TABLE GET |t1 |1 |36 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t3 |1 |38 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 6 - output([t2.c1]), filter([t2.c2 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([t3.c2 = 1]), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |172 | +|1 | SUBPLAN FILTER | |6 |166 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |128 | +|4 | HASH OUTER JOIN | |1 |128 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MERGE OUTER JOIN| |6 |79 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 = 1]), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |152 | +|1 | SUBPLAN FILTER | |1 |151 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |114 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |114 | +|5 | NESTED-LOOP OUTER JOIN | |1 |75 | +|6 | TABLE SCAN |t2 |1 |38 | +|7 | TABLE GET |t1 |1 |36 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t3 |1 |38 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 6 - output([t2.c1]), filter([t2.c2 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([t3.c2 = 1]), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |167 | +|1 | SUBPLAN FILTER | |1 |166 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |128 | +|4 | HASH OUTER JOIN | |1 |128 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MERGE OUTER JOIN| |6 |79 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 = 1]), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t2.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH JOIN | |1 |117 | +|1 | NESTED-LOOP JOIN| |1 |75 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | TABLE GET |t2 |1 |36 | +|4 | TABLE SCAN |t3 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |1 |134 | +|1 | TABLE SCAN |t3 |6 |37 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t1.c2 = 1]), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1; ++----+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+ +EXPLAIN insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |117 | +|1 | SUBPLAN SCAN |VIEW1|1 |117 | +|2 | HASH JOIN | |1 |117 | +|3 | NESTED-LOOP JOIN| |1 |75 | +|4 | TABLE SCAN |t1 |1 |38 | +|5 | TABLE GET |t2 |1 |36 | +|6 | TABLE SCAN |t3 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1], [t1.c2]), filter([t1.c2 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + +insert into t5_temp (select * from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1); + +rollback; +EXPLAIN insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |1 |134 | +|1 | SUBPLAN SCAN |VIEW1|1 |134 | +|2 | HASH OUTER JOIN | |1 |134 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MERGE OUTER JOIN| |6 |80 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.e, t5_temp.f, t5_temp.g, t5_temp.h)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t1.c2 = 1]), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 3 - output([t3.c2], [t3.c1], [t3.c3]), filter(nil), + access([t3.c2], [t3.c1], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select /*+ NO_REWRITE */* from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |160 | +|1 | SUBPLAN FILTER | |6 |154 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |116 | +|4 | HASH JOIN | |1 |116 | +|5 | NESTED-LOOP JOIN| |1 |75 | +|6 | TABLE SCAN |t1 |1 |38 | +|7 | TABLE GET |t2 |1 |36 | +|8 | TABLE SCAN |t3 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 6 - output([t1.c1]), filter([t1.c2 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 8 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |172 | +|1 | SUBPLAN FILTER | |6 |166 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |128 | +|4 | HASH OUTER JOIN | |1 |128 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MERGE OUTER JOIN| |6 |79 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c2 = 1]), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t2.c2], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |155 | +|1 | SUBPLAN FILTER | |1 |154 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |116 | +|4 | HASH JOIN | |1 |116 | +|5 | NESTED-LOOP JOIN| |1 |75 | +|6 | TABLE SCAN |t1 |1 |38 | +|7 | TABLE GET |t2 |1 |36 | +|8 | TABLE SCAN |t3 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 6 - output([t1.c1]), filter([t1.c2 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 8 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |167 | +|1 | SUBPLAN FILTER | |1 |166 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |128 | +|4 | HASH OUTER JOIN | |1 |128 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MERGE OUTER JOIN| |6 |79 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c2 = 1]), + equal_conds([t3.c2 = t2.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t2.c2], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join t2 on t1.c1 = t2.c1 right join t3 on t3.c2 = t2.c2 where t1.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |9 |85 | +|1 | TABLE SCAN |t2 |3 |38 | +|2 | MATERIAL | |6 |38 | +|3 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t2.c1]), filter([t2.c2 IN (1, 2, 3)]), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1]), filter(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3); ++----+----+ +| a1 | a2 | ++----+----+ +| 2 | 1 | +| 3 | 1 | +| 4 | 1 | +| 5 | 1 | +| 6 | 1 | ++----+----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |9 |96 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter([t2.c2 IN (1, 2, 3)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3); ++----+----+ +| a1 | a2 | ++----+----+ +| 2 | 1 | +| 3 | 1 | +| 4 | 1 | +| 5 | 1 | +| 6 | 1 | ++----+----+ +EXPLAIN insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |9 |88 | +|1 | SUBPLAN SCAN |VIEW1|9 |87 | +|2 | NESTED-LOOP JOIN| |9 |85 | +|3 | TABLE SCAN |t2 |3 |38 | +|4 | MATERIAL | |6 |38 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t2.c1]), filter([t2.c2 IN (1, 2, 3)]), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1]), filter(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3)); + +rollback; +EXPLAIN insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |9 |98 | +|1 | SUBPLAN SCAN |VIEW1|9 |97 | +|2 | NESTED-LOOP OUTER JOIN| |9 |96 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter([t2.c2 IN (1, 2, 3)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t2.c1]), filter([t2.c2 IN (1, 2, 3)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |121 | +|1 | SUBPLAN FILTER | |6 |115 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |78 | +|4 | NESTED-LOOP OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 IN (1, 2, 3)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t2.c1]), filter([t2.c2 IN (1, 2, 3)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |116 | +|1 | SUBPLAN FILTER | |1 |115 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |78 | +|4 | NESTED-LOOP OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 IN (1, 2, 3)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, 3) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |9 |85 | +|1 | TABLE SCAN |t2 |3 |38 | +|2 | MATERIAL | |6 |38 | +|3 | TABLE SCAN |t1 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t2.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2, 3))]), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1]), filter(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3); ++----+----+ +| a1 | a2 | ++----+----+ +| 1 | 2 | +| 1 | 3 | +| 1 | 4 | +| 1 | 5 | +| 1 | 6 | +| 2 | 3 | +| 2 | 4 | +| 2 | 5 | +| 2 | 6 | +| 3 | 2 | +| 3 | 4 | +| 3 | 5 | +| 3 | 6 | +| 4 | 2 | +| 4 | 3 | +| 4 | 5 | +| 4 | 6 | +| 5 | 2 | +| 5 | 3 | +| 5 | 4 | +| 5 | 6 | +| 6 | 2 | +| 6 | 3 | +| 6 | 4 | +| 6 | 5 | ++----+----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |9 |96 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2, 3))]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3); ++----+----+ +| a1 | a2 | ++----+----+ +| 1 | 2 | +| 1 | 3 | +| 1 | 4 | +| 1 | 5 | +| 1 | 6 | +| 2 | 3 | +| 2 | 4 | +| 2 | 5 | +| 2 | 6 | +| 3 | 2 | +| 3 | 4 | +| 3 | 5 | +| 3 | 6 | +| 4 | 2 | +| 4 | 3 | +| 4 | 5 | +| 4 | 6 | +| 5 | 2 | +| 5 | 3 | +| 5 | 4 | +| 5 | 6 | +| 6 | 2 | +| 6 | 3 | +| 6 | 4 | +| 6 | 5 | ++----+----+ +EXPLAIN insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |9 |88 | +|1 | SUBPLAN SCAN |VIEW1|9 |87 | +|2 | NESTED-LOOP JOIN| |9 |85 | +|3 | TABLE SCAN |t2 |3 |38 | +|4 | MATERIAL | |6 |38 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t2.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2, 3))]), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1]), filter(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3)); + +rollback; +EXPLAIN insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |9 |98 | +|1 | SUBPLAN SCAN |VIEW1|9 |97 | +|2 | NESTED-LOOP OUTER JOIN| |9 |96 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2, 3))]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t2.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2, 3))]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |121 | +|1 | SUBPLAN FILTER | |6 |115 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |78 | +|4 | NESTED-LOOP OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2, 3))]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP JOIN| |1 |75 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t2.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2, 3))]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |116 | +|1 | SUBPLAN FILTER | |1 |115 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |78 | +|4 | NESTED-LOOP OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2, 3))]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, 3) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |8 |96 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter([t1.c2 IN (1, 2) OR t1.c2 = t2.c2]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2); ++----+----+ +| a1 | a2 | ++----+----+ +| 1 | 2 | +| 1 | 3 | +| 1 | 4 | +| 1 | 5 | +| 1 | 6 | +| 2 | 3 | +| 3 | 1 | +| 3 | 2 | +| 3 | 4 | +| 3 | 5 | +| 3 | 6 | +| 6 | 5 | ++----+----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |8 |96 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter([t1.c2 IN (1, 2) OR t1.c2 = t2.c2]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2); ++----+----+ +| a1 | a2 | ++----+----+ +| 1 | 2 | +| 1 | 3 | +| 1 | 4 | +| 1 | 5 | +| 1 | 6 | +| 2 | 3 | +| 3 | 1 | +| 3 | 2 | +| 3 | 4 | +| 3 | 5 | +| 3 | 6 | +| 6 | 5 | ++----+----+ +EXPLAIN insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |8 |98 | +|1 | SUBPLAN SCAN |VIEW1|8 |97 | +|2 | NESTED-LOOP OUTER JOIN| |8 |96 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter([t1.c2 IN (1, 2) OR t1.c2 = t2.c2]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2)); + +rollback; +EXPLAIN insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |8 |98 | +|1 | SUBPLAN SCAN |VIEW1|8 |97 | +|2 | NESTED-LOOP OUTER JOIN| |8 |96 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter([t1.c2 IN (1, 2) OR t1.c2 = t2.c2]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |122 | +|1 | SUBPLAN FILTER | |6 |116 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |78 | +|4 | NESTED-LOOP OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c2 IN (1, 2) OR t1.c2 = t2.c2]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |122 | +|1 | SUBPLAN FILTER | |6 |116 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |78 | +|4 | NESTED-LOOP OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c2 IN (1, 2) OR t1.c2 = t2.c2]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |117 | +|1 | SUBPLAN FILTER | |1 |116 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |78 | +|4 | NESTED-LOOP OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c2 IN (1, 2) OR t1.c2 = t2.c2]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |117 | +|1 | SUBPLAN FILTER | |1 |116 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |78 | +|4 | NESTED-LOOP OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c2 IN (1, 2) OR t1.c2 = t2.c2]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t1.c2 in (1, 2, t2.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |6 |82 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |2 |39 | +|3 | TABLE SCAN |t2 |2 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c1]), filter(nil) + 3 - output([t2.c1]), filter([t2.c2 IN (1, 2)]), + access([t2.c1], [t2.c2]), partitions(p0) + +select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL); ++----+----+ +| a1 | a2 | ++----+----+ +| 2 | 1 | +| 3 | 1 | +| 4 | 1 | +| 5 | 1 | +| 6 | 1 | ++----+----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |6 |96 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter([t2.c2 IN (1, 2) OR t2.c2 = NULL]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL); ++----+----+ +| a1 | a2 | ++----+----+ +| 2 | 1 | +| 3 | 1 | +| 4 | 1 | +| 5 | 1 | +| 6 | 1 | ++----+----+ +EXPLAIN insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |84 | +|1 | SUBPLAN SCAN |VIEW1|6 |83 | +|2 | NESTED-LOOP JOIN| |6 |82 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |2 |39 | +|5 | TABLE SCAN |t2 |2 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil) + 5 - output([t2.c1]), filter([t2.c2 IN (1, 2)]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL)); + +rollback; +EXPLAIN insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |98 | +|1 | SUBPLAN SCAN |VIEW1|6 |97 | +|2 | NESTED-LOOP OUTER JOIN| |6 |96 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter([t2.c2 IN (1, 2) OR t2.c2 = NULL]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |76 | +|4 | NESTED-LOOP JOIN| |1 |76 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |2 |39 | +|7 | TABLE SCAN |t2 |2 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil) + 7 - output([t2.c1]), filter([t2.c2 IN (1, 2)]), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |123 | +|1 | SUBPLAN FILTER | |6 |117 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |79 | +|4 | NESTED-LOOP OUTER JOIN| |1 |79 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 IN (1, 2) OR t2.c2 = NULL]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |76 | +|4 | NESTED-LOOP JOIN| |1 |76 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |2 |39 | +|7 | TABLE SCAN |t2 |2 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil) + 7 - output([t2.c1]), filter([t2.c2 IN (1, 2)]), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |117 | +|1 | SUBPLAN FILTER | |1 |116 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |79 | +|4 | NESTED-LOOP OUTER JOIN| |1 |79 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 IN (1, 2) OR t2.c2 = NULL]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 in (1, 2, NULL) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |18 |94 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |38 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter(nil), startup_filter([0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c1]), filter(nil) + 3 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL); ++----+----+ +| a1 | a2 | ++----+----+ ++----+----+ +EXPLAIN select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |0 |96 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | MATERIAL | |6 |40 | +|3 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2)) AND t2.c2 != NULL]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL); ++----+----+ +| a1 | a2 | ++----+----+ ++----+----+ +EXPLAIN insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |18 |99 | +|1 | SUBPLAN SCAN |VIEW1|18 |97 | +|2 | NESTED-LOOP OUTER JOIN| |18 |94 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |38 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), startup_filter([0]), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +insert into t11_temp (select t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL)); + +rollback; +EXPLAIN insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |0 |96 | +|1 | SUBPLAN SCAN |VIEW1|0 |96 | +|2 | NESTED-LOOP OUTER JOIN| |0 |96 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |40 | +|5 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.a1], [VIEW1.a2]), filter(nil), + access([VIEW1.a1], [VIEW1.a2]) + 2 - output([t1.c1], [t2.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2)) AND t2.c2 != NULL]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t11_temp (select /*+ NO_REWRITE */t1.c1 as a1, t2.c1 as a2 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP OUTER JOIN| |1 |75 | +|5 | SUBPLAN SCAN |VIEW1|1 |36 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + conds([VIEW1.t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 7 - output([t2.c1]), filter(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |140 | +|1 | SUBPLAN FILTER | |6 |134 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |96 | +|4 | NESTED-LOOP OUTER JOIN| |0 |96 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2)) AND t2.c2 != NULL]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | NESTED-LOOP OUTER JOIN| |1 |75 | +|5 | SUBPLAN SCAN |VIEW1|1 |36 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + conds([VIEW1.t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 7 - output([t2.c1]), filter(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |134 | +|1 | SUBPLAN FILTER | |1 |133 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |96 | +|4 | NESTED-LOOP OUTER JOIN| |0 |96 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |40 | +|7 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_IN, t2.c2, (1, 2)) AND t2.c2 != NULL]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 as a1 from t1 left join t2 on t1.c1 != t2.c1 where t2.c2 not in (1, 2, NULL) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP OUTER JOIN | |1 |195 | +|1 | NESTED-LOOP OUTER JOIN| |2 |147 | +|2 | NESTED-LOOP JOIN | |3 |92 | +|3 | TABLE GET |t4 |1 |53 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |44 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t3 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |1 |196 | +|1 | SUBPLAN SCAN |VIEW1|1 |196 | +|2 | NESTED-LOOP OUTER JOIN | |1 |195 | +|3 | NESTED-LOOP OUTER JOIN| |2 |147 | +|4 | NESTED-LOOP JOIN | |3 |92 | +|5 | TABLE GET |t4 |1 |53 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | MATERIAL | |6 |44 | +|10| TABLE SCAN |t3 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 10 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |226 | +|1 | SUBPLAN FILTER | |6 |220 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |182 | +|4 | NESTED-LOOP OUTER JOIN | |1 |182 | +|5 | NESTED-LOOP OUTER JOIN| |2 |140 | +|6 | NESTED-LOOP JOIN | |3 |92 | +|7 | TABLE GET |t4 |1 |52 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| MATERIAL | |6 |38 | +|12| TABLE SCAN |t3 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |221 | +|1 | SUBPLAN FILTER | |1 |220 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |182 | +|4 | NESTED-LOOP OUTER JOIN | |1 |182 | +|5 | NESTED-LOOP OUTER JOIN| |2 |140 | +|6 | NESTED-LOOP JOIN | |3 |92 | +|7 | TABLE GET |t4 |1 |52 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| MATERIAL | |6 |38 | +|12| TABLE SCAN |t3 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP OUTER JOIN | |1 |195 | +|1 | NESTED-LOOP OUTER JOIN| |2 |147 | +|2 | NESTED-LOOP JOIN | |3 |92 | +|3 | TABLE GET |t3 |1 |53 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |44 | +|6 | TABLE SCAN |t2 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |1 |196 | +|1 | SUBPLAN SCAN |VIEW1|1 |196 | +|2 | NESTED-LOOP OUTER JOIN | |1 |195 | +|3 | NESTED-LOOP OUTER JOIN| |2 |147 | +|4 | NESTED-LOOP JOIN | |3 |92 | +|5 | TABLE GET |t3 |1 |53 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t2 |6 |37 | +|9 | MATERIAL | |6 |44 | +|10| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |226 | +|1 | SUBPLAN FILTER | |6 |220 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |182 | +|4 | NESTED-LOOP OUTER JOIN | |1 |182 | +|5 | NESTED-LOOP OUTER JOIN| |2 |140 | +|6 | NESTED-LOOP JOIN | |3 |92 | +|7 | TABLE GET |t3 |1 |52 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| MATERIAL | |6 |38 | +|12| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |221 | +|1 | SUBPLAN FILTER | |1 |220 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |182 | +|4 | NESTED-LOOP OUTER JOIN | |1 |182 | +|5 | NESTED-LOOP OUTER JOIN| |2 |140 | +|6 | NESTED-LOOP JOIN | |3 |92 | +|7 | TABLE GET |t3 |1 |52 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t2 |6 |37 | +|11| MATERIAL | |6 |38 | +|12| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |195 | +|1 | NESTED-LOOP JOIN | |2 |146 | +|2 | TABLE GET |t4 |1 |53 | +|3 | NESTED-LOOP JOIN | |3 |92 | +|4 | TABLE GET |t3 |1 |53 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |195 | +|1 | SUBPLAN SCAN |VIEW1|1 |195 | +|2 | NESTED-LOOP OUTER JOIN| |1 |195 | +|3 | NESTED-LOOP JOIN | |2 |146 | +|4 | TABLE GET |t4 |1 |53 | +|5 | NESTED-LOOP JOIN | |3 |92 | +|6 | TABLE GET |t3 |1 |53 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |232 | +|1 | SUBPLAN FILTER | |6 |226 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |188 | +|4 | NESTED-LOOP OUTER JOIN| |1 |188 | +|5 | NESTED-LOOP JOIN | |2 |145 | +|6 | TABLE GET |t4 |1 |52 | +|7 | NESTED-LOOP JOIN | |3 |92 | +|8 | TABLE GET |t3 |1 |52 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |227 | +|1 | SUBPLAN FILTER | |1 |226 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |188 | +|4 | NESTED-LOOP OUTER JOIN| |1 |188 | +|5 | NESTED-LOOP JOIN | |2 |145 | +|6 | TABLE GET |t4 |1 |52 | +|7 | NESTED-LOOP JOIN | |3 |92 | +|8 | TABLE GET |t3 |1 |52 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP OUTER JOIN | |1 |195 | +|1 | NESTED-LOOP OUTER JOIN| |2 |147 | +|2 | NESTED-LOOP JOIN | |3 |92 | +|3 | TABLE GET |t2 |1 |53 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |6 |44 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |1 |196 | +|1 | SUBPLAN SCAN |VIEW1|1 |196 | +|2 | NESTED-LOOP OUTER JOIN | |1 |195 | +|3 | NESTED-LOOP OUTER JOIN| |2 |147 | +|4 | NESTED-LOOP JOIN | |3 |92 | +|5 | TABLE GET |t2 |1 |53 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | MATERIAL | |6 |44 | +|10| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |226 | +|1 | SUBPLAN FILTER | |6 |220 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |182 | +|4 | NESTED-LOOP OUTER JOIN | |1 |182 | +|5 | NESTED-LOOP OUTER JOIN| |2 |140 | +|6 | NESTED-LOOP JOIN | |3 |92 | +|7 | TABLE GET |t2 |1 |52 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t3 |6 |37 | +|11| MATERIAL | |6 |38 | +|12| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |221 | +|1 | SUBPLAN FILTER | |1 |220 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |182 | +|4 | NESTED-LOOP OUTER JOIN | |1 |182 | +|5 | NESTED-LOOP OUTER JOIN| |2 |140 | +|6 | NESTED-LOOP JOIN | |3 |92 | +|7 | TABLE GET |t2 |1 |52 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t3 |6 |37 | +|11| MATERIAL | |6 |38 | +|12| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |195 | +|1 | NESTED-LOOP JOIN | |2 |146 | +|2 | TABLE GET |t4 |1 |53 | +|3 | NESTED-LOOP JOIN | |3 |92 | +|4 | TABLE GET |t2 |1 |53 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |195 | +|1 | SUBPLAN SCAN |VIEW1|1 |195 | +|2 | NESTED-LOOP OUTER JOIN| |1 |195 | +|3 | NESTED-LOOP JOIN | |2 |146 | +|4 | TABLE GET |t4 |1 |53 | +|5 | NESTED-LOOP JOIN | |3 |92 | +|6 | TABLE GET |t2 |1 |53 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |232 | +|1 | SUBPLAN FILTER | |6 |226 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |188 | +|4 | NESTED-LOOP OUTER JOIN| |1 |188 | +|5 | NESTED-LOOP JOIN | |2 |145 | +|6 | TABLE GET |t4 |1 |52 | +|7 | NESTED-LOOP JOIN | |3 |92 | +|8 | TABLE GET |t2 |1 |52 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |227 | +|1 | SUBPLAN FILTER | |1 |226 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |188 | +|4 | NESTED-LOOP OUTER JOIN| |1 |188 | +|5 | NESTED-LOOP JOIN | |2 |145 | +|6 | TABLE GET |t4 |1 |52 | +|7 | NESTED-LOOP JOIN | |3 |92 | +|8 | TABLE GET |t2 |1 |52 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |195 | +|1 | NESTED-LOOP JOIN | |2 |146 | +|2 | TABLE GET |t2 |1 |53 | +|3 | NESTED-LOOP JOIN | |3 |92 | +|4 | TABLE GET |t3 |1 |53 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |195 | +|1 | SUBPLAN SCAN |VIEW1|1 |195 | +|2 | NESTED-LOOP OUTER JOIN| |1 |195 | +|3 | NESTED-LOOP JOIN | |2 |146 | +|4 | TABLE GET |t2 |1 |53 | +|5 | NESTED-LOOP JOIN | |3 |92 | +|6 | TABLE GET |t3 |1 |53 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |232 | +|1 | SUBPLAN FILTER | |6 |226 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |188 | +|4 | NESTED-LOOP OUTER JOIN| |1 |188 | +|5 | NESTED-LOOP JOIN | |2 |145 | +|6 | TABLE GET |t2 |1 |52 | +|7 | NESTED-LOOP JOIN | |3 |92 | +|8 | TABLE GET |t3 |1 |52 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |227 | +|1 | SUBPLAN FILTER | |1 |226 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |188 | +|4 | NESTED-LOOP OUTER JOIN| |1 |188 | +|5 | NESTED-LOOP JOIN | |2 |145 | +|6 | TABLE GET |t2 |1 |52 | +|7 | NESTED-LOOP JOIN | |3 |92 | +|8 | TABLE GET |t3 |1 |52 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |NESTED-LOOP JOIN | |1 |199 | +|1 | TABLE GET |t4 |1 |53 | +|2 | NESTED-LOOP JOIN | |2 |146 | +|3 | TABLE GET |t3 |1 |53 | +|4 | NESTED-LOOP JOIN| |3 |92 | +|5 | TABLE GET |t2 |1 |53 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |205 | +|1 | NESTED-LOOP OUTER JOIN | |2 |156 | +|2 | NESTED-LOOP OUTER JOIN| |3 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |INSERT | |1 |199 | +|1 | SUBPLAN SCAN |VIEW1|1 |199 | +|2 | NESTED-LOOP JOIN | |1 |199 | +|3 | TABLE GET |t4 |1 |53 | +|4 | NESTED-LOOP JOIN | |2 |146 | +|5 | TABLE GET |t3 |1 |53 | +|6 | NESTED-LOOP JOIN| |3 |92 | +|7 | TABLE GET |t2 |1 |53 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |1 |205 | +|1 | SUBPLAN SCAN |VIEW1|1 |205 | +|2 | NESTED-LOOP OUTER JOIN | |1 |205 | +|3 | NESTED-LOOP OUTER JOIN | |2 |156 | +|4 | NESTED-LOOP OUTER JOIN| |3 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |UPDATE | |6 |242 | +|1 | SUBPLAN FILTER | |6 |236 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |198 | +|4 | NESTED-LOOP JOIN | |1 |198 | +|5 | TABLE GET |t4 |1 |52 | +|6 | NESTED-LOOP JOIN | |2 |145 | +|7 | TABLE GET |t3 |1 |52 | +|8 | NESTED-LOOP JOIN| |3 |92 | +|9 | TABLE GET |t2 |1 |52 | +|10| TABLE SCAN |t1 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |228 | +|1 | SUBPLAN FILTER | |6 |222 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |DELETE | |1 |237 | +|1 | SUBPLAN FILTER | |1 |236 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |198 | +|4 | NESTED-LOOP JOIN | |1 |198 | +|5 | TABLE GET |t4 |1 |52 | +|6 | NESTED-LOOP JOIN | |2 |145 | +|7 | TABLE GET |t3 |1 |52 | +|8 | NESTED-LOOP JOIN| |3 |92 | +|9 | TABLE GET |t2 |1 |52 | +|10| TABLE SCAN |t1 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |185 | +|4 | NESTED-LOOP OUTER JOIN | |1 |184 | +|5 | NESTED-LOOP OUTER JOIN | |2 |142 | +|6 | NESTED-LOOP OUTER JOIN| |3 |94 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0]), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter([t3.c1 = 0]), + conds([t1.c1 != t3.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter([t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 != t2.c1 left join t3 on t1.c1 != t3.c1 left join t4 on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP OUTER JOIN | |0 |484 | +|1 | NESTED-LOOP OUTER JOIN| |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP JOIN | |18 |102 | +|5 | TABLE SCAN |t4 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |0 |484 | +|1 | NESTED-LOOP OUTER JOIN | |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP OUTER JOIN| |18 |102 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |0 |484 | +|1 | SUBPLAN SCAN |VIEW1|0 |484 | +|2 | NESTED-LOOP OUTER JOIN | |0 |484 | +|3 | NESTED-LOOP OUTER JOIN| |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP JOIN | |18 |102 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |INSERT | |0 |484 | +|1 | SUBPLAN SCAN |VIEW1|0 |484 | +|2 | NESTED-LOOP OUTER JOIN | |0 |484 | +|3 | NESTED-LOOP OUTER JOIN | |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP OUTER JOIN| |18 |102 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN| |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP JOIN | |18 |94 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN| |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP JOIN | |18 |94 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |648 |764 | +|1 | NESTED-LOOP JOIN CARTESIAN| |108 |228 | +|2 | NESTED-LOOP OUTER JOIN | |18 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |0 |484 | +|1 | NESTED-LOOP OUTER JOIN | |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP OUTER JOIN| |18 |102 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |648 |943 | +|1 | SUBPLAN SCAN |VIEW1|648 |853 | +|2 | NESTED-LOOP JOIN CARTESIAN | |648 |764 | +|3 | NESTED-LOOP JOIN CARTESIAN| |108 |228 | +|4 | NESTED-LOOP OUTER JOIN | |18 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |INSERT | |0 |484 | +|1 | SUBPLAN SCAN |VIEW1|0 |484 | +|2 | NESTED-LOOP OUTER JOIN | |0 |484 | +|3 | NESTED-LOOP OUTER JOIN | |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP OUTER JOIN| |18 |102 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |194 | +|1 | SUBPLAN FILTER | |6 |188 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |112 | +|6 | NESTED-LOOP OUTER JOIN | |1 |74 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |189 | +|1 | SUBPLAN FILTER | |1 |188 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |112 | +|6 | NESTED-LOOP OUTER JOIN | |1 |74 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |648 |764 | +|1 | NESTED-LOOP JOIN CARTESIAN| |108 |228 | +|2 | NESTED-LOOP OUTER JOIN | |18 |102 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |0 |484 | +|1 | NESTED-LOOP OUTER JOIN | |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP OUTER JOIN| |18 |102 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |648 |943 | +|1 | SUBPLAN SCAN |VIEW1|648 |853 | +|2 | NESTED-LOOP JOIN CARTESIAN | |648 |764 | +|3 | NESTED-LOOP JOIN CARTESIAN| |108 |228 | +|4 | NESTED-LOOP OUTER JOIN | |18 |102 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 11 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |INSERT | |0 |484 | +|1 | SUBPLAN SCAN |VIEW1|0 |484 | +|2 | NESTED-LOOP OUTER JOIN | |0 |484 | +|3 | NESTED-LOOP OUTER JOIN | |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP OUTER JOIN| |18 |102 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |194 | +|1 | SUBPLAN FILTER | |6 |188 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |112 | +|6 | NESTED-LOOP OUTER JOIN | |1 |74 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |189 | +|1 | SUBPLAN FILTER | |1 |188 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |112 | +|6 | NESTED-LOOP OUTER JOIN | |1 |74 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |174 | +|1 | NESTED-LOOP JOIN | |2 |125 | +|2 | NESTED-LOOP JOIN | |1 |105 | +|3 | TABLE GET |t3 |1 |53 | +|4 | TABLE GET |t4 |1 |53 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |484 | +|1 | NESTED-LOOP OUTER JOIN | |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP OUTER JOIN| |18 |102 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |174 | +|1 | SUBPLAN SCAN |VIEW1|1 |174 | +|2 | NESTED-LOOP OUTER JOIN| |1 |174 | +|3 | NESTED-LOOP JOIN | |2 |125 | +|4 | NESTED-LOOP JOIN | |1 |105 | +|5 | TABLE GET |t3 |1 |53 | +|6 | TABLE GET |t4 |1 |53 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |INSERT | |1 |484 | +|1 | SUBPLAN SCAN |VIEW1|1 |484 | +|2 | NESTED-LOOP OUTER JOIN | |1 |484 | +|3 | NESTED-LOOP OUTER JOIN | |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP OUTER JOIN| |18 |102 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |211 | +|1 | SUBPLAN FILTER | |6 |205 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |167 | +|4 | NESTED-LOOP OUTER JOIN| |1 |167 | +|5 | NESTED-LOOP JOIN | |2 |125 | +|6 | NESTED-LOOP JOIN | |1 |105 | +|7 | TABLE GET |t3 |1 |52 | +|8 | TABLE GET |t4 |1 |52 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |409 | +|4 | NESTED-LOOP OUTER JOIN | |1 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |206 | +|1 | SUBPLAN FILTER | |1 |205 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |167 | +|4 | NESTED-LOOP OUTER JOIN| |1 |167 | +|5 | NESTED-LOOP JOIN | |2 |125 | +|6 | NESTED-LOOP JOIN | |1 |105 | +|7 | TABLE GET |t3 |1 |52 | +|8 | TABLE GET |t4 |1 |52 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |409 | +|4 | NESTED-LOOP OUTER JOIN | |1 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP JOIN | |0 |322 | +|1 | TABLE GET |t2 |1 |53 | +|2 | NESTED-LOOP OUTER JOIN| |54 |249 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MATERIAL | |18 |142 | +|5 | NESTED-LOOP JOIN | |18 |102 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t2.c1], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |0 |484 | +|1 | NESTED-LOOP OUTER JOIN | |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP OUTER JOIN| |18 |102 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |0 |322 | +|1 | SUBPLAN SCAN |VIEW1|0 |322 | +|2 | NESTED-LOOP JOIN | |0 |322 | +|3 | TABLE GET |t2 |1 |53 | +|4 | NESTED-LOOP OUTER JOIN| |54 |249 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MATERIAL | |18 |142 | +|7 | NESTED-LOOP JOIN | |18 |102 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | MATERIAL | |6 |44 | +|10| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t2.c1], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |INSERT | |0 |484 | +|1 | SUBPLAN SCAN |VIEW1|0 |484 | +|2 | NESTED-LOOP OUTER JOIN | |0 |484 | +|3 | NESTED-LOOP OUTER JOIN | |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP OUTER JOIN| |18 |102 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |313 | +|1 | SUBPLAN FILTER | |6 |307 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |270 | +|4 | NESTED-LOOP JOIN | |0 |270 | +|5 | TABLE GET |t2 |1 |52 | +|6 | NESTED-LOOP OUTER JOIN| |54 |197 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |18 |101 | +|9 | NESTED-LOOP JOIN | |18 |94 | +|10| TABLE SCAN |t3 |6 |37 | +|11| MATERIAL | |6 |38 | +|12| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), nl_params_(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t3.c1], [t4.c1]), filter(nil) + 9 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |308 | +|1 | SUBPLAN FILTER | |1 |307 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |270 | +|4 | NESTED-LOOP JOIN | |0 |270 | +|5 | TABLE GET |t2 |1 |52 | +|6 | NESTED-LOOP OUTER JOIN| |54 |197 | +|7 | TABLE SCAN |t1 |6 |37 | +|8 | MATERIAL | |18 |101 | +|9 | NESTED-LOOP JOIN | |18 |94 | +|10| TABLE SCAN |t3 |6 |37 | +|11| MATERIAL | |6 |38 | +|12| TABLE SCAN |t4 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), nl_params_(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t3.c1], [t4.c1]), filter(nil) + 9 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|1 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |40 | +|9 | TABLE SCAN |t1 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |0 |484 | +|1 | NESTED-LOOP OUTER JOIN | |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP OUTER JOIN| |18 |102 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t2.c1 = 0], [t4.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |1296 |1644| +|1 | SUBPLAN SCAN |VIEW1|1296 |1465| +|2 | NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|3 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|4 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |40 | +|11| TABLE SCAN |t1 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |INSERT | |0 |484 | +|1 | SUBPLAN SCAN |VIEW1|0 |484 | +|2 | NESTED-LOOP OUTER JOIN | |0 |484 | +|3 | NESTED-LOOP OUTER JOIN | |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP OUTER JOIN| |18 |102 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t2.c1 = 0], [t4.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |194 | +|1 | SUBPLAN FILTER | |6 |188 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t2.c1 = 0], [t4.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |189 | +|1 | SUBPLAN FILTER | |1 |188 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t2.c1 = 0], [t4.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|1 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |40 | +|9 | TABLE SCAN |t1 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |0 |484 | +|1 | NESTED-LOOP OUTER JOIN | |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP OUTER JOIN| |18 |102 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0], [t3.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |1296 |1644| +|1 | SUBPLAN SCAN |VIEW1|1296 |1465| +|2 | NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|3 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|4 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |40 | +|11| TABLE SCAN |t1 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |INSERT | |0 |484 | +|1 | SUBPLAN SCAN |VIEW1|0 |484 | +|2 | NESTED-LOOP OUTER JOIN | |0 |484 | +|3 | NESTED-LOOP OUTER JOIN | |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP OUTER JOIN| |18 |102 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0], [t3.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |194 | +|1 | SUBPLAN FILTER | |6 |188 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0], [t3.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |189 | +|1 | SUBPLAN FILTER | |1 |188 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |408 | +|4 | NESTED-LOOP OUTER JOIN | |0 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0], [t3.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------- +|0 |NESTED-LOOP JOIN | |1 |178 | +|1 | TABLE GET |t2 |1 |53 | +|2 | NESTED-LOOP JOIN | |2 |125 | +|3 | NESTED-LOOP JOIN| |1 |105 | +|4 | TABLE GET |t3 |1 |53 | +|5 | TABLE GET |t4 |1 |53 | +|6 | TABLE SCAN |t1 |6 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |1 |484 | +|1 | NESTED-LOOP OUTER JOIN | |54 |249 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MATERIAL | |18 |142 | +|4 | NESTED-LOOP OUTER JOIN| |18 |102 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |INSERT | |1 |178 | +|1 | SUBPLAN SCAN |VIEW1|1 |178 | +|2 | NESTED-LOOP JOIN | |1 |178 | +|3 | TABLE GET |t2 |1 |53 | +|4 | NESTED-LOOP JOIN | |2 |125 | +|5 | NESTED-LOOP JOIN| |1 |105 | +|6 | TABLE GET |t3 |1 |53 | +|7 | TABLE GET |t4 |1 |53 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |INSERT | |1 |484 | +|1 | SUBPLAN SCAN |VIEW1|1 |484 | +|2 | NESTED-LOOP OUTER JOIN | |1 |484 | +|3 | NESTED-LOOP OUTER JOIN | |54 |249 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MATERIAL | |18 |142 | +|6 | NESTED-LOOP OUTER JOIN| |18 |102 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |44 | +|11| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 11 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |UPDATE | |6 |221 | +|1 | SUBPLAN FILTER | |6 |215 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |178 | +|4 | NESTED-LOOP JOIN | |1 |177 | +|5 | TABLE GET |t2 |1 |52 | +|6 | NESTED-LOOP JOIN | |2 |125 | +|7 | NESTED-LOOP JOIN| |1 |105 | +|8 | TABLE GET |t3 |1 |52 | +|9 | TABLE GET |t4 |1 |52 | +|10| TABLE SCAN |t1 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 7 - output([t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |6 |452 | +|1 | SUBPLAN FILTER | |6 |446 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |409 | +|4 | NESTED-LOOP OUTER JOIN | |1 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |DELETE | |1 |216 | +|1 | SUBPLAN FILTER | |1 |215 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |178 | +|4 | NESTED-LOOP JOIN | |1 |177 | +|5 | TABLE GET |t2 |1 |52 | +|6 | NESTED-LOOP JOIN | |2 |125 | +|7 | NESTED-LOOP JOIN| |1 |105 | +|8 | TABLE GET |t3 |1 |52 | +|9 | TABLE GET |t4 |1 |52 | +|10| TABLE SCAN |t1 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 7 - output([t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |447 | +|1 | SUBPLAN FILTER | |1 |446 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |409 | +|4 | NESTED-LOOP OUTER JOIN | |1 |408 | +|5 | NESTED-LOOP OUTER JOIN | |54 |197 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | MATERIAL | |18 |101 | +|8 | NESTED-LOOP OUTER JOIN| |18 |94 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t4 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + conds([t1.c1 != t2.c1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + conds([t1.c1 != t4.c1]), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil) + 8 - output([t3.c1], [t4.c1]), filter(nil), + conds([t4.c1 != t3.c1]), nl_params_(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 != t2.c1) left join (t3 left join t4 on t4.c1 != t3.c1) on t1.c1 != t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +## case full outer join el +EXPLAIN select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |10 |164 | +|1 | MERGE OUTER JOIN | |6 |122 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | MERGE JOIN | |6 |80 | +|4 | TABLE SCAN |t4 |6 |37 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |10 |181 | +|1 | MERGE OUTER JOIN | |6 |139 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SORT | |6 |97 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |10 |167 | +|1 | SUBPLAN SCAN |VIEW1|10 |165 | +|2 | MERGE FULL OUTER JOIN| |10 |164 | +|3 | MERGE OUTER JOIN | |6 |122 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | MERGE JOIN | |6 |80 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |10 |184 | +|1 | SUBPLAN SCAN |VIEW1|10 |183 | +|2 | MERGE FULL OUTER JOIN| |10 |181 | +|3 | MERGE OUTER JOIN | |6 |139 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SORT | |6 |97 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |196 | +|1 | SUBPLAN FILTER | |6 |190 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |152 | +|4 | MERGE FULL OUTER JOIN| |1 |152 | +|5 | MERGE OUTER JOIN | |2 |115 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | MERGE JOIN | |4 |77 | +|8 | TABLE SCAN |t4 |5 |37 | +|9 | TABLE SCAN |t3 |5 |37 | +|10| TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |204 | +|1 | SUBPLAN FILTER | |6 |198 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |160 | +|4 | MERGE FULL OUTER JOIN| |1 |160 | +|5 | MERGE OUTER JOIN | |2 |123 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | SORT | |4 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |191 | +|1 | SUBPLAN FILTER | |1 |190 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |152 | +|4 | MERGE FULL OUTER JOIN| |1 |152 | +|5 | MERGE OUTER JOIN | |2 |115 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | MERGE JOIN | |4 |77 | +|8 | TABLE SCAN |t4 |5 |37 | +|9 | TABLE SCAN |t3 |5 |37 | +|10| TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |199 | +|1 | SUBPLAN FILTER | |1 |198 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |160 | +|4 | MERGE FULL OUTER JOIN| |1 |160 | +|5 | MERGE OUTER JOIN | |2 |123 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | SORT | |4 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |216 |370 | +|1 | NESTED-LOOP JOIN CARTESIAN| |36 |162 | +|2 | MERGE OUTER JOIN | |6 |91 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE GET |t2 |1 |53 | +|5 | MATERIAL | |6 |44 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |2 |181 | +|1 | MERGE OUTER JOIN | |6 |139 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SORT | |6 |97 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |216 |429 | +|1 | SUBPLAN SCAN |VIEW1|216 |399 | +|2 | NESTED-LOOP JOIN CARTESIAN | |216 |370 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |162 | +|4 | MERGE OUTER JOIN | |6 |91 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE GET |t2 |1 |53 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | MATERIAL | |6 |44 | +|10| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |2 |182 | +|1 | SUBPLAN SCAN |VIEW1|2 |181 | +|2 | MERGE FULL OUTER JOIN| |2 |181 | +|3 | MERGE OUTER JOIN | |6 |139 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SORT | |6 |97 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |156 | +|1 | SUBPLAN FILTER | |6 |150 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |113 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |113 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |209 | +|1 | SUBPLAN FILTER | |6 |203 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |166 | +|4 | MERGE FULL OUTER JOIN| |1 |165 | +|5 | MERGE OUTER JOIN | |5 |126 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |5 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |151 | +|1 | SUBPLAN FILTER | |1 |150 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |113 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |113 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |204 | +|1 | SUBPLAN FILTER | |1 |203 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |166 | +|4 | MERGE FULL OUTER JOIN| |1 |165 | +|5 | MERGE OUTER JOIN | |5 |126 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |5 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t3.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |216 |370 | +|1 | NESTED-LOOP JOIN CARTESIAN| |36 |162 | +|2 | MERGE OUTER JOIN | |6 |91 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE GET |t2 |1 |53 | +|5 | MATERIAL | |6 |44 | +|6 | TABLE SCAN |t3 |6 |37 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t4 |6 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |2 |181 | +|1 | MERGE OUTER JOIN | |6 |139 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SORT | |6 |97 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |216 |429 | +|1 | SUBPLAN SCAN |VIEW1|216 |399 | +|2 | NESTED-LOOP JOIN CARTESIAN | |216 |370 | +|3 | NESTED-LOOP JOIN CARTESIAN| |36 |162 | +|4 | MERGE OUTER JOIN | |6 |91 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE GET |t2 |1 |53 | +|7 | MATERIAL | |6 |44 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | MATERIAL | |6 |44 | +|10| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 10 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |2 |182 | +|1 | SUBPLAN SCAN |VIEW1|2 |181 | +|2 | MERGE FULL OUTER JOIN| |2 |181 | +|3 | MERGE OUTER JOIN | |6 |139 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SORT | |6 |97 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |156 | +|1 | SUBPLAN FILTER | |6 |150 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |113 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |113 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |209 | +|1 | SUBPLAN FILTER | |6 |203 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |166 | +|4 | MERGE FULL OUTER JOIN| |1 |165 | +|5 | MERGE OUTER JOIN | |5 |126 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |5 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |151 | +|1 | SUBPLAN FILTER | |1 |150 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |113 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |113 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t3 |6 |37 | +|9 | MATERIAL | |6 |38 | +|10| TABLE SCAN |t4 |6 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |204 | +|1 | SUBPLAN FILTER | |1 |203 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |166 | +|4 | MERGE FULL OUTER JOIN| |1 |165 | +|5 | MERGE OUTER JOIN | |5 |126 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |5 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |0 |105 | +|1 | NESTED-LOOP JOIN CARTESIAN| |0 |105 | +|2 | NESTED-LOOP OUTER JOIN | |0 |105 | +|3 | TABLE GET |t1 |1 |52 | +|4 | TABLE GET |t2 |1 |53 | +|5 | TABLE GET |t3 |1 |53 | +|6 | TABLE GET |t4 |1 |53 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |1 |181 | +|1 | MERGE OUTER JOIN | |6 |139 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SORT | |6 |97 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |0 |105 | +|1 | SUBPLAN SCAN |VIEW1|0 |105 | +|2 | NESTED-LOOP JOIN CARTESIAN | |0 |105 | +|3 | NESTED-LOOP JOIN CARTESIAN| |0 |105 | +|4 | NESTED-LOOP OUTER JOIN | |0 |105 | +|5 | TABLE GET |t1 |1 |52 | +|6 | TABLE GET |t2 |1 |53 | +|7 | TABLE GET |t3 |1 |53 | +|8 | TABLE GET |t4 |1 |53 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |181 | +|1 | SUBPLAN SCAN |VIEW1|1 |181 | +|2 | MERGE FULL OUTER JOIN| |1 |181 | +|3 | MERGE OUTER JOIN | |6 |139 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SORT | |6 |97 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |6 |149 | +|1 | SUBPLAN FILTER | |6 |143 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |105 | +|4 | NESTED-LOOP JOIN CARTESIAN | |0 |105 | +|5 | NESTED-LOOP JOIN CARTESIAN| |0 |105 | +|6 | NESTED-LOOP OUTER JOIN | |0 |105 | +|7 | TABLE GET |t1 |1 |52 | +|8 | TABLE GET |t2 |1 |52 | +|9 | TABLE GET |t3 |1 |52 | +|10| TABLE GET |t4 |1 |52 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |212 | +|1 | SUBPLAN FILTER | |6 |206 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |143 | +|1 | SUBPLAN FILTER | |1 |142 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |105 | +|4 | NESTED-LOOP JOIN CARTESIAN | |0 |105 | +|5 | NESTED-LOOP JOIN CARTESIAN| |0 |105 | +|6 | NESTED-LOOP OUTER JOIN | |0 |105 | +|7 | TABLE GET |t1 |1 |52 | +|8 | TABLE GET |t2 |1 |52 | +|9 | TABLE GET |t3 |1 |52 | +|10| TABLE GET |t4 |1 |52 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |207 | +|1 | SUBPLAN FILTER | |1 |206 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN | |0 |186 | +|1 | TABLE GET |t2 |1 |53 | +|2 | MERGE OUTER JOIN| |1 |133 | +|3 | TABLE GET |t1 |1 |52 | +|4 | MERGE JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |1 |181 | +|1 | MERGE OUTER JOIN | |6 |139 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SORT | |6 |97 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |0 |186 | +|1 | SUBPLAN SCAN |VIEW1|0 |186 | +|2 | MERGE OUTER JOIN | |0 |186 | +|3 | TABLE GET |t2 |1 |53 | +|4 | MERGE OUTER JOIN| |1 |133 | +|5 | TABLE GET |t1 |1 |52 | +|6 | MERGE JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |181 | +|1 | SUBPLAN SCAN |VIEW1|1 |181 | +|2 | MERGE FULL OUTER JOIN| |1 |181 | +|3 | MERGE OUTER JOIN | |6 |139 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SORT | |6 |97 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |229 | +|1 | SUBPLAN FILTER | |6 |223 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |185 | +|4 | MERGE OUTER JOIN | |0 |185 | +|5 | TABLE GET |t2 |1 |52 | +|6 | MERGE OUTER JOIN| |1 |133 | +|7 | TABLE GET |t1 |1 |52 | +|8 | MERGE JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |212 | +|1 | SUBPLAN FILTER | |6 |206 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |224 | +|1 | SUBPLAN FILTER | |1 |223 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |185 | +|4 | MERGE OUTER JOIN | |0 |185 | +|5 | TABLE GET |t2 |1 |52 | +|6 | MERGE OUTER JOIN| |1 |133 | +|7 | TABLE GET |t1 |1 |52 | +|8 | MERGE JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |207 | +|1 | SUBPLAN FILTER | |1 |206 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|1 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |40 | +|9 | TABLE SCAN |t1 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |1 |181 | +|1 | MERGE OUTER JOIN | |6 |139 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SORT | |6 |97 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t3.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |1296 |1644| +|1 | SUBPLAN SCAN |VIEW1|1296 |1465| +|2 | NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|3 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|4 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |40 | +|11| TABLE SCAN |t1 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |181 | +|1 | SUBPLAN SCAN |VIEW1|1 |181 | +|2 | MERGE FULL OUTER JOIN| |1 |181 | +|3 | MERGE OUTER JOIN | |6 |139 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SORT | |6 |97 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t3.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |194 | +|1 | SUBPLAN FILTER | |6 |188 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |212 | +|1 | SUBPLAN FILTER | |6 |206 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t3.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |189 | +|1 | SUBPLAN FILTER | |1 |188 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |207 | +|1 | SUBPLAN FILTER | |1 |206 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t3.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|1 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |40 | +|9 | TABLE SCAN |t1 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |1 |181 | +|1 | MERGE OUTER JOIN | |6 |139 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SORT | |6 |97 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t3.c1 = 0], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |1296 |1644| +|1 | SUBPLAN SCAN |VIEW1|1296 |1465| +|2 | NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|3 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|4 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |40 | +|11| TABLE SCAN |t1 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 9 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |181 | +|1 | SUBPLAN SCAN |VIEW1|1 |181 | +|2 | MERGE FULL OUTER JOIN| |1 |181 | +|3 | MERGE OUTER JOIN | |6 |139 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SORT | |6 |97 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t3.c1 = 0], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |194 | +|1 | SUBPLAN FILTER | |6 |188 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |212 | +|1 | SUBPLAN FILTER | |6 |206 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t3.c1 = 0], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |189 | +|1 | SUBPLAN FILTER | |1 |188 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t3 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t4 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |207 | +|1 | SUBPLAN FILTER | |1 |206 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t3.c1 = 0], [(T_OP_IS, t4.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1 |211 | +|1 | NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|2 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|3 | TABLE GET |t2 |1 |53 | +|4 | TABLE GET |t1 |1 |52 | +|5 | TABLE GET |t3 |1 |53 | +|6 | TABLE GET |t4 |1 |53 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |1 |181 | +|1 | MERGE OUTER JOIN | |6 |139 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | SORT | |6 |97 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +|7 | TABLE SCAN |t2 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |1 |211 | +|1 | SUBPLAN SCAN |VIEW1|1 |211 | +|2 | NESTED-LOOP JOIN CARTESIAN | |1 |211 | +|3 | NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|5 | TABLE GET |t2 |1 |53 | +|6 | TABLE GET |t1 |1 |52 | +|7 | TABLE GET |t3 |1 |53 | +|8 | TABLE GET |t4 |1 |53 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |181 | +|1 | SUBPLAN SCAN |VIEW1|1 |181 | +|2 | MERGE FULL OUTER JOIN| |1 |181 | +|3 | MERGE OUTER JOIN | |6 |139 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | SORT | |6 |97 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +|9 | TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |254 | +|1 | SUBPLAN FILTER | |6 |248 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |210 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |210 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|7 | TABLE GET |t2 |1 |52 | +|8 | TABLE GET |t1 |1 |52 | +|9 | TABLE GET |t3 |1 |52 | +|10| TABLE GET |t4 |1 |52 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |212 | +|1 | SUBPLAN FILTER | |6 |206 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |249 | +|1 | SUBPLAN FILTER | |1 |248 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |210 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |210 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|7 | TABLE GET |t2 |1 |52 | +|8 | TABLE GET |t1 |1 |52 | +|9 | TABLE GET |t3 |1 |52 | +|10| TABLE GET |t4 |1 |52 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |207 | +|1 | SUBPLAN FILTER | |1 |206 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |169 | +|4 | MERGE FULL OUTER JOIN| |1 |169 | +|5 | MERGE OUTER JOIN | |6 |127 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t2 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 full join t2 on t1.c1 = t2.c1) left join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |0 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |0 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |184 | +|1 | SUBPLAN SCAN |VIEW1|0 |184 | +|2 | HASH RIGHT OUTER JOIN| |0 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |184 | +|1 | SUBPLAN SCAN |VIEW1|0 |184 | +|2 | HASH RIGHT OUTER JOIN| |0 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |36 |215 | +|1 | MERGE OUTER JOIN | |6 |144 | +|2 | TABLE SCAN |t4 |6 |37 | +|3 | NESTED-LOOP OUTER JOIN | |1 |105 | +|4 | TABLE GET |t1 |1 |52 | +|5 | TABLE GET |t2 |1 |53 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t3 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |0 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |36 |225 | +|1 | SUBPLAN SCAN |VIEW1|36 |220 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |215 | +|3 | MERGE OUTER JOIN | |6 |144 | +|4 | TABLE SCAN |t4 |6 |37 | +|5 | NESTED-LOOP OUTER JOIN | |1 |105 | +|6 | TABLE GET |t1 |1 |52 | +|7 | TABLE GET |t2 |1 |53 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t3 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil) + 9 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |184 | +|1 | SUBPLAN SCAN |VIEW1|0 |184 | +|2 | HASH RIGHT OUTER JOIN| |0 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |6 |167 | +|1 | SUBPLAN FILTER | |6 |161 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |123 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |123 | +|5 | MERGE OUTER JOIN | |1 |84 | +|6 | TABLE SCAN |t4 |1 |36 | +|7 | TABLE GET |t1 |1 |48 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t3 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |161 | +|1 | SUBPLAN FILTER | |1 |160 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |123 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |123 | +|5 | MERGE OUTER JOIN | |1 |84 | +|6 | TABLE SCAN |t4 |1 |36 | +|7 | TABLE GET |t1 |1 |48 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t3 |6 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |0 |105 | +|1 | NESTED-LOOP OUTER JOIN | |0 |105 | +|2 | NESTED-LOOP OUTER JOIN| |0 |105 | +|3 | TABLE GET |t3 |1 |53 | +|4 | TABLE GET |t4 |1 |53 | +|5 | TABLE GET |t1 |1 |36 | +|6 | TABLE GET |t2 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_([t4.c1]) + 2 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds(nil), nl_params_([t3.c1]) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |0 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |0 |105 | +|1 | SUBPLAN SCAN |VIEW1|0 |105 | +|2 | NESTED-LOOP OUTER JOIN | |0 |105 | +|3 | NESTED-LOOP OUTER JOIN | |0 |105 | +|4 | NESTED-LOOP OUTER JOIN| |0 |105 | +|5 | TABLE GET |t3 |1 |53 | +|6 | TABLE GET |t4 |1 |53 | +|7 | TABLE GET |t1 |1 |36 | +|8 | TABLE GET |t2 |1 |36 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_([t4.c1]) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds(nil), nl_params_([t3.c1]) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |184 | +|1 | SUBPLAN SCAN |VIEW1|0 |184 | +|2 | HASH RIGHT OUTER JOIN| |0 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |149 | +|1 | SUBPLAN FILTER | |6 |143 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |105 | +|4 | NESTED-LOOP OUTER JOIN | |0 |105 | +|5 | NESTED-LOOP OUTER JOIN | |0 |105 | +|6 | NESTED-LOOP OUTER JOIN| |0 |105 | +|7 | TABLE GET |t3 |1 |52 | +|8 | TABLE GET |t4 |1 |52 | +|9 | TABLE GET |t1 |1 |36 | +|10| TABLE GET |t2 |1 |36 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t4.c1]) + 6 - output([t4.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds(nil), nl_params_([t3.c1]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |143 | +|1 | SUBPLAN FILTER | |1 |142 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |105 | +|4 | NESTED-LOOP OUTER JOIN | |0 |105 | +|5 | NESTED-LOOP OUTER JOIN | |0 |105 | +|6 | NESTED-LOOP OUTER JOIN| |0 |105 | +|7 | TABLE GET |t3 |1 |52 | +|8 | TABLE GET |t4 |1 |52 | +|9 | TABLE GET |t1 |1 |36 | +|10| TABLE GET |t2 |1 |36 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1, NULL, 0)]), + conds(nil), nl_params_([t1.c1]) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t4.c1]) + 6 - output([t4.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)]), + conds(nil), nl_params_([t3.c1]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t3.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP JOIN | |0 |211 | +|1 | NESTED-LOOP OUTER JOIN | |1 |158 | +|2 | NESTED-LOOP OUTER JOIN| |1 |105 | +|3 | TABLE GET |t4 |1 |53 | +|4 | TABLE GET |t1 |1 |52 | +|5 | TABLE GET |t2 |1 |53 | +|6 | TABLE GET |t3 |1 |53 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([(T_OP_IS, t2.c1, NULL, 0)]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 2 - output([t1.c1], [t1.c2], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_([t4.c1]) + 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |1 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |0 |211 | +|1 | SUBPLAN SCAN |VIEW1|0 |211 | +|2 | NESTED-LOOP JOIN | |0 |211 | +|3 | NESTED-LOOP OUTER JOIN | |1 |158 | +|4 | NESTED-LOOP OUTER JOIN| |1 |105 | +|5 | TABLE GET |t4 |1 |53 | +|6 | TABLE GET |t1 |1 |52 | +|7 | TABLE GET |t2 |1 |53 | +|8 | TABLE GET |t3 |1 |53 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([(T_OP_IS, t2.c1, NULL, 0)]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 4 - output([t1.c1], [t1.c2], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_([t4.c1]) + 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |184 | +|1 | SUBPLAN SCAN |VIEW1|1 |184 | +|2 | HASH RIGHT OUTER JOIN| |1 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |6 |254 | +|1 | SUBPLAN FILTER | |6 |248 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |210 | +|4 | NESTED-LOOP JOIN | |0 |210 | +|5 | NESTED-LOOP OUTER JOIN | |1 |158 | +|6 | NESTED-LOOP OUTER JOIN| |1 |105 | +|7 | TABLE GET |t4 |1 |52 | +|8 | TABLE GET |t1 |1 |52 | +|9 | TABLE GET |t2 |1 |52 | +|10| TABLE GET |t3 |1 |52 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_IS, t2.c1, NULL, 0)]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t4.c1]) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |175 | +|4 | MERGE OUTER JOIN | |1 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |248 | +|1 | SUBPLAN FILTER | |1 |247 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |210 | +|4 | NESTED-LOOP JOIN | |0 |210 | +|5 | NESTED-LOOP OUTER JOIN | |1 |158 | +|6 | NESTED-LOOP OUTER JOIN| |1 |105 | +|7 | TABLE GET |t4 |1 |52 | +|8 | TABLE GET |t1 |1 |52 | +|9 | TABLE GET |t2 |1 |52 | +|10| TABLE GET |t3 |1 |52 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_IS, t2.c1, NULL, 0)]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + conds(nil), nl_params_([t1.c1]) + 6 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t4.c1]) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |175 | +|4 | MERGE OUTER JOIN | |1 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 = 0], [t4.c1 = 0], [(T_OP_IS, t2.c1, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 is NULL and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN | |0 |211 | +|1 | TABLE GET |t2 |1 |53 | +|2 | MERGE OUTER JOIN | |1 |158 | +|3 | TABLE GET |t1 |1 |52 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|5 | TABLE GET |t4 |1 |53 | +|6 | TABLE GET |t3 |1 |53 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |0 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |0 |211 | +|1 | SUBPLAN SCAN |VIEW1|0 |211 | +|2 | NESTED-LOOP JOIN | |0 |211 | +|3 | TABLE GET |t2 |1 |53 | +|4 | MERGE OUTER JOIN | |1 |158 | +|5 | TABLE GET |t1 |1 |52 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|7 | TABLE GET |t3 |1 |53 | +|8 | TABLE GET |t4 |1 |53 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |184 | +|1 | SUBPLAN SCAN |VIEW1|0 |184 | +|2 | HASH RIGHT OUTER JOIN| |0 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |254 | +|1 | SUBPLAN FILTER | |6 |248 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |210 | +|4 | NESTED-LOOP JOIN | |0 |210 | +|5 | MERGE OUTER JOIN | |1 |158 | +|6 | TABLE GET |t1 |1 |52 | +|7 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|8 | TABLE GET |t4 |1 |52 | +|9 | TABLE GET |t3 |1 |52 | +|10| TABLE GET |t2 |1 |52 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), + conds(nil), nl_params_(nil) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |249 | +|1 | SUBPLAN FILTER | |1 |248 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |210 | +|4 | NESTED-LOOP JOIN | |0 |210 | +|5 | MERGE OUTER JOIN | |1 |158 | +|6 | TABLE GET |t1 |1 |52 | +|7 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|8 | TABLE GET |t4 |1 |52 | +|9 | TABLE GET |t3 |1 |52 | +|10| TABLE GET |t2 |1 |52 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t3.c1], [t4.c1]), filter(nil), + conds(nil), nl_params_(nil) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 is NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|1 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t4 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |40 | +|9 | TABLE SCAN |t1 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |0 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t2.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |1296 |1644| +|1 | SUBPLAN SCAN |VIEW1|1296 |1465| +|2 | NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|3 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|4 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |40 | +|11| TABLE SCAN |t1 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |184 | +|1 | SUBPLAN SCAN |VIEW1|0 |184 | +|2 | HASH RIGHT OUTER JOIN| |0 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t2.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |194 | +|1 | SUBPLAN FILTER | |6 |188 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t1 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t2.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |189 | +|1 | SUBPLAN FILTER | |1 |188 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t1 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t3.c1, NULL, 0)], [t2.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 is NULL and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|1 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|2 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|3 | TABLE SCAN |t3 |6 |37 | +|4 | MATERIAL | |6 |44 | +|5 | TABLE SCAN |t4 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t2 |6 |37 | +|8 | MATERIAL | |6 |40 | +|9 | TABLE SCAN |t1 |6 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 5 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 7 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |0 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0], [t3.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |1296 |1644| +|1 | SUBPLAN SCAN |VIEW1|1296 |1465| +|2 | NESTED-LOOP JOIN CARTESIAN | |1296 |1286| +|3 | NESTED-LOOP JOIN CARTESIAN | |216 |316 | +|4 | NESTED-LOOP JOIN CARTESIAN| |36 |108 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | MATERIAL | |6 |44 | +|7 | TABLE SCAN |t4 |6 |37 | +|8 | MATERIAL | |6 |44 | +|9 | TABLE SCAN |t2 |6 |37 | +|10| MATERIAL | |6 |40 | +|11| TABLE SCAN |t1 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil) + 7 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil) + 9 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |184 | +|1 | SUBPLAN SCAN |VIEW1|0 |184 | +|2 | HASH RIGHT OUTER JOIN| |0 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0], [t3.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |194 | +|1 | SUBPLAN FILTER | |6 |188 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t1 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0], [t3.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |189 | +|1 | SUBPLAN FILTER | |1 |188 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |151 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |151 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |112 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |74 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t4 |6 |37 | +|10| MATERIAL | |6 |38 | +|11| TABLE SCAN |t1 |6 |37 | +|12| MATERIAL | |6 |38 | +|13| TABLE SCAN |t2 |6 |37 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), startup_filter([0]), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1]), filter(nil) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |0 |175 | +|4 | MERGE OUTER JOIN | |0 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t4.c1, NULL, 0)], [t2.c1 = 0], [t3.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 IS NULL limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1 |211 | +|1 | NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|2 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|3 | TABLE GET |t3 |1 |53 | +|4 | TABLE GET |t4 |1 |53 | +|5 | TABLE GET |t1 |1 |52 | +|6 | TABLE GET |t2 |1 |53 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |1 |184 | +|1 | TABLE SCAN |t2 |6 |37 | +|2 | HASH FULL OUTER JOIN| |6 |130 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | MERGE OUTER JOIN | |6 |80 | +|5 | TABLE SCAN |t3 |6 |37 | +|6 | TABLE SCAN |t4 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0; ++----+------+----+------+------+----+------+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+----+------+------+----+------+------+----+------+------+ ++----+------+----+------+------+----+------+------+----+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |1 |211 | +|1 | SUBPLAN SCAN |VIEW1|1 |211 | +|2 | NESTED-LOOP JOIN CARTESIAN | |1 |211 | +|3 | NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|5 | TABLE GET |t3 |1 |53 | +|6 | TABLE GET |t4 |1 |53 | +|7 | TABLE GET |t1 |1 |52 | +|8 | TABLE GET |t2 |1 |53 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 6 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |184 | +|1 | SUBPLAN SCAN |VIEW1|1 |184 | +|2 | HASH RIGHT OUTER JOIN| |1 |184 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | HASH FULL OUTER JOIN| |6 |130 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | MERGE OUTER JOIN | |6 |80 | +|7 | TABLE SCAN |t3 |6 |37 | +|8 | TABLE SCAN |t4 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.e, t7_temp.f, t7_temp.g, t7_temp.h, t7_temp.i, t7_temp.j, t7_temp.k)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t3.c3], [t4.c1], [t4.c2], [t4.c3]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2], [t3.c3]), filter(nil), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + 8 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +insert into t7_temp (select /*+ NO_REWRITE */* from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |UPDATE | |6 |254 | +|1 | SUBPLAN FILTER | |6 |248 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |210 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |210 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|7 | TABLE GET |t3 |1 |52 | +|8 | TABLE GET |t4 |1 |52 | +|9 | TABLE GET |t1 |1 |52 | +|10| TABLE GET |t2 |1 |52 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |219 | +|1 | SUBPLAN FILTER | |6 |213 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |175 | +|4 | MERGE OUTER JOIN | |1 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------------- +|0 |DELETE | |1 |249 | +|1 | SUBPLAN FILTER | |1 |248 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |210 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |210 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|7 | TABLE GET |t3 |1 |52 | +|8 | TABLE GET |t4 |1 |52 | +|9 | TABLE GET |t1 |1 |52 | +|10| TABLE GET |t2 |1 |52 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |214 | +|1 | SUBPLAN FILTER | |1 |213 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |175 | +|4 | MERGE OUTER JOIN | |1 |175 | +|5 | SORT | |6 |133 | +|6 | MERGE FULL OUTER JOIN| |6 |127 | +|7 | SORT | |6 |85 | +|8 | MERGE OUTER JOIN | |6 |79 | +|9 | TABLE SCAN |t3 |6 |37 | +|10| TABLE SCAN |t4 |6 |37 | +|11| TABLE SCAN |t1 |6 |37 | +|12| TABLE SCAN |t2 |6 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = 0], [t3.c1 = 0], [t4.c1 = 0]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1], [t3.c1], [t4.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t4.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1 = t2.c1) full join (t3 left join t4 on t4.c1 = t3.c1) on t1.c1 = t4.c1 where t2.c1 = 0 and t3.c1 = 0 and t4.c1 = 0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_OR, abs(cast(t2.c2, BIGINT(-1, 0))) > 2, sqrt(cast(t2.c2, DOUBLE(-1, -1))) > ?, log2(cast(t2.c2, DOUBLE(-1, -1))) > ?, t2.c2 XOR t2.c1 > 2)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_OR, abs(cast(t2.c2, BIGINT(-1, 0))) > 2, sqrt(cast(t2.c2, DOUBLE(-1, -1))) > ?, log2(cast(t2.c2, DOUBLE(-1, -1))) > ?, t2.c2 XOR t2.c1 > 2)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_OR, abs(cast(t2.c2, BIGINT(-1, 0))) > 2, sqrt(cast(t2.c2, DOUBLE(-1, -1))) > ?, log2(cast(t2.c2, DOUBLE(-1, -1))) > ?, t2.c2 XOR t2.c1 > 2)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_OR, abs(cast(t2.c2, BIGINT(-1, 0))) > 2, sqrt(cast(t2.c2, DOUBLE(-1, -1))) > ?, log2(cast(t2.c2, DOUBLE(-1, -1))) > ?, t2.c2 XOR t2.c1 > 2)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_OR, abs(cast(t2.c2, BIGINT(-1, 0))) > 2, sqrt(cast(t2.c2, DOUBLE(-1, -1))) > ?, log2(cast(t2.c2, DOUBLE(-1, -1))) > ?, t2.c2 XOR t2.c1 > 2)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_OR, abs(cast(t2.c2, BIGINT(-1, 0))) > 2, sqrt(cast(t2.c2, DOUBLE(-1, -1))) > ?, log2(cast(t2.c2, DOUBLE(-1, -1))) > ?, t2.c2 XOR t2.c1 > 2)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_OR, abs(cast(t2.c2, BIGINT(-1, 0))) > 2, sqrt(cast(t2.c2, DOUBLE(-1, -1))) > ?, log2(cast(t2.c2, DOUBLE(-1, -1))) > ?, t2.c2 XOR t2.c1 > 2)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_OR, abs(cast(t2.c2, BIGINT(-1, 0))) > 2, sqrt(cast(t2.c2, DOUBLE(-1, -1))) > ?, log2(cast(t2.c2, DOUBLE(-1, -1))) > ?, t2.c2 XOR t2.c1 > 2)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where abs(t2.c2) > 2 or sqrt(t2.c2) > 2 or log2(t2.c2) > 2 or (t2.c2 xor t2.c1 > 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |2 |77 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |2 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 4 OR t2.c2 < 1]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 4 OR t2.c2 < 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |2 |77 | +|1 | SUBPLAN SCAN|VIEW1|2 |77 | +|2 | MERGE JOIN | |2 |77 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |2 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 4 OR t2.c2 < 1]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |80 | +|1 | SUBPLAN SCAN |VIEW1|2 |80 | +|2 | MERGE OUTER JOIN| |2 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 4 OR t2.c2 < 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |38 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([t2.c2 > 4 OR t2.c2 < 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |122 | +|1 | SUBPLAN FILTER | |6 |116 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |78 | +|4 | MERGE OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 4 OR t2.c2 < 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |74 | +|5 | TABLE SCAN |t2 |1 |38 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([t2.c2 > 4 OR t2.c2 < 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |117 | +|1 | SUBPLAN FILTER | |1 |116 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |78 | +|4 | MERGE OUTER JOIN| |1 |78 | +|5 | TABLE SCAN |t1 |6 |37 | +|6 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 4 OR t2.c2 < 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or t2.c2 < 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |5 |79 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |5 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2, 1, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |5 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |5 |81 | +|1 | SUBPLAN SCAN|VIEW1|5 |80 | +|2 | MERGE JOIN | |5 |79 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |5 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2, 1, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |5 |81 | +|1 | SUBPLAN SCAN |VIEW1|5 |80 | +|2 | MERGE OUTER JOIN| |5 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c2, 1, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c2, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c2, 1, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c2, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |MERGE JOIN | |2 |126 | +|1 | NESTED-LOOP SEMI JOIN| |2 |87 | +|2 | TABLE SCAN |t2 |6 |37 | +|3 | MATERIAL | |6 |38 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t1 |6 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t2.c2 > t1.c2]), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 3 - output([t1.c2]), filter(nil) + 4 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |3 |126 | +|1 | MERGE OUTER JOIN| |6 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |2 |126 | +|1 | SUBPLAN SCAN |VIEW1|2 |126 | +|2 | MERGE JOIN | |2 |126 | +|3 | NESTED-LOOP SEMI JOIN| |2 |87 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | MATERIAL | |6 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +|7 | TABLE SCAN |t1 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t2.c2 > t1.c2]), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([t1.c2]), filter(nil) + 6 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |3 |127 | +|1 | SUBPLAN SCAN |VIEW1|3 |127 | +|2 | SUBPLAN FILTER | |3 |126 | +|3 | MERGE OUTER JOIN| |6 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |117 | +|4 | NESTED-LOOP JOIN | |1 |117 | +|5 | NESTED-LOOP SEMI JOIN| |1 |80 | +|6 | TABLE SCAN |t2 |3 |37 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE GET |t1 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + conds([t2.c2 > t1.c2]), nl_params_(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t1.c2]), filter(nil) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |117 | +|4 | SUBPLAN FILTER | |1 |117 | +|5 | MERGE OUTER JOIN| |2 |75 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |156 | +|1 | SUBPLAN FILTER | |1 |155 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |117 | +|4 | NESTED-LOOP JOIN | |1 |117 | +|5 | NESTED-LOOP SEMI JOIN| |1 |80 | +|6 | TABLE SCAN |t2 |3 |37 | +|7 | MATERIAL | |6 |38 | +|8 | TABLE SCAN |t1 |6 |37 | +|9 | TABLE GET |t1 |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + conds([t2.c2 > t1.c2]), nl_params_(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t1.c2]), filter(nil) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |155 | +|1 | SUBPLAN FILTER | |1 |154 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |117 | +|4 | SUBPLAN FILTER | |1 |117 | +|5 | MERGE OUTER JOIN| |2 |75 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > any (select c2 from t1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |MERGE JOIN | |3 |118 | +|1 | NESTED-LOOP SEMI JOIN| |3 |78 | +|2 | TABLE SCAN |t2 |6 |37 | +|3 | MATERIAL | |1 |39 | +|4 | SUBPLAN SCAN |VIEW1|1 |38 | +|5 | TABLE SCAN |t1 |1 |38 | +|6 | TABLE SCAN |t1 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t2.c2 != VIEW1.c2]), nl_params_(nil) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 3 - output([VIEW1.c2]), filter(nil) + 4 - output([VIEW1.c2]), filter(nil), + access([VIEW1.c2]) + 5 - output([t1.c2]), filter([t1.c2 > 1000]), + access([t1.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |3 |119 | +|1 | MERGE OUTER JOIN| |6 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |1 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 != ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c2]), filter([t1.c2 > 1000]), + access([t1.c2]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |3 |119 | +|1 | SUBPLAN SCAN |VIEW1|3 |118 | +|2 | MERGE JOIN | |3 |118 | +|3 | NESTED-LOOP SEMI JOIN| |3 |78 | +|4 | TABLE SCAN |t2 |6 |37 | +|5 | MATERIAL | |1 |39 | +|6 | SUBPLAN SCAN |VIEW2|1 |38 | +|7 | TABLE SCAN |t1 |1 |38 | +|8 | TABLE SCAN |t1 |6 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([t2.c2 != VIEW2.c2]), nl_params_(nil) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 5 - output([VIEW2.c2]), filter(nil) + 6 - output([VIEW2.c2]), filter(nil), + access([VIEW2.c2]) + 7 - output([t1.c2]), filter([t1.c2 > 1000]), + access([t1.c2]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |3 |120 | +|1 | SUBPLAN SCAN |VIEW1|3 |120 | +|2 | SUBPLAN FILTER | |3 |119 | +|3 | MERGE OUTER JOIN| |6 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 != ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c2]), filter([t1.c2 > 1000]), + access([t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |6 |156 | +|1 | SUBPLAN FILTER | |6 |150 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |112 | +|4 | NESTED-LOOP JOIN | |1 |112 | +|5 | NESTED-LOOP SEMI JOIN| |1 |75 | +|6 | TABLE SCAN |t2 |2 |37 | +|7 | MATERIAL | |1 |39 | +|8 | SUBPLAN SCAN |VIEW1|1 |38 | +|9 | TABLE SCAN |t1 |1 |38 | +|10| TABLE GET |t1 |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + conds([t2.c2 != VIEW1.c2]), nl_params_(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([VIEW1.c2]), filter(nil) + 8 - output([VIEW1.c2]), filter(nil), + access([VIEW1.c2]) + 9 - output([t1.c2]), filter([t1.c2 > 1000]), + access([t1.c2]), partitions(p0) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |158 | +|1 | SUBPLAN FILTER | |6 |152 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |114 | +|4 | SUBPLAN FILTER | |1 |114 | +|5 | MERGE OUTER JOIN| |2 |75 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | TABLE SCAN |t1 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 != ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c2]), filter([t1.c2 > 1000]), + access([t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |151 | +|1 | SUBPLAN FILTER | |1 |150 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |112 | +|4 | NESTED-LOOP JOIN | |1 |112 | +|5 | NESTED-LOOP SEMI JOIN| |1 |75 | +|6 | TABLE SCAN |t2 |2 |37 | +|7 | MATERIAL | |1 |39 | +|8 | SUBPLAN SCAN |VIEW1|1 |38 | +|9 | TABLE SCAN |t1 |1 |38 | +|10| TABLE GET |t1 |1 |36 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter(nil), + conds([t2.c2 != VIEW1.c2]), nl_params_(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([VIEW1.c2]), filter(nil) + 8 - output([VIEW1.c2]), filter(nil), + access([VIEW1.c2]) + 9 - output([t1.c2]), filter([t1.c2 > 1000]), + access([t1.c2]), partitions(p0) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |152 | +|1 | SUBPLAN FILTER | |1 |151 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |114 | +|4 | SUBPLAN FILTER | |1 |114 | +|5 | MERGE OUTER JOIN| |2 |75 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | TABLE SCAN |t1 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 != ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c2]), filter([t1.c2 > 1000]), + access([t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 != any (select c2 from t1 where c2 > 1000) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_OR, (T_OP_NOT_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_LIKE, cast(t2.c2, VARCHAR(1048576)), ?, '\\'))]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_OR, (T_OP_NOT_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_LIKE, cast(t2.c2, VARCHAR(1048576)), ?, '\\'))]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_OR, (T_OP_NOT_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_LIKE, cast(t2.c2, VARCHAR(1048576)), ?, '\\'))]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |81 | +|1 | SUBPLAN SCAN |VIEW1|6 |80 | +|2 | MERGE OUTER JOIN| |6 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_OR, (T_OP_NOT_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_LIKE, cast(t2.c2, VARCHAR(1048576)), ?, '\\'))]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_OR, (T_OP_NOT_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_LIKE, cast(t2.c2, VARCHAR(1048576)), ?, '\\'))]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |118 | +|1 | SUBPLAN FILTER | |6 |112 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_OR, (T_OP_NOT_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_LIKE, cast(t2.c2, VARCHAR(1048576)), ?, '\\'))]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_OR, (T_OP_NOT_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_LIKE, cast(t2.c2, VARCHAR(1048576)), ?, '\\'))]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |113 | +|1 | SUBPLAN FILTER | |1 |112 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | MERGE OUTER JOIN| |1 |74 | +|5 | TABLE SCAN |t1 |3 |37 | +|6 | TABLE SCAN |t2 |3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_OR, (T_OP_NOT_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_BTW, cast(t2.c2, DECIMAL(11, 0)), ?, ?), (T_OP_LIKE, cast(t2.c2, VARCHAR(1048576)), ?, '\\'))]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (t2.c2 not between 1 and 4) or (t2.c2 between 3 and 3) or (t2.c2 like 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |3 |78 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |3 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 1, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |3 |79 | +|1 | SUBPLAN SCAN|VIEW1|3 |78 | +|2 | MERGE JOIN | |3 |78 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |3 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 1, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 1, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 1, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |3 |78 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |3 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 1, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |3 |79 | +|1 | SUBPLAN SCAN|VIEW1|3 |78 | +|2 | MERGE JOIN | |3 |78 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |3 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 1, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 1, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 1, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 1, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is true limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |3 |78 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |3 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 0, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 0, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |3 |79 | +|1 | SUBPLAN SCAN|VIEW1|3 |78 | +|2 | MERGE JOIN | |3 |78 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |3 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 0, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 0, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 0, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 0, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 0, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c2 > 2 OR t2.c2 < 4, 0, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |3 |78 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |3 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2 > 2 OR t2.c2 < 4, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2 > 2 OR t2.c2 < 4, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |3 |79 | +|1 | SUBPLAN SCAN|VIEW1|3 |78 | +|2 | MERGE JOIN | |3 |78 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |3 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2 > 2 OR t2.c2 < 4, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c2 > 2 OR t2.c2 < 4, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c2 > 2 OR t2.c2 < 4, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c2 > 2 OR t2.c2 < 4, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c2 > 2 OR t2.c2 < 4, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c2 > 2 OR t2.c2 < 4, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c2 > 2) or (t2.c2 < 4)) is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_NOT_BTW, ?, cast(t2.c2, DECIMAL(11, 0)), ?)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_NOT_BTW, ?, cast(t2.c2, DECIMAL(11, 0)), ?)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_NOT_BTW, ?, cast(t2.c2, DECIMAL(11, 0)), ?)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_NOT_BTW, ?, cast(t2.c2, DECIMAL(11, 0)), ?)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_BTW, ?, cast(t2.c2, DECIMAL(11, 0)), ?)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_BTW, ?, cast(t2.c2, DECIMAL(11, 0)), ?)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_BTW, ?, cast(t2.c2, DECIMAL(11, 0)), ?)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_BTW, ?, cast(t2.c2, DECIMAL(11, 0)), ?)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (3 not between t2.c2 and 4) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++-----------------+ +| stddev(c2) | ++-----------------+ +| 2.0591260281974 | ++-----------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |4 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 4 OR nvl(cast(t2.c2, BIGINT(1, 0)), 1)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE */ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |4 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 4 OR nvl(cast(t2.c2, BIGINT(1, 0)), 1)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE */ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |80 | +|1 | SUBPLAN SCAN |VIEW1|4 |80 | +|2 | MERGE OUTER JOIN| |4 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 4 OR nvl(cast(t2.c2, BIGINT(1, 0)), 1)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE */ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |80 | +|1 | SUBPLAN SCAN |VIEW1|4 |80 | +|2 | MERGE OUTER JOIN| |4 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > 4 OR nvl(cast(t2.c2, BIGINT(1, 0)), 1)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE */ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 4 OR nvl(cast(t2.c2, BIGINT(1, 0)), 1)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */ t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 4 OR nvl(cast(t2.c2, BIGINT(1, 0)), 1)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */ t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 4 OR nvl(cast(t2.c2, BIGINT(1, 0)), 1)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */ t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > 4 OR nvl(cast(t2.c2, BIGINT(1, 0)), 1)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */ t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > 4 or nvl(t2.c2, 1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE 0 END]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE 0 END]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE 0 END]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE 0 END]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE 0 END]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE 0 END]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE 0 END]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([CASE WHEN t2.c2 = 0 THEN 1 ELSE 0 END]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where (case t2.c2 when 0 then 1 else 0 end) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1147629234082532 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |4 |129 | +|1 | MERGE OUTER JOIN | |6 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | MATERIAL | |6 |38 | +|5 | TABLE SCAN |t1 |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([(T_OP_OR, t2.c2 <= t1.c2, (T_OP_IS, t2.c2, NULL, 0), (T_OP_IS, t1.c2, NULL, 0))]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c2]), filter(nil) + 5 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |3 |126 | +|1 | MERGE OUTER JOIN| |6 |80 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | TABLE SCAN |t2 |6 |37 | +|4 | TABLE SCAN |t1 |6 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 4 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1); ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |4 |130 | +|1 | SUBPLAN SCAN |VIEW1|4 |129 | +|2 | NESTED-LOOP ANTI JOIN| |4 |129 | +|3 | MERGE OUTER JOIN | |6 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | MATERIAL | |6 |38 | +|7 | TABLE SCAN |t1 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + conds([(T_OP_OR, t2.c2 <= t1.c2, (T_OP_IS, t2.c2, NULL, 0), (T_OP_IS, t1.c2, NULL, 0))]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c2]), filter(nil) + 7 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |3 |127 | +|1 | SUBPLAN SCAN |VIEW1|3 |127 | +|2 | SUBPLAN FILTER | |3 |126 | +|3 | MERGE OUTER JOIN| |6 |80 | +|4 | TABLE SCAN |t1 |6 |37 | +|5 | TABLE SCAN |t2 |6 |37 | +|6 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([t2.c2 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + 6 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |6 |159 | +|1 | SUBPLAN FILTER | |6 |153 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |116 | +|4 | NESTED-LOOP ANTI JOIN| |1 |115 | +|5 | MERGE OUTER JOIN | |2 |75 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_OR, t2.c2 <= t1.c2, (T_OP_IS, t2.c2, NULL, 0), (T_OP_IS, t1.c2, NULL, 0))]), nl_params_(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c2]), filter(nil) + 9 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |6 |161 | +|1 | SUBPLAN FILTER | |6 |155 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |117 | +|4 | SUBPLAN FILTER | |1 |117 | +|5 | MERGE OUTER JOIN| |2 |75 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |154 | +|1 | SUBPLAN FILTER | |1 |153 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |116 | +|4 | NESTED-LOOP ANTI JOIN| |1 |115 | +|5 | MERGE OUTER JOIN | |2 |75 | +|6 | TABLE SCAN |t1 |3 |37 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | MATERIAL | |6 |38 | +|9 | TABLE SCAN |t1 |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_OR, t2.c2 <= t1.c2, (T_OP_IS, t2.c2, NULL, 0), (T_OP_IS, t1.c2, NULL, 0))]), nl_params_(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c2]), filter(nil) + 9 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1354156504062622 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |155 | +|1 | SUBPLAN FILTER | |1 |154 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |117 | +|4 | SUBPLAN FILTER | |1 |117 | +|5 | MERGE OUTER JOIN| |2 |75 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | TABLE SCAN |t1 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c2 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where t2.c2 > all (select c2 from t1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.1354156504062622 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |3 |78 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |3 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 0, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 0, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |3 |79 | +|1 | SUBPLAN SCAN|VIEW1|3 |78 | +|2 | MERGE JOIN | |3 |78 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |3 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 0, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 0, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 0, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 0, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 0, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS, t2.c1 > 2 AND t2.c2 < 4, 0, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is false limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |MERGE JOIN | |3 |78 | +|1 | TABLE SCAN|t1 |6 |37 | +|2 | TABLE SCAN|t2 |3 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1 > 2 AND t2.c2 < 4, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |3 |80 | +|1 | TABLE SCAN |t1 |6 |37 | +|2 | TABLE SCAN |t2 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1 > 2 AND t2.c2 < 4, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null; ++----+------+----+------+------+ +| c1 | c2 | c1 | c2 | c3 | ++----+------+----+------+------+ +| 1 | 1 | 1 | 1 | o | +| 2 | 5 | 2 | 5 | c | +| 3 | 2 | 3 | 5 | b | +| 4 | 6 | 4 | 6 | o | +| 5 | 4 | 5 | 7 | d | +| 6 | 7 | 6 | 8 | c | ++----+------+----+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |3 |79 | +|1 | SUBPLAN SCAN|VIEW1|3 |78 | +|2 | MERGE JOIN | |3 |78 | +|3 | TABLE SCAN|t1 |6 |37 | +|4 | TABLE SCAN|t2 |3 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1 > 2 AND t2.c2 < 4, NULL, 0)]), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null); + +rollback; +EXPLAIN insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |80 | +|1 | SUBPLAN SCAN |VIEW1|3 |80 | +|2 | MERGE OUTER JOIN| |3 |80 | +|3 | TABLE SCAN |t1 |6 |37 | +|4 | TABLE SCAN |t2 |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d, t4_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t2.c3]), filter([(T_OP_IS_NOT, t2.c1 > 2 AND t2.c2 < 4, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t2.c3]), filter(nil), + access([t2.c1], [t2.c2], [t2.c3]), partitions(p0) + +insert into t4_temp (select /*+ NO_REWRITE*/ * from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c1 > 2 AND t2.c2 < 4, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |119 | +|1 | SUBPLAN FILTER | |6 |113 | +|2 | TABLE SCAN |t1 |6 |37 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c1 > 2 AND t2.c2 < 4, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |112 | +|1 | SUBPLAN FILTER | |1 |111 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |74 | +|4 | NESTED-LOOP JOIN| |1 |73 | +|5 | TABLE SCAN |t2 |1 |37 | +|6 | TABLE GET |t1 |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_([t2.c1]) + 5 - output([t2.c1]), filter([(T_OP_IS_NOT, t2.c1 > 2 AND t2.c2 < 4, NULL, 0)]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |114 | +|1 | SUBPLAN FILTER | |1 |113 | +|2 | TABLE SCAN |t1 |1 |38 | +|3 | LIMIT | |1 |75 | +|4 | MERGE OUTER JOIN| |1 |75 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.c1, t1.c2)})}]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_IS_NOT, t2.c1 > 2 AND t2.c2 < 4, NULL, 0)]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1 = t2.c1 where ((t2.c1 > 2) and (t2.c2 < 4)) is not null limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 1.7204650534085253 | ++--------------------+ +rollback; + +set autocommit=1; + +drop table if exists t1, t2, t3, t4, t5, t6; +drop table t1_temp, t2_temp, t3_temp, t4_temp, t5_temp, t6_temp, t7_temp, t8_temp, t9_temp, t10_temp, t11_temp, t12_temp, t13_temp, t14_temp, t15_temp; +create table t1 (c1 int, c2 int); +create table t2 (c1 int, c2 int); +create table t3 (c1 int, c2 int); +create table t4 (c1 int, c2 int); +create table t5 (c1 int, c2 int); +create table t6 (c1 int, c2 int); + +create table t1_temp(a int, b int, d int, e int); +create table t2_temp(a int, b int); +create table t3_temp(a int, b int, c int); +create table t4_temp(a int, b int, c int, d int); +create table t5_temp(a int, b int, c int, d int, f int, g int); +create table t6_temp(a int, b int, c int, d int, e int, f int); +create table t7_temp(a int, b int, c int, d int, f int, g int, i int, j int); +create table t8_temp(a int, b int, c int, d int); +create table t9_temp(a int, b int, c int, d int, f int, g int, i int, j int); +create table t10_temp(a int, b int, c int, d int, f int, g int, i int, j int, l int, m int); +create table t11_temp(a int, b int); +create table t12_temp(a int); +create table t13_temp(a int, b int, d int, e int); +create table t14_temp(a int, b int, c int); +create table t15_temp(a int, b int, c int, d int, f int, g int, i int, j int, l int, m int); + +set autocommit=0; + +EXPLAIN select * from t1 right join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |HASH OUTER JOIN| |990 |97554| +|1 | HASH JOIN | |1 |75 | +|2 | TABLE SCAN |t2 |1 |36 | +|3 | TABLE SCAN |t3 |1 |36 | +|4 | TABLE SCAN |t1 |100000 |64066| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 right join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| NULL | NULL | 1 | 1 | 1 | 1 | ++------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/ * from t1 right join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |HASH OUTER JOIN| |990 |97554| +|1 | HASH JOIN | |1 |75 | +|2 | TABLE SCAN |t2 |1 |36 | +|3 | TABLE SCAN |t3 |1 |36 | +|4 | TABLE SCAN |t1 |100000 |64066| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 3 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+NO_REWRITE*/ * from t1 right join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| NULL | NULL | 1 | 1 | 1 | 1 | ++------+------+------+------+------+------+ + +## t1 is the right table for outer join, +## subquery unnest will add a invalid-null-reject condition: t3.c2 = t1.c2 +EXPLAIN select * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |981 |97883| +|1 | TABLE SCAN |t3 |1 |36 | +|2 | HASH OUTER JOIN | |990 |97516| +|3 | TABLE SCAN |t2 |1 |36 | +|4 | TABLE SCAN |t1 |100000 |64066| +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 1 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |SUBPLAN FILTER | |495 |133440| +|1 | HASH OUTER JOIN| |990 |97516 | +|2 | TABLE SCAN |t2 |1 |36 | +|3 | TABLE SCAN |t1 |100000 |64066 | +|4 | TABLE SCAN |t3 |1 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([1]), filter([t3.c2 = ?]), + access([t3.c2]), partitions(p0) + +select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t1_temp (select * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------- +|0 |INSERT | |981 |98154| +|1 | SUBPLAN SCAN |VIEW1|981 |98019| +|2 | HASH RIGHT ANTI JOIN| |981 |97883| +|3 | TABLE SCAN |t3 |1 |36 | +|4 | HASH OUTER JOIN | |990 |97516| +|5 | TABLE SCAN |t2 |1 |36 | +|6 | TABLE SCAN |t1 |100000 |64066| +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 3 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2)); + +rollback; +EXPLAIN insert into t1_temp (select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2)); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------------- +|0 |INSERT | |495 |133577| +|1 | SUBPLAN SCAN |VIEW1|495 |133509| +|2 | SUBPLAN FILTER | |495 |133440| +|3 | HASH OUTER JOIN| |990 |97516 | +|4 | TABLE SCAN |t2 |1 |36 | +|5 | TABLE SCAN |t1 |100000 |64066 | +|6 | TABLE SCAN |t3 |1 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([1]), filter([t3.c2 = ?]), + access([t3.c2]), partitions(p0) + +insert into t1_temp (select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------------- +|0 |UPDATE | |100000 |178069| +|1 | SUBPLAN FILTER | |100000 |78069 | +|2 | TABLE SCAN |t1 |100000 |64066 | +|3 | LIMIT | |1 |201 | +|4 | HASH RIGHT ANTI JOIN| |1 |201 | +|5 | TABLE SCAN |t3 |1 |36 | +|6 | HASH OUTER JOIN | |2 |164 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE SCAN |t1 |103 |93 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |96858| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------------- +|0 |UPDATE | |100000 |178194| +|1 | SUBPLAN FILTER | |100000 |78194 | +|2 | TABLE SCAN |t1 |100000 |64066 | +|3 | LIMIT | |1 |326 | +|4 | SUBPLAN FILTER | |1 |326 | +|5 | HASH OUTER JOIN| |2 |254 | +|6 | TABLE SCAN |t2 |1 |36 | +|7 | TABLE SCAN |t1 |203 |149 | +|8 | TABLE SCAN |t3 |1 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter([t3.c2 = ?]), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |96858| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------------- +|0 |DELETE | |990 |73766| +|1 | SUBPLAN FILTER | |990 |72776| +|2 | TABLE SCAN |t1 |990 |72438| +|3 | LIMIT | |1 |201 | +|4 | HASH RIGHT ANTI JOIN| |1 |201 | +|5 | TABLE SCAN |t3 |1 |36 | +|6 | HASH OUTER JOIN | |2 |164 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE SCAN |t1 |103 |93 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |96858| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |DELETE | |990 |73891| +|1 | SUBPLAN FILTER | |990 |72901| +|2 | TABLE SCAN |t1 |990 |72438| +|3 | LIMIT | |1 |326 | +|4 | SUBPLAN FILTER | |1 |326 | +|5 | HASH OUTER JOIN| |2 |254 | +|6 | TABLE SCAN |t2 |1 |36 | +|7 | TABLE SCAN |t1 |203 |149 | +|8 | TABLE SCAN |t3 |1 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter([t3.c2 = ?]), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |96858| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; + +EXPLAIN select * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------- +|0 |HASH JOIN | |10 |97874| +|1 | TABLE SCAN |t2 |1 |36 | +|2 | HASH RIGHT SEMI JOIN| |981 |97509| +|3 | TABLE SCAN |t3 |1 |36 | +|4 | TABLE SCAN |t1 |100000 |64066| +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 3 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |SUBPLAN FILTER | |495 |133440| +|1 | HASH OUTER JOIN| |990 |97516 | +|2 | TABLE SCAN |t2 |1 |36 | +|3 | TABLE SCAN |t1 |100000 |64066 | +|4 | TABLE SCAN |t3 |1 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([1]), filter([t3.c2 = ?]), + access([t3.c2]), partitions(p0) + +select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ ++------+------+------+------+ +EXPLAIN insert into t1_temp (select * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |INSERT | |10 |97877| +|1 | SUBPLAN SCAN |VIEW1|10 |97876| +|2 | HASH JOIN | |10 |97874| +|3 | TABLE SCAN |t2 |1 |36 | +|4 | HASH RIGHT SEMI JOIN| |981 |97509| +|5 | TABLE SCAN |t3 |1 |36 | +|6 | TABLE SCAN |t1 |100000 |64066| +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 5 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t1_temp (select * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2)); + +rollback; +EXPLAIN insert into t1_temp (select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2)); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------------- +|0 |INSERT | |495 |133577| +|1 | SUBPLAN SCAN |VIEW1|495 |133509| +|2 | SUBPLAN FILTER | |495 |133440| +|3 | HASH OUTER JOIN| |990 |97516 | +|4 | TABLE SCAN |t2 |1 |36 | +|5 | TABLE SCAN |t1 |100000 |64066 | +|6 | TABLE SCAN |t3 |1 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t1_temp: ({t1_temp: (t1_temp.__pk_increment, t1_temp.a, t1_temp.b, t1_temp.d, t1_temp.e)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t2.c1], [t2.c2], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([1]), filter([t3.c2 = ?]), + access([t3.c2]), partitions(p0) + +insert into t1_temp (select /*+NO_REWRITE*/ * from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------------- +|0 |UPDATE | |100000 |188027| +|1 | SUBPLAN FILTER | |100000 |88027 | +|2 | TABLE SCAN |t1 |100000 |64066 | +|3 | LIMIT | |1 |10160 | +|4 | HASH JOIN | |1 |10160 | +|5 | TABLE SCAN |t2 |1 |36 | +|6 | HASH RIGHT SEMI JOIN| |102 |10089 | +|7 | TABLE SCAN |t3 |1 |36 | +|8 | TABLE SCAN |t1 |10307 |6609 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 7 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |96858| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------------- +|0 |UPDATE | |100000 |178194| +|1 | SUBPLAN FILTER | |100000 |78194 | +|2 | TABLE SCAN |t1 |100000 |64066 | +|3 | LIMIT | |1 |326 | +|4 | SUBPLAN FILTER | |1 |326 | +|5 | HASH OUTER JOIN| |2 |254 | +|6 | TABLE SCAN |t2 |1 |36 | +|7 | TABLE SCAN |t1 |203 |149 | +|8 | TABLE SCAN |t3 |1 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter([t3.c2 = ?]), + access([t3.c2]), partitions(p0) + +update t1 set c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |96858| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------------- +|0 |DELETE | |990 |83724| +|1 | SUBPLAN FILTER | |990 |82734| +|2 | TABLE SCAN |t1 |990 |72438| +|3 | LIMIT | |1 |10160| +|4 | HASH JOIN | |1 |10160| +|5 | TABLE SCAN |t2 |1 |36 | +|6 | HASH RIGHT SEMI JOIN| |102 |10089| +|7 | TABLE SCAN |t3 |1 |36 | +|8 | TABLE SCAN |t1 |10307 |6609 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t3.c2 = t1.c2]), other_conds(nil) + 7 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |96858| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |DELETE | |990 |73891| +|1 | SUBPLAN FILTER | |990 |72901| +|2 | TABLE SCAN |t1 |990 |72438| +|3 | LIMIT | |1 |326 | +|4 | SUBPLAN FILTER | |1 |326 | +|5 | HASH OUTER JOIN| |2 |254 | +|6 | TABLE SCAN |t2 |1 |36 | +|7 | TABLE SCAN |t1 |203 |149 | +|8 | TABLE SCAN |t3 |1 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter([t3.c2 = ?]), + access([t3.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c1 from t2 left join t1 on t1.c1 = t2.c1 where exists (select 1 from t3 where t3.c2 = t1.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |96858| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; + +set autocommit=1; + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({1, 1}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, 1}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({5, 5}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, 5}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({10, 10}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({2, 2}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({3, 2}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({4, 2}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.__pk_increment, t2.c1, t2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({2, 2}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.__pk_increment, t2.c1, t2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, 2}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.__pk_increment, t2.c1, t2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({6, 6}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.__pk_increment, t2.c1, t2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, 6}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.__pk_increment, t2.c1, t2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, NULL}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.__pk_increment, t2.c1, t2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({1, 1}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.__pk_increment, t2.c1, t2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({3, 3}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.__pk_increment, t2.c1, t2.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({4, 4}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t3: ({t3: (t3.__pk_increment, t3.c1, t3.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({3, 3}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t3: ({t3: (t3.__pk_increment, t3.c1, t3.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, 3}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t3: ({t3: (t3.__pk_increment, t3.c1, t3.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({7, 7}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t3: ({t3: (t3.__pk_increment, t3.c1, t3.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, 7}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t3: ({t3: (t3.__pk_increment, t3.c1, t3.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({7, 7}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t3: ({t3: (t3.__pk_increment, t3.c1, t3.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({4, 4}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t3: ({t3: (t3.__pk_increment, t3.c1, t3.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({5, 5}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t4: ({t4: (t4.__pk_increment, t4.c1, t4.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({4, 4}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t4: ({t4: (t4.__pk_increment, t4.c1, t4.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, 4}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t4: ({t4: (t4.__pk_increment, t4.c1, t4.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({8, 8}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t4: ({t4: (t4.__pk_increment, t4.c1, t4.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, 8}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t4: ({t4: (t4.__pk_increment, t4.c1, t4.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({8, 8}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t4: ({t4: (t4.__pk_increment, t4.c1, t4.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({1, 1}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t4: ({t4: (t4.__pk_increment, t4.c1, t4.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({2, 2}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t4: ({t4: (t4.__pk_increment, t4.c1, t4.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({3, 3}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t5: ({t5: (t5.__pk_increment, t5.c1, t5.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({1, 1}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t5: ({t5: (t5.__pk_increment, t5.c1, t5.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({2, 2}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t5: ({t5: (t5.__pk_increment, t5.c1, t5.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({3, 3}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t5: ({t5: (t5.__pk_increment, t5.c1, t5.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({4, 4}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t5: ({t5: (t5.__pk_increment, t5.c1, t5.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({NULL, NULL}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t6: ({t6: (t6.__pk_increment, t6.c1, t6.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({1, NULL}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t6: ({t6: (t6.__pk_increment, t6.c1, t6.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({2, NULL}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t6: ({t6: (t6.__pk_increment, t6.c1, t6.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({3, NULL}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t6: ({t6: (t6.__pk_increment, t6.c1, t6.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({4, NULL}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)]), filter(nil), + columns([{t6: ({t6: (t6.__pk_increment, t6.c1, t6.c2)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2]), filter(nil) + values({5, NULL}) + +set autocommit=0; + +EXPLAIN select * from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN CARTESIAN| |1 |119 | +|1 | TABLE SCAN |t1 |1 |39 | +|2 | MATERIAL | |1 |79 | +|3 | SUBPLAN SCAN |VIEW1|1 |79 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |79 | +|5 | TABLE SCAN |t2 |1 |39 | +|6 | MATERIAL | |1 |39 | +|7 | TABLE SCAN |t3 |1 |39 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter([t1.c1 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([1]), filter(nil) + 3 - output([1]), filter(nil), + access(nil) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([t2.c1 = 11]), + access([t2.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([t3.c1 = 11]), + access([t3.c1]), partitions(p0) + +select * from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select /*+no_rewrite*/* from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |SUBPLAN FILTER | |4 |777 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | HASH RIGHT OUTER JOIN| |9 |92 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([11 = ANY(subquery(1))]), + exec_params_([t1.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t3.c1]), filter(nil), startup_filter([?]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select /*+no_rewrite*/* from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN insert into t11_temp (select * from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1)); +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |INSERT | |1 |119 | +|1 | SUBPLAN SCAN |VIEW1|1 |119 | +|2 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |119 | +|3 | TABLE SCAN |t1 |1 |39 | +|4 | MATERIAL | |1 |79 | +|5 | SUBPLAN SCAN |VIEW2|1 |79 | +|6 | NESTED-LOOP JOIN CARTESIAN | |1 |79 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t3 |1 |39 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter([t1.c1 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([t2.c1 = 11]), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([t3.c1 = 11]), + access([t3.c1]), partitions(p0) + +insert into t11_temp (select * from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1)); + +rollback; +EXPLAIN insert into t11_temp (select /*+no_rewrite*/* from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |4 |778 | +|1 | SUBPLAN SCAN |VIEW1|4 |778 | +|2 | SUBPLAN FILTER | |4 |777 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | HASH RIGHT OUTER JOIN| |9 |92 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter([11 = ANY(subquery(1))]), + exec_params_([t1.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil), startup_filter([?]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +insert into t11_temp (select /*+no_rewrite*/* from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); +Query Plan +============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------ +|0 |UPDATE | |8 |165 | +|1 | SUBPLAN FILTER | |8 |157 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |119 | +|4 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |118 | +|5 | TABLE SCAN |t1 |1 |39 | +|6 | MATERIAL | |1 |79 | +|7 | SUBPLAN SCAN |VIEW1|1 |79 | +|8 | NESTED-LOOP JOIN CARTESIAN | |1 |79 | +|9 | TABLE SCAN |t2 |1 |39 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t3 |1 |39 | +============================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter([t1.c1 = 1]), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access(nil) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([t2.c1 = 11]), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([t3.c1 = 11]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+no_rewrite*/t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |268 | +|1 | SUBPLAN FILTER | |8 |260 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |222 | +|4 | SUBPLAN FILTER | |1 |221 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | HASH RIGHT OUTER JOIN| |9 |92 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t2 |9 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([11 = ANY(subquery(1))]), + exec_params_([t1.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil), startup_filter([?]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+no_rewrite*/t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); +Query Plan +============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------ +|0 |DELETE | |1 |158 | +|1 | SUBPLAN FILTER | |1 |157 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |119 | +|4 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |118 | +|5 | TABLE SCAN |t1 |1 |39 | +|6 | MATERIAL | |1 |79 | +|7 | SUBPLAN SCAN |VIEW1|1 |79 | +|8 | NESTED-LOOP JOIN CARTESIAN | |1 |79 | +|9 | TABLE SCAN |t2 |1 |39 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t3 |1 |39 | +============================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter([t1.c1 = 1]), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access(nil) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([t2.c1 = 11]), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([t3.c1 = 11]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+no_rewrite*/t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |261 | +|1 | SUBPLAN FILTER | |1 |260 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |222 | +|4 | SUBPLAN FILTER | |1 |221 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | HASH RIGHT OUTER JOIN| |9 |92 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t2 |9 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([11 = ANY(subquery(1))]), + exec_params_([t1.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil), startup_filter([?]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+no_rewrite*/t1.c1 from t1 where (11) in (select t3.c1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1 = 1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |8 |146 | +|1 | TABLE SCAN |t3 |8 |38 | +|2 | HASH JOIN | |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |399 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |1 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1)); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |8 |148 | +|1 | SUBPLAN SCAN |VIEW1|8 |147 | +|2 | HASH RIGHT SEMI JOIN| |8 |146 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | HASH JOIN | |8 |93 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |400 | +|1 | SUBPLAN SCAN |VIEW1|4 |399 | +|2 | SUBPLAN FILTER | |4 |399 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |8 |177 | +|1 | SUBPLAN FILTER | |8 |169 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |131 | +|4 | HASH RIGHT SEMI JOIN| |1 |130 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH JOIN | |2 |84 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |2 |36 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |207 | +|1 | SUBPLAN FILTER | |8 |199 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |DELETE | |1 |170 | +|1 | SUBPLAN FILTER | |1 |169 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |131 | +|4 | HASH RIGHT SEMI JOIN| |1 |130 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH JOIN | |2 |84 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |2 |36 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |200 | +|1 | SUBPLAN FILTER | |1 |199 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |8 |147 | +|1 | TABLE SCAN |t3 |8 |38 | +|2 | HASH OUTER JOIN | |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | +| 5 | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |399 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |1 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | +| 5 | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1)); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |8 |149 | +|1 | SUBPLAN SCAN |VIEW1|8 |148 | +|2 | HASH RIGHT SEMI JOIN| |8 |147 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |400 | +|1 | SUBPLAN SCAN |VIEW1|4 |399 | +|2 | SUBPLAN FILTER | |4 |399 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |8 |177 | +|1 | SUBPLAN FILTER | |8 |169 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |130 | +|4 | HASH RIGHT SEMI JOIN| |1 |130 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH OUTER JOIN | |1 |83 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |2 |36 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |207 | +|1 | SUBPLAN FILTER | |8 |199 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |DELETE | |1 |170 | +|1 | SUBPLAN FILTER | |1 |169 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |130 | +|4 | HASH RIGHT SEMI JOIN| |1 |130 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH OUTER JOIN | |1 |83 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |2 |36 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |200 | +|1 | SUBPLAN FILTER | |1 |199 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |8 |146 | +|1 | SUBPLAN SCAN |VIEW1|8 |93 | +|2 | HASH JOIN | |8 |92 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +|5 | TABLE SCAN |t1 |8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t3.c1]), other_conds(nil) + 1 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 2 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 3 | 2 | +| 4 | 2 | ++------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |SUBPLAN FILTER | |4 |655 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|3 | TABLE SCAN |t2 |1 |39 | +|4 | MATERIAL | |1 |39 | +|5 | TABLE SCAN |t3 |1 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 3 | 2 | +| 4 | 2 | ++------+------+ +EXPLAIN insert into t11_temp (select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |8 |148 | +|1 | SUBPLAN SCAN |VIEW1|8 |147 | +|2 | HASH RIGHT SEMI JOIN| |8 |146 | +|3 | SUBPLAN SCAN |VIEW2|8 |93 | +|4 | HASH JOIN | |8 |92 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t1 |8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t3.c1]), other_conds(nil) + 3 - output([VIEW2.t3.c1]), filter(nil), + access([VIEW2.t3.c1]) + 4 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t11_temp (select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); + +rollback; +EXPLAIN insert into t11_temp (select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |4 |656 | +|1 | SUBPLAN SCAN |VIEW1|4 |656 | +|2 | SUBPLAN FILTER | |4 |655 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|5 | TABLE SCAN |t2 |1 |39 | +|6 | MATERIAL | |1 |39 | +|7 | TABLE SCAN |t3 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +insert into t11_temp (select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |184 | +|1 | SUBPLAN FILTER | |8 |176 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |138 | +|4 | MERGE SEMI JOIN| |1 |138 | +|5 | SORT | |3 |44 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | SUBPLAN SCAN |VIEW1|3 |92 | +|8 | MERGE JOIN | |3 |92 | +|9 | SORT | |6 |45 | +|10| TABLE SCAN |t2 |9 |38 | +|11| SORT | |5 |44 | +|12| TABLE SCAN |t3 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t3.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 8 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |8 |238 | +|1 | SUBPLAN FILTER | |8 |230 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |191 | +|4 | SUBPLAN FILTER | |1 |191 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t3 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |177 | +|1 | SUBPLAN FILTER | |1 |176 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |138 | +|4 | MERGE SEMI JOIN| |1 |138 | +|5 | SORT | |3 |44 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | SUBPLAN SCAN |VIEW1|3 |92 | +|8 | MERGE JOIN | |3 |92 | +|9 | SORT | |6 |45 | +|10| TABLE SCAN |t2 |9 |38 | +|11| SORT | |5 |44 | +|12| TABLE SCAN |t3 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t3.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 8 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |230 | +|1 | SUBPLAN FILTER | |1 |229 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |191 | +|4 | SUBPLAN FILTER | |1 |191 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t3 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |HASH RIGHT SEMI JOIN | |8 |147 | +|1 | SUBPLAN SCAN |VIEW1|9 |93 | +|2 | HASH RIGHT OUTER JOIN| |9 |92 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +|5 | TABLE SCAN |t1 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 1 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 2 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 2 | +| 4 | 2 | ++------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |4 |655 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | MERGE OUTER JOIN| |1 |77 | +|3 | TABLE SCAN |t2 |1 |39 | +|4 | TABLE SCAN |t3 |1 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t2.c1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 4 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 2 | +| 4 | 2 | ++------+------+ +EXPLAIN insert into t11_temp (select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |8 |150 | +|1 | SUBPLAN SCAN |VIEW1|8 |149 | +|2 | HASH RIGHT SEMI JOIN | |8 |147 | +|3 | SUBPLAN SCAN |VIEW2|9 |93 | +|4 | HASH RIGHT OUTER JOIN| |9 |92 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t1 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t2.c1]), other_conds(nil) + 3 - output([VIEW2.t2.c1]), filter(nil), + access([VIEW2.t2.c1]) + 4 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t11_temp (select * from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); + +rollback; +EXPLAIN insert into t11_temp (select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |4 |656 | +|1 | SUBPLAN SCAN |VIEW1|4 |656 | +|2 | SUBPLAN FILTER | |4 |655 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | MERGE OUTER JOIN| |1 |77 | +|5 | TABLE SCAN |t2 |1 |39 | +|6 | TABLE SCAN |t3 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t2.c1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 6 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +insert into t11_temp (select /*+NO_REWRITE*/* from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |UPDATE | |8 |184 | +|1 | SUBPLAN FILTER | |8 |176 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |138 | +|4 | MERGE SEMI JOIN | |1 |138 | +|5 | SORT | |3 |44 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | SUBPLAN SCAN |VIEW1|4 |92 | +|8 | MERGE OUTER JOIN| |4 |91 | +|9 | SORT | |6 |45 | +|10| TABLE SCAN |t2 |9 |38 | +|11| SORT | |5 |44 | +|12| TABLE SCAN |t3 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 8 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |238 | +|1 | SUBPLAN FILTER | |8 |230 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |191 | +|4 | SUBPLAN FILTER | |1 |191 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | MERGE OUTER JOIN| |1 |77 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |DELETE | |1 |177 | +|1 | SUBPLAN FILTER | |1 |176 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |138 | +|4 | MERGE SEMI JOIN | |1 |138 | +|5 | SORT | |3 |44 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | SUBPLAN SCAN |VIEW1|4 |92 | +|8 | MERGE OUTER JOIN| |4 |91 | +|9 | SORT | |6 |45 | +|10| TABLE SCAN |t2 |9 |38 | +|11| SORT | |5 |44 | +|12| TABLE SCAN |t3 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 8 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |230 | +|1 | SUBPLAN FILTER | |1 |229 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |191 | +|4 | SUBPLAN FILTER | |1 |191 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | MERGE OUTER JOIN| |1 |77 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |0 |146 | +|1 | SUBPLAN SCAN |VIEW1|8 |93 | +|2 | HASH JOIN | |8 |92 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +|5 | TABLE SCAN |t1 |8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t3.c1]), other_conds(nil) + 1 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 2 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 2 | 2 | +| 5 | 5 | +| 10 | 10 | +| NULL | 1 | +| NULL | 5 | ++------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |SUBPLAN FILTER | |4 |655 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|3 | TABLE SCAN |t2 |1 |39 | +|4 | MATERIAL | |1 |39 | +|5 | TABLE SCAN |t3 |1 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 2 | 2 | +| 5 | 5 | +| 10 | 10 | +| NULL | 1 | +| NULL | 5 | ++------+------+ +EXPLAIN insert into t11_temp (select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |0 |146 | +|1 | SUBPLAN SCAN |VIEW1|0 |146 | +|2 | HASH RIGHT ANTI JOIN| |0 |146 | +|3 | SUBPLAN SCAN |VIEW2|8 |93 | +|4 | HASH JOIN | |8 |92 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t1 |8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t3.c1]), other_conds(nil) + 3 - output([VIEW2.t3.c1]), filter(nil), + access([VIEW2.t3.c1]) + 4 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t11_temp (select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); + +rollback; +EXPLAIN insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |4 |656 | +|1 | SUBPLAN SCAN |VIEW1|4 |656 | +|2 | SUBPLAN FILTER | |4 |655 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|5 | TABLE SCAN |t2 |1 |39 | +|6 | MATERIAL | |1 |39 | +|7 | TABLE SCAN |t3 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |8 |192 | +|1 | SUBPLAN FILTER | |8 |184 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |0 |146 | +|4 | HASH ANTI JOIN| |0 |146 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | SUBPLAN SCAN |VIEW1|8 |93 | +|7 | HASH JOIN | |8 |92 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t3.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 7 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |8 |238 | +|1 | SUBPLAN FILTER | |8 |230 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |191 | +|4 | SUBPLAN FILTER | |1 |191 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t3 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |185 | +|1 | SUBPLAN FILTER | |1 |184 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |0 |146 | +|4 | HASH ANTI JOIN| |0 |146 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | SUBPLAN SCAN |VIEW1|8 |93 | +|7 | HASH JOIN | |8 |92 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t3.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 7 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |230 | +|1 | SUBPLAN FILTER | |1 |229 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |191 | +|4 | SUBPLAN FILTER | |1 |191 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t3 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |HASH RIGHT ANTI JOIN | |0 |147 | +|1 | SUBPLAN SCAN |VIEW1|9 |93 | +|2 | HASH RIGHT OUTER JOIN| |9 |92 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +|5 | TABLE SCAN |t1 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 1 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 2 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | +| 10 | 10 | +| NULL | 1 | +| NULL | 5 | ++------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |4 |655 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | MERGE OUTER JOIN| |1 |77 | +|3 | TABLE SCAN |t2 |1 |39 | +|4 | TABLE SCAN |t3 |1 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t2.c1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 4 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | +| 10 | 10 | +| NULL | 1 | +| NULL | 5 | ++------+------+ +EXPLAIN insert into t11_temp (select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |0 |147 | +|1 | SUBPLAN SCAN |VIEW1|0 |147 | +|2 | HASH RIGHT ANTI JOIN | |0 |147 | +|3 | SUBPLAN SCAN |VIEW2|9 |93 | +|4 | HASH RIGHT OUTER JOIN| |9 |92 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t1 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t2.c1]), other_conds(nil) + 3 - output([VIEW2.t2.c1]), filter(nil), + access([VIEW2.t2.c1]) + 4 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t11_temp (select * from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); + +rollback; +EXPLAIN insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |4 |656 | +|1 | SUBPLAN SCAN |VIEW1|4 |656 | +|2 | SUBPLAN FILTER | |4 |655 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | MERGE OUTER JOIN| |1 |77 | +|5 | TABLE SCAN |t2 |1 |39 | +|6 | TABLE SCAN |t3 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t2.c1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 6 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |8 |193 | +|1 | SUBPLAN FILTER | |8 |185 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |0 |146 | +|4 | HASH ANTI JOIN | |0 |146 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | SUBPLAN SCAN |VIEW1|9 |93 | +|7 | HASH RIGHT OUTER JOIN| |9 |92 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 7 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |238 | +|1 | SUBPLAN FILTER | |8 |230 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |191 | +|4 | SUBPLAN FILTER | |1 |191 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | MERGE OUTER JOIN| |1 |77 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |186 | +|1 | SUBPLAN FILTER | |1 |185 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |0 |146 | +|4 | HASH ANTI JOIN | |0 |146 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | SUBPLAN SCAN |VIEW1|9 |93 | +|7 | HASH RIGHT OUTER JOIN| |9 |92 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 7 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |230 | +|1 | SUBPLAN FILTER | |1 |229 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |191 | +|4 | SUBPLAN FILTER | |1 |191 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | MERGE OUTER JOIN| |1 |77 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter([? = t2.c1]), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select 1 from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t2.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |1 |146 | +|1 | TABLE SCAN |t3 |8 |38 | +|2 | HASH OUTER JOIN | |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |399 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |1 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1)); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |1 |146 | +|1 | SUBPLAN SCAN |VIEW1|1 |146 | +|2 | HASH RIGHT ANTI JOIN| |1 |146 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |400 | +|1 | SUBPLAN SCAN |VIEW1|4 |399 | +|2 | SUBPLAN FILTER | |4 |399 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |8 |191 | +|1 | SUBPLAN FILTER | |8 |183 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |144 | +|4 | HASH RIGHT ANTI JOIN| |1 |144 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH OUTER JOIN | |8 |92 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |207 | +|1 | SUBPLAN FILTER | |8 |199 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |DELETE | |1 |184 | +|1 | SUBPLAN FILTER | |1 |183 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |144 | +|4 | HASH RIGHT ANTI JOIN| |1 |144 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH OUTER JOIN | |8 |92 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |200 | +|1 | SUBPLAN FILTER | |1 |199 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |HASH OUTER JOIN | |2 |125 | +|1 | HASH RIGHT SEMI JOIN| |2 |80 | +|2 | SUBPLAN SCAN |VIEW1|2 |37 | +|3 | TABLE SCAN |t3 |2 |37 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil) + 2 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |134 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |2 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t1.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |2 |125 | +|1 | SUBPLAN SCAN |VIEW1|2 |125 | +|2 | HASH OUTER JOIN | |2 |125 | +|3 | HASH RIGHT SEMI JOIN| |2 |80 | +|4 | SUBPLAN SCAN |VIEW2|2 |37 | +|5 | TABLE SCAN |t3 |2 |37 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.c1]), other_conds(nil) + 4 - output([VIEW2.c1]), filter(nil), + access([VIEW2.c1]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |136 | +|1 | SUBPLAN SCAN |VIEW1|4 |135 | +|2 | SUBPLAN FILTER | |4 |134 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t1.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |168 | +|1 | SUBPLAN FILTER | |8 |160 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |121 | +|4 | HASH OUTER JOIN | |1 |121 | +|5 | HASH RIGHT SEMI JOIN| |2 |80 | +|6 | SUBPLAN SCAN |VIEW1|2 |37 | +|7 | TABLE SCAN |t3 |2 |37 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |5 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil) + 6 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |169 | +|1 | SUBPLAN FILTER | |8 |161 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |123 | +|4 | SUBPLAN FILTER | |1 |122 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |160 | +|1 | SUBPLAN FILTER | |1 |159 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |121 | +|4 | HASH OUTER JOIN | |1 |121 | +|5 | HASH RIGHT SEMI JOIN| |2 |80 | +|6 | SUBPLAN SCAN |VIEW1|2 |37 | +|7 | TABLE SCAN |t3 |2 |37 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |5 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil) + 6 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |162 | +|1 | SUBPLAN FILTER | |1 |161 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |123 | +|4 | SUBPLAN FILTER | |1 |122 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |HASH OUTER JOIN | |6 |132 | +|1 | NESTED-LOOP ANTI JOIN| |6 |80 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | MATERIAL | |2 |37 | +|4 | SUBPLAN SCAN |VIEW1|2 |37 | +|5 | TABLE SCAN |t3 |2 |37 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + conds([(T_OP_OR, t1.c1 = VIEW1.c1, (T_OP_IS, t1.c1, NULL, 0), (T_OP_IS, VIEW1.c1, NULL, 0))]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.c1]), filter(nil) + 4 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |134 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |2 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t1.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |6 |134 | +|1 | SUBPLAN SCAN |VIEW1|6 |133 | +|2 | HASH OUTER JOIN | |6 |132 | +|3 | NESTED-LOOP ANTI JOIN| |6 |80 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | MATERIAL | |2 |37 | +|6 | SUBPLAN SCAN |VIEW2|2 |37 | +|7 | TABLE SCAN |t3 |2 |37 | +|8 | TABLE SCAN |t2 |9 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + conds([(T_OP_OR, t1.c1 = VIEW2.c1, (T_OP_IS, t1.c1, NULL, 0), (T_OP_IS, VIEW2.c1, NULL, 0))]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([VIEW2.c1]), filter(nil) + 6 - output([VIEW2.c1]), filter(nil), + access([VIEW2.c1]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |136 | +|1 | SUBPLAN SCAN |VIEW1|4 |135 | +|2 | SUBPLAN FILTER | |4 |134 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t1.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |168 | +|1 | SUBPLAN FILTER | |8 |160 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |122 | +|4 | NESTED-LOOP ANTI JOIN| |1 |121 | +|5 | HASH OUTER JOIN | |2 |84 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |2 |37 | +|8 | MATERIAL | |2 |37 | +|9 | SUBPLAN SCAN |VIEW1|2 |37 | +|10| TABLE SCAN |t3 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_OR, t1.c1 = VIEW1.c1, (T_OP_IS, t1.c1, NULL, 0), (T_OP_IS, VIEW1.c1, NULL, 0))]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([VIEW1.c1]), filter(nil) + 9 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |169 | +|1 | SUBPLAN FILTER | |8 |161 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |123 | +|4 | SUBPLAN FILTER | |1 |122 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |161 | +|1 | SUBPLAN FILTER | |1 |160 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |122 | +|4 | NESTED-LOOP ANTI JOIN| |1 |121 | +|5 | HASH OUTER JOIN | |2 |84 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |2 |37 | +|8 | MATERIAL | |2 |37 | +|9 | SUBPLAN SCAN |VIEW1|2 |37 | +|10| TABLE SCAN |t3 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_OR, t1.c1 = VIEW1.c1, (T_OP_IS, t1.c1, NULL, 0), (T_OP_IS, VIEW1.c1, NULL, 0))]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([VIEW1.c1]), filter(nil) + 9 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |162 | +|1 | SUBPLAN FILTER | |1 |161 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |123 | +|4 | SUBPLAN FILTER | |1 |122 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t1.c1 not in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |HASH JOIN | |2 |124 | +|1 | HASH RIGHT SEMI JOIN| |2 |81 | +|2 | SUBPLAN SCAN |VIEW1|2 |37 | +|3 | TABLE SCAN |t3 |2 |37 | +|4 | TABLE SCAN |t2 |9 |38 | +|5 | TABLE SCAN |t1 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW1.c1]), other_conds(nil) + 2 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |134 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |2 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t2.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |2 |125 | +|1 | SUBPLAN SCAN |VIEW1|2 |125 | +|2 | HASH JOIN | |2 |124 | +|3 | HASH RIGHT SEMI JOIN| |2 |81 | +|4 | SUBPLAN SCAN |VIEW2|2 |37 | +|5 | TABLE SCAN |t3 |2 |37 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t1 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW2.c1]), other_conds(nil) + 4 - output([VIEW2.c1]), filter(nil), + access([VIEW2.c1]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |136 | +|1 | SUBPLAN SCAN |VIEW1|4 |135 | +|2 | SUBPLAN FILTER | |4 |134 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t2.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |168 | +|1 | SUBPLAN FILTER | |8 |160 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |122 | +|4 | HASH JOIN | |1 |121 | +|5 | HASH RIGHT SEMI JOIN| |2 |81 | +|6 | SUBPLAN SCAN |VIEW1|2 |37 | +|7 | TABLE SCAN |t3 |2 |37 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | TABLE SCAN |t1 |5 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = VIEW1.c1]), other_conds(nil) + 6 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |169 | +|1 | SUBPLAN FILTER | |8 |161 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |123 | +|4 | SUBPLAN FILTER | |1 |122 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |161 | +|1 | SUBPLAN FILTER | |1 |160 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |122 | +|4 | HASH JOIN | |1 |121 | +|5 | HASH RIGHT SEMI JOIN| |2 |81 | +|6 | SUBPLAN SCAN |VIEW1|2 |37 | +|7 | TABLE SCAN |t3 |2 |37 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | TABLE SCAN |t1 |5 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = VIEW1.c1]), other_conds(nil) + 6 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |162 | +|1 | SUBPLAN FILTER | |1 |161 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |123 | +|4 | SUBPLAN FILTER | |1 |122 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |7 |136 | +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | MATERIAL | |2 |37 | +|5 | SUBPLAN SCAN |VIEW1|2 |37 | +|6 | TABLE SCAN |t3 |2 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([(T_OP_OR, t2.c1 = VIEW1.c1, (T_OP_IS, t2.c1, NULL, 0), (T_OP_IS, VIEW1.c1, NULL, 0))]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([VIEW1.c1]), filter(nil) + 5 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |134 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |2 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t2.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |7 |137 | +|1 | SUBPLAN SCAN |VIEW1|7 |136 | +|2 | NESTED-LOOP ANTI JOIN| |7 |136 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MATERIAL | |2 |37 | +|7 | SUBPLAN SCAN |VIEW2|2 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([(T_OP_OR, t2.c1 = VIEW2.c1, (T_OP_IS, t2.c1, NULL, 0), (T_OP_IS, VIEW2.c1, NULL, 0))]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([VIEW2.c1]), filter(nil) + 7 - output([VIEW2.c1]), filter(nil), + access([VIEW2.c1]) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |136 | +|1 | SUBPLAN SCAN |VIEW1|4 |135 | +|2 | SUBPLAN FILTER | |4 |134 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t2.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |168 | +|1 | SUBPLAN FILTER | |8 |160 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |121 | +|4 | NESTED-LOOP ANTI JOIN| |1 |121 | +|5 | HASH OUTER JOIN | |2 |84 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |2 |37 | +|8 | MATERIAL | |2 |37 | +|9 | SUBPLAN SCAN |VIEW1|2 |37 | +|10| TABLE SCAN |t3 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_OR, t2.c1 = VIEW1.c1, (T_OP_IS, t2.c1, NULL, 0), (T_OP_IS, VIEW1.c1, NULL, 0))]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([VIEW1.c1]), filter(nil) + 9 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |169 | +|1 | SUBPLAN FILTER | |8 |161 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |123 | +|4 | SUBPLAN FILTER | |1 |122 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |161 | +|1 | SUBPLAN FILTER | |1 |160 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |121 | +|4 | NESTED-LOOP ANTI JOIN| |1 |121 | +|5 | HASH OUTER JOIN | |2 |84 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |2 |37 | +|8 | MATERIAL | |2 |37 | +|9 | SUBPLAN SCAN |VIEW1|2 |37 | +|10| TABLE SCAN |t3 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([(T_OP_OR, t2.c1 = VIEW1.c1, (T_OP_IS, t2.c1, NULL, 0), (T_OP_IS, VIEW1.c1, NULL, 0))]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([VIEW1.c1]), filter(nil) + 9 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |162 | +|1 | SUBPLAN FILTER | |1 |161 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |123 | +|4 | SUBPLAN FILTER | |1 |122 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t2.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0), + limit(2), offset(nil) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where t2.c1 not in (select t3.c1 from t3 limit 2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |MERGE JOIN | |8 |200 | +|1 | MERGE SEMI JOIN| |8 |149 | +|2 | SORT | |9 |47 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | SUBPLAN SCAN |VIEW1|8 |95 | +|5 | MERGE JOIN | |8 |94 | +|6 | SORT | |8 |44 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | SORT | |8 |44 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| SORT | |8 |46 | +|11| TABLE SCAN |t1 |8 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW1.t4.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([VIEW1.t4.c1]), filter(nil), + access([VIEW1.t4.c1]) + 5 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |SUBPLAN FILTER | |4 |709 | +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|5 | TABLE SCAN |t3 |1 |38 | +|6 | MATERIAL | |1 |39 | +|7 | TABLE SCAN |t4 |1 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |8 |202 | +|1 | SUBPLAN SCAN |VIEW1|8 |201 | +|2 | MERGE JOIN | |8 |200 | +|3 | MERGE SEMI JOIN| |8 |149 | +|4 | SORT | |9 |47 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | SUBPLAN SCAN |VIEW2|8 |95 | +|7 | MERGE JOIN | |8 |94 | +|8 | SORT | |8 |44 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| SORT | |8 |44 | +|11| TABLE SCAN |t4 |8 |38 | +|12| SORT | |8 |46 | +|13| TABLE SCAN |t1 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW2.t4.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([VIEW2.t4.c1]), filter(nil), + access([VIEW2.t4.c1]) + 7 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 13 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |4 |710 | +|1 | SUBPLAN SCAN |VIEW1|4 |709 | +|2 | SUBPLAN FILTER | |4 |709 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|7 | TABLE SCAN |t3 |1 |38 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |232 | +|1 | SUBPLAN FILTER | |8 |224 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |185 | +|4 | HASH RIGHT SEMI JOIN| |1 |185 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | HASH JOIN | |2 |84 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = VIEW1.t4.c1]), other_conds(nil) + 5 - output([VIEW1.t4.c1]), filter(nil), + access([VIEW1.t4.c1]) + 6 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |8 |285 | +|1 | SUBPLAN FILTER | |8 |277 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |239 | +|4 | SUBPLAN FILTER | |1 |238 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |224 | +|1 | SUBPLAN FILTER | |1 |223 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |185 | +|4 | HASH RIGHT SEMI JOIN| |1 |185 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | HASH JOIN | |2 |84 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = VIEW1.t4.c1]), other_conds(nil) + 5 - output([VIEW1.t4.c1]), filter(nil), + access([VIEW1.t4.c1]) + 6 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |278 | +|1 | SUBPLAN FILTER | |1 |277 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |239 | +|4 | SUBPLAN FILTER | |1 |238 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t4.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE JOIN | |8 |200 | +|1 | MERGE SEMI JOIN | |8 |149 | +|2 | SORT | |9 |47 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | SUBPLAN SCAN |VIEW1|8 |95 | +|5 | MERGE OUTER JOIN| |8 |94 | +|6 | SORT | |8 |44 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | SORT | |8 |44 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| SORT | |8 |46 | +|11| TABLE SCAN |t1 |8 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW1.t3.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 5 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |4 |709 | +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | MERGE OUTER JOIN| |1 |77 | +|5 | TABLE SCAN |t3 |1 |38 | +|6 | TABLE SCAN |t4 |1 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 6 - output([t4.c1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1)); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |INSERT | |8 |202 | +|1 | SUBPLAN SCAN |VIEW1|8 |201 | +|2 | MERGE JOIN | |8 |200 | +|3 | MERGE SEMI JOIN | |8 |149 | +|4 | SORT | |9 |47 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | SUBPLAN SCAN |VIEW2|8 |95 | +|7 | MERGE OUTER JOIN| |8 |94 | +|8 | SORT | |8 |44 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| SORT | |8 |44 | +|11| TABLE SCAN |t4 |8 |38 | +|12| SORT | |8 |46 | +|13| TABLE SCAN |t1 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW2.t3.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([VIEW2.t3.c1]), filter(nil), + access([VIEW2.t3.c1]) + 7 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 13 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |4 |710 | +|1 | SUBPLAN SCAN |VIEW1|4 |709 | +|2 | SUBPLAN FILTER | |4 |709 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MERGE OUTER JOIN| |1 |77 | +|7 | TABLE SCAN |t3 |1 |38 | +|8 | TABLE SCAN |t4 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |232 | +|1 | SUBPLAN FILTER | |8 |224 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |185 | +|4 | HASH RIGHT SEMI JOIN| |1 |185 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH OUTER JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | HASH JOIN | |2 |84 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = VIEW1.t3.c1]), other_conds(nil) + 5 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 6 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |285 | +|1 | SUBPLAN FILTER | |8 |277 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |238 | +|4 | SUBPLAN FILTER | |1 |238 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | MERGE OUTER JOIN| |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| TABLE SCAN |t4 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |224 | +|1 | SUBPLAN FILTER | |1 |223 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |185 | +|4 | HASH RIGHT SEMI JOIN| |1 |185 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH OUTER JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | HASH JOIN | |2 |84 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = VIEW1.t3.c1]), other_conds(nil) + 5 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 6 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |278 | +|1 | SUBPLAN FILTER | |1 |277 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |238 | +|4 | SUBPLAN FILTER | |1 |238 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | MERGE OUTER JOIN| |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| TABLE SCAN |t4 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c1=t3.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN| |8 |201 | +|1 | MERGE SEMI JOIN| |8 |147 | +|2 | SORT | |8 |46 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | SUBPLAN SCAN |VIEW1|8 |95 | +|5 | MERGE JOIN | |8 |94 | +|6 | SORT | |8 |44 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | SORT | |8 |44 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| SORT | |9 |47 | +|11| TABLE SCAN |t2 |9 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([VIEW1.t4.c1]), filter(nil), + access([VIEW1.t4.c1]) + 5 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |SUBPLAN FILTER | |4 |709 | +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|5 | TABLE SCAN |t3 |1 |38 | +|6 | MATERIAL | |1 |39 | +|7 | TABLE SCAN |t4 |1 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |8 |203 | +|1 | SUBPLAN SCAN |VIEW1|8 |202 | +|2 | MERGE OUTER JOIN| |8 |201 | +|3 | MERGE SEMI JOIN| |8 |147 | +|4 | SORT | |8 |46 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | SUBPLAN SCAN |VIEW2|8 |95 | +|7 | MERGE JOIN | |8 |94 | +|8 | SORT | |8 |44 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| SORT | |8 |44 | +|11| TABLE SCAN |t4 |8 |38 | +|12| SORT | |9 |47 | +|13| TABLE SCAN |t2 |9 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([VIEW2.t4.c1]), filter(nil), + access([VIEW2.t4.c1]) + 7 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 13 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |4 |710 | +|1 | SUBPLAN SCAN |VIEW1|4 |709 | +|2 | SUBPLAN FILTER | |4 |709 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|7 | TABLE SCAN |t3 |1 |38 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |231 | +|1 | SUBPLAN FILTER | |8 |223 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |185 | +|4 | HASH RIGHT SEMI JOIN| |1 |185 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | HASH OUTER JOIN | |1 |83 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t4.c1]), other_conds(nil) + 5 - output([VIEW1.t4.c1]), filter(nil), + access([VIEW1.t4.c1]) + 6 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |8 |285 | +|1 | SUBPLAN FILTER | |8 |277 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |239 | +|4 | SUBPLAN FILTER | |1 |238 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |224 | +|1 | SUBPLAN FILTER | |1 |223 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |185 | +|4 | HASH RIGHT SEMI JOIN| |1 |185 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | HASH OUTER JOIN | |1 |83 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t4.c1]), other_conds(nil) + 5 - output([VIEW1.t4.c1]), filter(nil), + access([VIEW1.t4.c1]) + 6 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |278 | +|1 | SUBPLAN FILTER | |1 |277 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |239 | +|4 | SUBPLAN FILTER | |1 |238 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT ANTI JOIN| |1 |201 | +|1 | SUBPLAN SCAN |VIEW1|8 |92 | +|2 | HASH JOIN | |8 |91 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | TABLE SCAN |t4 |8 |38 | +|5 | HASH OUTER JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 1 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 2 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |SUBPLAN FILTER | |4 |709 | +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|5 | TABLE SCAN |t3 |1 |38 | +|6 | MATERIAL | |1 |39 | +|7 | TABLE SCAN |t4 |1 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([? = t4.c2]), + access([t4.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2)); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |1 |201 | +|1 | SUBPLAN SCAN |VIEW1|1 |201 | +|2 | HASH RIGHT ANTI JOIN| |1 |201 | +|3 | SUBPLAN SCAN |VIEW2|8 |92 | +|4 | HASH JOIN | |8 |91 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t4 |8 |38 | +|7 | HASH OUTER JOIN | |8 |93 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c2 = VIEW2.t4.c2]), other_conds(nil) + 3 - output([VIEW2.t4.c2]), filter(nil), + access([VIEW2.t4.c2]) + 4 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |4 |710 | +|1 | SUBPLAN SCAN |VIEW1|4 |709 | +|2 | SUBPLAN FILTER | |4 |709 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|7 | TABLE SCAN |t3 |1 |38 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t4.c2]), + access([t4.c2]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |246 | +|1 | SUBPLAN FILTER | |8 |238 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |199 | +|4 | HASH RIGHT ANTI JOIN| |1 |199 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | HASH OUTER JOIN | |8 |92 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 5 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 6 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 9 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |8 |285 | +|1 | SUBPLAN FILTER | |8 |277 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |239 | +|4 | SUBPLAN FILTER | |1 |238 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([? = t4.c2]), + access([t4.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |238 | +|1 | SUBPLAN FILTER | |1 |237 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |199 | +|4 | HASH RIGHT ANTI JOIN| |1 |199 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | HASH OUTER JOIN | |8 |92 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 5 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 6 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 9 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |278 | +|1 | SUBPLAN FILTER | |1 |277 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |239 | +|4 | SUBPLAN FILTER | |1 |238 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t4 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([? = t4.c2]), + access([t4.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t4.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |HASH RIGHT ANTI JOIN | |1 |201 | +|1 | SUBPLAN SCAN |VIEW1|8 |92 | +|2 | HASH RIGHT OUTER JOIN| |8 |91 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | HASH OUTER JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c2 = VIEW1.t3.c2]), other_conds(nil) + 1 - output([VIEW1.t3.c2]), filter(nil), + access([VIEW1.t3.c2]) + 2 - output([t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 3 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |734 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | HASH OUTER JOIN| |1 |80 | +|5 | TABLE SCAN |t3 |1 |39 | +|6 | TABLE SCAN |t4 |8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 5 - output([t3.c1]), filter([? = t3.c2]), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2)); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |1 |201 | +|1 | SUBPLAN SCAN |VIEW1|1 |201 | +|2 | HASH RIGHT ANTI JOIN | |1 |201 | +|3 | SUBPLAN SCAN |VIEW2|8 |92 | +|4 | HASH RIGHT OUTER JOIN| |8 |91 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | HASH OUTER JOIN | |8 |93 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c2 = VIEW2.t3.c2]), other_conds(nil) + 3 - output([VIEW2.t3.c2]), filter(nil), + access([VIEW2.t3.c2]) + 4 - output([t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 5 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |735 | +|1 | SUBPLAN SCAN |VIEW1|4 |734 | +|2 | SUBPLAN FILTER | |4 |734 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH OUTER JOIN| |1 |80 | +|7 | TABLE SCAN |t3 |1 |39 | +|8 | TABLE SCAN |t4 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 7 - output([t3.c1]), filter([? = t3.c2]), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |8 |246 | +|1 | SUBPLAN FILTER | |8 |238 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |199 | +|4 | HASH RIGHT ANTI JOIN | |1 |199 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH RIGHT OUTER JOIN| |8 |91 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | HASH OUTER JOIN | |8 |92 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t3.c2]), other_conds(nil) + 5 - output([VIEW1.t3.c2]), filter(nil), + access([VIEW1.t3.c2]) + 6 - output([t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 7 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |291 | +|1 | SUBPLAN FILTER | |8 |283 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |245 | +|4 | SUBPLAN FILTER | |1 |245 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | HASH OUTER JOIN| |1 |80 | +|9 | TABLE SCAN |t3 |1 |39 | +|10| TABLE SCAN |t4 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 9 - output([t3.c1]), filter([? = t3.c2]), + access([t3.c1], [t3.c2]), partitions(p0) + 10 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |238 | +|1 | SUBPLAN FILTER | |1 |237 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |199 | +|4 | HASH RIGHT ANTI JOIN | |1 |199 | +|5 | SUBPLAN SCAN |VIEW1|8 |92 | +|6 | HASH RIGHT OUTER JOIN| |8 |91 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | HASH OUTER JOIN | |8 |92 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t3.c2]), other_conds(nil) + 5 - output([VIEW1.t3.c2]), filter(nil), + access([VIEW1.t3.c2]) + 6 - output([t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 7 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |284 | +|1 | SUBPLAN FILTER | |1 |283 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |245 | +|4 | SUBPLAN FILTER | |1 |245 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | HASH OUTER JOIN| |1 |80 | +|9 | TABLE SCAN |t3 |1 |39 | +|10| TABLE SCAN |t4 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c2]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c2]), other_conds(nil) + 9 - output([t3.c1]), filter([? = t3.c2]), + access([t3.c1], [t3.c2]), partitions(p0) + 10 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c2 where t2.c2=t3.c2) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |HASH SEMI JOIN | |3 |280 | +|1 | HASH JOIN | |3 |179 | +|2 | HASH RIGHT ANTI JOIN| |3 |133 | +|3 | SUBPLAN SCAN |VIEW2|5 |85 | +|4 | HASH OUTER JOIN | |5 |84 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | TABLE SCAN |t6 |5 |37 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | SUBPLAN SCAN |VIEW1|8 |92 | +|10| HASH JOIN | |8 |91 | +|11| TABLE SCAN |t3 |8 |38 | +|12| TABLE SCAN |t4 |8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 3 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 4 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 10 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |2 |1335| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | HASH JOIN | |1 |80 | +|5 | TABLE SCAN |t4 |1 |39 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | MERGE OUTER JOIN| |1 |76 | +|8 | TABLE SCAN |t5 |1 |38 | +|9 | TABLE SCAN |t6 |1 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_NOT_EXISTS, subquery(2))]), + exec_params_([t2.c2], [t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t4.c1]), filter([? = t4.c2]), + access([t4.c1], [t4.c2]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 8 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 9 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |3 |281 | +|1 | SUBPLAN SCAN |VIEW1|3 |281 | +|2 | HASH SEMI JOIN | |3 |280 | +|3 | HASH JOIN | |3 |179 | +|4 | HASH RIGHT ANTI JOIN| |3 |133 | +|5 | SUBPLAN SCAN |VIEW3|5 |85 | +|6 | HASH OUTER JOIN | |5 |84 | +|7 | TABLE SCAN |t5 |5 |37 | +|8 | TABLE SCAN |t6 |5 |37 | +|9 | TABLE SCAN |t1 |8 |38 | +|10| TABLE SCAN |t2 |9 |38 | +|11| SUBPLAN SCAN |VIEW2|8 |92 | +|12| HASH JOIN | |8 |91 | +|13| TABLE SCAN |t3 |8 |38 | +|14| TABLE SCAN |t4 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c2 = VIEW2.t4.c2]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW3.t5.c1]), other_conds(nil) + 5 - output([VIEW3.t5.c1]), filter(nil), + access([VIEW3.t5.c1]) + 6 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 7 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 8 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 10 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 11 - output([VIEW2.t4.c2]), filter(nil), + access([VIEW2.t4.c2]) + 12 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 13 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 14 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |2 |1335| +|1 | SUBPLAN SCAN |VIEW1|2 |1335| +|2 | SUBPLAN FILTER | |2 |1335| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH JOIN | |1 |80 | +|7 | TABLE SCAN |t4 |1 |39 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | MERGE OUTER JOIN| |1 |76 | +|10| TABLE SCAN |t5 |1 |38 | +|11| TABLE SCAN |t6 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_NOT_EXISTS, subquery(2))]), + exec_params_([t2.c2], [t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t4.c1]), filter([? = t4.c2]), + access([t4.c1], [t4.c2]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 10 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 11 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |326 | +|1 | SUBPLAN FILTER | |8 |318 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |279 | +|4 | HASH SEMI JOIN | |3 |279 | +|5 | HASH JOIN | |3 |178 | +|6 | HASH RIGHT ANTI JOIN| |3 |133 | +|7 | SUBPLAN SCAN |VIEW2|5 |85 | +|8 | HASH OUTER JOIN | |5 |84 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t6 |5 |37 | +|11| TABLE SCAN |t1 |8 |38 | +|12| TABLE SCAN |t2 |9 |38 | +|13| SUBPLAN SCAN |VIEW1|8 |92 | +|14| HASH JOIN | |8 |91 | +|15| TABLE SCAN |t3 |8 |38 | +|16| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 7 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 8 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 13 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 14 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 15 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 16 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |754 | +|1 | SUBPLAN FILTER | |8 |746 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |708 | +|4 | SUBPLAN FILTER | |1 |708 | +|5 | HASH OUTER JOIN | |4 |87 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |5 |37 | +|8 | HASH JOIN | |1 |80 | +|9 | TABLE SCAN |t4 |1 |39 | +|10| TABLE SCAN |t3 |8 |38 | +|11| MERGE OUTER JOIN| |1 |76 | +|12| TABLE SCAN |t5 |1 |38 | +|13| TABLE SCAN |t6 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_NOT_EXISTS, subquery(2))]), + exec_params_([t2.c2], [t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t4.c1]), filter([? = t4.c2]), + access([t4.c1], [t4.c2]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 12 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 13 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |318 | +|1 | SUBPLAN FILTER | |1 |317 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |279 | +|4 | HASH SEMI JOIN | |3 |279 | +|5 | HASH JOIN | |3 |178 | +|6 | HASH RIGHT ANTI JOIN| |3 |133 | +|7 | SUBPLAN SCAN |VIEW2|5 |85 | +|8 | HASH OUTER JOIN | |5 |84 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t6 |5 |37 | +|11| TABLE SCAN |t1 |8 |38 | +|12| TABLE SCAN |t2 |9 |38 | +|13| SUBPLAN SCAN |VIEW1|8 |92 | +|14| HASH JOIN | |8 |91 | +|15| TABLE SCAN |t3 |8 |38 | +|16| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 7 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 8 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 13 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 14 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 15 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 16 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |747 | +|1 | SUBPLAN FILTER | |1 |746 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |708 | +|4 | SUBPLAN FILTER | |1 |708 | +|5 | HASH OUTER JOIN | |4 |87 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |5 |37 | +|8 | HASH JOIN | |1 |80 | +|9 | TABLE SCAN |t4 |1 |39 | +|10| TABLE SCAN |t3 |8 |38 | +|11| MERGE OUTER JOIN| |1 |76 | +|12| TABLE SCAN |t5 |1 |38 | +|13| TABLE SCAN |t6 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_NOT_EXISTS, subquery(2))]), + exec_params_([t2.c2], [t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t4.c1]), filter([? = t4.c2]), + access([t4.c1], [t4.c2]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 12 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 13 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |HASH OUTER JOIN | |3 |279 | +|1 | HASH SEMI JOIN | |3 |233 | +|2 | HASH RIGHT ANTI JOIN | |3 |133 | +|3 | SUBPLAN SCAN |VIEW2|5 |85 | +|4 | HASH OUTER JOIN | |5 |84 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | TABLE SCAN |t6 |5 |37 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | SUBPLAN SCAN |VIEW1|8 |92 | +|9 | HASH RIGHT OUTER JOIN| |8 |91 | +|10| TABLE SCAN |t4 |8 |38 | +|11| TABLE SCAN |t3 |8 |38 | +|12| TABLE SCAN |t2 |9 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = VIEW1.t3.c2]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 3 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 4 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([VIEW1.t3.c2]), filter(nil), + access([VIEW1.t3.c2]) + 9 - output([t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 12 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 5 | 5 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |2 |1335| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | HASH OUTER JOIN | |1 |80 | +|5 | TABLE SCAN |t3 |1 |39 | +|6 | TABLE SCAN |t4 |8 |38 | +|7 | MERGE OUTER JOIN| |1 |76 | +|8 | TABLE SCAN |t5 |1 |38 | +|9 | TABLE SCAN |t6 |1 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_NOT_EXISTS, subquery(2))]), + exec_params_([t1.c2], [t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1]), filter([? = t3.c2]), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 7 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 8 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 9 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 5 | 5 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |3 |280 | +|1 | SUBPLAN SCAN |VIEW1|3 |280 | +|2 | HASH OUTER JOIN | |3 |279 | +|3 | HASH SEMI JOIN | |3 |233 | +|4 | HASH RIGHT ANTI JOIN | |3 |133 | +|5 | SUBPLAN SCAN |VIEW3|5 |85 | +|6 | HASH OUTER JOIN | |5 |84 | +|7 | TABLE SCAN |t5 |5 |37 | +|8 | TABLE SCAN |t6 |5 |37 | +|9 | TABLE SCAN |t1 |8 |38 | +|10| SUBPLAN SCAN |VIEW2|8 |92 | +|11| HASH RIGHT OUTER JOIN| |8 |91 | +|12| TABLE SCAN |t4 |8 |38 | +|13| TABLE SCAN |t3 |8 |38 | +|14| TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = VIEW2.t3.c2]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW3.t5.c1]), other_conds(nil) + 5 - output([VIEW3.t5.c1]), filter(nil), + access([VIEW3.t5.c1]) + 6 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 7 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 8 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 9 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 10 - output([VIEW2.t3.c2]), filter(nil), + access([VIEW2.t3.c2]) + 11 - output([t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 13 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 14 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |2 |1335| +|1 | SUBPLAN SCAN |VIEW1|2 |1335| +|2 | SUBPLAN FILTER | |2 |1335| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH OUTER JOIN | |1 |80 | +|7 | TABLE SCAN |t3 |1 |39 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | MERGE OUTER JOIN| |1 |76 | +|10| TABLE SCAN |t5 |1 |38 | +|11| TABLE SCAN |t6 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_NOT_EXISTS, subquery(2))]), + exec_params_([t1.c2], [t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter([? = t3.c2]), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 10 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 11 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |UPDATE | |8 |321 | +|1 | SUBPLAN FILTER | |8 |313 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |275 | +|4 | HASH OUTER JOIN | |1 |275 | +|5 | HASH SEMI JOIN | |3 |233 | +|6 | HASH RIGHT ANTI JOIN | |3 |133 | +|7 | SUBPLAN SCAN |VIEW2|5 |85 | +|8 | HASH OUTER JOIN | |5 |84 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t6 |5 |37 | +|11| TABLE SCAN |t1 |8 |38 | +|12| SUBPLAN SCAN |VIEW1|8 |92 | +|13| HASH RIGHT OUTER JOIN| |8 |91 | +|14| TABLE SCAN |t4 |8 |38 | +|15| TABLE SCAN |t3 |8 |38 | +|16| TABLE SCAN |t2 |3 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = VIEW1.t3.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 7 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 8 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 12 - output([VIEW1.t3.c2]), filter(nil), + access([VIEW1.t3.c2]) + 13 - output([t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 14 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 15 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 16 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |755 | +|1 | SUBPLAN FILTER | |8 |747 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |709 | +|4 | SUBPLAN FILTER | |1 |709 | +|5 | HASH RIGHT OUTER JOIN| |4 |88 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t1 |4 |37 | +|8 | HASH OUTER JOIN | |1 |80 | +|9 | TABLE SCAN |t3 |1 |39 | +|10| TABLE SCAN |t4 |8 |38 | +|11| MERGE OUTER JOIN | |1 |76 | +|12| TABLE SCAN |t5 |1 |38 | +|13| TABLE SCAN |t6 |1 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_NOT_EXISTS, subquery(2))]), + exec_params_([t1.c2], [t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter([? = t3.c2]), + access([t3.c1], [t3.c2]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 12 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 13 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| NULL | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------- +|0 |DELETE | |1 |314 | +|1 | SUBPLAN FILTER | |1 |313 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |275 | +|4 | HASH OUTER JOIN | |1 |275 | +|5 | HASH SEMI JOIN | |3 |233 | +|6 | HASH RIGHT ANTI JOIN | |3 |133 | +|7 | SUBPLAN SCAN |VIEW2|5 |85 | +|8 | HASH OUTER JOIN | |5 |84 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t6 |5 |37 | +|11| TABLE SCAN |t1 |8 |38 | +|12| SUBPLAN SCAN |VIEW1|8 |92 | +|13| HASH RIGHT OUTER JOIN| |8 |91 | +|14| TABLE SCAN |t4 |8 |38 | +|15| TABLE SCAN |t3 |8 |38 | +|16| TABLE SCAN |t2 |3 |37 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = VIEW1.t3.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 7 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 8 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 12 - output([VIEW1.t3.c2]), filter(nil), + access([VIEW1.t3.c2]) + 13 - output([t3.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 14 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 15 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 16 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |748 | +|1 | SUBPLAN FILTER | |1 |747 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |709 | +|4 | SUBPLAN FILTER | |1 |709 | +|5 | HASH RIGHT OUTER JOIN| |4 |88 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t1 |4 |37 | +|8 | HASH OUTER JOIN | |1 |80 | +|9 | TABLE SCAN |t3 |1 |39 | +|10| TABLE SCAN |t4 |8 |38 | +|11| MERGE OUTER JOIN | |1 |76 | +|12| TABLE SCAN |t5 |1 |38 | +|13| TABLE SCAN |t6 |1 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))], [(T_OP_NOT_EXISTS, subquery(2))]), + exec_params_([t1.c2], [t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter([? = t3.c2]), + access([t3.c1], [t3.c2]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 12 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 13 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t1.c2=t3.c2) and not exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |HASH JOIN | |1 |275 | +|1 | HASH SEMI JOIN | |1 |234 | +|2 | HASH RIGHT ANTI JOIN| |1 |146 | +|3 | SUBPLAN SCAN |VIEW1|8 |92 | +|4 | HASH JOIN | |8 |91 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t4 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | SUBPLAN SCAN |VIEW2|5 |85 | +|9 | HASH OUTER JOIN | |5 |84 | +|10| TABLE SCAN |t5 |5 |37 | +|11| TABLE SCAN |t6 |5 |37 | +|12| TABLE SCAN |t1 |8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW2.t5.c1]), other_conds(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 3 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 4 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 9 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 10 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 11 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 12 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |2 |1335| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | HASH JOIN | |1 |80 | +|5 | TABLE SCAN |t4 |1 |39 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | MERGE OUTER JOIN| |1 |76 | +|8 | TABLE SCAN |t5 |1 |38 | +|9 | TABLE SCAN |t6 |1 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))], [(T_OP_EXISTS, subquery(2))]), + exec_params_([t2.c2], [t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t4.c1]), filter([? = t4.c2]), + access([t4.c1], [t4.c2]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 8 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 9 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |275 | +|1 | SUBPLAN SCAN |VIEW1|1 |275 | +|2 | HASH JOIN | |1 |275 | +|3 | HASH SEMI JOIN | |1 |234 | +|4 | HASH RIGHT ANTI JOIN| |1 |146 | +|5 | SUBPLAN SCAN |VIEW2|8 |92 | +|6 | HASH JOIN | |8 |91 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +|10| SUBPLAN SCAN |VIEW3|5 |85 | +|11| HASH OUTER JOIN | |5 |84 | +|12| TABLE SCAN |t5 |5 |37 | +|13| TABLE SCAN |t6 |5 |37 | +|14| TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW3.t5.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c2 = VIEW2.t4.c2]), other_conds(nil) + 5 - output([VIEW2.t4.c2]), filter(nil), + access([VIEW2.t4.c2]) + 6 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 10 - output([VIEW3.t5.c1]), filter(nil), + access([VIEW3.t5.c1]) + 11 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 12 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 13 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 14 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |2 |1335| +|1 | SUBPLAN SCAN |VIEW1|2 |1335| +|2 | SUBPLAN FILTER | |2 |1335| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH JOIN | |1 |80 | +|7 | TABLE SCAN |t4 |1 |39 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | MERGE OUTER JOIN| |1 |76 | +|10| TABLE SCAN |t5 |1 |38 | +|11| TABLE SCAN |t6 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))], [(T_OP_EXISTS, subquery(2))]), + exec_params_([t2.c2], [t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t4.c1]), filter([? = t4.c2]), + access([t4.c1], [t4.c2]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 10 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 11 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |321 | +|1 | SUBPLAN FILTER | |8 |313 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |275 | +|4 | HASH JOIN | |1 |275 | +|5 | HASH SEMI JOIN | |1 |234 | +|6 | HASH RIGHT ANTI JOIN| |1 |146 | +|7 | SUBPLAN SCAN |VIEW1|8 |92 | +|8 | HASH JOIN | |8 |91 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +|12| SUBPLAN SCAN |VIEW2|5 |85 | +|13| HASH OUTER JOIN | |5 |84 | +|14| TABLE SCAN |t5 |5 |37 | +|15| TABLE SCAN |t6 |5 |37 | +|16| TABLE SCAN |t1 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = VIEW2.t5.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 7 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 8 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 12 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 13 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 14 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 15 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 16 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |754 | +|1 | SUBPLAN FILTER | |8 |746 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |708 | +|4 | SUBPLAN FILTER | |1 |708 | +|5 | HASH OUTER JOIN | |4 |87 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |5 |37 | +|8 | HASH JOIN | |1 |80 | +|9 | TABLE SCAN |t4 |1 |39 | +|10| TABLE SCAN |t3 |8 |38 | +|11| MERGE OUTER JOIN| |1 |76 | +|12| TABLE SCAN |t5 |1 |38 | +|13| TABLE SCAN |t6 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))], [(T_OP_EXISTS, subquery(2))]), + exec_params_([t2.c2], [t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c2], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t4.c1]), filter([? = t4.c2]), + access([t4.c1], [t4.c2]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 12 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 13 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |314 | +|1 | SUBPLAN FILTER | |1 |313 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |275 | +|4 | HASH JOIN | |1 |275 | +|5 | HASH SEMI JOIN | |1 |234 | +|6 | HASH RIGHT ANTI JOIN| |1 |146 | +|7 | SUBPLAN SCAN |VIEW1|8 |92 | +|8 | HASH JOIN | |8 |91 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +|12| SUBPLAN SCAN |VIEW2|5 |85 | +|13| HASH OUTER JOIN | |5 |84 | +|14| TABLE SCAN |t5 |5 |37 | +|15| TABLE SCAN |t6 |5 |37 | +|16| TABLE SCAN |t1 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = VIEW2.t5.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + equal_conds([t2.c2 = VIEW1.t4.c2]), other_conds(nil) + 7 - output([VIEW1.t4.c2]), filter(nil), + access([VIEW1.t4.c2]) + 8 - output([t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 12 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 13 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 14 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 15 - output([t6.c1]), filter(nil), + access([t6.c1]), partitions(p0) + 16 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |747 | +|1 | SUBPLAN FILTER | |1 |746 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |708 | +|4 | SUBPLAN FILTER | |1 |708 | +|5 | HASH OUTER JOIN | |4 |87 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |5 |37 | +|8 | HASH JOIN | |1 |80 | +|9 | TABLE SCAN |t4 |1 |39 | +|10| TABLE SCAN |t3 |8 |38 | +|11| MERGE OUTER JOIN| |1 |76 | +|12| TABLE SCAN |t5 |1 |38 | +|13| TABLE SCAN |t6 |1 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))], [(T_OP_EXISTS, subquery(2))]), + exec_params_([t2.c2], [t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c2], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t4.c1]), filter([? = t4.c2]), + access([t4.c1], [t4.c2]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([1]), filter(nil), + equal_conds([t5.c1 = t6.c1]), other_conds(nil) + 12 - output([t5.c1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 13 - output([t6.c1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 left join t4 on t3.c1=t4.c1 where t2.c2=t4.c2) and exists (select 1 from t5 left join t6 on t5.c1=t6.c1 where t2.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |SUBPLAN FILTER | |4 |1372| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | LIMIT | |1 |160 | +|5 | SUBPLAN FILTER | |1 |160 | +|6 | HASH OUTER JOIN | |2 |84 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |2 |37 | +|9 | LIMIT | |1 |76 | +|10| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|11| TABLE SCAN |t5 |1 |38 | +|12| MATERIAL | |1 |38 | +|13| TABLE SCAN |t6 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([NULL]), filter(nil), limit(1), offset(nil) + 5 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 6 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([NULL]), filter(nil), limit(1), offset(nil) + 10 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 11 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |SUBPLAN FILTER | |4 |1434| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | SUBPLAN FILTER | |4 |167 | +|5 | HASH OUTER JOIN | |8 |91 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | LIMIT | |1 |76 | +|9 | NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|10| TABLE SCAN |t5 |1 |38 | +|11| MATERIAL | |1 |38 | +|12| TABLE SCAN |t6 |1 |38 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([NULL]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), limit(1), offset(nil) + 9 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |INSERT | |4 |1373| +|1 | SUBPLAN SCAN |VIEW1|4 |1372| +|2 | SUBPLAN FILTER | |4 |1372| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | LIMIT | |1 |160 | +|7 | SUBPLAN FILTER | |1 |160 | +|8 | HASH OUTER JOIN | |2 |84 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |2 |37 | +|11| LIMIT | |1 |76 | +|12| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|13| TABLE SCAN |t5 |1 |38 | +|14| MATERIAL | |1 |38 | +|15| TABLE SCAN |t6 |1 |38 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter(nil), limit(1), offset(nil) + 7 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 8 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([NULL]), filter(nil), limit(1), offset(nil) + 12 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 13 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 14 - output([1]), filter(nil) + 15 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |INSERT | |4 |1435| +|1 | SUBPLAN SCAN |VIEW1|4 |1434| +|2 | SUBPLAN FILTER | |4 |1434| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | SUBPLAN FILTER | |4 |167 | +|7 | HASH OUTER JOIN | |8 |91 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| LIMIT | |1 |76 | +|11| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|12| TABLE SCAN |t5 |1 |38 | +|13| MATERIAL | |1 |38 | +|14| TABLE SCAN |t6 |1 |38 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 7 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), limit(1), offset(nil) + 11 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 12 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 13 - output([1]), filter(nil) + 14 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +Query Plan +========================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------------- +|0 |UPDATE | |8 |451 | +|1 | SUBPLAN FILTER | |8 |443 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |404 | +|4 | SUBPLAN FILTER | |1 |404 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | LIMIT | |1 |160 | +|9 | SUBPLAN FILTER | |1 |160 | +|10| HASH OUTER JOIN | |2 |84 | +|11| TABLE SCAN |t3 |8 |38 | +|12| TABLE SCAN |t4 |2 |37 | +|13| LIMIT | |1 |76 | +|14| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|15| TABLE SCAN |t5 |1 |38 | +|16| MATERIAL | |1 |38 | +|17| TABLE SCAN |t6 |1 |38 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), limit(1), offset(nil) + 9 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 10 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 13 - output([NULL]), filter(nil), limit(1), offset(nil) + 14 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 15 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 16 - output([1]), filter(nil) + 17 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +Query Plan +========================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------------- +|0 |UPDATE | |8 |466 | +|1 | SUBPLAN FILTER | |8 |458 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |420 | +|4 | SUBPLAN FILTER | |1 |420 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | SUBPLAN FILTER | |4 |167 | +|9 | HASH OUTER JOIN | |8 |91 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| LIMIT | |1 |76 | +|13| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|14| TABLE SCAN |t5 |1 |38 | +|15| MATERIAL | |1 |38 | +|16| TABLE SCAN |t6 |1 |38 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 9 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([NULL]), filter(nil), limit(1), offset(nil) + 13 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 14 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 15 - output([1]), filter(nil) + 16 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +Query Plan +========================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------------- +|0 |DELETE | |1 |443 | +|1 | SUBPLAN FILTER | |1 |442 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |404 | +|4 | SUBPLAN FILTER | |1 |404 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | LIMIT | |1 |160 | +|9 | SUBPLAN FILTER | |1 |160 | +|10| HASH OUTER JOIN | |2 |84 | +|11| TABLE SCAN |t3 |8 |38 | +|12| TABLE SCAN |t4 |2 |37 | +|13| LIMIT | |1 |76 | +|14| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|15| TABLE SCAN |t5 |1 |38 | +|16| MATERIAL | |1 |38 | +|17| TABLE SCAN |t6 |1 |38 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), limit(1), offset(nil) + 9 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 10 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 13 - output([NULL]), filter(nil), limit(1), offset(nil) + 14 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 15 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 16 - output([1]), filter(nil) + 17 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +Query Plan +========================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------------- +|0 |DELETE | |1 |459 | +|1 | SUBPLAN FILTER | |1 |458 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |420 | +|4 | SUBPLAN FILTER | |1 |420 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | SUBPLAN FILTER | |4 |167 | +|9 | HASH OUTER JOIN | |8 |91 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| LIMIT | |1 |76 | +|13| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|14| TABLE SCAN |t5 |1 |38 | +|15| MATERIAL | |1 |38 | +|16| TABLE SCAN |t6 |1 |38 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 9 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([NULL]), filter(nil), limit(1), offset(nil) + 13 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 14 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 15 - output([1]), filter(nil) + 16 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |SUBPLAN FILTER | |4 |1311| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | LIMIT | |1 |153 | +|5 | SUBPLAN FILTER | |1 |152 | +|6 | NESTED-LOOP JOIN CARTESIAN | |1 |77 | +|7 | TABLE SCAN |t3 |1 |38 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t4 |1 |38 | +|10| LIMIT | |1 |76 | +|11| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|12| TABLE SCAN |t5 |1 |38 | +|13| MATERIAL | |1 |38 | +|14| TABLE SCAN |t6 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([NULL]), filter(nil), limit(1), offset(nil) + 5 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), limit(1), offset(nil) + 11 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 12 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 13 - output([1]), filter(nil) + 14 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |SUBPLAN FILTER | |4 |1311| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | SUBPLAN FILTER | |1 |152 | +|5 | NESTED-LOOP JOIN CARTESIAN | |1 |77 | +|6 | TABLE SCAN |t3 |1 |38 | +|7 | MATERIAL | |1 |39 | +|8 | TABLE SCAN |t4 |1 |38 | +|9 | LIMIT | |1 |76 | +|10| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|11| TABLE SCAN |t5 |1 |38 | +|12| MATERIAL | |1 |38 | +|13| TABLE SCAN |t6 |1 |38 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([NULL]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 9 - output([NULL]), filter(nil), limit(1), offset(nil) + 10 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 11 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |INSERT | |4 |1312| +|1 | SUBPLAN SCAN |VIEW1|4 |1312| +|2 | SUBPLAN FILTER | |4 |1311| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | LIMIT | |1 |153 | +|7 | SUBPLAN FILTER | |1 |152 | +|8 | NESTED-LOOP JOIN CARTESIAN | |1 |77 | +|9 | TABLE SCAN |t3 |1 |38 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t4 |1 |38 | +|12| LIMIT | |1 |76 | +|13| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|14| TABLE SCAN |t5 |1 |38 | +|15| MATERIAL | |1 |38 | +|16| TABLE SCAN |t6 |1 |38 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter(nil), limit(1), offset(nil) + 7 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 12 - output([NULL]), filter(nil), limit(1), offset(nil) + 13 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 14 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 15 - output([1]), filter(nil) + 16 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |INSERT | |4 |1312| +|1 | SUBPLAN SCAN |VIEW1|4 |1311| +|2 | SUBPLAN FILTER | |4 |1311| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | SUBPLAN FILTER | |1 |152 | +|7 | NESTED-LOOP JOIN CARTESIAN | |1 |77 | +|8 | TABLE SCAN |t3 |1 |38 | +|9 | MATERIAL | |1 |39 | +|10| TABLE SCAN |t4 |1 |38 | +|11| LIMIT | |1 |76 | +|12| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|13| TABLE SCAN |t5 |1 |38 | +|14| MATERIAL | |1 |38 | +|15| TABLE SCAN |t6 |1 |38 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 7 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 8 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 11 - output([NULL]), filter(nil), limit(1), offset(nil) + 12 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 13 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 14 - output([1]), filter(nil) + 15 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1))); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +Query Plan +========================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------------- +|0 |UPDATE | |8 |436 | +|1 | SUBPLAN FILTER | |8 |428 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |389 | +|4 | SUBPLAN FILTER | |1 |389 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | LIMIT | |1 |153 | +|9 | SUBPLAN FILTER | |1 |152 | +|10| NESTED-LOOP JOIN CARTESIAN | |1 |77 | +|11| TABLE SCAN |t3 |1 |38 | +|12| MATERIAL | |1 |39 | +|13| TABLE SCAN |t4 |1 |38 | +|14| LIMIT | |1 |76 | +|15| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|16| TABLE SCAN |t5 |1 |38 | +|17| MATERIAL | |1 |38 | +|18| TABLE SCAN |t6 |1 |38 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), limit(1), offset(nil) + 9 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 10 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 11 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 14 - output([NULL]), filter(nil), limit(1), offset(nil) + 15 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 16 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 17 - output([1]), filter(nil) + 18 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +Query Plan +========================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------------- +|0 |UPDATE | |8 |435 | +|1 | SUBPLAN FILTER | |8 |427 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |389 | +|4 | SUBPLAN FILTER | |1 |389 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | SUBPLAN FILTER | |1 |152 | +|9 | NESTED-LOOP JOIN CARTESIAN | |1 |77 | +|10| TABLE SCAN |t3 |1 |38 | +|11| MATERIAL | |1 |39 | +|12| TABLE SCAN |t4 |1 |38 | +|13| LIMIT | |1 |76 | +|14| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|15| TABLE SCAN |t5 |1 |38 | +|16| MATERIAL | |1 |38 | +|17| TABLE SCAN |t6 |1 |38 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 9 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 13 - output([NULL]), filter(nil), limit(1), offset(nil) + 14 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 15 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 16 - output([1]), filter(nil) + 17 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +Query Plan +========================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------------- +|0 |DELETE | |1 |428 | +|1 | SUBPLAN FILTER | |1 |427 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |389 | +|4 | SUBPLAN FILTER | |1 |389 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | LIMIT | |1 |153 | +|9 | SUBPLAN FILTER | |1 |152 | +|10| NESTED-LOOP JOIN CARTESIAN | |1 |77 | +|11| TABLE SCAN |t3 |1 |38 | +|12| MATERIAL | |1 |39 | +|13| TABLE SCAN |t4 |1 |38 | +|14| LIMIT | |1 |76 | +|15| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|16| TABLE SCAN |t5 |1 |38 | +|17| MATERIAL | |1 |38 | +|18| TABLE SCAN |t6 |1 |38 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), limit(1), offset(nil) + 9 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 10 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 11 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 14 - output([NULL]), filter(nil), limit(1), offset(nil) + 15 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 16 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 17 - output([1]), filter(nil) + 18 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +Query Plan +========================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------------- +|0 |DELETE | |1 |428 | +|1 | SUBPLAN FILTER | |1 |427 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |389 | +|4 | SUBPLAN FILTER | |1 |389 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | SUBPLAN FILTER | |1 |152 | +|9 | NESTED-LOOP JOIN CARTESIAN | |1 |77 | +|10| TABLE SCAN |t3 |1 |38 | +|11| MATERIAL | |1 |39 | +|12| TABLE SCAN |t4 |1 |38 | +|13| LIMIT | |1 |76 | +|14| NESTED-LOOP JOIN CARTESIAN| |1 |76 | +|15| TABLE SCAN |t5 |1 |38 | +|16| MATERIAL | |1 |38 | +|17| TABLE SCAN |t6 |1 |38 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 9 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 13 - output([NULL]), filter(nil), limit(1), offset(nil) + 14 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 15 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + 16 - output([1]), filter(nil) + 17 - output([1]), filter([? = t6.c1]), + access([t6.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists( select null from t3 left join t4 on t3.c1=t4.c1 where t1.c1=t4.c1 and exists(select null from t5 left join t6 on t5.c1=t6.c1 where t1.c1=t6.c1)) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |HASH JOIN | |3 |144 | +|1 | NESTED-LOOP SEMI JOIN| |3 |99 | +|2 | TABLE SCAN |t2 |9 |38 | +|3 | MATERIAL | |8 |39 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | TABLE SCAN |t1 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 + t3.c1 < 5]), nl_params_(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 3 - output([t3.c1]), filter(nil) + 4 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |400 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |3 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter([? + t3.c1 < 5]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |3 |145 | +|1 | SUBPLAN SCAN |VIEW1|3 |144 | +|2 | HASH JOIN | |3 |144 | +|3 | NESTED-LOOP SEMI JOIN| |3 |99 | +|4 | TABLE SCAN |t2 |9 |38 | +|5 | MATERIAL | |8 |39 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 + t3.c1 < 5]), nl_params_(nil) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 5 - output([t3.c1]), filter(nil) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |402 | +|1 | SUBPLAN SCAN |VIEW1|4 |401 | +|2 | SUBPLAN FILTER | |4 |400 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |3 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter([? + t3.c1 < 5]), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |178 | +|1 | SUBPLAN FILTER | |8 |170 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |132 | +|4 | NESTED-LOOP SEMI JOIN| |1 |132 | +|5 | HASH JOIN | |3 |86 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t3 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t2.c1 + t3.c1 < 5]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |208 | +|1 | SUBPLAN FILTER | |8 |200 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |3 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? + t3.c1 < 5]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |171 | +|1 | SUBPLAN FILTER | |1 |170 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |132 | +|4 | NESTED-LOOP SEMI JOIN| |1 |132 | +|5 | HASH JOIN | |3 |86 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t3 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t2.c1 + t3.c1 < 5]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |201 | +|1 | SUBPLAN FILTER | |1 |200 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |3 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? + t3.c1 < 5]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |6 |151 | +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | MATERIAL | |8 |39 | +|5 | TABLE SCAN |t3 |8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 + t3.c1 < 5]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 4 | 2 | 4 | 4 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |400 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |3 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter([? + t3.c1 < 5]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 4 | 2 | 4 | 4 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |6 |153 | +|1 | SUBPLAN SCAN |VIEW1|6 |152 | +|2 | NESTED-LOOP ANTI JOIN| |6 |151 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MATERIAL | |8 |39 | +|7 | TABLE SCAN |t3 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 + t3.c1 < 5]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t3.c1]), filter(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |402 | +|1 | SUBPLAN SCAN |VIEW1|4 |401 | +|2 | SUBPLAN FILTER | |4 |400 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |3 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter([? + t3.c1 < 5]), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |173 | +|1 | SUBPLAN FILTER | |8 |165 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |126 | +|4 | NESTED-LOOP ANTI JOIN| |1 |126 | +|5 | HASH OUTER JOIN | |2 |84 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |2 |37 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t3 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t2.c1 + t3.c1 < 5]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |208 | +|1 | SUBPLAN FILTER | |8 |200 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |3 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? + t3.c1 < 5]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |166 | +|1 | SUBPLAN FILTER | |1 |165 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |126 | +|4 | NESTED-LOOP ANTI JOIN| |1 |126 | +|5 | HASH OUTER JOIN | |2 |84 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |2 |37 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t3 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t2.c1 + t3.c1 < 5]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |201 | +|1 | SUBPLAN FILTER | |1 |200 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |3 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? + t3.c1 < 5]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1<5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |HASH JOIN | |1 |137 | +|1 | NESTED-LOOP SEMI JOIN| |1 |97 | +|2 | TABLE SCAN |t2 |9 |38 | +|3 | MATERIAL | |8 |39 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | TABLE SCAN |t1 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 + t3.c1 = 5]), nl_params_(nil) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 3 - output([t3.c1]), filter(nil) + 4 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |399 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |1 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter([? + t3.c1 = 5]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |137 | +|1 | SUBPLAN SCAN |VIEW1|1 |137 | +|2 | HASH JOIN | |1 |137 | +|3 | NESTED-LOOP SEMI JOIN| |1 |97 | +|4 | TABLE SCAN |t2 |9 |38 | +|5 | MATERIAL | |8 |39 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 + t3.c1 = 5]), nl_params_(nil) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 5 - output([t3.c1]), filter(nil) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |400 | +|1 | SUBPLAN SCAN |VIEW1|4 |399 | +|2 | SUBPLAN FILTER | |4 |399 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter([? + t3.c1 = 5]), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |183 | +|1 | SUBPLAN FILTER | |8 |175 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |137 | +|4 | HASH JOIN | |1 |137 | +|5 | NESTED-LOOP SEMI JOIN| |1 |97 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | MATERIAL | |8 |39 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + conds([t2.c1 + t3.c1 = 5]), nl_params_(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t3.c1]), filter(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |207 | +|1 | SUBPLAN FILTER | |8 |199 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? + t3.c1 = 5]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |176 | +|1 | SUBPLAN FILTER | |1 |175 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |137 | +|4 | HASH JOIN | |1 |137 | +|5 | NESTED-LOOP SEMI JOIN| |1 |97 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | MATERIAL | |8 |39 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + conds([t2.c1 + t3.c1 = 5]), nl_params_(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t3.c1]), filter(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |200 | +|1 | SUBPLAN FILTER | |1 |199 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? + t3.c1 = 5]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |8 |150 | +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | MATERIAL | |8 |39 | +|5 | TABLE SCAN |t3 |8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 + t3.c1 = 5]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 3 | 2 | 3 | 3 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |399 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t3 |1 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter([? + t3.c1 = 5]), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 3 | 2 | 3 | 3 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |152 | +|1 | SUBPLAN SCAN |VIEW1|8 |151 | +|2 | NESTED-LOOP ANTI JOIN| |8 |150 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MATERIAL | |8 |39 | +|7 | TABLE SCAN |t3 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 + t3.c1 = 5]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t3.c1]), filter(nil) + 7 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |400 | +|1 | SUBPLAN SCAN |VIEW1|4 |399 | +|2 | SUBPLAN FILTER | |4 |399 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter([? + t3.c1 = 5]), + access([t3.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |171 | +|1 | SUBPLAN FILTER | |8 |163 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |124 | +|4 | NESTED-LOOP ANTI JOIN| |1 |124 | +|5 | HASH OUTER JOIN | |2 |83 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |2 |36 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t3 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t2.c1 + t3.c1 = 5]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |207 | +|1 | SUBPLAN FILTER | |8 |199 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? + t3.c1 = 5]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |164 | +|1 | SUBPLAN FILTER | |1 |163 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |124 | +|4 | NESTED-LOOP ANTI JOIN| |1 |124 | +|5 | HASH OUTER JOIN | |2 |83 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |2 |36 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t3 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t2.c1 + t3.c1 = 5]), nl_params_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |200 | +|1 | SUBPLAN FILTER | |1 |199 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |161 | +|4 | SUBPLAN FILTER | |1 |161 | +|5 | HASH OUTER JOIN| |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | TABLE SCAN |t3 |1 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter([? + t3.c1 = 5]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select 1 from t3 where t2.c1+t3.c1 = 5) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN | |7 |120 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | MATERIAL | |1 |79 | +|3 | SUBPLAN SCAN |VIEW1|1 |79 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|5 | TABLE SCAN |t2 |1 |39 | +|6 | MATERIAL | |1 |39 | +|7 | TABLE SCAN |t3 |1 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + conds([t1.c1 = 100]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([1]), filter(nil) + 3 - output([1]), filter(nil), + access(nil) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter([t2.c1 = 100]), + access([t2.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([t3.c1 = 100]), + access([t3.c1]), partitions(p0) + +select * from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 2 | +| 4 | 2 | +| 5 | 5 | +| 10 | 10 | +| NULL | 1 | +| NULL | 5 | ++------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |4 |682 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | HASH OUTER JOIN| |1 |81 | +|3 | TABLE SCAN |t2 |1 |39 | +|4 | TABLE SCAN |t3 |8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([NULL]), filter([? = t3.c1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 3 - output([t2.c1]), filter([t2.c1 = 100]), + access([t2.c1]), partitions(p0) + 4 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 2 | +| 4 | 2 | +| 5 | 5 | +| 10 | 10 | +| NULL | 1 | +| NULL | 5 | ++------+------+ +EXPLAIN insert into t11_temp (select * from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100)); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |INSERT | |7 |122 | +|1 | SUBPLAN SCAN |VIEW1|7 |121 | +|2 | NESTED-LOOP ANTI JOIN | |7 |120 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | MATERIAL | |1 |79 | +|5 | SUBPLAN SCAN |VIEW2|1 |79 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | MATERIAL | |1 |39 | +|9 | TABLE SCAN |t3 |1 |39 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + conds([t1.c1 = 100]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter([t2.c1 = 100]), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([t3.c1 = 100]), + access([t3.c1]), partitions(p0) + +insert into t11_temp (select * from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100)); + +rollback; +EXPLAIN insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100)); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |4 |684 | +|1 | SUBPLAN SCAN |VIEW1|4 |683 | +|2 | SUBPLAN FILTER | |4 |682 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | HASH OUTER JOIN| |1 |81 | +|5 | TABLE SCAN |t2 |1 |39 | +|6 | TABLE SCAN |t3 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([NULL]), filter([? = t3.c1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t2.c1]), filter([t2.c1 = 100]), + access([t2.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +insert into t11_temp (select /*+NO_REWRITE*/* from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |UPDATE | |8 |162 | +|1 | SUBPLAN FILTER | |8 |154 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |116 | +|4 | NESTED-LOOP ANTI JOIN | |1 |116 | +|5 | TABLE SCAN |t1 |2 |36 | +|6 | MATERIAL | |1 |79 | +|7 | SUBPLAN SCAN |VIEW1|1 |79 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|9 | TABLE SCAN |t2 |1 |39 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t3 |1 |39 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 = 100]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access(nil) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([t2.c1 = 100]), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([t3.c1 = 100]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |244 | +|1 | SUBPLAN FILTER | |8 |236 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |198 | +|4 | SUBPLAN FILTER | |1 |198 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | HASH OUTER JOIN| |1 |81 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | TABLE SCAN |t3 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([NULL]), filter([? = t3.c1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter([t2.c1 = 100]), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |DELETE | |1 |155 | +|1 | SUBPLAN FILTER | |1 |154 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |116 | +|4 | NESTED-LOOP ANTI JOIN | |1 |116 | +|5 | TABLE SCAN |t1 |2 |36 | +|6 | MATERIAL | |1 |79 | +|7 | SUBPLAN SCAN |VIEW1|1 |79 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|9 | TABLE SCAN |t2 |1 |39 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t3 |1 |39 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 = 100]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access(nil) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([t2.c1 = 100]), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([t3.c1 = 100]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 where not exists (select null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |237 | +|1 | SUBPLAN FILTER | |1 |236 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |198 | +|4 | SUBPLAN FILTER | |1 |198 | +|5 | TABLE SCAN |t1 |2 |37 | +|6 | HASH OUTER JOIN| |1 |81 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | TABLE SCAN |t3 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([NULL]), filter([? = t3.c1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter([t2.c1 = 100]), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 where not exists (select /*+NO_REWRITE*/null from t2 left join t3 on t2.c1=t3.c1 where t1.c1=t3.c1 and t2.c1=100) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |8 |121 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | MATERIAL | |1 |80 | +|3 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|4 | TABLE SCAN |t3 |1 |39 | +|5 | MATERIAL | |1 |40 | +|6 | TABLE SCAN |t2 |1 |40 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t2.c2], [t3.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2], [t3.c2]), filter(nil) + 3 - output([t2.c2], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t3.c2]), filter([t3.c1 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t2.c2]), filter(nil) + 6 - output([t2.c2]), filter([t2.c1 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + +select t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1; ++------+------+------+ +| c2 | c2 | c2 | ++------+------+------+ +| 1 | 1 | 1 | +| 1 | 1 | 1 | +| 1 | NULL | NULL | +| 2 | NULL | NULL | +| 2 | NULL | NULL | +| 2 | NULL | NULL | +| 5 | NULL | NULL | +| 5 | NULL | NULL | +| 10 | NULL | NULL | ++------+------+------+ +EXPLAIN select /*+NO_REWRITE*/t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |8 |119 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | MATERIAL | |1 |82 | +|3 | HASH OUTER JOIN | |1 |81 | +|4 | TABLE SCAN |t2 |1 |40 | +|5 | TABLE SCAN |t3 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t2.c2], [t3.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c2], [t3.c2]), filter(nil) + 3 - output([t2.c2], [t3.c2]), filter([t3.c1 = 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2]), filter([t2.c1 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select /*+NO_REWRITE*/t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1; ++------+------+------+ +| c2 | c2 | c2 | ++------+------+------+ +| 1 | 1 | 1 | +| 1 | 1 | 1 | +| 1 | NULL | NULL | +| 2 | NULL | NULL | +| 2 | NULL | NULL | +| 2 | NULL | NULL | +| 5 | NULL | NULL | +| 5 | NULL | NULL | +| 10 | NULL | NULL | ++------+------+------+ +EXPLAIN insert into t14_temp (select t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1); +Query Plan +======================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------- +|0 |INSERT | |8 |123 | +|1 | SUBPLAN SCAN |VIEW1|8 |122 | +|2 | NESTED-LOOP OUTER JOIN | |8 |121 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | MATERIAL | |1 |80 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|6 | TABLE SCAN |t3 |1 |39 | +|7 | MATERIAL | |1 |40 | +|8 | TABLE SCAN |t2 |1 |40 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t14_temp: ({t14_temp: (t14_temp.__pk_increment, t14_temp.a, t14_temp.b, t14_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.c2], [VIEW1.c2], [VIEW1.c2]), filter(nil), + access([VIEW1.c2], [VIEW1.c2], [VIEW1.c2]) + 2 - output([t1.c2], [t2.c2], [t3.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c2], [t3.c2]), filter(nil) + 5 - output([t2.c2], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([t3.c2]), filter([t3.c1 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 7 - output([t2.c2]), filter(nil) + 8 - output([t2.c2]), filter([t2.c1 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t14_temp (select t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1); + +rollback; +EXPLAIN insert into t14_temp (select /*+NO_REWRITE*/t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |8 |122 | +|1 | SUBPLAN SCAN |VIEW1|8 |121 | +|2 | NESTED-LOOP OUTER JOIN| |8 |119 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | MATERIAL | |1 |82 | +|5 | HASH OUTER JOIN | |1 |81 | +|6 | TABLE SCAN |t2 |1 |40 | +|7 | TABLE SCAN |t3 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t14_temp: ({t14_temp: (t14_temp.__pk_increment, t14_temp.a, t14_temp.b, t14_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.c2], [VIEW1.c2], [VIEW1.c2]), filter(nil), + access([VIEW1.c2], [VIEW1.c2], [VIEW1.c2]) + 2 - output([t1.c2], [t2.c2], [t3.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c2], [t3.c2]), filter(nil) + 5 - output([t2.c2], [t3.c2]), filter([t3.c1 = 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t2.c1], [t2.c2]), filter([t2.c1 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +insert into t14_temp (select /*+NO_REWRITE*/t1.c2, t2.c2, t3.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |UPDATE | |8 |163 | +|1 | SUBPLAN FILTER | |8 |155 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |116 | +|4 | NESTED-LOOP OUTER JOIN | |1 |116 | +|5 | SUBPLAN SCAN |VIEW1|1 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |1 |79 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|9 | TABLE SCAN |t2 |1 |39 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t3 |1 |39 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c2]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c2]), filter(nil), + conds([VIEW1.t1.c1 = 1]), nl_params_(nil) + 5 - output([VIEW1.t1.c1], [VIEW1.t1.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(1), offset(nil) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([t2.c1 = 1]), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([t3.c1 = 1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+NO_REWRITE*/t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |164 | +|1 | SUBPLAN FILTER | |8 |156 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |117 | +|4 | NESTED-LOOP OUTER JOIN| |1 |117 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |1 |81 | +|7 | HASH OUTER JOIN | |1 |81 | +|8 | TABLE SCAN |t2 |1 |39 | +|9 | TABLE SCAN |t3 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c2]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([t3.c1 = 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t2.c1]), filter([t2.c1 = 1]), + access([t2.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+NO_REWRITE*/t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |DELETE | |1 |155 | +|1 | SUBPLAN FILTER | |1 |154 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |116 | +|4 | NESTED-LOOP OUTER JOIN | |1 |116 | +|5 | SUBPLAN SCAN |VIEW1|1 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | MATERIAL | |1 |79 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|9 | TABLE SCAN |t2 |1 |39 | +|10| MATERIAL | |1 |39 | +|11| TABLE SCAN |t3 |1 |39 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c2]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c2]), filter(nil), + conds([VIEW1.t1.c1 = 1]), nl_params_(nil) + 5 - output([VIEW1.t1.c1], [VIEW1.t1.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(1), offset(nil) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter([t2.c1 = 1]), + access([t2.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([t3.c1 = 1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |156 | +|1 | SUBPLAN FILTER | |1 |155 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |117 | +|4 | NESTED-LOOP OUTER JOIN| |1 |117 | +|5 | TABLE SCAN |t1 |1 |36 | +|6 | MATERIAL | |1 |81 | +|7 | HASH OUTER JOIN | |1 |81 | +|8 | TABLE SCAN |t2 |1 |39 | +|9 | TABLE SCAN |t3 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c2]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter([t3.c1 = 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t2.c1]), filter([t2.c1 = 1]), + access([t2.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+NO_REWRITE*/t1.c2 from t1 left join (t2 left join t3 on t2.c1 = t3.c1) on t1.c1 = 1 and t2.c1 = 1 and t3.c1 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |8 |146 | +|1 | TABLE SCAN |t3 |8 |38 | +|2 | HASH OUTER JOIN | |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds([t2.c2 = 1]) + 1 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | NULL | NULL | +| 3 | 2 | 3 | 3 | NULL | NULL | +| 4 | 2 | 4 | 4 | NULL | NULL | +| 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |8 |146 | +|1 | TABLE SCAN |t3 |8 |38 | +|2 | HASH OUTER JOIN | |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds([t2.c2 = 1]) + 1 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | NULL | NULL | +| 3 | 2 | 3 | 3 | NULL | NULL | +| 4 | 2 | 4 | 4 | NULL | NULL | +| 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |148 | +|1 | SUBPLAN SCAN |VIEW1|8 |147 | +|2 | HASH RIGHT OUTER JOIN| |8 |146 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds([t2.c2 = 1]) + 3 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1); + +rollback; +EXPLAIN insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |148 | +|1 | SUBPLAN SCAN |VIEW1|8 |147 | +|2 | HASH RIGHT OUTER JOIN| |8 |146 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds([t2.c2 = 1]) + 3 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |167 | +|1 | SUBPLAN FILTER | |8 |159 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |121 | +|4 | HASH OUTER JOIN | |1 |120 | +|5 | HASH OUTER JOIN| |1 |79 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | TABLE SCAN |t3 |8 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds([t2.c2 = 1]) + 5 - output([VIEW1.t1.c1], [t2.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |177 | +|1 | SUBPLAN FILTER | |8 |169 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |130 | +|4 | HASH RIGHT OUTER JOIN| |1 |130 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH OUTER JOIN | |1 |83 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds([t2.c2 = 1]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |160 | +|1 | SUBPLAN FILTER | |1 |159 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |121 | +|4 | HASH OUTER JOIN | |1 |120 | +|5 | HASH OUTER JOIN| |1 |79 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | TABLE SCAN |t3 |8 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds([t2.c2 = 1]) + 5 - output([VIEW1.t1.c1], [t2.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |169 | +|1 | SUBPLAN FILTER | |1 |168 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |130 | +|4 | HASH RIGHT OUTER JOIN| |1 |130 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH OUTER JOIN | |1 |83 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds([t2.c2 = 1]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1 and t2.c2=1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |8 |124 | +|1 | HASH JOIN | |1 |82 | +|2 | TABLE SCAN |t3 |1 |39 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t1 |8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t3.c1], [t3.c2]), filter([t3.c2 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | NULL | NULL | NULL | NULL | +| 3 | 2 | NULL | NULL | NULL | NULL | +| 4 | 2 | NULL | NULL | NULL | NULL | +| 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |HASH RIGHT OUTER JOIN | |8 |136 | +|1 | HASH RIGHT OUTER JOIN| |2 |93 | +|2 | TABLE SCAN |t3 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | TABLE SCAN |t1 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter([t3.c2 = 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | NULL | NULL | NULL | NULL | +| 3 | 2 | NULL | NULL | NULL | NULL | +| 4 | 2 | NULL | NULL | NULL | NULL | +| 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |126 | +|1 | SUBPLAN SCAN |VIEW1|8 |125 | +|2 | HASH RIGHT OUTER JOIN| |8 |124 | +|3 | HASH JOIN | |1 |82 | +|4 | TABLE SCAN |t3 |1 |39 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t1 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1], [t3.c2]), filter([t3.c2 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select * from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1); + +rollback; +EXPLAIN insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |8 |138 | +|1 | SUBPLAN SCAN |VIEW1|8 |137 | +|2 | HASH RIGHT OUTER JOIN | |8 |136 | +|3 | HASH RIGHT OUTER JOIN| |2 |93 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter([t3.c2 = 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |166 | +|1 | SUBPLAN FILTER | |8 |158 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |120 | +|4 | HASH OUTER JOIN| |1 |120 | +|5 | SUBPLAN SCAN |VIEW1|1 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | HASH JOIN | |1 |81 | +|8 | TABLE SCAN |t3 |1 |39 | +|9 | TABLE SCAN |t2 |9 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 7 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1]), filter([t3.c2 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |177 | +|1 | SUBPLAN FILTER | |8 |169 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |131 | +|4 | HASH RIGHT OUTER JOIN| |1 |130 | +|5 | HASH OUTER JOIN | |2 |92 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t1 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter([t3.c2 = 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |159 | +|1 | SUBPLAN FILTER | |1 |158 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |120 | +|4 | HASH OUTER JOIN| |1 |120 | +|5 | SUBPLAN SCAN |VIEW1|1 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | HASH JOIN | |1 |81 | +|8 | TABLE SCAN |t3 |1 |39 | +|9 | TABLE SCAN |t2 |9 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 7 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1]), filter([t3.c2 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |170 | +|1 | SUBPLAN FILTER | |1 |169 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |131 | +|4 | HASH RIGHT OUTER JOIN| |1 |130 | +|5 | HASH OUTER JOIN | |2 |92 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t1 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter([t3.c2 = 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join t3 on t2.c1=t3.c1) on t1.c1=t3.c1 and t3.c2 = 1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |9 |173 | +|1 | HASH RIGHT OUTER JOIN| |9 |93 | +|2 | TABLE SCAN |t3 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | MATERIAL | |8 |41 | +|5 | TABLE SCAN |t1 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 1 | 1 | 1 | 1 | +| 2 | 2 | 1 | 1 | 1 | 1 | +| 3 | 2 | 1 | 1 | 1 | 1 | +| 3 | 2 | 1 | 1 | 1 | 1 | +| 4 | 2 | 1 | 1 | 1 | 1 | +| 4 | 2 | 1 | 1 | 1 | 1 | +| 5 | 5 | 1 | 1 | 1 | 1 | +| 5 | 5 | 1 | 1 | 1 | 1 | +| 10 | 10 | 1 | 1 | 1 | 1 | +| 10 | 10 | 1 | 1 | 1 | 1 | +| NULL | 1 | 1 | 1 | 1 | 1 | +| NULL | 1 | 1 | 1 | 1 | 1 | +| NULL | 5 | 1 | 1 | 1 | 1 | +| NULL | 5 | 1 | 1 | 1 | 1 | +| NULL | NULL | 2 | 2 | NULL | NULL | +| NULL | NULL | 3 | 3 | 3 | 3 | +| NULL | NULL | 4 | 4 | 4 | 4 | +| NULL | NULL | 6 | 6 | NULL | NULL | +| NULL | NULL | NULL | 2 | NULL | NULL | +| NULL | NULL | NULL | 6 | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +##不能消除,条件都处于右枝 +EXPLAIN select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |9 |173 | +|1 | HASH RIGHT OUTER JOIN| |9 |93 | +|2 | TABLE SCAN |t3 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | MATERIAL | |8 |41 | +|5 | TABLE SCAN |t1 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 1 | 1 | 1 | 1 | +| 2 | 2 | 1 | 1 | 1 | 1 | +| 3 | 2 | 1 | 1 | 1 | 1 | +| 3 | 2 | 1 | 1 | 1 | 1 | +| 4 | 2 | 1 | 1 | 1 | 1 | +| 4 | 2 | 1 | 1 | 1 | 1 | +| 5 | 5 | 1 | 1 | 1 | 1 | +| 5 | 5 | 1 | 1 | 1 | 1 | +| 10 | 10 | 1 | 1 | 1 | 1 | +| 10 | 10 | 1 | 1 | 1 | 1 | +| NULL | 1 | 1 | 1 | 1 | 1 | +| NULL | 1 | 1 | 1 | 1 | 1 | +| NULL | 5 | 1 | 1 | 1 | 1 | +| NULL | 5 | 1 | 1 | 1 | 1 | +| NULL | NULL | 2 | 2 | NULL | NULL | +| NULL | NULL | 3 | 3 | 3 | 3 | +| NULL | NULL | 4 | 4 | 4 | 4 | +| NULL | NULL | 6 | 6 | NULL | NULL | +| NULL | NULL | NULL | 2 | NULL | NULL | +| NULL | NULL | NULL | 6 | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN insert into t5_temp (select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |9 |176 | +|1 | SUBPLAN SCAN |VIEW1|9 |175 | +|2 | NESTED-LOOP OUTER JOIN| |9 |173 | +|3 | HASH RIGHT OUTER JOIN| |9 |93 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MATERIAL | |8 |41 | +|7 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1); + +rollback; +EXPLAIN insert into t5_temp (select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |9 |176 | +|1 | SUBPLAN SCAN |VIEW1|9 |175 | +|2 | NESTED-LOOP OUTER JOIN| |9 |173 | +|3 | HASH RIGHT OUTER JOIN| |9 |93 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MATERIAL | |8 |41 | +|7 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |168 | +|1 | SUBPLAN FILTER | |8 |160 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |122 | +|4 | NESTED-LOOP OUTER JOIN| |1 |122 | +|5 | HASH OUTER JOIN | |1 |78 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | MATERIAL | |8 |39 | +|10| TABLE SCAN |t1 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([VIEW1.t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 5 - output([VIEW1.t2.c1], [t3.c1]), filter(nil), + equal_conds([VIEW1.t2.c1 = t3.c1]), other_conds(nil) + 6 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |173 | +|1 | SUBPLAN FILTER | |8 |165 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |126 | +|4 | NESTED-LOOP OUTER JOIN| |1 |126 | +|5 | HASH RIGHT OUTER JOIN| |1 |83 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 5 - output([t2.c1], [t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |161 | +|1 | SUBPLAN FILTER | |1 |160 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |122 | +|4 | NESTED-LOOP OUTER JOIN| |1 |122 | +|5 | HASH OUTER JOIN | |1 |78 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | MATERIAL | |8 |39 | +|10| TABLE SCAN |t1 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([VIEW1.t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 5 - output([VIEW1.t2.c1], [t3.c1]), filter(nil), + equal_conds([VIEW1.t2.c1 = t3.c1]), other_conds(nil) + 6 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |166 | +|1 | SUBPLAN FILTER | |1 |165 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |126 | +|4 | NESTED-LOOP OUTER JOIN| |1 |126 | +|5 | HASH RIGHT OUTER JOIN| |1 |83 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t2 |1 |36 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 5 - output([t2.c1], [t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1 |119 | +|1 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|2 | TABLE SCAN |t2 |1 |40 | +|3 | MATERIAL | |1 |40 | +|4 | TABLE SCAN |t1 |1 |39 | +|5 | MATERIAL | |1 |40 | +|6 | TABLE SCAN |t3 |1 |39 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t2.c1], [t2.c2]), filter([t2.c1 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 3 - output([t1.c1], [t1.c2]), filter(nil) + 4 - output([t1.c1], [t1.c2]), filter([t1.c1 > 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2]), filter(nil) + 6 - output([t3.c1], [t3.c2]), filter([t3.c1 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + +select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 2 | 2 | 1 | 1 | 1 | 1 | +| 2 | 2 | 1 | 1 | 1 | 1 | +| 3 | 2 | 1 | 1 | 1 | 1 | +| 3 | 2 | 1 | 1 | 1 | 1 | +| 4 | 2 | 1 | 1 | 1 | 1 | +| 4 | 2 | 1 | 1 | 1 | 1 | +| 5 | 5 | 1 | 1 | 1 | 1 | +| 5 | 5 | 1 | 1 | 1 | 1 | +| 10 | 10 | 1 | 1 | 1 | 1 | +| 10 | 10 | 1 | 1 | 1 | 1 | ++------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |173 | +|1 | HASH RIGHT OUTER JOIN| |9 |93 | +|2 | TABLE SCAN |t3 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | MATERIAL | |8 |41 | +|5 | TABLE SCAN |t1 |8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter([t1.c1 > 1]), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 1 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 2 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 2 | 2 | 1 | 1 | 1 | 1 | +| 2 | 2 | 1 | 1 | 1 | 1 | +| 3 | 2 | 1 | 1 | 1 | 1 | +| 3 | 2 | 1 | 1 | 1 | 1 | +| 4 | 2 | 1 | 1 | 1 | 1 | +| 4 | 2 | 1 | 1 | 1 | 1 | +| 5 | 5 | 1 | 1 | 1 | 1 | +| 5 | 5 | 1 | 1 | 1 | 1 | +| 10 | 10 | 1 | 1 | 1 | 1 | +| 10 | 10 | 1 | 1 | 1 | 1 | ++------+------+------+------+------+------+ +EXPLAIN insert into t5_temp (select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |1 |119 | +|1 | SUBPLAN SCAN |VIEW1|1 |119 | +|2 | NESTED-LOOP JOIN CARTESIAN | |1 |119 | +|3 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|4 | TABLE SCAN |t2 |1 |40 | +|5 | MATERIAL | |1 |40 | +|6 | TABLE SCAN |t1 |1 |39 | +|7 | MATERIAL | |1 |40 | +|8 | TABLE SCAN |t3 |1 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([t2.c1], [t2.c2]), filter([t2.c1 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil) + 6 - output([t1.c1], [t1.c2]), filter([t1.c1 > 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil) + 8 - output([t3.c1], [t3.c2]), filter([t3.c1 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + +insert into t5_temp (select * from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1); + +rollback; +EXPLAIN insert into t5_temp (select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |174 | +|1 | SUBPLAN SCAN |VIEW1|1 |173 | +|2 | NESTED-LOOP OUTER JOIN| |1 |173 | +|3 | HASH RIGHT OUTER JOIN| |9 |93 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MATERIAL | |8 |41 | +|7 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter([t1.c1 > 1]), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into t5_temp (select /*+NO_REWRITE*/* from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |8 |165 | +|1 | SUBPLAN FILTER | |8 |157 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |118 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|6 | TABLE SCAN |t2 |1 |39 | +|7 | MATERIAL | |1 |39 | +|8 | TABLE SCAN |t1 |1 |39 | +|9 | MATERIAL | |1 |39 | +|10| TABLE SCAN |t3 |1 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter([t2.c1 = 1]), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil) + 8 - output([t1.c1]), filter([t1.c1 > 1]), + access([t1.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter([t3.c1 = 1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |216 | +|1 | SUBPLAN FILTER | |8 |208 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |169 | +|4 | NESTED-LOOP OUTER JOIN| |1 |169 | +|5 | HASH RIGHT OUTER JOIN| |9 |92 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c1 > 1]), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 5 - output([t2.c1], [t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |157 | +|1 | SUBPLAN FILTER | |1 |156 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |118 | +|4 | NESTED-LOOP JOIN CARTESIAN | |1 |118 | +|5 | NESTED-LOOP JOIN CARTESIAN| |1 |79 | +|6 | TABLE SCAN |t2 |1 |39 | +|7 | MATERIAL | |1 |39 | +|8 | TABLE SCAN |t1 |1 |39 | +|9 | MATERIAL | |1 |39 | +|10| TABLE SCAN |t3 |1 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter([t2.c1 = 1]), + access([t2.c1]), partitions(p0) + 7 - output([t1.c1]), filter(nil) + 8 - output([t1.c1]), filter([t1.c1 > 1]), + access([t1.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter([t3.c1 = 1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.1622776601683795 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |208 | +|1 | SUBPLAN FILTER | |1 |207 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |169 | +|4 | NESTED-LOOP OUTER JOIN| |1 |169 | +|5 | HASH RIGHT OUTER JOIN| |9 |92 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | MATERIAL | |8 |39 | +|9 | TABLE SCAN |t1 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t1.c1 > 1]), + conds([t2.c1 = 1], [t3.c1 = 1]), nl_params_(nil) + 5 - output([t2.c1], [t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 right join (t2 left join t3 on t2.c1=t3.c1) on t2.c1=1 and t3.c1=1 where t1.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.1622776601683795 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |8 |136 | +|1 | TABLE SCAN |t3 |1 |39 | +|2 | HASH OUTER JOIN | |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c1 > 1]) + 1 - output([t3.c1], [t3.c2]), filter([t3.c1 > 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | NULL | NULL | +| 1 | 1 | 1 | 1 | NULL | NULL | +| 2 | 2 | 2 | 2 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |8 |146 | +|1 | TABLE SCAN |t3 |8 |38 | +|2 | HASH OUTER JOIN | |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c1 > 1]) + 1 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | NULL | NULL | +| 1 | 1 | 1 | 1 | NULL | NULL | +| 2 | 2 | 2 | 2 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |138 | +|1 | SUBPLAN SCAN |VIEW1|8 |137 | +|2 | HASH RIGHT OUTER JOIN| |8 |136 | +|3 | TABLE SCAN |t3 |1 |39 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c1 > 1]) + 3 - output([t3.c1], [t3.c2]), filter([t3.c1 > 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1); + +rollback; +EXPLAIN insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |148 | +|1 | SUBPLAN SCAN |VIEW1|8 |147 | +|2 | HASH RIGHT OUTER JOIN| |8 |146 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c1 > 1]) + 3 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |165 | +|1 | SUBPLAN FILTER | |8 |157 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |119 | +|4 | HASH RIGHT OUTER JOIN| |1 |118 | +|5 | TABLE SCAN |t3 |1 |39 | +|6 | HASH OUTER JOIN | |1 |79 | +|7 | SUBPLAN SCAN |VIEW1|1 |37 | +|8 | TABLE SCAN |t1 |1 |36 | +|9 | TABLE SCAN |t2 |9 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c1 > 1]) + 5 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 6 - output([VIEW1.t1.c1], [t2.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 7 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |177 | +|1 | SUBPLAN FILTER | |8 |169 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |130 | +|4 | HASH RIGHT OUTER JOIN| |1 |130 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH OUTER JOIN | |1 |83 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c1 > 1]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |158 | +|1 | SUBPLAN FILTER | |1 |157 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |119 | +|4 | HASH RIGHT OUTER JOIN| |1 |118 | +|5 | TABLE SCAN |t3 |1 |39 | +|6 | HASH OUTER JOIN | |1 |79 | +|7 | SUBPLAN SCAN |VIEW1|1 |37 | +|8 | TABLE SCAN |t1 |1 |36 | +|9 | TABLE SCAN |t2 |9 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c1 > 1]) + 5 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 6 - output([VIEW1.t1.c1], [t2.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 7 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |169 | +|1 | SUBPLAN FILTER | |1 |168 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |130 | +|4 | HASH RIGHT OUTER JOIN| |1 |130 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH OUTER JOIN | |1 |83 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t2 |2 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds([t2.c1 > 1]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t3 on t2.c1=t3.c1 and t2.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |HASH JOIN | |8 |179 | +|1 | TABLE SCAN |t4 |8 |38 | +|2 | NESTED-LOOP JOIN CARTESIAN| |9 |124 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | MATERIAL | |1 |80 | +|5 | MERGE OUTER JOIN | |1 |79 | +|6 | TABLE SCAN |t1 |1 |39 | +|7 | TABLE SCAN |t3 |1 |39 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter([t1.c1 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter([t3.c1 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | +| 1 | 1 | 3 | 3 | 1 | 1 | 3 | 3 | +| 1 | 1 | 4 | 4 | 1 | 1 | 4 | 4 | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |HASH RIGHT OUTER JOIN | |8 |221 | +|1 | TABLE SCAN |t3 |8 |38 | +|2 | HASH JOIN | |8 |166 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | NESTED-LOOP OUTER JOIN| |9 |110 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | MATERIAL | |9 |41 | +|7 | TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | +| 1 | 1 | 3 | 3 | 1 | 1 | 3 | 3 | +| 1 | 1 | 4 | 4 | 1 | 1 | 4 | 4 | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |8 |181 | +|1 | SUBPLAN SCAN |VIEW1|8 |180 | +|2 | HASH JOIN | |8 |179 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | NESTED-LOOP JOIN CARTESIAN| |9 |124 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MATERIAL | |1 |80 | +|7 | MERGE OUTER JOIN | |1 |79 | +|8 | TABLE SCAN |t1 |1 |39 | +|9 | TABLE SCAN |t3 |1 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter([t1.c1 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t3.c1], [t3.c2]), filter([t3.c1 = 1]), + access([t3.c1], [t3.c2]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |8 |223 | +|1 | SUBPLAN SCAN |VIEW1|8 |222 | +|2 | HASH RIGHT OUTER JOIN | |8 |221 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | HASH JOIN | |8 |166 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP OUTER JOIN| |9 |110 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | MATERIAL | |9 |41 | +|9 | TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |8 |209 | +|1 | SUBPLAN FILTER | |8 |201 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |163 | +|4 | HASH JOIN | |1 |163 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP JOIN CARTESIAN| |2 |116 | +|7 | TABLE SCAN |t2 |2 |36 | +|8 | MATERIAL | |1 |79 | +|9 | MERGE OUTER JOIN | |1 |78 | +|10| TABLE SCAN |t1 |1 |39 | +|11| TABLE SCAN |t3 |1 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 10 - output([t1.c1]), filter([t1.c1 = 1]), + access([t1.c1]), partitions(p0) + 11 - output([t3.c1]), filter([t3.c1 = 1]), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |220 | +|1 | SUBPLAN FILTER | |8 |212 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |173 | +|4 | HASH JOIN | |1 |173 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP OUTER JOIN| |2 |126 | +|7 | HASH OUTER JOIN | |1 |83 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t3 |1 |36 | +|10| MATERIAL | |9 |40 | +|11| TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |202 | +|1 | SUBPLAN FILTER | |1 |201 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |163 | +|4 | HASH JOIN | |1 |163 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP JOIN CARTESIAN| |2 |116 | +|7 | TABLE SCAN |t2 |2 |36 | +|8 | MATERIAL | |1 |79 | +|9 | MERGE OUTER JOIN | |1 |78 | +|10| TABLE SCAN |t1 |1 |39 | +|11| TABLE SCAN |t3 |1 |39 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 10 - output([t1.c1]), filter([t1.c1 = 1]), + access([t1.c1]), partitions(p0) + 11 - output([t3.c1]), filter([t3.c1 = 1]), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |212 | +|1 | SUBPLAN FILTER | |1 |211 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |173 | +|4 | HASH JOIN | |1 |173 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP OUTER JOIN| |2 |126 | +|7 | HASH OUTER JOIN | |1 |83 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t3 |1 |36 | +|10| MATERIAL | |9 |40 | +|11| TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 inner join t4 on t4.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |HASH RIGHT OUTER JOIN | |9 |221 | +|1 | TABLE SCAN |t4 |8 |38 | +|2 | NESTED-LOOP OUTER JOIN| |9 |165 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | MATERIAL | |9 |41 | +|7 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | +| 1 | 1 | 3 | 3 | 1 | 1 | 3 | 3 | +| 1 | 1 | 4 | 4 | 1 | 1 | 4 | 4 | +| 1 | 1 | 6 | 6 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | 2 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | 6 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | NULL | 1 | 1 | NULL | NULL | +| 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | +| 3 | 2 | NULL | NULL | 3 | 3 | NULL | NULL | +| 4 | 2 | NULL | NULL | 4 | 4 | NULL | NULL | +| 5 | 5 | NULL | NULL | 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |HASH RIGHT OUTER JOIN | |9 |221 | +|1 | TABLE SCAN |t4 |8 |38 | +|2 | NESTED-LOOP OUTER JOIN| |9 |165 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | MATERIAL | |9 |41 | +|7 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | +| 1 | 1 | 3 | 3 | 1 | 1 | 3 | 3 | +| 1 | 1 | 4 | 4 | 1 | 1 | 4 | 4 | +| 1 | 1 | 6 | 6 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | 2 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | 6 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | NULL | 1 | 1 | NULL | NULL | +| 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | +| 3 | 2 | NULL | NULL | 3 | 3 | NULL | NULL | +| 4 | 2 | NULL | NULL | 4 | 4 | NULL | NULL | +| 5 | 5 | NULL | NULL | 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |9 |223 | +|1 | SUBPLAN SCAN |VIEW1|9 |222 | +|2 | HASH RIGHT OUTER JOIN | |9 |221 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | NESTED-LOOP OUTER JOIN| |9 |165 | +|5 | HASH OUTER JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | MATERIAL | |9 |41 | +|9 | TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |9 |223 | +|1 | SUBPLAN SCAN |VIEW1|9 |222 | +|2 | HASH RIGHT OUTER JOIN | |9 |221 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | NESTED-LOOP OUTER JOIN| |9 |165 | +|5 | HASH OUTER JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | MATERIAL | |9 |41 | +|9 | TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |8 |207 | +|1 | SUBPLAN FILTER | |8 |199 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |161 | +|4 | HASH RIGHT OUTER JOIN | |1 |161 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP OUTER JOIN| |1 |114 | +|7 | HASH OUTER JOIN | |1 |74 | +|8 | SUBPLAN SCAN |VIEW1|1 |37 | +|9 | TABLE SCAN |t1 |1 |36 | +|10| TABLE SCAN |t3 |1 |36 | +|11| MATERIAL | |9 |40 | +|12| TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([VIEW1.t1.c1], [t2.c1]), filter(nil), + conds([VIEW1.t1.c1 = 1]), nl_params_(nil) + 7 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 8 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |219 | +|1 | SUBPLAN FILTER | |8 |211 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |173 | +|4 | HASH RIGHT OUTER JOIN | |1 |172 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP OUTER JOIN| |1 |126 | +|7 | HASH OUTER JOIN | |1 |83 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t3 |1 |36 | +|10| MATERIAL | |9 |40 | +|11| TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |200 | +|1 | SUBPLAN FILTER | |1 |199 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |161 | +|4 | HASH RIGHT OUTER JOIN | |1 |161 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP OUTER JOIN| |1 |114 | +|7 | HASH OUTER JOIN | |1 |74 | +|8 | SUBPLAN SCAN |VIEW1|1 |37 | +|9 | TABLE SCAN |t1 |1 |36 | +|10| TABLE SCAN |t3 |1 |36 | +|11| MATERIAL | |9 |40 | +|12| TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([VIEW1.t1.c1], [t2.c1]), filter(nil), + conds([VIEW1.t1.c1 = 1]), nl_params_(nil) + 7 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 8 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |212 | +|1 | SUBPLAN FILTER | |1 |211 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |173 | +|4 | HASH RIGHT OUTER JOIN | |1 |172 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | NESTED-LOOP OUTER JOIN| |1 |126 | +|7 | HASH OUTER JOIN | |1 |83 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t3 |1 |36 | +|10| MATERIAL | |9 |40 | +|11| TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t2.c1]), other_conds(nil) + 5 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 6 - output([t1.c1], [t2.c1]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 7 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t4.c1=t2.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |8 |203 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | MERGE JOIN | |8 |151 | +|4 | MERGE JOIN | |8 |99 | +|5 | SORT | |8 |46 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | SORT | |9 |47 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | SORT | |8 |46 | +|10| TABLE SCAN |t4 |8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 6 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 10 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |HASH OUTER JOIN | |9 |205 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | HASH RIGHT OUTER JOIN | |9 |149 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | HASH RIGHT OUTER JOIN| |9 |93 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |8 |205 | +|1 | SUBPLAN SCAN |VIEW1|8 |204 | +|2 | MERGE OUTER JOIN| |8 |203 | +|3 | SORT | |8 |46 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | MERGE JOIN | |8 |151 | +|6 | MERGE JOIN | |8 |99 | +|7 | SORT | |8 |46 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | SORT | |9 |47 | +|10| TABLE SCAN |t2 |9 |38 | +|11| SORT | |8 |46 | +|12| TABLE SCAN |t4 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 11 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 12 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |9 |208 | +|1 | SUBPLAN SCAN |VIEW1|9 |206 | +|2 | HASH OUTER JOIN | |9 |205 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | HASH RIGHT OUTER JOIN | |9 |149 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | HASH RIGHT OUTER JOIN| |9 |93 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |231 | +|1 | SUBPLAN FILTER | |8 |223 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |184 | +|4 | MERGE OUTER JOIN| |1 |184 | +|5 | SORT | |1 |37 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MERGE JOIN | |8 |146 | +|9 | MERGE JOIN | |8 |94 | +|10| SORT | |8 |44 | +|11| TABLE SCAN |t3 |8 |38 | +|12| SORT | |8 |44 | +|13| TABLE SCAN |t4 |8 |38 | +|14| SORT | |9 |45 | +|15| TABLE SCAN |t2 |9 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t4.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), sort_keys([VIEW1.t1.c1, ASC]) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t4.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t4.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 14 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 15 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |225 | +|1 | SUBPLAN FILTER | |8 |217 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |178 | +|4 | HASH OUTER JOIN | |1 |178 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | HASH OUTER JOIN | |1 |131 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | HASH OUTER JOIN| |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t4.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t4.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |184 | +|4 | MERGE OUTER JOIN| |1 |184 | +|5 | SORT | |1 |37 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MERGE JOIN | |8 |146 | +|9 | MERGE JOIN | |8 |94 | +|10| SORT | |8 |44 | +|11| TABLE SCAN |t3 |8 |38 | +|12| SORT | |8 |44 | +|13| TABLE SCAN |t4 |8 |38 | +|14| SORT | |9 |45 | +|15| TABLE SCAN |t2 |9 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t4.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), sort_keys([VIEW1.t1.c1, ASC]) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t4.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t4.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 14 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 15 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |217 | +|1 | SUBPLAN FILTER | |1 |216 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |178 | +|4 | HASH OUTER JOIN | |1 |178 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | HASH OUTER JOIN | |1 |131 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | HASH OUTER JOIN| |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t4.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t4.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN | |8 |203 | +|1 | SORT | |8 |46 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | MERGE OUTER JOIN| |8 |151 | +|4 | MERGE JOIN | |8 |99 | +|5 | SORT | |9 |47 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | SORT | |8 |46 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | SORT | |8 |46 | +|10| TABLE SCAN |t4 |8 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 10 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |HASH RIGHT OUTER JOIN | |9 |205 | +|1 | TABLE SCAN |t4 |8 |38 | +|2 | HASH OUTER JOIN | |9 |149 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | HASH RIGHT OUTER JOIN| |9 |93 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |8 |205 | +|1 | SUBPLAN SCAN |VIEW1|8 |204 | +|2 | MERGE OUTER JOIN | |8 |203 | +|3 | SORT | |8 |46 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | MERGE OUTER JOIN| |8 |151 | +|6 | MERGE JOIN | |8 |99 | +|7 | SORT | |9 |47 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | SORT | |8 |46 | +|10| TABLE SCAN |t3 |8 |38 | +|11| SORT | |8 |46 | +|12| TABLE SCAN |t4 |8 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 10 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 11 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 12 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |9 |208 | +|1 | SUBPLAN SCAN |VIEW1|9 |206 | +|2 | HASH RIGHT OUTER JOIN | |9 |205 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | HASH OUTER JOIN | |9 |149 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | HASH RIGHT OUTER JOIN| |9 |93 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |UPDATE | |8 |231 | +|1 | SUBPLAN FILTER | |8 |223 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |184 | +|4 | MERGE OUTER JOIN | |1 |184 | +|5 | SORT | |1 |37 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MERGE JOIN | |8 |146 | +|9 | MERGE OUTER JOIN| |8 |94 | +|10| SORT | |8 |44 | +|11| TABLE SCAN |t3 |8 |38 | +|12| SORT | |8 |44 | +|13| TABLE SCAN |t4 |8 |38 | +|14| SORT | |9 |45 | +|15| TABLE SCAN |t2 |9 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), sort_keys([VIEW1.t1.c1, ASC]) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 14 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 15 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |225 | +|1 | SUBPLAN FILTER | |8 |217 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |178 | +|4 | HASH OUTER JOIN | |1 |178 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | HASH OUTER JOIN | |1 |131 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | HASH OUTER JOIN| |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |DELETE | |1 |223 | +|1 | SUBPLAN FILTER | |1 |222 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |184 | +|4 | MERGE OUTER JOIN | |1 |184 | +|5 | SORT | |1 |37 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | MERGE JOIN | |8 |146 | +|9 | MERGE OUTER JOIN| |8 |94 | +|10| SORT | |8 |44 | +|11| TABLE SCAN |t3 |8 |38 | +|12| SORT | |8 |44 | +|13| TABLE SCAN |t4 |8 |38 | +|14| SORT | |9 |45 | +|15| TABLE SCAN |t2 |9 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), sort_keys([VIEW1.t1.c1, ASC]) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 11 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 14 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 15 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |217 | +|1 | SUBPLAN FILTER | |1 |216 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |178 | +|4 | HASH OUTER JOIN | |1 |178 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | HASH OUTER JOIN | |1 |131 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | HASH OUTER JOIN| |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t1.c1=t3.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP OUTER JOIN | |6 |169 | +|1 | NESTED-LOOP OUTER JOIN| |1 |123 | +|2 | HASH JOIN | |1 |80 | +|3 | TABLE SCAN |t3 |1 |39 | +|4 | TABLE SCAN |t1 |1 |39 | +|5 | MATERIAL | |8 |41 | +|6 | TABLE SCAN |t4 |8 |38 | +|7 | MATERIAL | |9 |41 | +|8 | TABLE SCAN |t2 |9 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t3.c1], [t3.c2]), filter([t3.c1 > 0]), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter([t1.c1 > 0]), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t4.c1], [t4.c2]), filter(nil) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | +| 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | +| 1 | 1 | 2 | 2 | 1 | 1 | NULL | NULL | +| 1 | 1 | 3 | 3 | 1 | 1 | NULL | NULL | +| 1 | 1 | 4 | 4 | 1 | 1 | NULL | NULL | +| 1 | 1 | 6 | 6 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | 2 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | 6 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | NULL | 1 | 1 | NULL | NULL | +| 3 | 2 | NULL | NULL | 3 | 3 | 1 | 1 | +| 3 | 2 | NULL | NULL | 3 | 3 | 2 | 2 | +| 3 | 2 | NULL | NULL | 3 | 3 | 3 | 3 | +| 3 | 2 | NULL | NULL | 3 | 3 | 4 | 4 | +| 3 | 2 | NULL | NULL | 3 | 3 | 8 | 8 | +| 3 | 2 | NULL | NULL | 3 | 3 | 8 | 8 | +| 3 | 2 | NULL | NULL | 3 | 3 | NULL | 4 | +| 3 | 2 | NULL | NULL | 3 | 3 | NULL | 8 | +| 4 | 2 | NULL | NULL | 4 | 4 | 1 | 1 | +| 4 | 2 | NULL | NULL | 4 | 4 | 2 | 2 | +| 4 | 2 | NULL | NULL | 4 | 4 | 3 | 3 | +| 4 | 2 | NULL | NULL | 4 | 4 | 4 | 4 | +| 4 | 2 | NULL | NULL | 4 | 4 | 8 | 8 | +| 4 | 2 | NULL | NULL | 4 | 4 | 8 | 8 | +| 4 | 2 | NULL | NULL | 4 | 4 | NULL | 4 | +| 4 | 2 | NULL | NULL | 4 | 4 | NULL | 8 | +| 5 | 5 | NULL | NULL | 5 | 5 | 1 | 1 | +| 5 | 5 | NULL | NULL | 5 | 5 | 2 | 2 | +| 5 | 5 | NULL | NULL | 5 | 5 | 3 | 3 | +| 5 | 5 | NULL | NULL | 5 | 5 | 4 | 4 | +| 5 | 5 | NULL | NULL | 5 | 5 | 8 | 8 | +| 5 | 5 | NULL | NULL | 5 | 5 | 8 | 8 | +| 5 | 5 | NULL | NULL | 5 | 5 | NULL | 4 | +| 5 | 5 | NULL | NULL | 5 | 5 | NULL | 8 | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP OUTER JOIN | |1 |210 | +|1 | NESTED-LOOP OUTER JOIN| |1 |165 | +|2 | HASH OUTER JOIN | |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | MATERIAL | |9 |41 | +|6 | TABLE SCAN |t2 |9 |38 | +|7 | MATERIAL | |8 |41 | +|8 | TABLE SCAN |t4 |8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter([t3.c1 > 0]), + conds([t1.c1 = 1]), nl_params_(nil) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t4.c1], [t4.c2]), filter(nil) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | +| 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | +| 1 | 1 | 2 | 2 | 1 | 1 | NULL | NULL | +| 1 | 1 | 3 | 3 | 1 | 1 | NULL | NULL | +| 1 | 1 | 4 | 4 | 1 | 1 | NULL | NULL | +| 1 | 1 | 6 | 6 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | 2 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | 6 | 1 | 1 | NULL | NULL | +| 1 | 1 | NULL | NULL | 1 | 1 | NULL | NULL | +| 3 | 2 | NULL | NULL | 3 | 3 | 1 | 1 | +| 3 | 2 | NULL | NULL | 3 | 3 | 2 | 2 | +| 3 | 2 | NULL | NULL | 3 | 3 | 3 | 3 | +| 3 | 2 | NULL | NULL | 3 | 3 | 4 | 4 | +| 3 | 2 | NULL | NULL | 3 | 3 | 8 | 8 | +| 3 | 2 | NULL | NULL | 3 | 3 | 8 | 8 | +| 3 | 2 | NULL | NULL | 3 | 3 | NULL | 4 | +| 3 | 2 | NULL | NULL | 3 | 3 | NULL | 8 | +| 4 | 2 | NULL | NULL | 4 | 4 | 1 | 1 | +| 4 | 2 | NULL | NULL | 4 | 4 | 2 | 2 | +| 4 | 2 | NULL | NULL | 4 | 4 | 3 | 3 | +| 4 | 2 | NULL | NULL | 4 | 4 | 4 | 4 | +| 4 | 2 | NULL | NULL | 4 | 4 | 8 | 8 | +| 4 | 2 | NULL | NULL | 4 | 4 | 8 | 8 | +| 4 | 2 | NULL | NULL | 4 | 4 | NULL | 4 | +| 4 | 2 | NULL | NULL | 4 | 4 | NULL | 8 | +| 5 | 5 | NULL | NULL | 5 | 5 | 1 | 1 | +| 5 | 5 | NULL | NULL | 5 | 5 | 2 | 2 | +| 5 | 5 | NULL | NULL | 5 | 5 | 3 | 3 | +| 5 | 5 | NULL | NULL | 5 | 5 | 4 | 4 | +| 5 | 5 | NULL | NULL | 5 | 5 | 8 | 8 | +| 5 | 5 | NULL | NULL | 5 | 5 | 8 | 8 | +| 5 | 5 | NULL | NULL | 5 | 5 | NULL | 4 | +| 5 | 5 | NULL | NULL | 5 | 5 | NULL | 8 | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |6 |170 | +|1 | SUBPLAN SCAN |VIEW1|6 |170 | +|2 | NESTED-LOOP OUTER JOIN | |6 |169 | +|3 | NESTED-LOOP OUTER JOIN| |1 |123 | +|4 | HASH JOIN | |1 |80 | +|5 | TABLE SCAN |t3 |1 |39 | +|6 | TABLE SCAN |t1 |1 |39 | +|7 | MATERIAL | |8 |41 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | MATERIAL | |9 |41 | +|10| TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2]), filter([t3.c1 > 0]), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2]), filter([t1.c1 > 0]), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t4.c1], [t4.c2]), filter(nil) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil) + 10 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select * from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |1 |210 | +|1 | SUBPLAN SCAN |VIEW1|1 |210 | +|2 | NESTED-LOOP OUTER JOIN | |1 |210 | +|3 | NESTED-LOOP OUTER JOIN| |1 |165 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | MATERIAL | |9 |41 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | MATERIAL | |8 |41 | +|10| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter([t3.c1 > 0]), + conds([t1.c1 = 1]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t4.c1], [t4.c2]), filter(nil) + 10 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |204 | +|1 | SUBPLAN FILTER | |8 |196 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |157 | +|4 | NESTED-LOOP OUTER JOIN | |1 |157 | +|5 | NESTED-LOOP OUTER JOIN| |1 |118 | +|6 | MERGE JOIN | |1 |79 | +|7 | SORT | |1 |39 | +|8 | TABLE SCAN |t3 |1 |39 | +|9 | SORT | |1 |39 | +|10| TABLE SCAN |t1 |1 |39 | +|11| MATERIAL | |8 |39 | +|12| TABLE SCAN |t4 |8 |38 | +|13| MATERIAL | |9 |39 | +|14| TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 6 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 8 - output([t3.c1]), filter([t3.c1 > 0]), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 10 - output([t1.c1]), filter([t1.c1 > 0]), + access([t1.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter(nil), + access([t4.__pk_increment]), partitions(p0) + 13 - output([1]), filter(nil) + 14 - output([1]), filter(nil), + access([t2.__pk_increment]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |250 | +|1 | SUBPLAN FILTER | |8 |242 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |203 | +|4 | NESTED-LOOP OUTER JOIN | |1 |203 | +|5 | NESTED-LOOP OUTER JOIN| |1 |161 | +|6 | HASH OUTER JOIN | |8 |91 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | MATERIAL | |9 |39 | +|10| TABLE SCAN |t2 |9 |38 | +|11| MATERIAL | |8 |39 | +|12| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1]), filter([t3.c1 > 0]), + conds([t1.c1 = 1]), nl_params_(nil) + 6 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([t2.__pk_increment]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter(nil), + access([t4.__pk_increment]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |197 | +|1 | SUBPLAN FILTER | |1 |196 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |157 | +|4 | NESTED-LOOP OUTER JOIN | |1 |157 | +|5 | NESTED-LOOP OUTER JOIN| |1 |118 | +|6 | MERGE JOIN | |1 |79 | +|7 | SORT | |1 |39 | +|8 | TABLE SCAN |t3 |1 |39 | +|9 | SORT | |1 |39 | +|10| TABLE SCAN |t1 |1 |39 | +|11| MATERIAL | |8 |39 | +|12| TABLE SCAN |t4 |8 |38 | +|13| MATERIAL | |9 |39 | +|14| TABLE SCAN |t2 |9 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 = 1]), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + conds([t1.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 6 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 8 - output([t3.c1]), filter([t3.c1 > 0]), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 10 - output([t1.c1]), filter([t1.c1 > 0]), + access([t1.c1]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter(nil), + access([t4.__pk_increment]), partitions(p0) + 13 - output([1]), filter(nil) + 14 - output([1]), filter(nil), + access([t2.__pk_increment]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |242 | +|1 | SUBPLAN FILTER | |1 |241 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |203 | +|4 | NESTED-LOOP OUTER JOIN | |1 |203 | +|5 | NESTED-LOOP OUTER JOIN| |1 |161 | +|6 | HASH OUTER JOIN | |8 |91 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | MATERIAL | |9 |39 | +|10| TABLE SCAN |t2 |9 |38 | +|11| MATERIAL | |8 |39 | +|12| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds([t1.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 5 - output([t1.c1], [t3.c1]), filter([t3.c1 > 0]), + conds([t1.c1 = 1]), nl_params_(nil) + 6 - output([t1.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([1]), filter(nil) + 10 - output([1]), filter(nil), + access([t2.__pk_increment]), partitions(p0) + 11 - output([1]), filter(nil) + 12 - output([1]), filter(nil), + access([t4.__pk_increment]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=1 left join t3 on t1.c1=t3.c1 left join t4 on t1.c1>1 and t3.c1>1 where t3.c1>0 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |6 |163 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | MATERIAL | |1 |121 | +|3 | MERGE OUTER JOIN | |1 |120 | +|4 | MERGE JOIN | |1 |80 | +|5 | SORT | |1 |40 | +|6 | TABLE SCAN |t2 |1 |40 | +|7 | SORT | |1 |40 | +|8 | TABLE SCAN |t3 |1 |39 | +|9 | SORT | |1 |40 | +|10| TABLE SCAN |t4 |1 |39 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 6 - output([t2.c1], [t2.c2]), filter([t2.c1 > 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 8 - output([t3.c1], [t3.c2]), filter([t3.c1 > 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 10 - output([t4.c1], [t4.c2]), filter([t4.c1 > 1]), + access([t4.c1], [t4.c2]), partitions(p0) + +select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 3 | 3 | 3 | 3 | 3 | 3 | +| 1 | 1 | 4 | 4 | 4 | 4 | 4 | 4 | +| 2 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 2 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 3 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 4 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | 3 | 3 | 3 | 3 | 3 | 3 | +| 5 | 5 | 4 | 4 | 4 | 4 | 4 | 4 | +| 10 | 10 | 3 | 3 | 3 | 3 | 3 | 3 | +| 10 | 10 | 4 | 4 | 4 | 4 | 4 | 4 | +| NULL | 1 | 3 | 3 | 3 | 3 | 3 | 3 | +| NULL | 1 | 4 | 4 | 4 | 4 | 4 | 4 | +| NULL | 5 | 3 | 3 | 3 | 3 | 3 | 3 | +| NULL | 5 | 4 | 4 | 4 | 4 | 4 | 4 | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1; +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN | |8 |193 | +|1 | TABLE SCAN |t1 |8 |38 | +|2 | MATERIAL | |1 |150 | +|3 | HASH RIGHT OUTER JOIN | |1 |149 | +|4 | TABLE SCAN |t4 |8 |38 | +|5 | HASH RIGHT OUTER JOIN| |9 |93 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter([t3.c1 > 1]), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil) + 3 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter([t3.c1 > 1]), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 3 | 3 | 3 | 3 | 3 | 3 | +| 1 | 1 | 4 | 4 | 4 | 4 | 4 | 4 | +| 2 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 2 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 3 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 4 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | 3 | 3 | 3 | 3 | 3 | 3 | +| 5 | 5 | 4 | 4 | 4 | 4 | 4 | 4 | +| 10 | 10 | 3 | 3 | 3 | 3 | 3 | 3 | +| 10 | 10 | 4 | 4 | 4 | 4 | 4 | 4 | +| NULL | 1 | 3 | 3 | 3 | 3 | 3 | 3 | +| NULL | 1 | 4 | 4 | 4 | 4 | 4 | 4 | +| NULL | 5 | 3 | 3 | 3 | 3 | 3 | 3 | +| NULL | 5 | 4 | 4 | 4 | 4 | 4 | 4 | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |INSERT | |6 |164 | +|1 | SUBPLAN SCAN |VIEW1|6 |163 | +|2 | NESTED-LOOP JOIN CARTESIAN| |6 |163 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | MATERIAL | |1 |121 | +|5 | MERGE OUTER JOIN | |1 |120 | +|6 | MERGE JOIN | |1 |80 | +|7 | SORT | |1 |40 | +|8 | TABLE SCAN |t2 |1 |40 | +|9 | SORT | |1 |40 | +|10| TABLE SCAN |t3 |1 |39 | +|11| SORT | |1 |40 | +|12| TABLE SCAN |t4 |1 |39 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 8 - output([t2.c1], [t2.c2]), filter([t2.c1 > 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 10 - output([t3.c1], [t3.c2]), filter([t3.c1 > 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 11 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 12 - output([t4.c1], [t4.c2]), filter([t4.c1 > 1]), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t7_temp (select * from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |INSERT | |8 |195 | +|1 | SUBPLAN SCAN |VIEW1|8 |194 | +|2 | NESTED-LOOP OUTER JOIN | |8 |193 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | MATERIAL | |1 |150 | +|5 | HASH RIGHT OUTER JOIN | |1 |149 | +|6 | TABLE SCAN |t4 |8 |38 | +|7 | HASH RIGHT OUTER JOIN| |9 |93 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter([t3.c1 > 1]), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil) + 5 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter([t3.c1 > 1]), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |UPDATE | |8 |203 | +|1 | SUBPLAN FILTER | |8 |195 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |156 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |156 | +|5 | TABLE SCAN |t1 |2 |36 | +|6 | MATERIAL | |1 |119 | +|7 | MERGE OUTER JOIN | |1 |119 | +|8 | MERGE JOIN | |1 |79 | +|9 | SORT | |1 |40 | +|10| TABLE SCAN |t2 |1 |39 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t4 |1 |39 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter([t2.c1 > 1]), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |229 | +|1 | SUBPLAN FILTER | |8 |221 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |183 | +|4 | NESTED-LOOP OUTER JOIN| |1 |183 | +|5 | TABLE SCAN |t1 |2 |36 | +|6 | MATERIAL | |1 |146 | +|7 | HASH OUTER JOIN | |1 |146 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | HASH OUTER JOIN | |8 |91 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 > 1]), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil) + 7 - output([t3.c1]), filter([t3.c1 > 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); +Query Plan +====================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------ +|0 |DELETE | |1 |195 | +|1 | SUBPLAN FILTER | |1 |194 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |156 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |156 | +|5 | TABLE SCAN |t1 |2 |36 | +|6 | MATERIAL | |1 |119 | +|7 | MERGE OUTER JOIN | |1 |119 | +|8 | MERGE JOIN | |1 |79 | +|9 | SORT | |1 |40 | +|10| TABLE SCAN |t2 |1 |39 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t4 |1 |39 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter([t2.c1 > 1]), + access([t2.c1]), partitions(p0) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |222 | +|1 | SUBPLAN FILTER | |1 |221 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |183 | +|4 | NESTED-LOOP OUTER JOIN| |1 |183 | +|5 | TABLE SCAN |t1 |2 |36 | +|6 | MATERIAL | |1 |146 | +|7 | HASH OUTER JOIN | |1 |146 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | HASH OUTER JOIN | |8 |91 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([t3.c1 > 1]), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil) + 7 - output([t3.c1]), filter([t3.c1 > 1]), + equal_conds([t2.c1 = t3.c1]), other_conds(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join (t2 left join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t3.c1) on t3.c1>1 where t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN | |8 |203 | +|1 | MERGE OUTER JOIN| |8 |150 | +|2 | SORT | |8 |46 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | MERGE JOIN | |8 |98 | +|5 | SORT | |8 |46 | +|6 | TABLE SCAN |t4 |8 |38 | +|7 | SORT | |8 |46 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | SORT | |9 |47 | +|10| TABLE SCAN |t2 |9 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 8 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |8 |204 | +|1 | TABLE SCAN |t2 |9 |38 | +|2 | HASH OUTER JOIN | |8 |148 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t4 |8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |8 |205 | +|1 | SUBPLAN SCAN |VIEW1|8 |204 | +|2 | MERGE OUTER JOIN | |8 |203 | +|3 | MERGE OUTER JOIN| |8 |150 | +|4 | SORT | |8 |46 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | MERGE JOIN | |8 |98 | +|7 | SORT | |8 |46 | +|8 | TABLE SCAN |t4 |8 |38 | +|9 | SORT | |8 |46 | +|10| TABLE SCAN |t3 |8 |38 | +|11| SORT | |9 |47 | +|12| TABLE SCAN |t2 |9 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 9 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 10 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 12 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |207 | +|1 | SUBPLAN SCAN |VIEW1|8 |205 | +|2 | HASH RIGHT OUTER JOIN| |8 |204 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | HASH OUTER JOIN | |8 |148 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | HASH OUTER JOIN | |8 |93 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |220 | +|1 | SUBPLAN FILTER | |8 |212 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |174 | +|4 | HASH OUTER JOIN | |1 |174 | +|5 | HASH OUTER JOIN| |1 |131 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | HASH JOIN | |8 |91 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t4.c1]), other_conds(nil) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |225 | +|1 | SUBPLAN FILTER | |8 |217 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |179 | +|4 | HASH RIGHT OUTER JOIN| |1 |178 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH OUTER JOIN | |1 |130 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | HASH OUTER JOIN | |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |213 | +|1 | SUBPLAN FILTER | |1 |212 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |174 | +|4 | HASH OUTER JOIN | |1 |174 | +|5 | HASH OUTER JOIN| |1 |131 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t1 |1 |36 | +|8 | HASH JOIN | |8 |91 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t4.c1]), other_conds(nil) + 6 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |218 | +|1 | SUBPLAN FILTER | |1 |217 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |179 | +|4 | HASH RIGHT OUTER JOIN| |1 |178 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH OUTER JOIN | |1 |130 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | HASH OUTER JOIN | |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) left join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |8 |204 | +|1 | TABLE SCAN |t2 |9 |38 | +|2 | HASH FULL OUTER JOIN| |8 |148 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t4 |8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | 5 | 5 | NULL | NULL | +| NULL | NULL | NULL | NULL | 7 | 7 | NULL | NULL | +| NULL | NULL | NULL | NULL | 7 | 7 | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | 3 | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | 7 | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT OUTER JOIN| |8 |204 | +|1 | TABLE SCAN |t2 |9 |38 | +|2 | HASH FULL OUTER JOIN| |8 |148 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | HASH OUTER JOIN | |8 |93 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t4 |8 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | 5 | 5 | NULL | NULL | +| NULL | NULL | NULL | NULL | 7 | 7 | NULL | NULL | +| NULL | NULL | NULL | NULL | 7 | 7 | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | 3 | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | 7 | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |207 | +|1 | SUBPLAN SCAN |VIEW1|8 |205 | +|2 | HASH RIGHT OUTER JOIN| |8 |204 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | HASH FULL OUTER JOIN| |8 |148 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | HASH OUTER JOIN | |8 |93 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |8 |207 | +|1 | SUBPLAN SCAN |VIEW1|8 |205 | +|2 | HASH RIGHT OUTER JOIN| |8 |204 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | HASH FULL OUTER JOIN| |8 |148 | +|5 | TABLE SCAN |t1 |8 |38 | +|6 | HASH OUTER JOIN | |8 |93 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |225 | +|1 | SUBPLAN FILTER | |8 |217 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |179 | +|4 | HASH RIGHT OUTER JOIN| |1 |178 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH FULL OUTER JOIN| |1 |130 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | HASH OUTER JOIN | |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |8 |225 | +|1 | SUBPLAN FILTER | |8 |217 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |179 | +|4 | HASH RIGHT OUTER JOIN| |1 |178 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH FULL OUTER JOIN| |1 |130 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | HASH OUTER JOIN | |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |218 | +|1 | SUBPLAN FILTER | |1 |217 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |179 | +|4 | HASH RIGHT OUTER JOIN| |1 |178 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH FULL OUTER JOIN| |1 |130 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | HASH OUTER JOIN | |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +Query Plan +================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |1 |218 | +|1 | SUBPLAN FILTER | |1 |217 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |179 | +|4 | HASH RIGHT OUTER JOIN| |1 |178 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH FULL OUTER JOIN| |1 |130 | +|7 | TABLE SCAN |t1 |8 |38 | +|8 | HASH OUTER JOIN | |1 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t4.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) full join (t3 left join t4 on t3.c1=t4.c1) on t1.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH JOIN | |8 |202 | +|1 | TABLE SCAN |t3 |8 |38 | +|2 | HASH JOIN | |8 |148 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | HASH JOIN | |8 |93 | +|5 | TABLE SCAN|t1 |8 |38 | +|6 | TABLE SCAN|t2 |9 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 1 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |HASH JOIN | |8 |206 | +|1 | HASH OUTER JOIN| |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | HASH OUTER JOIN| |8 |93 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | TABLE SCAN |t4 |8 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 6 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | ++------+------+------+------+------+------+------+------+ +EXPLAIN insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |INSERT | |8 |204 | +|1 | SUBPLAN SCAN |VIEW1|8 |203 | +|2 | HASH JOIN | |8 |202 | +|3 | TABLE SCAN |t3 |8 |38 | +|4 | HASH JOIN | |8 |148 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | HASH JOIN | |8 |93 | +|7 | TABLE SCAN|t1 |8 |38 | +|8 | TABLE SCAN|t2 |9 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 3 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 5 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t7_temp (select * from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1); + +rollback; +EXPLAIN insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |8 |208 | +|1 | SUBPLAN SCAN |VIEW1|8 |207 | +|2 | HASH JOIN | |8 |206 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | HASH OUTER JOIN| |8 |93 | +|7 | TABLE SCAN |t3 |8 |38 | +|8 | TABLE SCAN |t4 |8 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t7_temp: ({t7_temp: (t7_temp.__pk_increment, t7_temp.a, t7_temp.b, t7_temp.c, t7_temp.d, t7_temp.f, t7_temp.g, t7_temp.i, t7_temp.j)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t7_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |UPDATE | |8 |224 | +|1 | SUBPLAN FILTER | |8 |216 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |177 | +|4 | HASH JOIN | |1 |177 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH JOIN | |1 |130 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | HASH JOIN | |2 |84 | +|9 | TABLE SCAN|t1 |8 |38 | +|10| TABLE SCAN|t2 |2 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t4.c1]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |8 |232 | +|1 | SUBPLAN FILTER | |8 |224 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |186 | +|4 | HASH JOIN | |1 |186 | +|5 | HASH OUTER JOIN| |8 |92 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | HASH OUTER JOIN| |2 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |2 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |DELETE | |1 |217 | +|1 | SUBPLAN FILTER | |1 |216 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |177 | +|4 | HASH JOIN | |1 |177 | +|5 | TABLE SCAN |t3 |8 |38 | +|6 | HASH JOIN | |1 |130 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | HASH JOIN | |2 |84 | +|9 | TABLE SCAN|t1 |8 |38 | +|10| TABLE SCAN|t2 |2 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1], [t4.c1]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |DELETE | |1 |225 | +|1 | SUBPLAN FILTER | |1 |224 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |186 | +|4 | HASH JOIN | |1 |186 | +|5 | HASH OUTER JOIN| |8 |92 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | HASH OUTER JOIN| |2 |83 | +|9 | TABLE SCAN |t3 |8 |38 | +|10| TABLE SCAN |t4 |2 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 5 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 10 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1) inner join (t3 left join t4 on t3.c1=t4.c1) on t2.c1=t4.c1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |HASH RIGHT OUTER JOIN | |8 |283 | +|1 | TABLE SCAN |t5 |5 |37 | +|2 | NESTED-LOOP OUTER JOIN| |8 |234 | +|3 | HASH RIGHT OUTER JOIN| |8 |148 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | HASH OUTER JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | MATERIAL | |8 |41 | +|9 | TABLE SCAN |t4 |8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 1 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 > 1], [t2.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t4.c1], [t4.c2]), filter(nil) + 9 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; ++------+------+------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | +| 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | +| 2 | 2 | 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | +| 3 | 2 | 3 | 3 | 3 | 3 | 4 | 4 | 4 | 4 | +| 3 | 2 | 3 | 3 | 3 | 3 | 8 | 8 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 8 | 8 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | NULL | 4 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | NULL | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | 1 | 1 | 1 | 1 | +| 4 | 2 | 4 | 4 | 4 | 4 | 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | +| 4 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | NULL | 4 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | NULL | 8 | NULL | NULL | +| 5 | 5 | NULL | NULL | 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |HASH RIGHT OUTER JOIN | |8 |283 | +|1 | TABLE SCAN |t5 |5 |37 | +|2 | NESTED-LOOP OUTER JOIN| |8 |234 | +|3 | HASH RIGHT OUTER JOIN| |8 |148 | +|4 | TABLE SCAN |t3 |8 |38 | +|5 | HASH OUTER JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | MATERIAL | |8 |41 | +|9 | TABLE SCAN |t4 |8 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 1 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 > 1], [t2.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t4.c1], [t4.c2]), filter(nil) + 9 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; ++------+------+------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | +| 1 | 1 | 1 | 1 | 1 | 1 | NULL | NULL | NULL | NULL | +| 2 | 2 | 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | +| 3 | 2 | 3 | 3 | 3 | 3 | 4 | 4 | 4 | 4 | +| 3 | 2 | 3 | 3 | 3 | 3 | 8 | 8 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 8 | 8 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | NULL | 4 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | NULL | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | 1 | 1 | 1 | 1 | +| 4 | 2 | 4 | 4 | 4 | 4 | 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | +| 4 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | NULL | 4 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | NULL | 8 | NULL | NULL | +| 5 | 5 | NULL | NULL | 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+------+------+------+------+ +EXPLAIN insert into t15_temp (select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |8 |285 | +|1 | SUBPLAN SCAN |VIEW1|8 |284 | +|2 | HASH RIGHT OUTER JOIN | |8 |283 | +|3 | TABLE SCAN |t5 |5 |37 | +|4 | NESTED-LOOP OUTER JOIN| |8 |234 | +|5 | HASH RIGHT OUTER JOIN| |8 |148 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | HASH OUTER JOIN | |8 |93 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +|10| MATERIAL | |8 |41 | +|11| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t15_temp: ({t15_temp: (t15_temp.__pk_increment, t15_temp.a, t15_temp.b, t15_temp.c, t15_temp.d, t15_temp.f, t15_temp.g, t15_temp.i, t15_temp.j, t15_temp.l, t15_temp.m)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 3 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 > 1], [t2.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 10 - output([t4.c1], [t4.c2]), filter(nil) + 11 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t15_temp (select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); + +rollback; +EXPLAIN insert into t15_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |8 |285 | +|1 | SUBPLAN SCAN |VIEW1|8 |284 | +|2 | HASH RIGHT OUTER JOIN | |8 |283 | +|3 | TABLE SCAN |t5 |5 |37 | +|4 | NESTED-LOOP OUTER JOIN| |8 |234 | +|5 | HASH RIGHT OUTER JOIN| |8 |148 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | HASH OUTER JOIN | |8 |93 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +|10| MATERIAL | |8 |41 | +|11| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t15_temp: ({t15_temp: (t15_temp.__pk_increment, t15_temp.a, t15_temp.b, t15_temp.c, t15_temp.d, t15_temp.f, t15_temp.g, t15_temp.i, t15_temp.j, t15_temp.l, t15_temp.m)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 3 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds([t1.c1 > 1], [t2.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 10 - output([t4.c1], [t4.c2]), filter(nil) + 11 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +insert into t15_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |8 |252 | +|1 | SUBPLAN FILTER | |8 |244 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |205 | +|4 | HASH OUTER JOIN | |1 |205 | +|5 | NESTED-LOOP OUTER JOIN| |1 |165 | +|6 | HASH OUTER JOIN | |1 |120 | +|7 | HASH OUTER JOIN | |1 |78 | +|8 | SUBPLAN SCAN |VIEW1|1 |37 | +|9 | TABLE SCAN |t1 |1 |36 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +|12| MATERIAL | |8 |39 | +|13| TABLE SCAN |t4 |8 |38 | +|14| TABLE SCAN |t5 |5 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1], [t4.c1]), filter(nil), + conds([VIEW1.t1.c1 > 1], [t2.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 6 - output([VIEW1.t1.c1], [t2.c1], [t3.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 7 - output([VIEW1.t1.c1], [t3.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 8 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 14 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |264 | +|1 | SUBPLAN FILTER | |8 |256 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |218 | +|4 | HASH RIGHT OUTER JOIN | |1 |217 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | NESTED-LOOP OUTER JOIN| |1 |175 | +|7 | HASH RIGHT OUTER JOIN| |1 |130 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | HASH OUTER JOIN | |1 |83 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |2 |36 | +|12| MATERIAL | |8 |39 | +|13| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t1.c1], [t4.c1]), filter(nil), + conds([t1.c1 > 1], [t2.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 7 - output([t1.c1], [t2.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |1 |244 | +|1 | SUBPLAN FILTER | |1 |243 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |205 | +|4 | HASH OUTER JOIN | |1 |205 | +|5 | NESTED-LOOP OUTER JOIN| |1 |165 | +|6 | HASH OUTER JOIN | |1 |120 | +|7 | HASH OUTER JOIN | |1 |78 | +|8 | SUBPLAN SCAN |VIEW1|1 |37 | +|9 | TABLE SCAN |t1 |1 |36 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +|12| MATERIAL | |8 |39 | +|13| TABLE SCAN |t4 |8 |38 | +|14| TABLE SCAN |t5 |5 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1], [t4.c1]), filter(nil), + conds([VIEW1.t1.c1 > 1], [t2.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 6 - output([VIEW1.t1.c1], [t2.c1], [t3.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 7 - output([VIEW1.t1.c1], [t3.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 8 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 9 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 14 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |257 | +|1 | SUBPLAN FILTER | |1 |256 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |218 | +|4 | HASH RIGHT OUTER JOIN | |1 |217 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | NESTED-LOOP OUTER JOIN| |1 |175 | +|7 | HASH RIGHT OUTER JOIN| |1 |130 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | HASH OUTER JOIN | |1 |83 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |2 |36 | +|12| MATERIAL | |8 |39 | +|13| TABLE SCAN |t4 |8 |38 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t1.c1], [t4.c1]), filter(nil), + conds([t1.c1 > 1], [t2.c1 > 1], [t3.c1 > 1]), nl_params_(nil) + 7 - output([t1.c1], [t2.c1], [t3.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 11 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 12 - output([t4.c1]), filter(nil) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) left join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; +Query Plan +========================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------------- +|0 |HASH RIGHT OUTER JOIN | |8 |210 | +|1 | TABLE SCAN |t5 |5 |37 | +|2 | NESTED-LOOP OUTER JOIN CARTESIAN| |8 |161 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | MATERIAL | |1 |121 | +|5 | MERGE JOIN | |1 |120 | +|6 | MERGE JOIN | |1 |80 | +|7 | SORT | |1 |40 | +|8 | TABLE SCAN |t1 |1 |39 | +|9 | SORT | |1 |40 | +|10| TABLE SCAN |t3 |1 |39 | +|11| SORT | |1 |40 | +|12| TABLE SCAN |t2 |1 |40 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 1 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 8 - output([t1.c1], [t1.c2]), filter([t1.c1 > 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 10 - output([t3.c1], [t3.c2]), filter([t3.c1 > 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 12 - output([t2.c1], [t2.c2]), filter([t2.c1 > 1]), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; ++------+------+------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+------+------+ +| 3 | 2 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | +| 3 | 2 | 3 | 3 | 3 | 3 | 4 | 4 | 4 | 4 | +| 3 | 2 | 3 | 3 | 3 | 3 | 8 | 8 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 8 | 8 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | NULL | 4 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | NULL | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | 1 | 1 | 1 | 1 | +| 4 | 2 | 4 | 4 | 4 | 4 | 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | +| 4 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | NULL | 4 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | NULL | 8 | NULL | NULL | ++------+------+------+------+------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; +Query Plan +========================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------------- +|0 |HASH RIGHT OUTER JOIN | |8 |208 | +|1 | TABLE SCAN |t5 |5 |37 | +|2 | NESTED-LOOP OUTER JOIN CARTESIAN| |8 |159 | +|3 | TABLE SCAN |t4 |8 |38 | +|4 | MATERIAL | |1 |121 | +|5 | HASH OUTER JOIN | |1 |121 | +|6 | HASH OUTER JOIN | |1 |81 | +|7 | TABLE SCAN |t1 |1 |39 | +|8 | TABLE SCAN |t2 |9 |38 | +|9 | TABLE SCAN |t3 |8 |38 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 1 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter([t3.c1 > 1]), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t2.c1 > 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter([t1.c1 > 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1; ++------+------+------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+------+------+ +| 3 | 2 | 3 | 3 | 3 | 3 | 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | 3 | 3 | 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | 3 | +| 3 | 2 | 3 | 3 | 3 | 3 | 4 | 4 | 4 | 4 | +| 3 | 2 | 3 | 3 | 3 | 3 | 8 | 8 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | 8 | 8 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | NULL | 4 | NULL | NULL | +| 3 | 2 | 3 | 3 | 3 | 3 | NULL | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | 1 | 1 | 1 | 1 | +| 4 | 2 | 4 | 4 | 4 | 4 | 2 | 2 | 2 | 2 | +| 4 | 2 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | 4 | +| 4 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | 8 | 8 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | NULL | 4 | NULL | NULL | +| 4 | 2 | 4 | 4 | 4 | 4 | NULL | 8 | NULL | NULL | ++------+------+------+------+------+------+------+------+------+------+ +EXPLAIN insert into t15_temp (select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |INSERT | |8 |212 | +|1 | SUBPLAN SCAN |VIEW1|8 |211 | +|2 | HASH RIGHT OUTER JOIN | |8 |210 | +|3 | TABLE SCAN |t5 |5 |37 | +|4 | NESTED-LOOP OUTER JOIN CARTESIAN| |8 |161 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | MATERIAL | |1 |121 | +|7 | MERGE JOIN | |1 |120 | +|8 | MERGE JOIN | |1 |80 | +|9 | SORT | |1 |40 | +|10| TABLE SCAN |t1 |1 |39 | +|11| SORT | |1 |40 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |40 | +|14| TABLE SCAN |t2 |1 |40 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t15_temp: ({t15_temp: (t15_temp.__pk_increment, t15_temp.a, t15_temp.b, t15_temp.c, t15_temp.d, t15_temp.f, t15_temp.g, t15_temp.i, t15_temp.j, t15_temp.l, t15_temp.m)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 3 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 9 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 10 - output([t1.c1], [t1.c2]), filter([t1.c1 > 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 11 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1], [t3.c2]), filter([t3.c1 > 1]), + access([t3.c1], [t3.c2]), partitions(p0) + 13 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 14 - output([t2.c1], [t2.c2]), filter([t2.c1 > 1]), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t15_temp (select * from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); + +rollback; +EXPLAIN insert into t15_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |INSERT | |8 |210 | +|1 | SUBPLAN SCAN |VIEW1|8 |209 | +|2 | HASH RIGHT OUTER JOIN | |8 |208 | +|3 | TABLE SCAN |t5 |5 |37 | +|4 | NESTED-LOOP OUTER JOIN CARTESIAN| |8 |159 | +|5 | TABLE SCAN |t4 |8 |38 | +|6 | MATERIAL | |1 |121 | +|7 | HASH OUTER JOIN | |1 |121 | +|8 | HASH OUTER JOIN | |1 |81 | +|9 | TABLE SCAN |t1 |1 |39 | +|10| TABLE SCAN |t2 |9 |38 | +|11| TABLE SCAN |t3 |8 |38 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t15_temp: ({t15_temp: (t15_temp.__pk_increment, t15_temp.a, t15_temp.b, t15_temp.c, t15_temp.d, t15_temp.f, t15_temp.g, t15_temp.i, t15_temp.j, t15_temp.l, t15_temp.m)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 3 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2], [t4.c1], [t4.c2]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 6 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter(nil) + 7 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t3.c1], [t3.c2]), filter([t3.c1 > 1]), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 8 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([t2.c1 > 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 9 - output([t1.c1], [t1.c2]), filter([t1.c1 > 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 10 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 11 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +insert into t15_temp (select /*+NO_REWRITE*/* from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------- +|0 |UPDATE | |8 |243 | +|1 | SUBPLAN FILTER | |8 |235 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |196 | +|4 | HASH OUTER JOIN | |1 |196 | +|5 | NESTED-LOOP OUTER JOIN CARTESIAN| |1 |156 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t4 |1 |36 | +|8 | MATERIAL | |1 |119 | +|9 | MERGE JOIN | |1 |119 | +|10| MERGE JOIN | |1 |79 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t1 |1 |39 | +|15| SORT | |1 |40 | +|16| TABLE SCAN |t2 |1 |39 | +|17| TABLE SCAN |t5 |5 |37 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([VIEW1.t4.c1 = t5.c1]), other_conds(nil) + 5 - output([t1.c1], [VIEW1.t4.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([VIEW1.t4.c1]), filter(nil), + access([VIEW1.t4.c1]) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 13 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 14 - output([t1.c1]), filter([t1.c1 > 1]), + access([t1.c1]), partitions(p0) + 15 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 16 - output([t2.c1]), filter([t2.c1 > 1]), + access([t2.c1]), partitions(p0) + 17 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +Query Plan +============================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------------- +|0 |UPDATE | |8 |246 | +|1 | SUBPLAN FILTER | |8 |238 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |200 | +|4 | HASH RIGHT OUTER JOIN | |1 |199 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | NESTED-LOOP OUTER JOIN CARTESIAN| |1 |157 | +|7 | TABLE SCAN |t4 |1 |36 | +|8 | MATERIAL | |1 |121 | +|9 | HASH OUTER JOIN | |1 |121 | +|10| HASH OUTER JOIN | |1 |81 | +|11| TABLE SCAN |t1 |1 |39 | +|12| TABLE SCAN |t2 |9 |38 | +|13| TABLE SCAN |t3 |8 |38 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t1.c1], [t4.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter([t3.c1 > 1]), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 10 - output([t1.c1]), filter([t2.c1 > 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 11 - output([t1.c1]), filter([t1.c1 > 1]), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 13 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------- +|0 |DELETE | |1 |236 | +|1 | SUBPLAN FILTER | |1 |235 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |196 | +|4 | HASH OUTER JOIN | |1 |196 | +|5 | NESTED-LOOP OUTER JOIN CARTESIAN| |1 |156 | +|6 | SUBPLAN SCAN |VIEW1|1 |37 | +|7 | TABLE SCAN |t4 |1 |36 | +|8 | MATERIAL | |1 |119 | +|9 | MERGE JOIN | |1 |119 | +|10| MERGE JOIN | |1 |79 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t1 |1 |39 | +|15| SORT | |1 |40 | +|16| TABLE SCAN |t2 |1 |39 | +|17| TABLE SCAN |t5 |5 |37 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([VIEW1.t4.c1 = t5.c1]), other_conds(nil) + 5 - output([t1.c1], [VIEW1.t4.c1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([VIEW1.t4.c1]), filter(nil), + access([VIEW1.t4.c1]) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0), + limit(1), offset(nil) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 10 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 13 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 14 - output([t1.c1]), filter([t1.c1 > 1]), + access([t1.c1]), partitions(p0) + 15 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 16 - output([t2.c1]), filter([t2.c1 > 1]), + access([t2.c1]), partitions(p0) + 17 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +Query Plan +============================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------------- +|0 |DELETE | |1 |239 | +|1 | SUBPLAN FILTER | |1 |238 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |200 | +|4 | HASH RIGHT OUTER JOIN | |1 |199 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | NESTED-LOOP OUTER JOIN CARTESIAN| |1 |157 | +|7 | TABLE SCAN |t4 |1 |36 | +|8 | MATERIAL | |1 |121 | +|9 | HASH OUTER JOIN | |1 |121 | +|10| HASH OUTER JOIN | |1 |81 | +|11| TABLE SCAN |t1 |1 |39 | +|12| TABLE SCAN |t2 |9 |38 | +|13| TABLE SCAN |t3 |8 |38 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t4.c1 = t5.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t1.c1], [t4.c1]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1]), filter(nil) + 9 - output([t1.c1]), filter([t3.c1 > 1]), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 10 - output([t1.c1]), filter([t2.c1 > 1]), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 11 - output([t1.c1]), filter([t1.c1 > 1]), + access([t1.c1]), partitions(p0) + 12 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 13 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from (t1 left join t2 on t1.c1=t2.c1 left join t3 on t1.c1=t3.c1) right join (t4 left join t5 on t4.c1=t5.c1) on t1.c1>1 and t2.c1>1 and t3.c1>1 limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8722813232690143 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |SUBPLAN FILTER | |3 |221 | +|1 | HASH OUTER JOIN | |5 |142 | +|2 | TABLE SCAN |t5 |5 |37 | +|3 | HASH JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | LIMIT | |1 |79 | +|7 | MERGE OUTER JOIN| |1 |79 | +|8 | SORT | |1 |40 | +|9 | SUBPLAN SCAN |VIEW1|1 |39 | +|10| TABLE SCAN |t3 |1 |39 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t4 |1 |39 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 2 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter(nil), limit(1), offset(nil) + 7 - output([1]), filter(nil), + equal_conds([VIEW1.t3.c1 = t4.c1]), other_conds(nil) + 8 - output([VIEW1.t3.c1]), filter(nil), sort_keys([VIEW1.t3.c1, ASC]) + 9 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 10 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0), + limit(1), offset(nil) + 11 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 12 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | +| NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER | |3 |221 | +|1 | HASH OUTER JOIN | |5 |142 | +|2 | TABLE SCAN |t5 |5 |37 | +|3 | HASH OUTER JOIN| |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MERGE OUTER JOIN| |1 |79 | +|7 | SORT | |1 |39 | +|8 | TABLE SCAN |t3 |1 |39 | +|9 | SORT | |1 |39 | +|10| TABLE SCAN |t4 |1 |39 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 2 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 8 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 10 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | +| NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |INSERT | |3 |222 | +|1 | SUBPLAN SCAN |VIEW1|3 |222 | +|2 | SUBPLAN FILTER | |3 |221 | +|3 | HASH OUTER JOIN | |5 |142 | +|4 | TABLE SCAN |t5 |5 |37 | +|5 | HASH JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | LIMIT | |1 |79 | +|9 | MERGE OUTER JOIN| |1 |79 | +|10| SORT | |1 |40 | +|11| SUBPLAN SCAN |VIEW2|1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t4 |1 |39 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 4 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([NULL]), filter(nil), limit(1), offset(nil) + 9 - output([1]), filter(nil), + equal_conds([VIEW2.t3.c1 = t4.c1]), other_conds(nil) + 10 - output([VIEW2.t3.c1]), filter(nil), sort_keys([VIEW2.t3.c1, ASC]) + 11 - output([VIEW2.t3.c1]), filter(nil), + access([VIEW2.t3.c1]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0), + limit(1), offset(nil) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); + +rollback; +EXPLAIN insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |INSERT | |3 |222 | +|1 | SUBPLAN SCAN |VIEW1|3 |221 | +|2 | SUBPLAN FILTER | |3 |221 | +|3 | HASH OUTER JOIN | |5 |142 | +|4 | TABLE SCAN |t5 |5 |37 | +|5 | HASH OUTER JOIN| |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | MERGE OUTER JOIN| |1 |79 | +|9 | SORT | |1 |39 | +|10| TABLE SCAN |t3 |1 |39 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t4 |1 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 4 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([NULL]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 10 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 12 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |UPDATE | |8 |256 | +|1 | SUBPLAN FILTER | |8 |248 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |209 | +|4 | SUBPLAN FILTER | |1 |209 | +|5 | HASH OUTER JOIN | |2 |130 | +|6 | TABLE SCAN |t5 |5 |37 | +|7 | HASH JOIN | |4 |86 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |4 |37 | +|10| LIMIT | |1 |79 | +|11| MERGE OUTER JOIN| |1 |79 | +|12| SORT | |1 |40 | +|13| SUBPLAN SCAN |VIEW1|1 |39 | +|14| TABLE SCAN |t3 |1 |39 | +|15| SORT | |1 |39 | +|16| TABLE SCAN |t4 |1 |39 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 6 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 7 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), limit(1), offset(nil) + 11 - output([1]), filter(nil), + equal_conds([VIEW1.t3.c1 = t4.c1]), other_conds(nil) + 12 - output([VIEW1.t3.c1]), filter(nil), sort_keys([VIEW1.t3.c1, ASC]) + 13 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 14 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0), + limit(1), offset(nil) + 15 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 16 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |UPDATE | |8 |256 | +|1 | SUBPLAN FILTER | |8 |248 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |209 | +|4 | SUBPLAN FILTER | |1 |209 | +|5 | HASH OUTER JOIN | |2 |130 | +|6 | TABLE SCAN |t5 |5 |37 | +|7 | HASH OUTER JOIN| |4 |86 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |4 |37 | +|10| MERGE OUTER JOIN| |1 |79 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t4 |1 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 6 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 7 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |DELETE | |1 |249 | +|1 | SUBPLAN FILTER | |1 |248 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |209 | +|4 | SUBPLAN FILTER | |1 |209 | +|5 | HASH OUTER JOIN | |2 |130 | +|6 | TABLE SCAN |t5 |5 |37 | +|7 | HASH JOIN | |4 |86 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |4 |37 | +|10| LIMIT | |1 |79 | +|11| MERGE OUTER JOIN| |1 |79 | +|12| SORT | |1 |40 | +|13| SUBPLAN SCAN |VIEW1|1 |39 | +|14| TABLE SCAN |t3 |1 |39 | +|15| SORT | |1 |39 | +|16| TABLE SCAN |t4 |1 |39 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 6 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 7 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), limit(1), offset(nil) + 11 - output([1]), filter(nil), + equal_conds([VIEW1.t3.c1 = t4.c1]), other_conds(nil) + 12 - output([VIEW1.t3.c1]), filter(nil), sort_keys([VIEW1.t3.c1, ASC]) + 13 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 14 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0), + limit(1), offset(nil) + 15 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 16 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |DELETE | |1 |248 | +|1 | SUBPLAN FILTER | |1 |247 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |209 | +|4 | SUBPLAN FILTER | |1 |209 | +|5 | HASH OUTER JOIN | |2 |130 | +|6 | TABLE SCAN |t5 |5 |37 | +|7 | HASH OUTER JOIN| |4 |86 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |4 |37 | +|10| MERGE OUTER JOIN| |1 |79 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t4 |1 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 6 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 7 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 right join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |SUBPLAN FILTER | |4 |222 | +|1 | HASH RIGHT OUTER JOIN| |8 |142 | +|2 | TABLE SCAN |t5 |5 |37 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | LIMIT | |1 |79 | +|7 | MERGE OUTER JOIN | |1 |79 | +|8 | SORT | |1 |40 | +|9 | SUBPLAN SCAN |VIEW1|1 |39 | +|10| TABLE SCAN |t3 |1 |39 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t4 |1 |39 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 2 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter(nil), limit(1), offset(nil) + 7 - output([1]), filter(nil), + equal_conds([VIEW1.t3.c1 = t4.c1]), other_conds(nil) + 8 - output([VIEW1.t3.c1]), filter(nil), sort_keys([VIEW1.t3.c1, ASC]) + 9 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 10 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0), + limit(1), offset(nil) + 11 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 12 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |SUBPLAN FILTER | |4 |221 | +|1 | HASH RIGHT OUTER JOIN| |8 |142 | +|2 | TABLE SCAN |t5 |5 |37 | +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | MERGE OUTER JOIN | |1 |79 | +|7 | SORT | |1 |39 | +|8 | TABLE SCAN |t3 |1 |39 | +|9 | SORT | |1 |39 | +|10| TABLE SCAN |t4 |1 |39 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 2 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 7 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 8 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 10 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1); ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | 2 | 2 | +| 3 | 2 | 3 | 3 | 3 | 3 | +| 4 | 2 | 4 | 4 | 4 | 4 | +| 5 | 5 | NULL | NULL | NULL | NULL | +| 10 | 10 | NULL | NULL | NULL | NULL | +| NULL | 1 | NULL | NULL | NULL | NULL | +| NULL | 5 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |4 |223 | +|1 | SUBPLAN SCAN |VIEW1|4 |222 | +|2 | SUBPLAN FILTER | |4 |222 | +|3 | HASH RIGHT OUTER JOIN| |8 |142 | +|4 | TABLE SCAN |t5 |5 |37 | +|5 | HASH OUTER JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | LIMIT | |1 |79 | +|9 | MERGE OUTER JOIN | |1 |79 | +|10| SORT | |1 |40 | +|11| SUBPLAN SCAN |VIEW2|1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t4 |1 |39 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 4 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([NULL]), filter(nil), limit(1), offset(nil) + 9 - output([1]), filter(nil), + equal_conds([VIEW2.t3.c1 = t4.c1]), other_conds(nil) + 10 - output([VIEW2.t3.c1]), filter(nil), sort_keys([VIEW2.t3.c1, ASC]) + 11 - output([VIEW2.t3.c1]), filter(nil), + access([VIEW2.t3.c1]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0), + limit(1), offset(nil) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +insert into t5_temp (select * from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); + +rollback; +EXPLAIN insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |4 |223 | +|1 | SUBPLAN SCAN |VIEW1|4 |222 | +|2 | SUBPLAN FILTER | |4 |221 | +|3 | HASH RIGHT OUTER JOIN| |8 |142 | +|4 | TABLE SCAN |t5 |5 |37 | +|5 | HASH OUTER JOIN | |8 |93 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |9 |38 | +|8 | MERGE OUTER JOIN | |1 |79 | +|9 | SORT | |1 |39 | +|10| TABLE SCAN |t3 |1 |39 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t4 |1 |39 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t5_temp: ({t5_temp: (t5_temp.__pk_increment, t5_temp.a, t5_temp.b, t5_temp.c, t5_temp.d, t5_temp.f, t5_temp.g)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 4 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([NULL]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 9 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 10 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 12 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +insert into t5_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |254 | +|1 | SUBPLAN FILTER | |8 |246 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |207 | +|4 | SUBPLAN FILTER | |1 |207 | +|5 | HASH RIGHT OUTER JOIN| |2 |128 | +|6 | TABLE SCAN |t5 |5 |37 | +|7 | HASH OUTER JOIN | |2 |85 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |3 |37 | +|10| LIMIT | |1 |79 | +|11| MERGE OUTER JOIN | |1 |79 | +|12| SORT | |1 |40 | +|13| SUBPLAN SCAN |VIEW1|1 |39 | +|14| TABLE SCAN |t3 |1 |39 | +|15| SORT | |1 |39 | +|16| TABLE SCAN |t4 |1 |39 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 6 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 7 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), limit(1), offset(nil) + 11 - output([1]), filter(nil), + equal_conds([VIEW1.t3.c1 = t4.c1]), other_conds(nil) + 12 - output([VIEW1.t3.c1]), filter(nil), sort_keys([VIEW1.t3.c1, ASC]) + 13 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 14 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0), + limit(1), offset(nil) + 15 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 16 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |253 | +|1 | SUBPLAN FILTER | |8 |245 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |207 | +|4 | SUBPLAN FILTER | |1 |207 | +|5 | HASH RIGHT OUTER JOIN| |2 |128 | +|6 | TABLE SCAN |t5 |5 |37 | +|7 | HASH OUTER JOIN | |2 |85 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |3 |37 | +|10| MERGE OUTER JOIN | |1 |79 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t4 |1 |39 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 6 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 7 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |246 | +|1 | SUBPLAN FILTER | |1 |245 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |207 | +|4 | SUBPLAN FILTER | |1 |207 | +|5 | HASH RIGHT OUTER JOIN| |2 |128 | +|6 | TABLE SCAN |t5 |5 |37 | +|7 | HASH OUTER JOIN | |2 |85 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |3 |37 | +|10| LIMIT | |1 |79 | +|11| MERGE OUTER JOIN | |1 |79 | +|12| SORT | |1 |40 | +|13| SUBPLAN SCAN |VIEW1|1 |39 | +|14| TABLE SCAN |t3 |1 |39 | +|15| SORT | |1 |39 | +|16| TABLE SCAN |t4 |1 |39 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 6 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 7 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), limit(1), offset(nil) + 11 - output([1]), filter(nil), + equal_conds([VIEW1.t3.c1 = t4.c1]), other_conds(nil) + 12 - output([VIEW1.t3.c1]), filter(nil), sort_keys([VIEW1.t3.c1, ASC]) + 13 - output([VIEW1.t3.c1]), filter(nil), + access([VIEW1.t3.c1]) + 14 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0), + limit(1), offset(nil) + 15 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 16 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |246 | +|1 | SUBPLAN FILTER | |1 |245 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |207 | +|4 | SUBPLAN FILTER | |1 |207 | +|5 | HASH RIGHT OUTER JOIN| |2 |128 | +|6 | TABLE SCAN |t5 |5 |37 | +|7 | HASH OUTER JOIN | |2 |85 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |3 |37 | +|10| MERGE OUTER JOIN | |1 |79 | +|11| SORT | |1 |39 | +|12| TABLE SCAN |t3 |1 |39 | +|13| SORT | |1 |39 | +|14| TABLE SCAN |t4 |1 |39 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 6 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 7 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([NULL]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 11 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 12 - output([t3.c1]), filter([t3.c1 > 1]), + access([t3.c1]), partitions(p0) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter([t4.c1 > 1]), + access([t4.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 left join t5 on t2.c1=t5.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 where t3.c1>1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |HASH OUTER JOIN | |5 |234 | +|1 | HASH RIGHT SEMI JOIN| |5 |184 | +|2 | SUBPLAN SCAN |VIEW1|5 |135 | +|3 | HASH OUTER JOIN | |5 |135 | +|4 | HASH JOIN | |5 |85 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 2 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 3 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWIRTE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |HASH OUTER JOIN | |5 |234 | +|1 | HASH RIGHT SEMI JOIN| |5 |184 | +|2 | SUBPLAN SCAN |VIEW1|5 |135 | +|3 | HASH OUTER JOIN | |5 |135 | +|4 | HASH JOIN | |5 |85 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 2 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 3 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select /*+NO_REWIRTE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | +| 3 | 2 | 3 | 3 | +| 4 | 2 | 4 | 4 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |5 |235 | +|1 | SUBPLAN SCAN |VIEW1|5 |234 | +|2 | HASH OUTER JOIN | |5 |234 | +|3 | HASH RIGHT SEMI JOIN| |5 |184 | +|4 | SUBPLAN SCAN |VIEW2|5 |135 | +|5 | HASH OUTER JOIN | |5 |135 | +|6 | HASH JOIN | |5 |85 | +|7 | TABLE SCAN |t5 |5 |37 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 4 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 5 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 7 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWIRTE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |5 |235 | +|1 | SUBPLAN SCAN |VIEW1|5 |234 | +|2 | HASH OUTER JOIN | |5 |234 | +|3 | HASH RIGHT SEMI JOIN| |5 |184 | +|4 | SUBPLAN SCAN |VIEW2|5 |135 | +|5 | HASH OUTER JOIN | |5 |135 | +|6 | HASH JOIN | |5 |85 | +|7 | TABLE SCAN |t5 |5 |37 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 4 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 5 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 7 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select /*+NO_REWIRTE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |273 | +|1 | SUBPLAN FILTER | |8 |265 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |226 | +|4 | HASH OUTER JOIN | |1 |226 | +|5 | HASH RIGHT SEMI JOIN| |5 |184 | +|6 | SUBPLAN SCAN |VIEW1|5 |135 | +|7 | HASH OUTER JOIN | |5 |135 | +|8 | HASH JOIN | |5 |85 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| TABLE SCAN |t1 |8 |38 | +|13| TABLE SCAN |t2 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 6 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 7 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+NO_REWIRTE*/t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |273 | +|1 | SUBPLAN FILTER | |8 |265 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |226 | +|4 | HASH OUTER JOIN | |1 |226 | +|5 | HASH RIGHT SEMI JOIN| |5 |184 | +|6 | SUBPLAN SCAN |VIEW1|5 |135 | +|7 | HASH OUTER JOIN | |5 |135 | +|8 | HASH JOIN | |5 |85 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| TABLE SCAN |t1 |8 |38 | +|13| TABLE SCAN |t2 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 6 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 7 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select /*+NO_REWIRTE*/t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |266 | +|1 | SUBPLAN FILTER | |1 |265 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |226 | +|4 | HASH OUTER JOIN | |1 |226 | +|5 | HASH RIGHT SEMI JOIN| |5 |184 | +|6 | SUBPLAN SCAN |VIEW1|5 |135 | +|7 | HASH OUTER JOIN | |5 |135 | +|8 | HASH JOIN | |5 |85 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| TABLE SCAN |t1 |8 |38 | +|13| TABLE SCAN |t2 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 6 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 7 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+NO_REWIRTE*/t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |266 | +|1 | SUBPLAN FILTER | |1 |265 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |226 | +|4 | HASH OUTER JOIN | |1 |226 | +|5 | HASH RIGHT SEMI JOIN| |5 |184 | +|6 | SUBPLAN SCAN |VIEW1|5 |135 | +|7 | HASH OUTER JOIN | |5 |135 | +|8 | HASH JOIN | |5 |85 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| TABLE SCAN |t1 |8 |38 | +|13| TABLE SCAN |t2 |2 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 6 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 7 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+NO_REWIRTE*/t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN CARTESIAN| |1 |226 | +|1 | MERGE OUTER JOIN | |1 |79 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | TABLE SCAN |t2 |1 |40 | +|4 | MATERIAL | |8 |145 | +|5 | SUBPLAN SCAN |VIEW1|8 |143 | +|6 | NESTED-LOOP OUTER JOIN | |8 |142 | +|7 | HASH OUTER JOIN | |8 |91 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| MATERIAL | |5 |38 | +|11| TABLE SCAN |t5 |5 |37 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter([t1.c1 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter([t2.c1 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter(nil), + conds([t3.c1 = t4.c1]), nl_params_(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t5.__pk_increment]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |SUBPLAN FILTER | |4 |1238| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | NESTED-LOOP OUTER JOIN| |8 |142 | +|5 | HASH OUTER JOIN | |8 |91 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | MATERIAL | |5 |38 | +|9 | TABLE SCAN |t5 |5 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([NULL]), filter(nil), startup_filter([?]), + conds([t3.c1 = t4.c1]), nl_params_(nil) + 5 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access([t5.__pk_increment]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 1 | 1 | 1 | 1 | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1)); +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |INSERT | |1 |226 | +|1 | SUBPLAN SCAN |VIEW1|1 |226 | +|2 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |226 | +|3 | MERGE OUTER JOIN | |1 |79 | +|4 | TABLE SCAN |t1 |1 |39 | +|5 | TABLE SCAN |t2 |1 |40 | +|6 | MATERIAL | |8 |145 | +|7 | SUBPLAN SCAN |VIEW2|8 |143 | +|8 | NESTED-LOOP OUTER JOIN | |8 |142 | +|9 | HASH OUTER JOIN | |8 |91 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| MATERIAL | |5 |38 | +|13| TABLE SCAN |t5 |5 |37 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter([t1.c1 = 1]), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter([t2.c1 = 1]), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([1]), filter(nil) + 7 - output([1]), filter(nil), + access(nil) + 8 - output([1]), filter(nil), + conds([t3.c1 = t4.c1]), nl_params_(nil) + 9 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t5.__pk_increment]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1)); +Query Plan +=================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------- +|0 |INSERT | |4 |1239| +|1 | SUBPLAN SCAN |VIEW1|4 |1239| +|2 | SUBPLAN FILTER | |4 |1238| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | NESTED-LOOP OUTER JOIN| |8 |142 | +|7 | HASH OUTER JOIN | |8 |91 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| MATERIAL | |5 |38 | +|11| TABLE SCAN |t5 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter(nil), startup_filter([?]), + conds([t3.c1 = t4.c1]), nl_params_(nil) + 7 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter(nil), + access([t5.__pk_increment]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); +Query Plan +============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------ +|0 |UPDATE | |8 |272 | +|1 | SUBPLAN FILTER | |8 |264 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |225 | +|4 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |225 | +|5 | MERGE OUTER JOIN | |1 |79 | +|6 | TABLE SCAN |t1 |1 |39 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | MATERIAL | |8 |145 | +|9 | SUBPLAN SCAN |VIEW1|8 |143 | +|10| NESTED-LOOP OUTER JOIN | |8 |142 | +|11| HASH OUTER JOIN | |8 |91 | +|12| TABLE SCAN |t3 |8 |38 | +|13| TABLE SCAN |t4 |8 |38 | +|14| MATERIAL | |5 |38 | +|15| TABLE SCAN |t5 |5 |37 | +============================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter([t1.c1 = 1]), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter([t2.c1 = 1]), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access(nil) + 10 - output([1]), filter(nil), + conds([t3.c1 = t4.c1]), nl_params_(nil) + 11 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 14 - output([1]), filter(nil) + 15 - output([1]), filter(nil), + access([t5.__pk_increment]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |UPDATE | |8 |417 | +|1 | SUBPLAN FILTER | |8 |409 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |371 | +|4 | SUBPLAN FILTER | |1 |371 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP OUTER JOIN| |8 |142 | +|9 | HASH OUTER JOIN | |8 |91 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| MATERIAL | |5 |38 | +|13| TABLE SCAN |t5 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), startup_filter([?]), + conds([t3.c1 = t4.c1]), nl_params_(nil) + 9 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t5.__pk_increment]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); +Query Plan +============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------ +|0 |DELETE | |1 |265 | +|1 | SUBPLAN FILTER | |1 |264 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |225 | +|4 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |225 | +|5 | MERGE OUTER JOIN | |1 |79 | +|6 | TABLE SCAN |t1 |1 |39 | +|7 | TABLE SCAN |t2 |1 |39 | +|8 | MATERIAL | |8 |145 | +|9 | SUBPLAN SCAN |VIEW1|8 |143 | +|10| NESTED-LOOP OUTER JOIN | |8 |142 | +|11| HASH OUTER JOIN | |8 |91 | +|12| TABLE SCAN |t3 |8 |38 | +|13| TABLE SCAN |t4 |8 |38 | +|14| MATERIAL | |5 |38 | +|15| TABLE SCAN |t5 |5 |37 | +============================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter([t1.c1 = 1]), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter([t2.c1 = 1]), + access([t2.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter(nil), + access(nil) + 10 - output([1]), filter(nil), + conds([t3.c1 = t4.c1]), nl_params_(nil) + 11 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 12 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 13 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 14 - output([1]), filter(nil) + 15 - output([1]), filter(nil), + access([t5.__pk_increment]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |DELETE | |1 |410 | +|1 | SUBPLAN FILTER | |1 |409 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |371 | +|4 | SUBPLAN FILTER | |1 |371 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP OUTER JOIN| |8 |142 | +|9 | HASH OUTER JOIN | |8 |91 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| MATERIAL | |5 |38 | +|13| TABLE SCAN |t5 |5 |37 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([t1.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), startup_filter([?]), + conds([t3.c1 = t4.c1]), nl_params_(nil) + 9 - output([t3.c1], [t4.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter(nil), + access([t5.__pk_increment]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t4.c1 where t1.c1=1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 2.8674417556808756 | ++--------------------+ +rollback; + +EXPLAIN select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |HASH OUTER JOIN | |3 |230 | +|1 | HASH RIGHT ANTI JOIN| |3 |184 | +|2 | SUBPLAN SCAN |VIEW1|5 |135 | +|3 | HASH OUTER JOIN | |5 |135 | +|4 | HASH JOIN | |5 |85 | +|5 | TABLE SCAN |t5 |5 |37 | +|6 | TABLE SCAN |t3 |8 |38 | +|7 | TABLE SCAN |t4 |8 |38 | +|8 | TABLE SCAN |t1 |8 |38 | +|9 | TABLE SCAN |t2 |9 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 2 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 3 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 4 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 5 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 6 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 7 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |SUBPLAN FILTER | |4 |1012| +|1 | HASH OUTER JOIN | |8 |93 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | TABLE SCAN |t2 |9 |38 | +|4 | NESTED-LOOP JOIN CARTESIAN| |1 |115 | +|5 | MERGE OUTER JOIN | |1 |77 | +|6 | TABLE SCAN |t3 |1 |38 | +|7 | TABLE SCAN |t4 |1 |38 | +|8 | MATERIAL | |1 |38 | +|9 | TABLE SCAN |t5 |1 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([NULL]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 7 - output([t4.c1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 8 - output([1]), filter(nil) + 9 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + +select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 2 | 2 | 2 | 2 | +| 5 | 5 | NULL | NULL | +| 10 | 10 | NULL | NULL | +| NULL | 1 | NULL | NULL | +| NULL | 5 | NULL | NULL | ++------+------+------+------+ +EXPLAIN insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |3 |231 | +|1 | SUBPLAN SCAN |VIEW1|3 |230 | +|2 | HASH OUTER JOIN | |3 |230 | +|3 | HASH RIGHT ANTI JOIN| |3 |184 | +|4 | SUBPLAN SCAN |VIEW2|5 |135 | +|5 | HASH OUTER JOIN | |5 |135 | +|6 | HASH JOIN | |5 |85 | +|7 | TABLE SCAN |t5 |5 |37 | +|8 | TABLE SCAN |t3 |8 |38 | +|9 | TABLE SCAN |t4 |8 |38 | +|10| TABLE SCAN |t1 |8 |38 | +|11| TABLE SCAN |t2 |9 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t5.c1]), other_conds(nil) + 4 - output([VIEW2.t5.c1]), filter(nil), + access([VIEW2.t5.c1]) + 5 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 6 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 7 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 8 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp (select * from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); + +rollback; +EXPLAIN insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |INSERT | |4 |1013| +|1 | SUBPLAN SCAN |VIEW1|4 |1013| +|2 | SUBPLAN FILTER | |4 |1012| +|3 | HASH OUTER JOIN | |8 |93 | +|4 | TABLE SCAN |t1 |8 |38 | +|5 | TABLE SCAN |t2 |9 |38 | +|6 | NESTED-LOOP JOIN CARTESIAN| |1 |115 | +|7 | MERGE OUTER JOIN | |1 |77 | +|8 | TABLE SCAN |t3 |1 |38 | +|9 | TABLE SCAN |t4 |1 |38 | +|10| MATERIAL | |1 |38 | +|11| TABLE SCAN |t5 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 6 - output([NULL]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 9 - output([t4.c1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 10 - output([1]), filter(nil) + 11 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + +insert into t4_temp (select /*+NO_REWRITE*/* from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1)); + +rollback; +EXPLAIN update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |8 |271 | +|1 | SUBPLAN FILTER | |8 |263 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |225 | +|4 | HASH OUTER JOIN | |1 |225 | +|5 | HASH RIGHT ANTI JOIN| |3 |184 | +|6 | SUBPLAN SCAN |VIEW1|5 |135 | +|7 | HASH OUTER JOIN | |5 |135 | +|8 | HASH JOIN | |5 |85 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| TABLE SCAN |t1 |8 |38 | +|13| TABLE SCAN |t2 |3 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 6 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 7 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t1 set c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |UPDATE | |8 |361 | +|1 | SUBPLAN FILTER | |8 |353 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | LIMIT | |1 |314 | +|4 | SUBPLAN FILTER | |1 |314 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |115 | +|9 | MERGE OUTER JOIN | |1 |77 | +|10| TABLE SCAN |t3 |1 |38 | +|11| TABLE SCAN |t4 |1 |38 | +|12| MATERIAL | |1 |38 | +|13| TABLE SCAN |t5 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + +update t1 set c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |DELETE | |1 |264 | +|1 | SUBPLAN FILTER | |1 |263 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |225 | +|4 | HASH OUTER JOIN | |1 |225 | +|5 | HASH RIGHT ANTI JOIN| |3 |184 | +|6 | SUBPLAN SCAN |VIEW1|5 |135 | +|7 | HASH OUTER JOIN | |5 |135 | +|8 | HASH JOIN | |5 |85 | +|9 | TABLE SCAN |t5 |5 |37 | +|10| TABLE SCAN |t3 |8 |38 | +|11| TABLE SCAN |t4 |8 |38 | +|12| TABLE SCAN |t1 |8 |38 | +|13| TABLE SCAN |t2 |3 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t5.c1]), other_conds(nil) + 6 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 7 - output([t5.c1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 8 - output([t5.c1], [t3.c1]), filter(nil), + equal_conds([t3.c1 = t5.c1]), other_conds(nil) + 9 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 10 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 12 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 13 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t1 where c2 = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; +EXPLAIN delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +Query Plan +======================================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------------- +|0 |DELETE | |1 |354 | +|1 | SUBPLAN FILTER | |1 |353 | +|2 | TABLE SCAN |t1 |1 |39 | +|3 | LIMIT | |1 |314 | +|4 | SUBPLAN FILTER | |1 |314 | +|5 | HASH OUTER JOIN | |2 |85 | +|6 | TABLE SCAN |t1 |8 |38 | +|7 | TABLE SCAN |t2 |3 |37 | +|8 | NESTED-LOOP JOIN CARTESIAN| |1 |115 | +|9 | MERGE OUTER JOIN | |1 |77 | +|10| TABLE SCAN |t3 |1 |38 | +|11| TABLE SCAN |t4 |1 |38 | +|12| MATERIAL | |1 |38 | +|13| TABLE SCAN |t5 |1 |38 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter([t1.c2 = ?]), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 5 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([NULL]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([1]), filter(nil), + equal_conds([t3.c1 = t4.c1]), other_conds(nil) + 10 - output([t3.c1]), filter([? = t3.c1]), + access([t3.c1]), partitions(p0) + 11 - output([t4.c1]), filter([? = t4.c1]), + access([t4.c1]), partitions(p0) + 12 - output([1]), filter(nil) + 13 - output([1]), filter([? = t5.c1]), + access([t5.c1]), partitions(p0) + +delete from t1 where c2 = (select /*+ NO_REWRITE */t1.c1 from t1 left join t2 on t1.c1=t2.c1 where not exists (select null from t3 left join t4 on t3.c1=t4.c1 left join t5 on t3.c1=t5.c1 where t1.c1=t5.c1) limit 1); +EXPLAIN select stddev(c2) from t1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t1.c2 * t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2 * t1.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t1.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t1.c2) * T_FUN_COUNT(t1.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c2)], [T_FUN_SUM(t1.c2 * t1.c2)], [T_FUN_COUNT(t1.c2)], [T_FUN_COUNT(t1.c2 * t1.c2)]) + 1 - output([t1.c2], [t1.c2 * t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + +select stddev(c2) from t1; ++--------------------+ +| stddev(c2) | ++--------------------+ +| 3.3226495451672298 | ++--------------------+ +rollback; + +set autocommit=1; + +drop table if exists t5, t6, t7, t8, t9, t10, t11; +create table t5(c1 int primary key, c2 int, c3 varchar(32)); +create table t6(c1 int, c2 int, c3 varchar(32), primary key(c1,c2)); +create table t7(c1 int primary key, c2 int, c3 varchar(32)) + partition by hash(c1) partitions 5; +create table t8(c1 int, c2 int not null, c3 varchar(32), + foreign key(c1) references t5(c1), + foreign key(c2) references t5(c1)); +create table t9(c1 int not null, c2 int, c3 varchar(32), + foreign key(c1) references t7(c1)) + partition by list(c1) ( + partition p0 values in(1,2), + partition p1 values in(3,4), + partition p2 values in(5,6), + partition p3 values in(7,8), + partition p4 values in(9,10)); +create table t10(c1 int not null, c2 int, c3 varchar(32), + foreign key(c1) references t7(c1)) + partition by hash(c1) partitions 5; +create table t11(c1 int not null, c2 int not null, c3 varchar(32), + foreign key(c1,c2) references t6(c1,c2)); + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 1, 'a'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({2, 5, 'b'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 5, 'c'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 6, 'd'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({5, 7, 'e'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({6, 8, 'f'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t6: ({t6: (t6.c1, t6.c2, t6.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 1, 'a'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t6: ({t6: (t6.c1, t6.c2, t6.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({2, 2, 'b'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t6: ({t6: (t6.c1, t6.c2, t6.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'c'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t6: ({t6: (t6.c1, t6.c2, t6.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 4, 'd'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t6: ({t6: (t6.c1, t6.c2, t6.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({5, 5, 'e'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t6: ({t6: (t6.c1, t6.c2, t6.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({6, 6, 'f'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t7: ({t7: (t7.c1, t7.c2, t7.c3)})}]), partitions(p1) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 1, 'a'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t7: ({t7: (t7.c1, t7.c2, t7.c3)})}]), partitions(p2) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({2, 5, 'b'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t7: ({t7: (t7.c1, t7.c2, t7.c3)})}]), partitions(p3) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 5, 'c'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t7: ({t7: (t7.c1, t7.c2, t7.c3)})}]), partitions(p4) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 6, 'd'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t7: ({t7: (t7.c1, t7.c2, t7.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({5, 7, 'e'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t7: ({t7: (t7.c1, t7.c2, t7.c3)})}]), partitions(p1) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({6, 8, 'f'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t8: ({t8: (t8.__pk_increment, t8.c1, t8.c2, t8.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 1, 'a'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t8: ({t8: (t8.__pk_increment, t8.c1, t8.c2, t8.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 2, 'b'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t8: ({t8: (t8.__pk_increment, t8.c1, t8.c2, t8.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'c'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t8: ({t8: (t8.__pk_increment, t8.c1, t8.c2, t8.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'd'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t8: ({t8: (t8.__pk_increment, t8.c1, t8.c2, t8.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({NULL, 4, 'e'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t8: ({t8: (t8.__pk_increment, t8.c1, t8.c2, t8.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({NULL, 4, 'f'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t9: ({t9: (t9.c1, t9.__pk_increment, t9.c2, t9.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 2, 'a'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t9: ({t9: (t9.c1, t9.__pk_increment, t9.c2, t9.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 2, 'b'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t9: ({t9: (t9.c1, t9.__pk_increment, t9.c2, t9.c3)})}]), partitions(p1) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'c'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t9: ({t9: (t9.c1, t9.__pk_increment, t9.c2, t9.c3)})}]), partitions(p1) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'd'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t9: ({t9: (t9.c1, t9.__pk_increment, t9.c2, t9.c3)})}]), partitions(p1) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 4, 'e'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t9: ({t9: (t9.c1, t9.__pk_increment, t9.c2, t9.c3)})}]), partitions(p1) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 4, 'f'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t10: ({t10: (t10.c1, t10.__pk_increment, t10.c2, t10.c3)})}]), partitions(p1) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 2, 'a'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t10: ({t10: (t10.c1, t10.__pk_increment, t10.c2, t10.c3)})}]), partitions(p1) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 2, 'b'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t10: ({t10: (t10.c1, t10.__pk_increment, t10.c2, t10.c3)})}]), partitions(p3) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'c'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t10: ({t10: (t10.c1, t10.__pk_increment, t10.c2, t10.c3)})}]), partitions(p3) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'd'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t10: ({t10: (t10.c1, t10.__pk_increment, t10.c2, t10.c3)})}]), partitions(p4) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 4, 'e'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t10: ({t10: (t10.c1, t10.__pk_increment, t10.c2, t10.c3)})}]), partitions(p4) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 4, 'f'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t11: ({t11: (t11.__pk_increment, t11.c1, t11.c2, t11.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 1, 'a'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t11: ({t11: (t11.__pk_increment, t11.c1, t11.c2, t11.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({1, 1, 'b'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t11: ({t11: (t11.__pk_increment, t11.c1, t11.c2, t11.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'c'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t11: ({t11: (t11.__pk_increment, t11.c1, t11.c2, t11.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({3, 3, 'd'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t11: ({t11: (t11.__pk_increment, t11.c1, t11.c2, t11.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 4, 'e'}) + +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NOT NULL,__values.c1)], [column_conv(INT,PS:(11,0),NOT NULL,__values.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,__values.c3)]), filter(nil), + columns([{t11: ({t11: (t11.__pk_increment, t11.c1, t11.c2, t11.c3)})}]), partitions(p0) + 1 - output([__values.c1], [__values.c2], [__values.c3]), filter(nil) + values({4, 4, 'f'}) + +set autocommit=0; + +##cases 增强功能,根据主外键消除外连接 +##case 简单主外键连接 +##外键没有非空约束,不能消除 +EXPLAIN select * from t8 a left join t5 b on a.c1=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c1, ASC]) + 2 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select * from t8 a left join t5 b on a.c1=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 1 | 1 | a | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | +| NULL | 4 | e | NULL | NULL | NULL | +| NULL | 4 | f | NULL | NULL | NULL | ++------+----+------+----+------+------+ +##左表为父表,不能消除 +EXPLAIN select * from t8 a right join t5 b on a.c2=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |90 | +|1 | TABLE SCAN |b |6 |37 | +|2 | SORT | |6 |48 | +|3 | TABLE SCAN |a |6 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + 2 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 3 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + +select * from t8 a right join t5 b on a.c2=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | +| NULL | 4 | e | 4 | 6 | d | +| NULL | 4 | f | 4 | 6 | d | +| NULL | NULL | NULL | 5 | 7 | e | +| NULL | NULL | NULL | 6 | 8 | f | ++------+----+------+----+------+------+ +##主键在generated table中,不能消除 +EXPLAIN select * from t8 a left join (select * from t5 where t5.c1>0) b on a.c2=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |t5 |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [t5.c1], [t5.c2], [t5.c3]), filter(nil), + equal_conds([a.c2 = t5.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil), + access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) + +select * from t8 a left join (select * from t5 where t5.c1>0) b on a.c2=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | +| NULL | 4 | e | 4 | 6 | d | +| NULL | 4 | f | 4 | 6 | d | ++------+----+------+----+------+------+ +##主键在generated table中,不能消除 +EXPLAIN select * from (select * from t8 where t8.c1>0) a left join (select * from t5 where t5.c1>0) b on a.c2=b.c1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |61 | +|1 | TABLE SCAN |t8 |1 |39 | +|2 | TABLE GET |t5 |1 |36 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t8.c1], [t8.c2], [t8.c3], [t5.c1], [t5.c2], [t5.c3]), filter(nil), + conds(nil), nl_params_([t8.c2]) + 1 - output([t8.c1], [t8.c2], [t8.c3]), filter([t8.c1 > 0]), + access([t8.c1], [t8.c2], [t8.c3]), partitions(p0) + 2 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil), + access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) + +select * from (select * from t8 where t8.c1>0) a left join (select * from t5 where t5.c1>0) b on a.c2=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | ++------+----+------+----+------+------+ +##非等值连接,不能消除 +EXPLAIN select * from t8 a left join t5 b on a.c2>b.c1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |12 |263 | +|1 | TABLE SCAN |a |6 |38 | +|2 | TABLE SCAN |b |2 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + conds(nil), nl_params_([a.c2]) + 1 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select * from t8 a left join t5 b on a.c2>b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | NULL | NULL | NULL | +| 1 | 2 | b | 1 | 1 | a | +| 3 | 3 | c | 1 | 1 | a | +| 3 | 3 | c | 2 | 5 | b | +| 3 | 3 | d | 1 | 1 | a | +| 3 | 3 | d | 2 | 5 | b | +| NULL | 4 | e | 1 | 1 | a | +| NULL | 4 | e | 2 | 5 | b | +| NULL | 4 | e | 3 | 5 | c | +| NULL | 4 | f | 1 | 1 | a | +| NULL | 4 | f | 2 | 5 | b | +| NULL | 4 | f | 3 | 5 | c | ++------+----+------+----+------+------+ +##含有非主外键连接条件,不能消除 +EXPLAIN select * from t8 a left join t5 b on a.c2=b.c1 and a.c1<3; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |88 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds([a.c1 < 3]) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select * from t8 a left join t5 b on a.c2=b.c1 and a.c1<3; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | NULL | NULL | NULL | +| 3 | 3 | d | NULL | NULL | NULL | +| NULL | 4 | e | NULL | NULL | NULL | +| NULL | 4 | f | NULL | NULL | NULL | ++------+----+------+----+------+------+ +##on condition有重复expr +EXPLAIN select * from t8 a left join t5 b on a.c2=b.c1 and a.c2=b.c1 and a.c2=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select * from t8 a left join t5 b on a.c2=b.c1 and a.c2=b.c1 and a.c2=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | +| NULL | 4 | e | 4 | 6 | d | +| NULL | 4 | f | 4 | 6 | d | ++------+----+------+----+------+------+ +EXPLAIN select * from t8 a left join t5 b on a.c2=b.c1; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN|a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select * from t8 a left join t5 b on a.c2=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | +| NULL | 4 | e | 4 | 6 | d | +| NULL | 4 | f | 4 | 6 | d | ++------+----+------+----+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t8 a left join t5 b on a.c2=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select /*+NO_REWRITE*/* from t8 a left join t5 b on a.c2=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | +| NULL | 4 | e | 4 | 6 | d | +| NULL | 4 | f | 4 | 6 | d | ++------+----+------+----+------+------+ +EXPLAIN insert into t16_temp (select * from t8 a left join t5 b on a.c2=b.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE JOIN | |6 |90 | +|3 | SORT | |6 |48 | +|4 | TABLE SCAN|a |6 |38 | +|5 | TABLE SCAN |b |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 4 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 5 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select * from t8 a left join t5 b on a.c2=b.c1); +rollback; +EXPLAIN insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a left join t5 b on a.c2=b.c1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE OUTER JOIN| |6 |90 | +|3 | SORT | |6 |48 | +|4 | TABLE SCAN |a |6 |38 | +|5 | TABLE SCAN |b |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 4 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 5 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a left join t5 b on a.c2=b.c1); +rollback; +EXPLAIN update t5 set c2 = (select a.c1 from t8 a left join t5 b on a.c2=b.c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | TABLE SCAN |a |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0), + limit(1), offset(nil) + +update t5 set c2 = (select a.c1 from t8 a left join t5 b on a.c2=b.c1 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a left join t5 b on a.c2=b.c1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |a |1 |36 | +|6 | TABLE GET |b |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), limit(1), offset(nil) + 4 - output([a.c1]), filter(nil), + conds(nil), nl_params_([a.c2]) + 5 - output([a.c2], [a.c1]), filter(nil), + access([a.c2], [a.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([b.c1]), partitions(p0) + +update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a left join t5 b on a.c2=b.c1 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; + +EXPLAIN select * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |NESTED-LOOP JOIN| |1 |61 | +|1 | TABLE SCAN |a |1 |39 | +|2 | TABLE GET |b |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + conds(nil), nl_params_([a.c1]) + 1 - output([a.c1], [a.c2], [a.c3]), filter([a.c1 > 0]), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 1 | 1 | a | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | ++------+----+------+----+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t8 a left join t5 b on a.c1=b.c1 where a.c1>0; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN| |1 |61 | +|1 | TABLE SCAN |a |1 |39 | +|2 | TABLE GET |b |1 |36 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + conds(nil), nl_params_([a.c1]) + 1 - output([a.c1], [a.c2], [a.c3]), filter([a.c1 > 0]), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select /*+NO_REWRITE*/* from t8 a left join t5 b on a.c1=b.c1 where a.c1>0; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 1 | 1 | a | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | ++------+----+------+----+------+------+ +EXPLAIN insert into t16_temp (select * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |61 | +|1 | SUBPLAN SCAN |VIEW1|1 |61 | +|2 | NESTED-LOOP JOIN| |1 |61 | +|3 | TABLE SCAN |a |1 |39 | +|4 | TABLE GET |b |1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + conds(nil), nl_params_([a.c1]) + 3 - output([a.c1], [a.c2], [a.c3]), filter([a.c1 > 0]), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 4 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0); +rollback; +EXPLAIN insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |1 |61 | +|1 | SUBPLAN SCAN |VIEW1|1 |61 | +|2 | NESTED-LOOP OUTER JOIN| |1 |61 | +|3 | TABLE SCAN |a |1 |39 | +|4 | TABLE GET |b |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + conds(nil), nl_params_([a.c1]) + 3 - output([a.c1], [a.c2], [a.c3]), filter([a.c1 > 0]), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 4 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a left join t5 b on a.c1=b.c1 where a.c1>0); +rollback; +EXPLAIN update t5 set c2 = (select a.c1 from t8 a left join t5 b on a.c1=b.c1 where a.c1>0 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |82 | +|1 | SUBPLAN FILTER| |6 |76 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | TABLE SCAN |a |1 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter([a.c1 > 0]), + access([a.c1]), partitions(p0), + limit(1), offset(nil) + +update t5 set c2 = (select a.c1 from t8 a left join t5 b on a.c1=b.c1 where a.c1>0 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a left join t5 b on a.c1=b.c1 where a.c1>0 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |104 | +|1 | SUBPLAN FILTER | |6 |98 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |60 | +|4 | NESTED-LOOP OUTER JOIN| |1 |60 | +|5 | TABLE SCAN |a |1 |38 | +|6 | TABLE GET |b |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), limit(1), offset(nil) + 4 - output([a.c1]), filter(nil), + conds(nil), nl_params_([a.c1]) + 5 - output([a.c1]), filter([a.c1 > 0]), + access([a.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([b.c1]), partitions(p0) + +update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a left join t5 b on a.c1=b.c1 where a.c1>0 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; + +##case 多列主外键连接 +##主外键没有一一对应连接,不能消除 +EXPLAIN select * from t11 a left join t6 b on a.c1=b.c2 and a.c2=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |91 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1], [a.c1 = b.c2]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC], [a.c1, ASC]) + 2 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 3 - output([b.c2], [b.c1], [b.c3]), filter(nil), + access([b.c2], [b.c1], [b.c3]), partitions(p0) + +select * from t11 a left join t6 b on a.c1=b.c2 and a.c2=b.c1; ++----+----+------+----+----+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+----+------+----+----+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 1 | b | 1 | 1 | a | +| 3 | 3 | c | 3 | 3 | c | +| 3 | 3 | d | 3 | 3 | c | +| 4 | 4 | e | 4 | 4 | d | +| 4 | 4 | f | 4 | 4 | d | ++----+----+------+----+----+------+ +EXPLAIN select * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |91 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN|a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1], [a.c2 = b.c2]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c1, ASC], [a.c2, ASC]) + 2 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2; ++----+----+------+----+----+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+----+------+----+----+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 1 | b | 1 | 1 | a | +| 3 | 3 | c | 3 | 3 | c | +| 3 | 3 | d | 3 | 3 | c | +| 4 | 4 | e | 4 | 4 | d | +| 4 | 4 | f | 4 | 4 | d | ++----+----+------+----+----+------+ +EXPLAIN select /*+NO_REWRITE*/* from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |91 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1], [a.c2 = b.c2]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c1, ASC], [a.c2, ASC]) + 2 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select /*+NO_REWRITE*/* from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2; ++----+----+------+----+----+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+----+------+----+----+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 1 | b | 1 | 1 | a | +| 3 | 3 | c | 3 | 3 | c | +| 3 | 3 | d | 3 | 3 | c | +| 4 | 4 | e | 4 | 4 | d | +| 4 | 4 | f | 4 | 4 | d | ++----+----+------+----+----+------+ +EXPLAIN insert into t16_temp (select * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE JOIN | |6 |91 | +|3 | SORT | |6 |48 | +|4 | TABLE SCAN|a |6 |38 | +|5 | TABLE SCAN |b |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1], [a.c2 = b.c2]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c1, ASC], [a.c2, ASC]) + 4 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 5 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2); +rollback; +EXPLAIN insert into t16_temp (select /*+NO_REWRITE*/ * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE OUTER JOIN| |6 |91 | +|3 | SORT | |6 |48 | +|4 | TABLE SCAN |a |6 |38 | +|5 | TABLE SCAN |b |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1], [a.c2 = b.c2]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c1, ASC], [a.c2, ASC]) + 4 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p0) + 5 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select /*+NO_REWRITE*/ * from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2); +rollback; +EXPLAIN update t5 set c2 = (select a.c1 from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | TABLE SCAN |a |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0), + limit(1), offset(nil) + +update t5 set c2 = (select a.c1 from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |a |1 |36 | +|6 | TABLE GET |b |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), limit(1), offset(nil) + 4 - output([a.c1]), filter(nil), + conds(nil), nl_params_([a.c1], [a.c2]) + 5 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 6 - output([1]), filter(nil), + access([b.c1]), partitions(p0) + +update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t11 a left join t6 b on a.c1=b.c1 and a.c2=b.c2 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; + +##case 分区表的主外键连接 +##父表有partition hint,不能消除 +EXPLAIN select * from t10 partition(p1) a left join t7 partition(p1) b on a.c1=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |2 |75 | +|1 | TABLE SCAN |a |2 |37 | +|2 | TABLE SCAN |b |2 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p1) + 2 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p1) + +select * from t10 partition(p1) a left join t7 partition(p1) b on a.c1=b.c1; ++----+------+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+----+------+------+ +| 1 | 2 | a | 1 | 1 | a | +| 1 | 2 | b | 1 | 1 | a | ++----+------+------+----+------+------+ +EXPLAIN select * from t10 partition(p1) a left join t7 b on a.c1=b.c1; +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |PX COORDINATOR | |2 |86 | +|1 | EXCHANGE OUT DISTR |:EX10001|2 |85 | +|2 | MERGE JOIN | |2 |85 | +|3 | EXCHANGE IN DISTR | |2 |37 | +|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|2 |37 | +|5 | TABLE SCAN |a |2 |37 | +|6 | SORT | |5 |46 | +|7 | PX PARTITION ITERATOR | |5 |37 | +|8 | TABLE SCAN |b |5 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil) + 1 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), dop=1 + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil) + 4 - (#keys=1, [a.c1]), output([a.c1], [a.c2], [a.c3]), filter(nil), is_single, dop=1 + 5 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p1) + 6 - output([b.c1], [b.c2], [b.c3]), filter(nil), sort_keys([b.c1, ASC]), local merge sort + 7 - output([b.c1], [b.c2], [b.c3]), filter(nil) + 8 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p[0-4]) + +select * from t10 partition(p1) a left join t7 b on a.c1=b.c1; ++----+------+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+----+------+------+ +| 1 | 2 | a | 1 | 1 | a | +| 1 | 2 | b | 1 | 1 | a | ++----+------+------+----+------+------+ +EXPLAIN select /*+NO_REWRITE*/ * from t10 partition(p1) a left join t7 b on a.c1=b.c1; +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |PX COORDINATOR | |2 |86 | +|1 | EXCHANGE OUT DISTR |:EX10001|2 |85 | +|2 | MERGE OUTER JOIN | |2 |85 | +|3 | EXCHANGE IN DISTR | |2 |37 | +|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000|2 |37 | +|5 | TABLE SCAN |a |2 |37 | +|6 | SORT | |5 |46 | +|7 | PX PARTITION ITERATOR | |5 |37 | +|8 | TABLE SCAN |b |5 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil) + 1 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), dop=1 + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil) + 4 - (#keys=1, [a.c1]), output([a.c1], [a.c2], [a.c3]), filter(nil), is_single, dop=1 + 5 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p1) + 6 - output([b.c1], [b.c2], [b.c3]), filter(nil), sort_keys([b.c1, ASC]), local merge sort + 7 - output([b.c1], [b.c2], [b.c3]), filter(nil) + 8 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p[0-4]) + +select /*+NO_REWRITE*/ * from t10 partition(p1) a left join t7 b on a.c1=b.c1; ++----+------+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+----+------+------+ +| 1 | 2 | a | 1 | 1 | a | +| 1 | 2 | b | 1 | 1 | a | ++----+------+------+----+------+------+ +EXPLAIN insert into t16_temp (select * from t10 partition(p1) a left join t7 b on a.c1=b.c1); +Query Plan +============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------ +|0 |INSERT | |2 |86 | +|1 | PX COORDINATOR | |2 |86 | +|2 | EXCHANGE OUT DISTR |:EX10001|2 |85 | +|3 | SUBPLAN SCAN |VIEW1 |2 |85 | +|4 | MERGE JOIN | |2 |85 | +|5 | EXCHANGE IN DISTR | |2 |37 | +|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|2 |37 | +|7 | TABLE SCAN |a |2 |37 | +|8 | SORT | |5 |46 | +|9 | PX PARTITION ITERATOR | |5 |37 | +|10| TABLE SCAN |b |5 |37 | +============================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil) + 2 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), dop=1 + 3 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 4 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 5 - output([a.c1], [a.c2], [a.c3]), filter(nil) + 6 - (#keys=1, [a.c1]), output([a.c1], [a.c2], [a.c3]), filter(nil), is_single, dop=1 + 7 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p1) + 8 - output([b.c1], [b.c2], [b.c3]), filter(nil), sort_keys([b.c1, ASC]), local merge sort + 9 - output([b.c1], [b.c2], [b.c3]), filter(nil) + 10 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p[0-4]) + +insert into t16_temp (select * from t10 partition(p1) a left join t7 b on a.c1=b.c1); +rollback; +EXPLAIN insert into t16_temp (select /*+NO_REWRITE*/ * from t10 partition(p1) a left join t7 b on a.c1=b.c1); +Query Plan +============================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------ +|0 |INSERT | |2 |86 | +|1 | PX COORDINATOR | |2 |86 | +|2 | EXCHANGE OUT DISTR |:EX10001|2 |85 | +|3 | SUBPLAN SCAN |VIEW1 |2 |85 | +|4 | MERGE OUTER JOIN | |2 |85 | +|5 | EXCHANGE IN DISTR | |2 |37 | +|6 | EXCHANGE OUT DISTR (PKEY)|:EX10000|2 |37 | +|7 | TABLE SCAN |a |2 |37 | +|8 | SORT | |5 |46 | +|9 | PX PARTITION ITERATOR | |5 |37 | +|10| TABLE SCAN |b |5 |37 | +============================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil) + 2 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), dop=1 + 3 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 4 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 5 - output([a.c1], [a.c2], [a.c3]), filter(nil) + 6 - (#keys=1, [a.c1]), output([a.c1], [a.c2], [a.c3]), filter(nil), is_single, dop=1 + 7 - output([a.c1], [a.c2], [a.c3]), filter(nil), + access([a.c1], [a.c2], [a.c3]), partitions(p1) + 8 - output([b.c1], [b.c2], [b.c3]), filter(nil), sort_keys([b.c1, ASC]), local merge sort + 9 - output([b.c1], [b.c2], [b.c3]), filter(nil) + 10 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p[0-4]) + +insert into t16_temp (select /*+NO_REWRITE*/ * from t10 partition(p1) a left join t7 b on a.c1=b.c1); +rollback; +EXPLAIN update t5 set c2 = (select a.c1 from t10 partition(p1) a left join t7 b on a.c1=b.c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | TABLE SCAN |a |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p1), + limit(1), offset(nil) + +update t5 set c2 = (select a.c1 from t10 partition(p1) a left join t7 b on a.c1=b.c1 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t10 partition(p1) a left join t7 b on a.c1=b.c1 limit 1); +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |74 | +|4 | PX COORDINATOR | |1 |73 | +|5 | EXCHANGE OUT DISTR |:EX10001|1 |73 | +|6 | LIMIT | |1 |73 | +|7 | NESTED-LOOP OUTER JOIN | |1 |73 | +|8 | EXCHANGE IN DISTR | |1 |36 | +|9 | EXCHANGE OUT DISTR (PKEY)|:EX10000|1 |36 | +|10| TABLE SCAN |a |1 |36 | +|11| PX PARTITION ITERATOR | |1 |36 | +|12| TABLE GET |b |1 |36 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), limit(1), offset(nil) + 4 - output([a.c1]), filter(nil) + 5 - output([a.c1]), filter(nil), dop=1 + 6 - output([a.c1]), filter(nil), limit(1), offset(nil) + 7 - output([a.c1]), filter(nil), + conds(nil), nl_params_([a.c1]) + 8 - output([a.c1], [PARTITION_ID]), filter(nil) + 9 - (#keys=1, [a.c1]), output([a.c1], [PARTITION_ID]), filter(nil), is_single, dop=1 + 10 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p1) + 11 - output([1]), filter(nil) + 12 - output([1]), filter(nil), + access([b.c1]), partitions(p[0-4]) + +update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t10 partition(p1) a left join t7 b on a.c1=b.c1 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; + +EXPLAIN select * from t8 a full join t5 b on a.c2=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |90 | +|1 | TABLE SCAN |b |6 |37 | +|2 | SORT | |6 |48 | +|3 | TABLE SCAN |a |6 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + 2 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 3 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + +select * from t8 a full join t5 b on a.c2=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | +| NULL | 4 | e | 4 | 6 | d | +| NULL | 4 | f | 4 | 6 | d | +| NULL | NULL | NULL | 5 | 7 | e | +| NULL | NULL | NULL | 6 | 8 | f | ++------+----+------+----+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t8 a full join t5 b on a.c2=b.c1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select /*+NO_REWRITE*/* from t8 a full join t5 b on a.c2=b.c1; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | +| NULL | 4 | e | 4 | 6 | d | +| NULL | 4 | f | 4 | 6 | d | +| NULL | NULL | NULL | 5 | 7 | e | +| NULL | NULL | NULL | 6 | 8 | f | ++------+----+------+----+------+------+ +EXPLAIN insert into t16_temp (select * from t8 a full join t5 b on a.c2=b.c1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE OUTER JOIN| |6 |90 | +|3 | TABLE SCAN |b |6 |37 | +|4 | SORT | |6 |48 | +|5 | TABLE SCAN |a |6 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + 4 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 5 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + +insert into t16_temp (select * from t8 a full join t5 b on a.c2=b.c1); +rollback; +EXPLAIN insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a full join t5 b on a.c2=b.c1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE FULL OUTER JOIN| |6 |90 | +|3 | SORT | |6 |48 | +|4 | TABLE SCAN |a |6 |38 | +|5 | TABLE SCAN |b |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 4 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 5 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a full join t5 b on a.c2=b.c1); +rollback; +EXPLAIN update t5 set c2 = (select a.c1 from t8 a full join t5 b on a.c2=b.c1 limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |UPDATE | |6 |121 | +|1 | SUBPLAN FILTER | |6 |115 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |77 | +|4 | HASH OUTER JOIN| |1 |77 | +|5 | SUBPLAN SCAN |VIEW1|1 |37 | +|6 | TABLE SCAN |b |1 |36 | +|7 | TABLE SCAN |a |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), limit(1), offset(nil) + 4 - output([a.c1]), filter(nil), + equal_conds([a.c2 = VIEW1.b.c1]), other_conds(nil) + 5 - output([VIEW1.b.c1]), filter(nil), + access([VIEW1.b.c1]) + 6 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p0), + limit(1), offset(nil) + 7 - output([a.c2], [a.c1]), filter(nil), + access([a.c2], [a.c1]), partitions(p0) + +update t5 set c2 = (select a.c1 from t8 a full join t5 b on a.c2=b.c1 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a full join t5 b on a.c2=b.c1 limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |6 |125 | +|1 | SUBPLAN FILTER | |6 |119 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |81 | +|4 | HASH FULL OUTER JOIN| |1 |81 | +|5 | TABLE SCAN |b |6 |37 | +|6 | TABLE SCAN |a |1 |36 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), limit(1), offset(nil) + 4 - output([a.c1]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 5 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p0) + 6 - output([a.c2], [a.c1]), filter(nil), + access([a.c2], [a.c1]), partitions(p0) + +update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a full join t5 b on a.c2=b.c1 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; + +EXPLAIN select * from t5 b right join t8 a on a.c2=b.c1; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN|a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([b.c1], [b.c2], [b.c3], [a.c1], [a.c2], [a.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select * from t5 b right join t8 a on a.c2=b.c1; ++----+------+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+------+----+------+ +| 1 | 1 | a | 1 | 1 | a | +| 2 | 5 | b | 1 | 2 | b | +| 3 | 5 | c | 3 | 3 | c | +| 3 | 5 | c | 3 | 3 | d | +| 4 | 6 | d | NULL | 4 | e | +| 4 | 6 | d | NULL | 4 | f | ++----+------+------+------+----+------+ +EXPLAIN select /*+NO_REWRITE*/* from t5 b right join t8 a on a.c2=b.c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([b.c1], [b.c2], [b.c3], [a.c1], [a.c2], [a.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select /*+NO_REWRITE*/* from t5 b right join t8 a on a.c2=b.c1; ++----+------+------+------+----+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++----+------+------+------+----+------+ +| 1 | 1 | a | 1 | 1 | a | +| 2 | 5 | b | 1 | 2 | b | +| 3 | 5 | c | 3 | 3 | c | +| 3 | 5 | c | 3 | 3 | d | +| 4 | 6 | d | NULL | 4 | e | +| 4 | 6 | d | NULL | 4 | f | ++----+------+------+------+----+------+ +EXPLAIN insert into t16_temp (select * from t5 b right join t8 a on a.c2=b.c1); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE JOIN | |6 |90 | +|3 | SORT | |6 |48 | +|4 | TABLE SCAN|a |6 |38 | +|5 | TABLE SCAN |b |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([b.c1], [b.c2], [b.c3], [a.c1], [a.c2], [a.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 4 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 5 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select * from t5 b right join t8 a on a.c2=b.c1); + +rollback; +EXPLAIN insert into t16_temp (select /*+NO_REWRITE*/ * from t5 b right join t8 a on a.c2=b.c1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE OUTER JOIN| |6 |90 | +|3 | SORT | |6 |48 | +|4 | TABLE SCAN |a |6 |38 | +|5 | TABLE SCAN |b |6 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([b.c1], [b.c2], [b.c3], [a.c1], [a.c2], [a.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 4 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 5 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select /*+NO_REWRITE*/ * from t5 b right join t8 a on a.c2=b.c1); +rollback; +EXPLAIN update t5 set c2 = (select a.c1 from t5 b right join t8 a on a.c2=b.c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | TABLE SCAN |a |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), + access([a.c1]), partitions(p0), + limit(1), offset(nil) + +update t5 set c2 = (select a.c1 from t5 b right join t8 a on a.c2=b.c1 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t5 b right join t8 a on a.c2=b.c1 limit 1); +Query Plan +================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------------- +|0 |UPDATE | |6 |117 | +|1 | SUBPLAN FILTER | |6 |111 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |73 | +|4 | NESTED-LOOP OUTER JOIN| |1 |73 | +|5 | TABLE SCAN |a |1 |36 | +|6 | TABLE GET |b |1 |36 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), limit(1), offset(nil) + 4 - output([a.c1]), filter(nil), + conds(nil), nl_params_([a.c2]) + 5 - output([a.c2], [a.c1]), filter(nil), + access([a.c2], [a.c1]), partitions(p0) + 6 - output([1]), filter(nil), + access([b.c1]), partitions(p0) + +update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t5 b right join t8 a on a.c2=b.c1 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; + +EXPLAIN select * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |MERGE JOIN | |6 |91 | +|1 | TABLE SCAN |b |6 |37 | +|2 | SORT | |6 |48 | +|3 | TABLE SCAN|a |6 |38 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + 2 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 3 - output([a.c2], [a.c1], [a.c3]), filter([(T_OP_IS_NOT, a.c1, NULL, 0)]), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + +select * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | ++------+----+------+----+------+------+ +EXPLAIN select /*+NO_REWRITE*/* from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE FULL OUTER JOIN| |6 |90 | +|1 | SORT | |6 |48 | +|2 | TABLE SCAN |a |6 |38 | +|3 | TABLE SCAN |b |6 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter([(T_OP_IS_NOT, a.c1, NULL, 0)]), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 2 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +select /*+NO_REWRITE*/* from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null; ++------+----+------+----+------+------+ +| c1 | c2 | c3 | c1 | c2 | c3 | ++------+----+------+----+------+------+ +| 1 | 1 | a | 1 | 1 | a | +| 1 | 2 | b | 2 | 5 | b | +| 3 | 3 | c | 3 | 5 | c | +| 3 | 3 | d | 3 | 5 | c | ++------+----+------+----+------+------+ +EXPLAIN insert into t16_temp (select * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null); +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE JOIN | |6 |91 | +|3 | TABLE SCAN |b |6 |37 | +|4 | SORT | |6 |48 | +|5 | TABLE SCAN|a |6 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter(nil), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 3 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + 4 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 5 - output([a.c2], [a.c1], [a.c3]), filter([(T_OP_IS_NOT, a.c1, NULL, 0)]), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + +insert into t16_temp (select * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null); + +rollback; +EXPLAIN insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |6 |92 | +|1 | SUBPLAN SCAN |VIEW1|6 |91 | +|2 | MERGE FULL OUTER JOIN| |6 |90 | +|3 | SORT | |6 |48 | +|4 | TABLE SCAN |a |6 |38 | +|5 | TABLE SCAN |b |6 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(VARCHAR,utf8mb4_general_ci,length:32,NULL,VIEW1.c3)]), filter(nil), + columns([{t16_temp: ({t16_temp: (t16_temp.__pk_increment, t16_temp.a, t16_temp.b, t16_temp.c, t16_temp.d, t16_temp.e, t16_temp.f)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3], [VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([a.c1], [a.c2], [a.c3], [b.c1], [b.c2], [b.c3]), filter([(T_OP_IS_NOT, a.c1, NULL, 0)]), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 3 - output([a.c1], [a.c2], [a.c3]), filter(nil), sort_keys([a.c2, ASC]) + 4 - output([a.c2], [a.c1], [a.c3]), filter(nil), + access([a.c2], [a.c1], [a.c3]), partitions(p0) + 5 - output([b.c1], [b.c2], [b.c3]), filter(nil), + access([b.c1], [b.c2], [b.c3]), partitions(p0) + +insert into t16_temp (select /*+NO_REWRITE*/ * from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null); +rollback; +EXPLAIN update t5 set c2 = (select a.c1 from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |UPDATE | |6 |80 | +|1 | SUBPLAN FILTER| |6 |74 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | TABLE SCAN |a |1 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter([(T_OP_IS_NOT, a.c1, NULL, 0)]), + access([a.c1]), partitions(p0), + limit(1), offset(nil) + +update t5 set c2 = (select a.c1 from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |6 |125 | +|1 | SUBPLAN FILTER | |6 |119 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |81 | +|4 | HASH FULL OUTER JOIN| |1 |81 | +|5 | TABLE SCAN |b |6 |37 | +|6 | TABLE SCAN |a |1 |36 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c1]), filter(nil), limit(1), offset(nil) + 4 - output([a.c1]), filter([(T_OP_IS_NOT, a.c1, NULL, 0)]), + equal_conds([a.c2 = b.c1]), other_conds(nil) + 5 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p0) + 6 - output([a.c2], [a.c1]), filter(nil), + access([a.c2], [a.c1]), partitions(p0) + +update t5 set c2 = (select /*+NO_REWRITE*/ a.c1 from t8 a full join t5 b on a.c2=b.c1 where a.c1 is not null limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; + +EXPLAIN select * from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |HASH FULL OUTER JOIN| |6 |182 | +|1 | SUBPLAN SCAN |b |6 |86 | +|2 | MERGE JOIN | |6 |86 | +|3 | SORT | |6 |43 | +|4 | TABLE SCAN |t8 |6 |37 | +|5 | TABLE SCAN |t5 |6 |38 | +|6 | MERGE JOIN | |6 |84 | +|7 | SORT | |6 |42 | +|8 | TABLE SCAN |t8 |6 |37 | +|9 | TABLE SCAN |t5 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t5.c2], [b.c2]), filter(nil), + equal_conds([t5.c2 = b.c2]), other_conds(nil) + 1 - output([b.c2]), filter(nil), + access([b.c2]) + 2 - output([t8.c2]), filter(nil), + equal_conds([t8.c1 = t5.c1]), other_conds(nil) + 3 - output([t8.c2], [t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 4 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 5 - output([t5.c1]), filter([(T_OP_IS_NOT, t5.c2, NULL, 0)]), + access([t5.c1], [t5.c2]), partitions(p0) + 6 - output([t5.c2]), filter(nil), + equal_conds([t5.c1 = t8.c2]), other_conds(nil) + 7 - output([t8.c2]), filter(nil), sort_keys([t8.c2, ASC]) + 8 - output([t8.c2]), filter(nil), + access([t8.c2]), partitions(p0) + 9 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +select * from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2; ++------+----+ +| c2 | c2 | ++------+----+ +| 1 | 1 | +| 5 | NULL | +| 5 | NULL | +| 5 | NULL | +| 6 | NULL | +| 6 | NULL | +| NULL | 2 | +| NULL | 3 | +| NULL | 3 | ++------+----+ +EXPLAIN select /*+NO_REWRITE*/* from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |HASH FULL OUTER JOIN| |6 |182 | +|1 | SUBPLAN SCAN |a |6 |85 | +|2 | MERGE OUTER JOIN | |6 |84 | +|3 | SORT | |6 |42 | +|4 | TABLE SCAN |t8 |6 |37 | +|5 | TABLE SCAN |t5 |6 |37 | +|6 | SUBPLAN SCAN |b |6 |86 | +|7 | MERGE OUTER JOIN | |6 |85 | +|8 | SORT | |6 |43 | +|9 | TABLE SCAN |t8 |6 |37 | +|10| TABLE SCAN |t5 |6 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c2], [b.c2]), filter(nil), + equal_conds([a.c2 = b.c2]), other_conds(nil) + 1 - output([a.c2]), filter(nil), + access([a.c2]) + 2 - output([t5.c2]), filter(nil), + equal_conds([t5.c1 = t8.c2]), other_conds(nil) + 3 - output([t8.c2]), filter(nil), sort_keys([t8.c2, ASC]) + 4 - output([t8.c2]), filter(nil), + access([t8.c2]), partitions(p0) + 5 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 6 - output([b.c2]), filter(nil), + access([b.c2]) + 7 - output([t8.c2]), filter([(T_OP_IS_NOT, t5.c2, NULL, 0)]), + equal_conds([t8.c1 = t5.c1]), other_conds(nil) + 8 - output([t8.c2], [t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 9 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 10 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +select /*+NO_REWRITE*/* from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2; ++------+----+ +| c2 | c2 | ++------+----+ +| 1 | 1 | +| 5 | NULL | +| 5 | NULL | +| 5 | NULL | +| 6 | NULL | +| 6 | NULL | +| NULL | 2 | +| NULL | 3 | +| NULL | 3 | ++------+----+ +EXPLAIN insert into t11_temp (select * from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |6 |184 | +|1 | SUBPLAN SCAN |VIEW1|6 |183 | +|2 | HASH FULL OUTER JOIN| |6 |182 | +|3 | SUBPLAN SCAN |b |6 |86 | +|4 | MERGE JOIN | |6 |86 | +|5 | SORT | |6 |43 | +|6 | TABLE SCAN |t8 |6 |37 | +|7 | TABLE SCAN |t5 |6 |38 | +|8 | MERGE JOIN | |6 |84 | +|9 | SORT | |6 |42 | +|10| TABLE SCAN |t8 |6 |37 | +|11| TABLE SCAN |t5 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c2], [VIEW1.c2]), filter(nil), + access([VIEW1.c2], [VIEW1.c2]) + 2 - output([t5.c2], [b.c2]), filter(nil), + equal_conds([t5.c2 = b.c2]), other_conds(nil) + 3 - output([b.c2]), filter(nil), + access([b.c2]) + 4 - output([t8.c2]), filter(nil), + equal_conds([t8.c1 = t5.c1]), other_conds(nil) + 5 - output([t8.c2], [t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 6 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 7 - output([t5.c1]), filter([(T_OP_IS_NOT, t5.c2, NULL, 0)]), + access([t5.c1], [t5.c2]), partitions(p0) + 8 - output([t5.c2]), filter(nil), + equal_conds([t5.c1 = t8.c2]), other_conds(nil) + 9 - output([t8.c2]), filter(nil), sort_keys([t8.c2, ASC]) + 10 - output([t8.c2]), filter(nil), + access([t8.c2]), partitions(p0) + 11 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +insert into t11_temp (select * from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2); +rollback; +EXPLAIN insert into t11_temp (select /*+NO_REWRITE*/ * from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |6 |184 | +|1 | SUBPLAN SCAN |VIEW1|6 |183 | +|2 | HASH FULL OUTER JOIN| |6 |182 | +|3 | SUBPLAN SCAN |a |6 |85 | +|4 | MERGE OUTER JOIN | |6 |84 | +|5 | SORT | |6 |42 | +|6 | TABLE SCAN |t8 |6 |37 | +|7 | TABLE SCAN |t5 |6 |37 | +|8 | SUBPLAN SCAN |b |6 |86 | +|9 | MERGE OUTER JOIN | |6 |85 | +|10| SORT | |6 |43 | +|11| TABLE SCAN |t8 |6 |37 | +|12| TABLE SCAN |t5 |6 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t11_temp: ({t11_temp: (t11_temp.__pk_increment, t11_temp.a, t11_temp.b)})}]), partitions(p0) + 1 - output([VIEW1.c2], [VIEW1.c2]), filter(nil), + access([VIEW1.c2], [VIEW1.c2]) + 2 - output([a.c2], [b.c2]), filter(nil), + equal_conds([a.c2 = b.c2]), other_conds(nil) + 3 - output([a.c2]), filter(nil), + access([a.c2]) + 4 - output([t5.c2]), filter(nil), + equal_conds([t5.c1 = t8.c2]), other_conds(nil) + 5 - output([t8.c2]), filter(nil), sort_keys([t8.c2, ASC]) + 6 - output([t8.c2]), filter(nil), + access([t8.c2]), partitions(p0) + 7 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 8 - output([b.c2]), filter(nil), + access([b.c2]) + 9 - output([t8.c2]), filter([(T_OP_IS_NOT, t5.c2, NULL, 0)]), + equal_conds([t8.c1 = t5.c1]), other_conds(nil) + 10 - output([t8.c2], [t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 11 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 12 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +insert into t11_temp (select /*+NO_REWRITE*/ * from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2); +rollback; +EXPLAIN update t5 set c2 = (select a.c2 from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2 limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |6 |217 | +|1 | SUBPLAN FILTER | |6 |211 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |173 | +|4 | HASH FULL OUTER JOIN| |1 |173 | +|5 | SUBPLAN SCAN |b |6 |86 | +|6 | MERGE JOIN | |6 |86 | +|7 | SORT | |6 |43 | +|8 | TABLE SCAN |t8 |6 |37 | +|9 | TABLE SCAN |t5 |6 |38 | +|10| MERGE JOIN | |1 |79 | +|11| SORT | |3 |42 | +|12| TABLE SCAN |t8 |6 |37 | +|13| TABLE SCAN |t5 |3 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([t5.c2]), filter(nil), limit(1), offset(nil) + 4 - output([t5.c2]), filter(nil), + equal_conds([t5.c2 = b.c2]), other_conds(nil) + 5 - output([b.c2]), filter(nil), + access([b.c2]) + 6 - output([t8.c2]), filter(nil), + equal_conds([t8.c1 = t5.c1]), other_conds(nil) + 7 - output([t8.c2], [t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 8 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 9 - output([t5.c1]), filter([(T_OP_IS_NOT, t5.c2, NULL, 0)]), + access([t5.c1], [t5.c2]), partitions(p0) + 10 - output([t5.c2]), filter(nil), + equal_conds([t5.c1 = t8.c2]), other_conds(nil) + 11 - output([t8.c2]), filter(nil), sort_keys([t8.c2, ASC]) + 12 - output([t8.c2]), filter(nil), + access([t8.c2]), partitions(p0) + 13 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +update t5 set c2 = (select a.c2 from (select t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; +EXPLAIN update t5 set c2 = (select /*+NO_REWRITE*/ a.c2 from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2 limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |6 |216 | +|1 | SUBPLAN FILTER | |6 |210 | +|2 | TABLE SCAN |t5 |6 |37 | +|3 | LIMIT | |1 |172 | +|4 | HASH FULL OUTER JOIN| |1 |172 | +|5 | SUBPLAN SCAN |a |6 |85 | +|6 | MERGE OUTER JOIN | |6 |84 | +|7 | SORT | |6 |42 | +|8 | TABLE SCAN |t8 |6 |37 | +|9 | TABLE SCAN |t5 |6 |37 | +|10| SUBPLAN SCAN |b |1 |81 | +|11| MERGE OUTER JOIN | |1 |81 | +|12| SORT | |3 |43 | +|13| TABLE SCAN |t8 |6 |37 | +|14| TABLE SCAN |t5 |3 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t5: ({t5: (t5.c1, t5.c2, t5.c3)})}]), + update([t5.c2=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t5.c2], [t5.c1], [t5.c3]), filter(nil), + access([t5.c2], [t5.c1], [t5.c3]), partitions(p0) + 3 - output([a.c2]), filter(nil), limit(1), offset(nil) + 4 - output([a.c2]), filter(nil), + equal_conds([a.c2 = b.c2]), other_conds(nil) + 5 - output([a.c2]), filter(nil), + access([a.c2]) + 6 - output([t5.c2]), filter(nil), + equal_conds([t5.c1 = t8.c2]), other_conds(nil) + 7 - output([t8.c2]), filter(nil), sort_keys([t8.c2, ASC]) + 8 - output([t8.c2]), filter(nil), + access([t8.c2]), partitions(p0) + 9 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 10 - output([b.c2]), filter(nil), + access([b.c2]) + 11 - output([t8.c2]), filter([(T_OP_IS_NOT, t5.c2, NULL, 0)]), + equal_conds([t8.c1 = t5.c1]), other_conds(nil) + 12 - output([t8.c2], [t8.c1]), filter(nil), sort_keys([t8.c1, ASC]) + 13 - output([t8.c1], [t8.c2]), filter(nil), + access([t8.c1], [t8.c2]), partitions(p0) + 14 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +update t5 set c2 = (select /*+NO_REWRITE*/ a.c2 from (select /*+NO_REWRITE*/t5.c2 from t8 left join t5 on t5.c1=t8.c2) a full join (select /*+NO_REWRITE*/t8.c2 from t8 left join t5 on t8.c1=t5.c1 where t5.c2 is not null) b on a.c2 = b.c2 limit 1); +EXPLAIN select stddev(c2) from t5; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t5 |6 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t5.c2 * t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2 * t5.c2), DECIMAL(20, 0)) - cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) * cast(T_FUN_SUM(t5.c2), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t5.c2) * T_FUN_COUNT(t5.c2), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c2)], [T_FUN_SUM(t5.c2 * t5.c2)], [T_FUN_COUNT(t5.c2)], [T_FUN_COUNT(t5.c2 * t5.c2)]) + 1 - output([t5.c2], [t5.c2 * t5.c2]), filter(nil), + access([t5.c2]), partitions(p0) + +select stddev(c2) from t5; ++------------+ +| stddev(c2) | ++------------+ +| 0 | ++------------+ +rollback; + +set autocommit=1; + +drop table if exists t11, t10, t9, t8, t7, t6, t5; +EXPLAIN insert into t4_temp(select * from t1 left join t2 on t1.c1=t2.c1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |INSERT | |8 |96 | +|1 | SUBPLAN SCAN |VIEW1|8 |95 | +|2 | HASH OUTER JOIN| |8 |93 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t2 |9 |38 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c1], [VIEW1.c2]) + 2 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +insert into t4_temp(select * from t1 left join t2 on t1.c1=t2.c1); +delete from t4_temp where a = (select t1.c1, t1.c2 from t1 left join t2 on t1.c1=t2.c1 limit 1); +ERROR 21000: Operand should contain 1 column(s) +EXPLAIN delete from t4_temp where a = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |DELETE | |1 |119 | +|1 | SUBPLAN FILTER | |1 |118 | +|2 | TABLE SCAN |t4_temp|1 |39 | +|3 | LIMIT | |1 |79 | +|4 | HASH OUTER JOIN| |1 |79 | +|5 | SUBPLAN SCAN |VIEW1 |1 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | TABLE SCAN |t2 |9 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]) + 1 - output([t4_temp.__pk_increment], [t4_temp.a], [t4_temp.b], [t4_temp.c], [t4_temp.d]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t4_temp.__pk_increment], [t4_temp.a], [t4_temp.b], [t4_temp.c], [t4_temp.d]), filter([t4_temp.a = ?]), + access([t4_temp.__pk_increment], [t4_temp.a], [t4_temp.b], [t4_temp.c], [t4_temp.d]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t4_temp where a = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 limit 1); +EXPLAIN delete from t4_temp where (a, b) = (select t1.c1, t1.c2 from t1 left join t2 on t1.c1=t2.c1 limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |DELETE | |4 |124 | +|1 | SUBPLAN FILTER | |4 |120 | +|2 | TABLE SCAN |t4_temp|7 |38 | +|3 | LIMIT | |1 |79 | +|4 | HASH OUTER JOIN| |1 |79 | +|5 | SUBPLAN SCAN |VIEW1 |1 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | TABLE SCAN |t2 |9 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]) + 1 - output([t4_temp.__pk_increment], [t4_temp.a], [t4_temp.b], [t4_temp.c], [t4_temp.d]), filter([(t4_temp.a, t4_temp.b) = subquery(1)]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t4_temp.__pk_increment], [t4_temp.a], [t4_temp.b], [t4_temp.c], [t4_temp.d]), filter(nil), + access([t4_temp.__pk_increment], [t4_temp.a], [t4_temp.b], [t4_temp.c], [t4_temp.d]), partitions(p0) + 3 - output([VIEW1.t1.c1], [VIEW1.t1.c2]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1], [VIEW1.t1.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1], [VIEW1.t1.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2]) + 6 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(1), offset(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +delete from t4_temp where (a, b) = (select t1.c1, t1.c2 from t1 left join t2 on t1.c1=t2.c1 limit 1); +delete from t4_temp where (a, b) = (select t1.c1, t1.c2, t2.c1 from t1 left join t2 on t1.c1=t2.c1 limit 1); +ERROR 21000: Operand should contain 2 column(s) +EXPLAIN select stddev(a) from t4_temp; +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |SCALAR GROUP BY| |1 |40 | +|1 | TABLE SCAN |t4_temp|7 |38 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t4_temp.a * t4_temp.a), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t4_temp.a * t4_temp.a), DECIMAL(20, 0)) - cast(T_FUN_SUM(t4_temp.a), DECIMAL(65, 30)) * cast(T_FUN_SUM(t4_temp.a), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t4_temp.a) * T_FUN_COUNT(t4_temp.a), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t4_temp.a)], [T_FUN_SUM(t4_temp.a * t4_temp.a)], [T_FUN_COUNT(t4_temp.a)], [T_FUN_COUNT(t4_temp.a * t4_temp.a)]) + 1 - output([t4_temp.a], [t4_temp.a * t4_temp.a]), filter(nil), + access([t4_temp.a]), partitions(p0) + +select stddev(a) from t4_temp; ++--------------------+ +| stddev(a) | ++--------------------+ +| 2.7856776554368237 | ++--------------------+ +update t4_temp set a = (select t1.c1, t1.c2 from t1 left join t2 on t1.c1=t2.c1 limit 1); +ERROR 21000: Operand should contain 1 column(s) +EXPLAIN update t4_temp set a = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |UPDATE | |7 |125 | +|1 | SUBPLAN FILTER | |7 |118 | +|2 | TABLE SCAN |t4_temp|7 |38 | +|3 | LIMIT | |1 |79 | +|4 | HASH OUTER JOIN| |1 |79 | +|5 | SUBPLAN SCAN |VIEW1 |1 |37 | +|6 | TABLE SCAN |t1 |1 |36 | +|7 | TABLE SCAN |t2 |9 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t4_temp: ({t4_temp: (t4_temp.__pk_increment, t4_temp.a, t4_temp.b, t4_temp.c, t4_temp.d)})}]), + update([t4_temp.a=column_conv(INT,PS:(11,0),NULL,?)]) + 1 - output([t4_temp.__pk_increment], [t4_temp.a], [t4_temp.b], [t4_temp.c], [t4_temp.d], [column_conv(INT,PS:(11,0),NULL,?)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t4_temp.a], [t4_temp.__pk_increment], [t4_temp.b], [t4_temp.c], [t4_temp.d]), filter(nil), + access([t4_temp.a], [t4_temp.__pk_increment], [t4_temp.b], [t4_temp.c], [t4_temp.d]), partitions(p0) + 3 - output([VIEW1.t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t2.c1]), other_conds(nil) + 5 - output([VIEW1.t1.c1]), filter(nil), + access([VIEW1.t1.c1]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +update t4_temp set a = (select t1.c1 from t1 left join t2 on t1.c1=t2.c1 limit 1); +EXPLAIN select stddev(a) from t4_temp; +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |SCALAR GROUP BY| |1 |40 | +|1 | TABLE SCAN |t4_temp|7 |38 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([sqrt(cast(cast(T_FUN_SUM(t4_temp.a * t4_temp.a), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t4_temp.a * t4_temp.a), DECIMAL(20, 0)) - cast(T_FUN_SUM(t4_temp.a), DECIMAL(65, 30)) * cast(T_FUN_SUM(t4_temp.a), DECIMAL(65, 30)) / cast(T_FUN_COUNT(t4_temp.a) * T_FUN_COUNT(t4_temp.a), DECIMAL(40, 0)), DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t4_temp.a)], [T_FUN_SUM(t4_temp.a * t4_temp.a)], [T_FUN_COUNT(t4_temp.a)], [T_FUN_COUNT(t4_temp.a * t4_temp.a)]) + 1 - output([t4_temp.a], [t4_temp.a * t4_temp.a]), filter(nil), + access([t4_temp.a]), partitions(p0) + +select stddev(a) from t4_temp; ++-----------+ +| stddev(a) | ++-----------+ +| 0 | ++-----------+ + +drop table if exists t1_temp, t2_temp, t3_temp, t4_temp, t5_temp, t6_temp, t7_temp, t8_temp, t9_temp, t10_temp, t11_temp, t12_temp, t13_temp, t14_temp, t15_temp, t16_temp; +drop database transformer; diff --git a/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_predicate_deduce.result b/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_predicate_deduce.result new file mode 100644 index 000000000..3b5275df1 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_predicate_deduce.result @@ -0,0 +1,3570 @@ +result_format: 4 +explain_protocol: 2 +DROP DATABASE IF EXISTS DB_PREDICATE_DEDUCE; +CREATE DATABASE DB_PREDICATE_DEDUCE; +USE DB_PREDICATE_DEDUCE; + +create table t1(c1 int, c2 int); +create table t2(c1 int , c2 int, c3 int, c4 int); +create table t3(c1 bigint, c2 varchar(64), c3 datetime); +create table is_t1(c1 int); +create table is_t2(c1 int, c2 int); +create table is_t3(c1 bigint, c2 varchar(64), c3 datetime); + +insert/*trace*/into t3 values(20101010000000, '020101010000000', '2010-10-10 00:00:00'); +insert/*trace*/into t1 values(NULL, NULL); +insert/*trace*/into t2 values(NULL, NULL, NULL, NULL); + += basic test = + +== basic compare: case 1 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 = 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 = 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 = 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = 2], [a.c2 = 2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 = 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set c1 = c2 + 1 where a.c1 = a.c2 and a.c1 = 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |38 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = 2], [a.c2 = 2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set c1 = c2 + 1 where a.c1 = a.c2 and a.c1 = 2; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 = 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |38 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = 2], [a.c2 = 2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 = 2; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 = 2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = 2], [a.c2 = 2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 = 2; +rollback; + + +== basic compare: case 2 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 > 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 > 2]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 > 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 > 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 > 2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 > 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 > 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [a.c1 > 2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 > 2; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 > 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 > 2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 > 2; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 > 2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 > 2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 > 2; +rollback; + + +== basic compare: case 3 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 >= 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 >= 2]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 >= 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 >= 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 >= 2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 >= 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 >= 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [a.c1 >= 2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 >= 2; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 >= 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 >= 2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 >= 2; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 >= 2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 >= 2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 >= 2; +rollback; + + +== basic compare: case 4 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 < 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 < 2]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 < 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 < 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c2 < 2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 < 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 < 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [a.c2 < 2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 < 2; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 < 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c2 < 2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 < 2; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 < 2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c2 < 2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 < 2; +rollback; + + +== basic compare: case 5 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 <= 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 <= 2]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 <= 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 <= 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c2 <= 2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 <= 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 <= 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [a.c2 <= 2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 <= 2; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 <= 2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c2 <= 2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 <= 2; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 <= 2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c2 <= 2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 <= 2; +rollback; + + +== basic compare: case 6 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 like '2%'; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\')]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 like '2%'; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 like '2%'; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\')]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 like '2%'; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 like '2%'; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [(T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\')]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 like '2%'; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 like '2%'; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\')]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 like '2%'; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 like '2%'; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\')]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 like '2%'; +rollback; + + +== basic compare: case 7 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 between 2 and 3; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 between 2 and 3; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 between 2 and 3; +rollback; + + +== basic compare: case 7 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 IN (2, 3)]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 IN (2, 3)], [a.c2 IN (2, 3)]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 in (2, 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [a.c1 IN (2, 3)], [a.c2 IN (2, 3)]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 in (2, 3); +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 IN (2, 3)], [a.c2 IN (2, 3)]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 IN (2, 3)], [a.c2 IN (2, 3)]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 in (2, 3); +rollback; + +************************** deduce on function ******************************* + +== deduce on function: case 1 +EXPLAIN select /*+no_rewrite*/* from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([round(cast(a.c1, BIGINT(-1, 0))) = round(cast(a.c2, BIGINT(-1, 0)))], [round(cast(a.c1, BIGINT(-1, 0))) = 1]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([round(cast(a.c1, BIGINT(-1, 0))) = 1], [round(cast(a.c2, BIGINT(-1, 0))) = 1]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where round(a.c1) = round(a.c2) and round(a.c1) = 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([round(cast(a.c1, BIGINT(-1, 0))) = 1], [round(cast(a.c2, BIGINT(-1, 0))) = 1]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where round(a.c1) = round(a.c2) and round(a.c1) = 1; +EXPLAIN delete from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([round(cast(a.c1, BIGINT(-1, 0))) = 1], [round(cast(a.c2, BIGINT(-1, 0))) = 1]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; +EXPLAIN insert into is_t2 select * from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([round(cast(a.c1, BIGINT(-1, 0))) = 1], [round(cast(a.c2, BIGINT(-1, 0))) = 1]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where round(a.c1) = round(a.c2) and round(a.c1) = 1; +rollback; + + +== deduce on function: case 2 +EXPLAIN select /*+no_rewrite*/* from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([round(cast(a.c1, BIGINT(-1, 0))) = a.c2], [round(cast(a.c1, BIGINT(-1, 0))) = 1]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([round(cast(a.c1, BIGINT(-1, 0))) = 1], [a.c2 = 1]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where round(a.c1) = a.c2 and round(a.c1) = 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([round(cast(a.c1, BIGINT(-1, 0))) = 1], [a.c2 = 1]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where round(a.c1) = a.c2 and round(a.c1) = 1; +EXPLAIN delete from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([round(cast(a.c1, BIGINT(-1, 0))) = 1], [a.c2 = 1]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; +EXPLAIN insert into is_t2 select * from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([round(cast(a.c1, BIGINT(-1, 0))) = 1], [a.c2 = 1]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where round(a.c1) = a.c2 and round(a.c1) = 1; +rollback; + +***************************** subquery ********************************* + +== subquery:case 1 +EXPLAIN select /*+no_rewrite*/* from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |73 | +|1 | TABLE SCAN |a |1 |36 | +|2 | TABLE SCAN |b |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([a.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter([b.c1 = 1]), startup_filter([?]), + access([b.c1]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|1 | TABLE SCAN |a |1 |37 | +|2 | MATERIAL | |1 |37 | +|3 | SUBPLAN SCAN |VIEW1|1 |37 | +|4 | TABLE SCAN |b |1 |37 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([a.c1], [a.c2]), filter([a.c1 = 1]), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter(nil) + 3 - output([1]), filter(nil), + access(nil) + 4 - output([1]), filter([b.c1 = 1]), + access([b.c1]), partitions(p0) + +select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |UPDATE | |1 |75 | +|1 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([a.c1], [a.c2], [a.__pk_increment]), filter([a.c1 = 1]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 1]), + access([b.c1]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +EXPLAIN delete from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |DELETE | |1 |75 | +|1 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = 1]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 1]), + access([b.c1]), partitions(p0) + +delete from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +EXPLAIN insert into is_t2 select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |INSERT | |1 |74 | +|1 | SUBPLAN SCAN |VIEW1|1 |74 | +|2 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|3 | TABLE SCAN |a |1 |37 | +|4 | MATERIAL | |1 |37 | +|5 | SUBPLAN SCAN |VIEW2|1 |37 | +|6 | TABLE SCAN |b |1 |37 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([a.c1], [a.c2]), filter([a.c1 = 1]), + access([a.c1], [a.c2]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter([b.c1 = 1]), + access([b.c1]), partitions(p0) + +insert into is_t2 select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +rollback; + + +== subquery:case 2 +EXPLAIN select /*+no_rewrite*/* from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |73 | +|1 | TABLE SCAN |a |1 |37 | +|2 | TABLE SCAN |b |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([a.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter([? = b.c1]), + access([b.c1]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|1 | TABLE SCAN |a |1 |37 | +|2 | MATERIAL | |1 |37 | +|3 | SUBPLAN SCAN |VIEW1|1 |37 | +|4 | TABLE SCAN |b |1 |37 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter(nil) + 3 - output([1]), filter(nil), + access(nil) + 4 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |UPDATE | |1 |75 | +|1 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([a.c1], [a.c2], [a.__pk_increment]), filter([a.c1 = 2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +EXPLAIN delete from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |DELETE | |1 |75 | +|1 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +delete from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +EXPLAIN insert into is_t2 select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |INSERT | |1 |74 | +|1 | SUBPLAN SCAN |VIEW1|1 |74 | +|2 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|3 | TABLE SCAN |a |1 |37 | +|4 | MATERIAL | |1 |37 | +|5 | SUBPLAN SCAN |VIEW2|1 |37 | +|6 | TABLE SCAN |b |1 |37 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +insert into is_t2 select * from t1 a where exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +rollback; + + +== subquery:case 3 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |73 | +|1 | TABLE SCAN |a |1 |36 | +|2 | TABLE SCAN |b |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|1 | TABLE SCAN |a |1 |37 | +|2 | MATERIAL | |1 |37 | +|3 | SUBPLAN SCAN |VIEW1|1 |37 | +|4 | TABLE SCAN |b |1 |37 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter(nil) + 3 - output([1]), filter(nil), + access(nil) + 4 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +select * from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 in (select c1 from t2 b where b.c1 = 2); +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |UPDATE | |1 |75 | +|1 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([a.c1], [a.c2], [a.__pk_increment]), filter([a.c1 = 2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 in (select c1 from t2 b where b.c1 = 2); +EXPLAIN delete from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |DELETE | |1 |75 | +|1 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +delete from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); +EXPLAIN insert into is_t2 select * from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |INSERT | |1 |74 | +|1 | SUBPLAN SCAN |VIEW1|1 |74 | +|2 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |74 | +|3 | TABLE SCAN |a |1 |37 | +|4 | MATERIAL | |1 |37 | +|5 | SUBPLAN SCAN |VIEW2|1 |37 | +|6 | TABLE SCAN |b |1 |37 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 in (select c1 from t2 b where b.c1 = 2); +rollback; + +***************************** type check ******************************* + +== type check: case 1 +EXPLAIN select /*+no_rewrite*/* from t3 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t3 |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t3.c1], [t3.c2], [t3.c3]), filter([cast(t3.c1, DECIMAL(20, 0)) = cast(t3.c2, DECIMAL(-1, -1))], [cast(t3.c1, DATETIME(-1, -1)) = ?]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select /*+no_rewrite*/* from t3 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); ++----------------+-----------------+---------------------+ +| c1 | c2 | c3 | ++----------------+-----------------+---------------------+ +| 20101010000000 | 020101010000000 | 2010-10-10 00:00:00 | ++----------------+-----------------+---------------------+ +EXPLAIN select * from t3 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t3 |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t3.c1], [t3.c2], [t3.c3]), filter([cast(t3.c1, DECIMAL(20, 0)) = cast(t3.c2, DECIMAL(-1, -1))], [cast(t3.c1, DATETIME(-1, -1)) = ?]), + access([t3.c1], [t3.c2], [t3.c3]), partitions(p0) + +select * from t3 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); ++----------------+-----------------+---------------------+ +| c1 | c2 | c3 | ++----------------+-----------------+---------------------+ +| 20101010000000 | 020101010000000 | 2010-10-10 00:00:00 | ++----------------+-----------------+---------------------+ +start transaction; +EXPLAIN update t3 set c1 = 1 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|t3 |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t3: ({t3: (t3.__pk_increment, t3.c1, t3.c2, t3.c3)})}]), + update([t3.c1=?]) + 1 - output([t3.__pk_increment], [t3.c1], [t3.c2], [t3.c3], [?]), filter([cast(t3.c1, DECIMAL(20, 0)) = cast(t3.c2, DECIMAL(-1, -1))], [cast(t3.c1, DATETIME(-1, -1)) = ?]), + access([t3.c1], [t3.__pk_increment], [t3.c2], [t3.c3]), partitions(p0) + +update t3 set c1 = 1 where c1=c2 and c1=cast('2010-10-10 00:00:00' as datetime); +rollback; + +****************************** remove redundant predicates ************* + +== remove redundant predicates: case 1 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 = a.c2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c1 = a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 = a.c2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 = a.c2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 = a.c2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 = a.c2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 = a.c2; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 = a.c2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 = a.c2; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 = a.c2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 = a.c2; +rollback; + + +== remove redundant predicates: case 2 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c2 = a.c1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [a.c2 = a.c1]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c2 = a.c1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c2 = a.c1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c2 = a.c1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c2 = a.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c2 = a.c1; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c2 = a.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c2 = a.c1; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c2 = a.c1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c2 = a.c1; +rollback; + + +== remove redundant predicates: case 3 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 >= a.c2], [a.c1 >= a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 >= a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 >= a.c2 and a.c1 >= a.c2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 >= a.c2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 >= a.c2 and a.c1 >= a.c2; +EXPLAIN delete from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 >= a.c2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 >= a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 >= a.c2 and a.c1 >= a.c2; +rollback; + + +== remove redundant predicates: case 4 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 >= a.c2], [a.c2 <= a.c1]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 >= a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 >= a.c2 and a.c2 <= a.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 >= a.c2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 >= a.c2 and a.c2 <= a.c1; +EXPLAIN delete from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 >= a.c2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 >= a.c2]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 >= a.c2 and a.c2 <= a.c1; +rollback; + + +== remove redundant predicates: case 5 +EXPLAIN select /*+no_rewrite*/* from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)], [(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); +EXPLAIN delete from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); +EXPLAIN insert into is_t2 select * from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([(T_OP_BTW, cast(a.c1, DECIMAL(11, 0)), ?, ?)]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where (a.c1 between 1 and 2) and (a.c1 between 1 and 2); +rollback; + + +== remove redundant predicates: case 6 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 IN (2, 3)], [a.c1 IN (2, 3)]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 IN (2, 3)]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 in (2, 3) and a.c1 in (2, 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |38 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 IN (2, 3)]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 in (2, 3) and a.c1 in (2, 3); +EXPLAIN delete from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |38 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 IN (2, 3)]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); +EXPLAIN insert into is_t2 select * from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 IN (2, 3)]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 in (2, 3) and a.c1 in (2, 3); +rollback; + + +== remove redundant predicates: case 7 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([(T_OP_NOT_IN, a.c1, (2, 3))], [(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 not in (2, 3) and a.c1 not in (2, 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 not in (2, 3) and a.c1 not in (2, 3); +EXPLAIN delete from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); +EXPLAIN insert into is_t2 select * from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 not in (2, 3) and a.c1 not in (2, 3); +rollback; + +************************* can not deduce ****************** + +== can not deduce: case 1 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_NOT, (T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\'))]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_NOT, (T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\'))]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 not like '2%'; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [(T_OP_NOT, (T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\'))]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 not like '2%'; +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_NOT, (T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\'))]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_NOT, (T_OP_LIKE, cast(a.c1, VARCHAR(1048576)), '2%', '\\'))]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 not like '2%'; +rollback; + + +== can not deduce: case 2 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.c1], [a.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|a |1 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 not in (2, 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter([a.c1 = a.c2], [(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 = a.c2 and a.c1 not in (2, 3); +EXPLAIN delete from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|a |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + +delete from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); +EXPLAIN insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |37 | +|1 | SUBPLAN SCAN|VIEW1|1 |37 | +|2 | TABLE SCAN |a |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter([a.c1 = a.c2], [(T_OP_NOT_IN, a.c1, (2, 3))]), + access([a.c1], [a.c2]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 = a.c2 and a.c1 not in (2, 3); +rollback; + +************************* 不能推导 anti semi join *************** + +== 不能推导 anti semi join:case 1 +EXPLAIN select /*+no_rewrite*/* from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |73 | +|1 | TABLE SCAN |a |1 |36 | +|2 | TABLE SCAN |b |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([a.c1 = 1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter([b.c1 = 1]), startup_filter([?]), + access([b.c1]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | NULL | ++------+------+ +EXPLAIN select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |74 | +|1 | TABLE SCAN |a |1 |36 | +|2 | MATERIAL | |1 |37 | +|3 | SUBPLAN SCAN |VIEW1|1 |37 | +|4 | TABLE SCAN |b |1 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), + conds([a.c1 = 1]), nl_params_(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter(nil) + 3 - output([1]), filter(nil), + access(nil) + 4 - output([1]), filter([b.c1 = 1]), + access([b.c1]), partitions(p0) + +select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | NULL | ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |0 |74 | +|1 | NESTED-LOOP ANTI JOIN| |0 |74 | +|2 | TABLE SCAN |a |1 |36 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter(nil), + conds([a.c1 = 1]), nl_params_(nil) + 2 - output([a.c1], [a.c2], [a.__pk_increment]), filter(nil), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 1]), + access([b.c1]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +EXPLAIN delete from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |DELETE | |0 |74 | +|1 | NESTED-LOOP ANTI JOIN| |0 |74 | +|2 | TABLE SCAN |a |1 |36 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter(nil), + conds([a.c1 = 1]), nl_params_(nil) + 2 - output([a.__pk_increment], [a.c1], [a.c2]), filter(nil), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 1]), + access([b.c1]), partitions(p0) + +delete from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +EXPLAIN insert into is_t2 select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |74 | +|1 | SUBPLAN SCAN |VIEW1|0 |74 | +|2 | NESTED-LOOP ANTI JOIN| |0 |74 | +|3 | TABLE SCAN |a |1 |36 | +|4 | MATERIAL | |1 |37 | +|5 | SUBPLAN SCAN |VIEW2|1 |37 | +|6 | TABLE SCAN |b |1 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter(nil), + conds([a.c1 = 1]), nl_params_(nil) + 3 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter([b.c1 = 1]), + access([b.c1]), partitions(p0) + +insert into is_t2 select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1 and b.c1 = 1); +rollback; + + +== 能推导 anti semi join:case 2 +EXPLAIN select /*+no_rewrite*/* from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |73 | +|1 | TABLE SCAN |a |1 |37 | +|2 | TABLE SCAN |b |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([a.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter([? = b.c1]), + access([b.c1]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +========================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN CARTESIAN| |0 |74 | +|1 | TABLE SCAN |a |1 |37 | +|2 | MATERIAL | |1 |37 | +|3 | SUBPLAN SCAN |VIEW1|1 |37 | +|4 | TABLE SCAN |b |1 |37 | +========================================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([1]), filter(nil) + 3 - output([1]), filter(nil), + access(nil) + 4 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |UPDATE | |0 |74 | +|1 | NESTED-LOOP ANTI JOIN CARTESIAN| |0 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([a.c1], [a.c2], [a.__pk_increment]), filter([a.c1 = 2]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +EXPLAIN delete from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------------- +|0 |DELETE | |0 |74 | +|1 | NESTED-LOOP ANTI JOIN CARTESIAN| |0 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | SUBPLAN SCAN |VIEW1|1 |37 | +|5 | TABLE SCAN |b |1 |37 | +========================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +delete from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +EXPLAIN insert into is_t2 select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------------------- +|0 |INSERT | |0 |74 | +|1 | SUBPLAN SCAN |VIEW1|0 |74 | +|2 | NESTED-LOOP ANTI JOIN CARTESIAN| |0 |74 | +|3 | TABLE SCAN |a |1 |37 | +|4 | MATERIAL | |1 |37 | +|5 | SUBPLAN SCAN |VIEW2|1 |37 | +|6 | TABLE SCAN |b |1 |37 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([a.c1], [a.c2]), filter([a.c1 = 2]), + access([a.c1], [a.c2]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter([b.c1 = 2]), + access([b.c1]), partitions(p0) + +insert into is_t2 select * from t1 a where not exists (select 1 from t2 b where a.c1 = b.c1) and a.c1 = 2; +rollback; + + +== 不能推导 anti semi join:case 3 +EXPLAIN select /*+no_rewrite*/* from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |73 | +|1 | TABLE SCAN |a |1 |37 | +|2 | TABLE SCAN |b |1 |36 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter([a.c1 != ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([a.c1], [a.c2]), filter([a.c1 = 1]), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p0) + +select /*+no_rewrite*/* from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |74 | +|1 | TABLE SCAN |a |1 |37 | +|2 | MATERIAL | |1 |37 | +|3 | TABLE SCAN |b |1 |36 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2]), filter(nil), + conds([a.c1 = b.c1 OR (T_OP_IS, b.c1, NULL, 0)]), nl_params_(nil) + 1 - output([a.c1], [a.c2]), filter([a.c1 = 1]), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1]), filter(nil) + 3 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p0) + +select * from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +start transaction; +EXPLAIN update t1 a set a.c1 = a.c2 + 1 where a.c1 not in (select c1 from t2 b) and a.c1 = 1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |UPDATE | |0 |74 | +|1 | NESTED-LOOP ANTI JOIN| |0 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | TABLE SCAN |b |1 |36 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]), + update([a.c1=column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]) + 1 - output([a.__pk_increment], [a.c1], [a.c2], [column_conv(INT,PS:(11,0),NULL,cast(a.c2 + 1, INT(-1, 0)))]), filter(nil), + conds([a.c1 = b.c1 OR (T_OP_IS, b.c1, NULL, 0)]), nl_params_(nil) + 2 - output([a.c1], [a.c2], [a.__pk_increment]), filter([a.c1 = 1]), + access([a.c1], [a.c2], [a.__pk_increment]), partitions(p0) + 3 - output([b.c1]), filter(nil) + 4 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p0) + +update t1 a set a.c1 = a.c2 + 1 where a.c1 not in (select c1 from t2 b) and a.c1 = 1; +EXPLAIN delete from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; +Query Plan +=============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------------- +|0 |DELETE | |0 |74 | +|1 | NESTED-LOOP ANTI JOIN| |0 |74 | +|2 | TABLE SCAN |a |1 |37 | +|3 | MATERIAL | |1 |37 | +|4 | TABLE SCAN |b |1 |36 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (a.__pk_increment, a.c1, a.c2)})}]) + 1 - output([a.__pk_increment], [a.c1], [a.c2]), filter(nil), + conds([a.c1 = b.c1 OR (T_OP_IS, b.c1, NULL, 0)]), nl_params_(nil) + 2 - output([a.__pk_increment], [a.c1], [a.c2]), filter([a.c1 = 1]), + access([a.__pk_increment], [a.c1], [a.c2]), partitions(p0) + 3 - output([b.c1]), filter(nil) + 4 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p0) + +delete from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; +EXPLAIN insert into is_t2 select * from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |0 |74 | +|1 | SUBPLAN SCAN |VIEW1|0 |74 | +|2 | NESTED-LOOP ANTI JOIN| |0 |74 | +|3 | TABLE SCAN |a |1 |37 | +|4 | MATERIAL | |1 |37 | +|5 | TABLE SCAN |b |1 |36 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([a.c1], [a.c2]), filter(nil), + conds([a.c1 = b.c1 OR (T_OP_IS, b.c1, NULL, 0)]), nl_params_(nil) + 3 - output([a.c1], [a.c2]), filter([a.c1 = 1]), + access([a.c1], [a.c2]), partitions(p0) + 4 - output([b.c1]), filter(nil) + 5 - output([b.c1]), filter(nil), + access([b.c1]), partitions(p0) + +insert into is_t2 select * from t1 a where a.c1 not in (select c1 from t2 b) and a.c1 = 1; +rollback; + +************************* 不能推导 anti semi join *************** + +EXPLAIN select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1 |75 | +|1 | TABLE SCAN|a |1 |36 | +|2 | TABLE SCAN|b |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([(T_OP_IS_NOT, b.c1, NULL, 0)]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + +select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1 |75 | +|1 | TABLE SCAN|a |1 |36 | +|2 | TABLE SCAN|b |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([(T_OP_IS_NOT, b.c1, NULL, 0)]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + +select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + + +EXPLAIN select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1 |75 | +|1 | TABLE SCAN|a |1 |36 | +|2 | TABLE SCAN|b |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([(T_OP_IS_NOT, b.c1, NULL, 0)]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + +select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1 |75 | +|1 | TABLE SCAN|a |1 |36 | +|2 | TABLE SCAN|b |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([(T_OP_IS_NOT, b.c1, NULL, 0)]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + +select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is not null; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + + +EXPLAIN select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |0 |73 | +|1 | TABLE SCAN|b |0 |37 | +|2 | TABLE SCAN|a |1 |36 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([(T_OP_IS, b.c1, NULL, 0)]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + 2 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + +select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is null; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |0 |73 | +|1 | TABLE SCAN|b |0 |37 | +|2 | TABLE SCAN|a |1 |36 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([(T_OP_IS, b.c1, NULL, 0)]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + 2 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 is null; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + + +EXPLAIN select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |0 |73 | +|1 | TABLE SCAN|b |0 |37 | +|2 | TABLE SCAN|a |1 |36 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([b.c1 <=> NULL]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + 2 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + +select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> null; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> null; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |0 |73 | +|1 | TABLE SCAN|b |0 |37 | +|2 | TABLE SCAN|a |1 |36 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([b.c1 <=> NULL]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + 2 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + +select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> null; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + + +EXPLAIN select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1 |75 | +|1 | TABLE SCAN|a |1 |36 | +|2 | TABLE SCAN|b |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([b.c1 <=> 1]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + +select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> 1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1 |75 | +|1 | TABLE SCAN|a |1 |36 | +|2 | TABLE SCAN|b |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 = b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([b.c1 <=> 1]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + +select * from t1 a, t2 b where a.c1 = b.c1 and b.c1 <=> 1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + + +EXPLAIN select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 <=> b.c1 and b.c1 <=> 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1 |75 | +|1 | TABLE SCAN|a |1 |36 | +|2 | TABLE SCAN|b |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 <=> b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([b.c1 <=> 1]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + +select /*+ NO_REWRITE */ * from t1 a, t2 b where a.c1 <=> b.c1 and b.c1 <=> 1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select * from t1 a, t2 b where a.c1 <=> b.c1 and b.c1 <=> 1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |HASH JOIN | |1 |75 | +|1 | TABLE SCAN|a |1 |36 | +|2 | TABLE SCAN|b |1 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([a.c1], [a.c2], [b.c1], [b.c2], [b.c3], [b.c4]), filter(nil), + equal_conds([a.c1 <=> b.c1]), other_conds(nil) + 1 - output([a.c1], [a.c2]), filter(nil), + access([a.c1], [a.c2]), partitions(p0) + 2 - output([b.c1], [b.c2], [b.c3], [b.c4]), filter([b.c1 <=> 1]), + access([b.c1], [b.c2], [b.c3], [b.c4]), partitions(p0) + +select * from t1 a, t2 b where a.c1 <=> b.c1 and b.c1 <=> 1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c3 | c4 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +####### outer join 谓词推导测试 ####### +drop table if exists tt1, tt2, tt3; +create table tt1 (c1 int primary key, c2 varchar(10)); +create table tt2 (c1 int primary key, c2 varchar(10)); +create table tt3 (c1 int primary key, c2 varchar(10)); + +## tt1 left join tt2 +EXPLAIN select /*+use_merge(tt1 tt2)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 where tt1.c1 = 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |1 |105 | +|1 | TABLE GET |tt1 |1 |52 | +|2 | TABLE GET |tt2 |1 |52 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 1 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 2 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + +select /*+use_merge(tt1 tt2)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 where tt1.c1 = 1; ++----+------+----+------+ +| c1 | c2 | c1 | c2 | ++----+------+----+------+ +| 1 | a1 | NULL | NULL | ++----+------+----+------+ +EXPLAIN select /*+no_rewrite, use_merge(tt1 tt2)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 where tt1.c1 = 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE OUTER JOIN| |1 |90 | +|1 | TABLE GET |tt1 |1 |52 | +|2 | TABLE SCAN |tt2 |2 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 1 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 2 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + +select /*+no_rewrite, use_merge(tt1 tt2)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 where tt1.c1 = 1; ++----+------+----+------+ +| c1 | c2 | c1 | c2 | ++----+------+----+------+ +| 1 | a1 | NULL | NULL | ++----+------+----+------+ + +## tt1 left join tt2 left join tt3 +EXPLAIN select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN | |1 |158 | +|1 | MERGE OUTER JOIN| |1 |105 | +|2 | TABLE GET |tt1 |1 |52 | +|3 | TABLE GET |tt2 |1 |52 | +|4 | TABLE GET |tt3 |1 |52 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter(nil), + equal_conds([tt1.c1 = tt3.c1]), other_conds(nil) + 1 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 2 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 3 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + 4 - output([tt3.c1], [tt3.c2]), filter(nil), + access([tt3.c1], [tt3.c2]), partitions(p0) + +select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; ++----+------+----+------+----+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++----+------+----+------+----+------+ +| 1 | a1 | NULL | NULL | NULL | NULL | ++----+------+----+------+----+------+ +EXPLAIN select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN | |1 |127 | +|1 | MERGE OUTER JOIN| |1 |90 | +|2 | TABLE GET |tt1 |1 |52 | +|3 | TABLE SCAN |tt2 |2 |37 | +|4 | TABLE SCAN |tt3 |2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter(nil), + equal_conds([tt1.c1 = tt3.c1]), other_conds(nil) + 1 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 2 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 3 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + 4 - output([tt3.c1], [tt3.c2]), filter(nil), + access([tt3.c1], [tt3.c2]), partitions(p0) + +select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; ++----+------+----+------+----+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++----+------+----+------+----+------+ +| 1 | a1 | NULL | NULL | NULL | NULL | ++----+------+----+------+----+------+ + +## tt1 left join tt2 left join tt3 +EXPLAIN select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN | |1 |142 | +|1 | TABLE GET |tt1 |1 |52 | +|2 | MERGE OUTER JOIN| |1 |90 | +|3 | TABLE GET |tt2 |1 |52 | +|4 | TABLE SCAN |tt3 |2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 1 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 2 - output([tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter(nil), + equal_conds([tt2.c1 = tt3.c1]), other_conds(nil) + 3 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + 4 - output([tt3.c1], [tt3.c2]), filter(nil), + access([tt3.c1], [tt3.c2]), partitions(p0) + +select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; ++----+------+----+------+----+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++----+------+----+------+----+------+ +| 1 | a1 | NULL | NULL | NULL | NULL | ++----+------+----+------+----+------+ +EXPLAIN select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN | |1 |127 | +|1 | MERGE OUTER JOIN| |1 |90 | +|2 | TABLE GET |tt1 |1 |52 | +|3 | TABLE SCAN |tt2 |2 |37 | +|4 | TABLE SCAN |tt3 |2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter(nil), + equal_conds([tt2.c1 = tt3.c1]), other_conds(nil) + 1 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 2 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 3 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + 4 - output([tt3.c1], [tt3.c2]), filter(nil), + access([tt3.c1], [tt3.c2]), partitions(p0) + +select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 left join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; ++----+------+----+------+----+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++----+------+----+------+----+------+ +| 1 | a1 | NULL | NULL | NULL | NULL | ++----+------+----+------+----+------+ + +## tt3 left join (tt1 left join tt2) +EXPLAIN select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; +Query Plan +=================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |1 |158 | +|1 | TABLE GET |tt3 |1 |52 | +|2 | MERGE OUTER JOIN | |1 |105 | +|3 | TABLE GET |tt1 |1 |52 | +|4 | TABLE GET |tt2 |1 |52 | +=================================================== + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([tt3.c1], [tt3.c2]), filter(nil), + access([tt3.c1], [tt3.c2]), partitions(p0) + 2 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 3 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 4 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + +select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; ++----+------+----+------+----+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++----+------+----+------+----+------+ ++----+------+----+------+----+------+ +EXPLAIN select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |MERGE OUTER JOIN | |1 |113 | +|1 | TABLE SCAN |tt3 |2 |37 | +|2 | MERGE OUTER JOIN| |3 |75 | +|3 | TABLE SCAN |tt1 |3 |37 | +|4 | TABLE SCAN |tt2 |2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter([tt1.c1 = 1]), + equal_conds([tt1.c1 = tt3.c1]), other_conds(nil) + 1 - output([tt3.c1], [tt3.c2]), filter(nil), + access([tt3.c1], [tt3.c2]), partitions(p0) + 2 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 3 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 4 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + +select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt1.c1 = tt3.c1 where tt1.c1 = 1; ++----+------+----+------+----+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++----+------+----+------+----+------+ ++----+------+----+------+----+------+ + +## tt3 left join (tt1 left join tt2) +EXPLAIN select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; +Query Plan +==================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN | |1 |158 | +|1 | TABLE GET |tt2 |1 |52 | +|2 | NESTED-LOOP JOIN CARTESIAN| |1 |105 | +|3 | TABLE GET |tt3 |1 |52 | +|4 | TABLE GET |tt1 |1 |52 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + 2 - output([tt1.c1], [tt1.c2], [tt3.c1], [tt3.c2]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([tt3.c1], [tt3.c2]), filter(nil), + access([tt3.c1], [tt3.c2]), partitions(p0) + 4 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + +select /*+use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; ++----+------+----+------+----+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++----+------+----+------+----+------+ ++----+------+----+------+----+------+ +EXPLAIN select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |HASH OUTER JOIN | |1 |116 | +|1 | TABLE SCAN |tt3 |2 |37 | +|2 | MERGE OUTER JOIN| |3 |75 | +|3 | TABLE SCAN |tt1 |3 |37 | +|4 | TABLE SCAN |tt2 |2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2], [tt3.c1], [tt3.c2]), filter([tt1.c1 = 1]), + equal_conds([tt2.c1 = tt3.c1]), other_conds(nil) + 1 - output([tt3.c1], [tt3.c2]), filter(nil), + access([tt3.c1], [tt3.c2]), partitions(p0) + 2 - output([tt1.c1], [tt1.c2], [tt2.c1], [tt2.c2]), filter(nil), + equal_conds([tt1.c1 = tt2.c1]), other_conds(nil) + 3 - output([tt1.c1], [tt1.c2]), filter(nil), + access([tt1.c1], [tt1.c2]), partitions(p0) + 4 - output([tt2.c1], [tt2.c2]), filter(nil), + access([tt2.c1], [tt2.c2]), partitions(p0) + +select /*+no_rewrite, use_merge(tt1 tt2 tt3)*/ * from tt1 left join tt2 on tt1.c1 = tt2.c1 right join tt3 on tt2.c1 = tt3.c1 where tt1.c1 = 1; ++----+------+----+------+----+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++----+------+----+------+----+------+ ++----+------+----+------+----+------+ + +## online case +drop table if exists cghldinf, puzdjypf, pujydypf; +CREATE TABLE `cghldinf` ( + `HLDGDDM` char(10) NOT NULL, + `HLDZXWH` char(5) NOT NULL, + `HLDTGDM` decimal(9, 0) NOT NULL, + `HLDKMLB` char(2) NOT NULL, + PRIMARY KEY (`HLDTGDM`, `HLDGDDM`), + KEY `HLDINDEX` (`HLDKMLB`) LOCAL + ) partition by key (hldgddm) partitions 13; + +CREATE TABLE `puzdjypf` ( + `PZJZQZH` char(20) NOT NULL, + `PZJZDJYDY` char(6) NOT NULL, + `PZJSXRQ` decimal(8,0) NOT NULL, + PRIMARY KEY (`PZJZQZH`) + ) partition by key (pzjzqzh) partitions 13; + +CREATE TABLE `pujydypf` ( + `PJYSCDM` char(2) NOT NULL, + `PJYJYDY` char(6) NOT NULL, + `PJYJYDYLB` char(3) NOT NULL, + `PJYQSBH` char(8) NOT NULL + ) partition by key (pjyjydy) partitions 2; + +EXPLAIN select /*+use_merge(t1 t2), leading(t1 t2 t3)*/ t1.hldgddm, t2.pzjzqzh, t2.pzjzdjydy, t3.pjyjydy, t3.pjyscdm from cghldinf t1 left join puzdjypf t2 on t2.pzjzqzh = t1.hldgddm left join pujydypf t3 on t2.pzjzdjydy = t3.pjyjydy and t3.pjyscdm = '01' where hldgddm = 'A100013208'; +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------- +|0 |PX COORDINATOR | |1 |128 | +|1 | EXCHANGE OUT DISTR |:EX10001 |1 |128 | +|2 | NESTED-LOOP OUTER JOIN | |1 |128 | +|3 | EXCHANGE IN DISTR | |1 |91 | +|4 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |91 | +|5 | MERGE OUTER JOIN | |1 |91 | +|6 | TABLE SCAN |t1(HLDINDEX)|1 |38 | +|7 | TABLE GET |t2 |1 |52 | +|8 | PX PARTITION ITERATOR | |1 |37 | +|9 | TABLE SCAN |t3 |1 |37 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [t3.PJYJYDY], [t3.PJYSCDM]), filter(nil) + 1 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [t3.PJYJYDY], [t3.PJYSCDM]), filter(nil), dop=1 + 2 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [t3.PJYJYDY], [t3.PJYSCDM]), filter(nil), + conds(nil), nl_params_([t2.PZJZDJYDY]) + 3 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [PARTITION_ID]), filter(nil) + 4 - (#keys=1, [t2.PZJZDJYDY]), output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [PARTITION_ID]), filter(nil), is_single, dop=1 + 5 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY]), filter(nil), + equal_conds([t2.PZJZQZH = t1.HLDGDDM]), other_conds(nil) + 6 - output([t1.HLDGDDM]), filter([t1.HLDGDDM = 'A100013208']), + access([t1.HLDGDDM]), partitions(p5) + 7 - output([t2.PZJZQZH], [t2.PZJZDJYDY]), filter(nil), + access([t2.PZJZQZH], [t2.PZJZDJYDY]), partitions(p5) + 8 - output([t3.PJYJYDY], [t3.PJYSCDM]), filter(nil) + 9 - output([t3.PJYJYDY], [t3.PJYSCDM]), filter([t3.PJYSCDM = '01']), + access([t3.PJYJYDY], [t3.PJYSCDM]), partitions(p[0-1]) + +select /*+use_merge(t1 t2), leading(t1 t2 t3)*/ t1.hldgddm, t2.pzjzqzh, t2.pzjzdjydy, t3.pjyjydy, t3.pjyscdm from cghldinf t1 left join puzdjypf t2 on t2.pzjzqzh = t1.hldgddm left join pujydypf t3 on t2.pzjzdjydy = t3.pjyjydy and t3.pjyscdm = '01' where hldgddm = 'A100013208'; ++------------+------------+-----------+---------+---------+ +| hldgddm | pzjzqzh | pzjzdjydy | pjyjydy | pjyscdm | ++------------+------------+-----------+---------+---------+ +| A100013208 | A100013208 | 20605 | NULL | NULL | +| A100013208 | A100013208 | 20605 | NULL | NULL | ++------------+------------+-----------+---------+---------+ +EXPLAIN select /*+no_rewrite, use_merge(t1 t2), leading(t1 t2 t3)*/ t1.hldgddm, t2.pzjzqzh, t2.pzjzdjydy, t3.pjyjydy, t3.pjyscdm from cghldinf t1 left join puzdjypf t2 on t2.pzjzqzh = t1.hldgddm left join pujydypf t3 on t2.pzjzdjydy = t3.pjyjydy and t3.pjyscdm = '01' where hldgddm = 'A100013208'; +Query Plan +====================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------------------------------------- +|0 |PX COORDINATOR | |1 |14594060| +|1 | EXCHANGE OUT DISTR |:EX10002 |1 |14594060| +|2 | NESTED-LOOP OUTER JOIN | |1 |14594060| +|3 | EXCHANGE IN DISTR | |1 |14594023| +|4 | EXCHANGE OUT DISTR (PKEY) |:EX10001 |1 |14594023| +|5 | MATERIAL | |1 |14594023| +|6 | MERGE OUTER JOIN | |1 |14594022| +|7 | EXCHANGE IN DISTR | |1 |38 | +|8 | EXCHANGE OUT DISTR (PKEY)|:EX10000 |1 |38 | +|9 | TABLE SCAN |t1(HLDINDEX)|1 |38 | +|10| SORT | |1300000 |14414555| +|11| PX PARTITION ITERATOR | |1300000 |804067 | +|12| TABLE SCAN |t2 |1300000 |804067 | +|13| PX PARTITION ITERATOR | |1 |37 | +|14| TABLE SCAN |t3 |1 |37 | +====================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [t3.PJYJYDY], [t3.PJYSCDM]), filter(nil) + 1 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [t3.PJYJYDY], [t3.PJYSCDM]), filter(nil), dop=1 + 2 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [t3.PJYJYDY], [t3.PJYSCDM]), filter(nil), + conds(nil), nl_params_([t2.PZJZDJYDY]) + 3 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [PARTITION_ID]), filter(nil) + 4 - (#keys=1, [t2.PZJZDJYDY]), output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY], [PARTITION_ID]), filter(nil), dop=1 + 5 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY]), filter(nil) + 6 - output([t1.HLDGDDM], [t2.PZJZQZH], [t2.PZJZDJYDY]), filter(nil), + equal_conds([t2.PZJZQZH = t1.HLDGDDM]), other_conds(nil) + 7 - output([t1.HLDGDDM]), filter(nil) + 8 - (#keys=1, [t1.HLDGDDM]), output([t1.HLDGDDM]), filter(nil), is_single, dop=1 + 9 - output([t1.HLDGDDM]), filter([t1.HLDGDDM = 'A100013208']), + access([t1.HLDGDDM]), partitions(p5) + 10 - output([t2.PZJZQZH], [t2.PZJZDJYDY]), filter(nil), sort_keys([t2.PZJZQZH, ASC]), local merge sort + 11 - output([t2.PZJZQZH], [t2.PZJZDJYDY]), filter(nil) + 12 - output([t2.PZJZQZH], [t2.PZJZDJYDY]), filter(nil), + access([t2.PZJZQZH], [t2.PZJZDJYDY]), partitions(p[0-12]) + 13 - output([t3.PJYJYDY], [t3.PJYSCDM]), filter(nil) + 14 - output([t3.PJYJYDY], [t3.PJYSCDM]), filter([t3.PJYSCDM = '01']), + access([t3.PJYJYDY], [t3.PJYSCDM]), partitions(p[0-1]) + +select /*+no_rewrite, use_merge(t1 t2), leading(t1 t2 t3)*/ t1.hldgddm, t2.pzjzqzh, t2.pzjzdjydy, t3.pjyjydy, t3.pjyscdm from cghldinf t1 left join puzdjypf t2 on t2.pzjzqzh = t1.hldgddm left join pujydypf t3 on t2.pzjzdjydy = t3.pjyjydy and t3.pjyscdm = '01' where hldgddm = 'A100013208'; ++------------+------------+-----------+---------+---------+ +| hldgddm | pzjzqzh | pzjzdjydy | pjyjydy | pjyscdm | ++------------+------------+-----------+---------+---------+ +| A100013208 | A100013208 | 20605 | NULL | NULL | +| A100013208 | A100013208 | 20605 | NULL | NULL | ++------------+------------+-----------+---------+---------+ + +drop table if exists t1, t2; +create table t1 (c1 int, c2 int, primary key(c1)); +create table t2 (c1 int, c2 int, primary key(c2)); + +explain extended_noaddr select count(*) from t1 A, t2 B where A.c1 >= 5630905 and A.c1 < 5631105 and A.c1 = B.c2 and A.c2 = B.c2; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SCALAR GROUP BY | |1 |4476| +|1 | NESTED-LOOP JOIN| |3 |4475| +|2 | TABLE SCAN |A |3 |4383| +|3 | TABLE GET |B |1 |36 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 1 - output([1]), filter(nil), + conds(nil), nl_params_([A.c1]), batch_join=true + 2 - output([A.c1]), filter([A.c1 = A.c2], [A.c2 < 5631105]), + access([A.c1], [A.c2]), partitions(p0), + is_index_back=false, filter_before_indexback[false,false], + range_key([A.c1]), range[5630905 ; 5631105), + range_cond([A.c1 >= 5630905], [A.c1 < 5631105]) + 3 - output([1]), filter(nil), + access([B.c2]), partitions(p0), + is_index_back=false, + range_key([B.c2]), range(MIN ; MAX), + range_cond([B.c2 < 5631105], [B.c2 >= 5630905], [? = B.c2]) + + +drop table t1, t2; +create table t1 (c1 int, c2 int, index (c1)); +create table t2 (c1 int, c2 int, index (c2)); + +explain extended_noaddr select count(*) from t1 A, t2 B where A.c1 >= 5630905 and A.c1 < 5631105 and A.c1 = B.c2 and A.c2 = B.c2; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------- +|0 |SCALAR GROUP BY | |1 |31312| +|1 | NESTED-LOOP JOIN| |123 |31289| +|2 | TABLE SCAN |A(c1)|3 |31096| +|3 | TABLE SCAN |B(c2)|50 |45 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 1 - output([1]), filter(nil), + conds(nil), nl_params_([A.c1]), batch_join=true + 2 - output([A.c1]), filter([A.c1 = A.c2], [A.c2 < 5631105]), + access([A.c1], [A.c2]), partitions(p0), + is_index_back=true, filter_before_indexback[false,false], + range_key([A.c1], [A.__pk_increment]), range(5630905,MIN ; 5631105,MIN), + range_cond([A.c1 >= 5630905], [A.c1 < 5631105]) + 3 - output([1]), filter(nil), + access([B.c2]), partitions(p0), + is_index_back=false, + range_key([B.c2], [B.__pk_increment]), range(MIN ; MAX), + range_cond([B.c2 < 5631105], [B.c2 >= 5630905], [? = B.c2]) + + +drop table t1, t2; +create table t1 (c1 int, c2 int) partition by hash(c1) partitions 4; +create table t2 (c1 int, c2 int) partition by hash(c2) partitions 4; + +explain extended_noaddr select count(*) from t1 A, t2 B where A.c1 >= 5630905 and A.c1 < 5631105 and A.c1 = B.c2 and A.c2 = B.c2; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |21331| +|1 | PX COORDINATOR | |1 |20956| +|2 | EXCHANGE OUT DISTR |:EX10000|1 |20956| +|3 | MERGE GROUP BY | |1 |20956| +|4 | PX PARTITION ITERATOR| |1961 |20582| +|5 | NESTED-LOOP JOIN | |1961 |20582| +|6 | TABLE SCAN |A |10 |17866| +|7 | TABLE SCAN |B |198 |144 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), + group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]) + 1 - output([T_FUN_COUNT(*)]), filter(nil) + 2 - output([T_FUN_COUNT(*)]), filter(nil), dop=1 + 3 - output([T_FUN_COUNT(*)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 4 - output([1]), filter(nil), + partition wise, force partition granule, asc. + 5 - output([1]), filter(nil), + conds(nil), nl_params_([A.c1]), batch_join=true + 6 - output([A.c1]), filter([A.c1 = A.c2], [A.c2 < 5631105]), + access([A.c1], [A.c2]), partitions(p[0-3]), + is_index_back=false, filter_before_indexback[false,false], + range_key([A.c1], [A.__pk_increment]), range(5630905,MIN ; 5631105,MIN), + range_cond([A.c1 >= 5630905], [A.c1 < 5631105]) + 7 - output([1]), filter(nil), + access([B.c2]), partitions(p[0-3]), + is_index_back=false, + range_key([B.c2], [B.__pk_increment]), range(MIN ; MAX), + range_cond([B.c2 < 5631105], [B.c2 >= 5630905], [? = B.c2]) + + + +drop table if exists t1, t2, t3; +drop table if exists tt1, tt2, tt3; +drop table if exists cghldinf, puzdjypf, pujydypf; +USE DB_PREDICATE_DEDUCE; +drop database DB_PREDICATE_DEDUCE; diff --git a/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_simplify.result b/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_simplify.result new file mode 100644 index 000000000..30c20c7eb --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/transformer/r/mysql/transformer_simplify.result @@ -0,0 +1,18462 @@ +result_format: 4 +explain_protocol: 2 +DROP DATABASE IF EXISTS DB_SIMPLIFY; +CREATE DATABASE DB_SIMPLIFY; +USE DB_SIMPLIFY; + +********************* test for basic transform ********* +drop table if exists t1, t2, t3; +create table t1(c1 int primary key); +create table t2(c2 int primary key); +create table t3(c3 int primary key); +EXPLAIN insert into t1 values(1),(2),(3),(4),(5); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |5 |2 | +|1 | EXPRESSION| |5 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)]), filter(nil), + columns([{t1: ({t1: (t1.c1)})}]), partitions(p0) + 1 - output([__values.c1]), filter(nil) + values({1}, {2}, {3}, {4}, {5}) + +insert into t1 values(1),(2),(3),(4),(5); +EXPLAIN insert into t2 values(11),(12),(13),(14),(15); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |5 |2 | +|1 | EXPRESSION| |5 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c2)]), filter(nil), + columns([{t2: ({t2: (t2.c2)})}]), partitions(p0) + 1 - output([__values.c2]), filter(nil) + values({11}, {12}, {13}, {14}, {15}) + +insert into t2 values(11),(12),(13),(14),(15); +EXPLAIN insert into t3 values(111),(112),(113),(114),(115); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |5 |2 | +|1 | EXPRESSION| |5 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c3)]), filter(nil), + columns([{t3: ({t3: (t3.c3)})}]), partitions(p0) + 1 - output([__values.c3]), filter(nil) + values({111}, {112}, {113}, {114}, {115}) + +insert into t3 values(111),(112),(113),(114),(115); + +drop table if exists is_c1, is_c2; +create table is_c1(c1 int); +create table is_c2(c1 int, c2 int); + +set autocommit = 0; + +EXPLAIN select /*+no_rewrite*/ max(c1) from t1 group by c1 desc; +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |MERGE GROUP BY| |5 |38 | +|1 | TABLE SCAN |t1(Reverse)|5 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(t1.c1)]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c1)]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrite*/ max(c1) from t1 group by c1 desc; ++---------+ +| max(c1) | ++---------+ +| 5 | +| 4 | +| 3 | +| 2 | +| 1 | ++---------+ +EXPLAIN select max(c1) from t1 group by c1 desc; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |TABLE SCAN|t1(Reverse)|5 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select max(c1) from t1 group by c1 desc; ++---------+ +| max(c1) | ++---------+ +| 5 | +| 4 | +| 3 | +| 2 | +| 1 | ++---------+ + +EXPLAIN select /*+no_rewrite*/ c1 from t1 order by c1,c1,c1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrite*/ c1 from t1 order by c1,c1,c1; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | ++----+ +EXPLAIN select c1 from t1 order by c1,c1,c1; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1 from t1 order by c1,c1,c1; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | ++----+ +EXPLAIN insert into is_c1 select c1 from t1 order by c1,c1,c1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |5 |38 | +|1 | SUBPLAN SCAN|VIEW1|5 |38 | +|2 | TABLE SCAN |t1 |5 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{is_c1: ({is_c1: (is_c1.__pk_increment, is_c1.c1)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +insert into is_c1 select c1 from t1 order by c1,c1,c1; + +## test for subquery transform ### +EXPLAIN select /*+no_rewrite*/ * from (select max(c1) from t1 group by c1 desc) as tmp; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |SUBPLAN SCAN|tmp |5 |38 | +|1 | TABLE SCAN |t1(Reverse)|5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([tmp.max(c1)]), filter(nil), + access([tmp.max(c1)]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrite*/ * from (select max(c1) from t1 group by c1 desc) as tmp; ++---------+ +| max(c1) | ++---------+ +| 5 | +| 4 | +| 3 | +| 2 | +| 1 | ++---------+ +EXPLAIN select * from (select max(c1) from t1 group by c1 desc) as tmp; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |TABLE SCAN|t1(Reverse)|5 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from (select max(c1) from t1 group by c1 desc) as tmp; ++---------+ +| max(c1) | ++---------+ +| 5 | +| 4 | +| 3 | +| 2 | +| 1 | ++---------+ +EXPLAIN update t2 set t2.c2 = t2.c2 + 1 where t2.c2 in (select max(c1) from t1 group by c1 desc); +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |UPDATE | |5 |83 | +|1 | MERGE JOIN | |5 |78 | +|2 | TABLE SCAN|t2 |5 |37 | +|3 | TABLE SCAN|t1 |5 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2: ({t2: (t2.c2)})}]), + update([t2.c2=column_conv(INT,PS:(11,0),NOT NULL,cast(t2.c2 + 1, INT(-1, 0)))]) + 1 - output([t2.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t2.c2 + 1, INT(-1, 0)))]), filter(nil), + equal_conds([t2.c2 = t1.c1]), other_conds(nil) + 2 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t2 set t2.c2 = t2.c2 + 1 where t2.c2 in (select max(c1) from t1 group by c1 desc); +EXPLAIN select * from t2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +select * from t2; ++----+ +| c2 | ++----+ +| 11 | +| 12 | +| 13 | +| 14 | +| 15 | ++----+ +rollback; +EXPLAIN update /*+NO_REWRITE*/t2 set t2.c2 = t2.c2 + 1 where t2.c2 in (select /*+NO_REWRITE*/max(c1) from t1 group by c1 desc); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |UPDATE | |3 |85 | +|1 | SUBPLAN FILTER | |3 |82 | +|2 | TABLE SCAN |t2 |5 |37 | +|3 | MERGE GROUP BY| |5 |38 | +|4 | TABLE SCAN |t1(Reverse)|5 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2: ({t2: (t2.c2)})}]), + update([t2.c2=column_conv(INT,PS:(11,0),NOT NULL,cast(t2.c2 + 1, INT(-1, 0)))]) + 1 - output([t2.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t2.c2 + 1, INT(-1, 0)))]), filter([t2.c2 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 3 - output([T_FUN_MAX(t1.c1)]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c1)]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update /*+NO_REWRITE*/t2 set t2.c2 = t2.c2 + 1 where t2.c2 in (select /*+NO_REWRITE*/max(c1) from t1 group by c1 desc); +EXPLAIN select * from t2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t2 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +select * from t2; ++----+ +| c2 | ++----+ +| 11 | +| 12 | +| 13 | +| 14 | +| 15 | ++----+ +rollback; +EXPLAIN select /*+no_rewrite*/ c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |SUBPLAN FILTER| |1 |72 | +|1 | TABLE GET |t2 |1 |36 | +|2 | TABLE SCAN |t1(Reverse)|1 |36 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +select /*+no_rewrite*/ c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); ++----+ +| c2 | ++----+ ++----+ +EXPLAIN select c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |SUBPLAN FILTER| |1 |72 | +|1 | TABLE GET |t2 |1 |36 | +|2 | TABLE SCAN |t1(Reverse)|1 |36 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +select c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); ++----+ +| c2 | ++----+ ++----+ +EXPLAIN delete from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |DELETE | |1 |73 | +|1 | SUBPLAN FILTER| |1 |72 | +|2 | TABLE GET |t2 |1 |36 | +|3 | TABLE SCAN |t1(Reverse)|1 |36 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2: ({t2: (t2.c2)})}]) + 1 - output([t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); +EXPLAIN insert into is_c1 select c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |INSERT | |1 |73 | +|1 | SUBPLAN SCAN |VIEW1 |1 |73 | +|2 | SUBPLAN FILTER| |1 |72 | +|3 | TABLE GET |t2 |1 |36 | +|4 | TABLE SCAN |t1(Reverse)|1 |36 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_c1: ({is_c1: (is_c1.__pk_increment, is_c1.c1)})}]), partitions(p0) + 1 - output([VIEW1.c2]), filter(nil), + access([VIEW1.c2]) + 2 - output([t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +insert into is_c1 select c2 from t2 where c2 = (select max(c1) from t1 group by c1 desc limit 1); + +EXPLAIN select /*+no_rewrite*/ * from (select c1 from t1 order by c1,c1,c1) as tmp; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |SUBPLAN SCAN|tmp |5 |38 | +|1 | TABLE SCAN |t1 |5 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([tmp.c1]), filter(nil), + access([tmp.c1]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrite*/ * from (select c1 from t1 order by c1,c1,c1) as tmp; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | ++----+ +EXPLAIN select * from (select c1 from t1 order by c1,c1,c1) as tmp; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from (select c1 from t1 order by c1,c1,c1) as tmp; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | ++----+ + +EXPLAIN select /*+no_rewrite*/ c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |72 | +|1 | TABLE GET |t2 |1 |36 | +|2 | TABLE SCAN |t1 |1 |36 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +select /*+no_rewrite*/ c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); ++----+ +| c2 | ++----+ ++----+ +EXPLAIN select c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |72 | +|1 | TABLE GET |t2 |1 |36 | +|2 | TABLE SCAN |t1 |1 |36 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +select c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); ++----+ +| c2 | ++----+ ++----+ +EXPLAIN delete from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |DELETE | |1 |73 | +|1 | SUBPLAN FILTER| |1 |72 | +|2 | TABLE GET |t2 |1 |36 | +|3 | TABLE SCAN |t1 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2: ({t2: (t2.c2)})}]) + 1 - output([t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); +EXPLAIN insert into is_c1 select c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |INSERT | |1 |73 | +|1 | SUBPLAN SCAN |VIEW1|1 |73 | +|2 | SUBPLAN FILTER| |1 |72 | +|3 | TABLE GET |t2 |1 |36 | +|4 | TABLE SCAN |t1 |1 |36 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_c1: ({is_c1: (is_c1.__pk_increment, is_c1.c1)})}]), partitions(p0) + 1 - output([VIEW1.c2]), filter(nil), + access([VIEW1.c2]) + 2 - output([t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +insert into is_c1 select c2 from t2 where c2 = (select c1 from t1 order by c1,c1,c1 limit 1); + +EXPLAIN select /*+no_rewrite*/ * from ((select c1 from t1 order by c1) union (select c2 from t2)) as tmp; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SUBPLAN SCAN |tmp |10 |78 | +|1 | MERGE UNION DISTINCT| |10 |77 | +|2 | TABLE SCAN |t1 |5 |37 | +|3 | TABLE SCAN |t2 |5 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([tmp.c1]), filter(nil), + access([tmp.c1]) + 1 - output([UNION([1])]), filter(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +select /*+no_rewrite*/ * from ((select c1 from t1 order by c1) union (select c2 from t2)) as tmp; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 11 | +| 12 | +| 13 | +| 14 | +| 15 | ++----+ +EXPLAIN select * from ((select c1 from t1 order by c1) union (select c2 from t2)) as tmp; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE UNION DISTINCT| |10 |77 | +|1 | TABLE SCAN |t1 |5 |37 | +|2 | TABLE SCAN |t2 |5 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +select * from ((select c1 from t1 order by c1) union (select c2 from t2)) as tmp; ++----+ +| c1 | ++----+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 11 | +| 12 | +| 13 | +| 14 | +| 15 | ++----+ +EXPLAIN select /*+no_rewrite*/ c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SUBPLAN FILTER | |3 |127 | +|1 | TABLE SCAN |t3 |5 |37 | +|2 | MERGE UNION DISTINCT| |10 |77 | +|3 | TABLE SCAN |t1 |5 |37 | +|4 | TABLE SCAN |t2 |5 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t3.c3]), filter([t3.c3 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + 2 - output([UNION([1])]), filter(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +select /*+no_rewrite*/ c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); ++----+ +| c3 | ++----+ ++----+ +EXPLAIN select c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |MERGE JOIN | |10 |123 | +|1 | TABLE SCAN |t3 |5 |37 | +|2 | SUBPLAN SCAN |VIEW1|10 |78 | +|3 | MERGE UNION DISTINCT| |10 |77 | +|4 | TABLE SCAN |t1 |5 |37 | +|5 | TABLE SCAN |t2 |5 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t3.c3]), filter(nil), + equal_conds([t3.c3 = VIEW1.c1]), other_conds(nil) + 1 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + 2 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 3 - output([UNION([1])]), filter(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +select c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); ++----+ +| c3 | ++----+ ++----+ +EXPLAIN delete from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |DELETE | |10 |133 | +|1 | MERGE JOIN | |10 |123 | +|2 | TABLE SCAN |t3 |5 |37 | +|3 | SUBPLAN SCAN |VIEW1|10 |78 | +|4 | MERGE UNION DISTINCT| |10 |77 | +|5 | TABLE SCAN |t1 |5 |37 | +|6 | TABLE SCAN |t2 |5 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t3: ({t3: (t3.c3)})}]) + 1 - output([t3.c3]), filter(nil), + equal_conds([t3.c3 = VIEW1.c1]), other_conds(nil) + 2 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + 3 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 4 - output([UNION([1])]), filter(nil) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +delete from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); +EXPLAIN insert into is_c1 select c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |INSERT | |10 |125 | +|1 | SUBPLAN SCAN |VIEW1|10 |124 | +|2 | MERGE JOIN | |10 |123 | +|3 | TABLE SCAN |t3 |5 |37 | +|4 | SUBPLAN SCAN |VIEW2|10 |78 | +|5 | MERGE UNION DISTINCT| |10 |77 | +|6 | TABLE SCAN |t1 |5 |37 | +|7 | TABLE SCAN |t2 |5 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c3)]), filter(nil), + columns([{is_c1: ({is_c1: (is_c1.__pk_increment, is_c1.c1)})}]), partitions(p0) + 1 - output([VIEW1.c3]), filter(nil), + access([VIEW1.c3]) + 2 - output([t3.c3]), filter(nil), + equal_conds([t3.c3 = VIEW2.c1]), other_conds(nil) + 3 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + 4 - output([VIEW2.c1]), filter(nil), + access([VIEW2.c1]) + 5 - output([UNION([1])]), filter(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +insert into is_c1 select c3 from t3 where c3 in ((select c1 from t1 order by c1) union (select c2 from t2)); + +EXPLAIN select /*+no_rewrite*/ * from ((select c1 from t1) union all (select c2 from t2) limit 2) as tmp; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |SUBPLAN SCAN |tmp |2 |75 | +|1 | LIMIT | |2 |74 | +|2 | UNION ALL | |2 |74 | +|3 | TABLE SCAN|t1 |2 |37 | +|4 | TABLE SCAN|t2 |2 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([tmp.c1]), filter(nil), + access([tmp.c1]) + 1 - output([UNION([1])]), filter(nil), limit(2), offset(nil) + 2 - output([UNION([1])]), filter(nil) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(2), offset(nil) + 4 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + limit(2), offset(nil) + +select /*+no_rewrite*/ * from ((select c1 from t1) union all (select c2 from t2) limit 2) as tmp; ++----+ +| c1 | ++----+ +| 1 | +| 2 | ++----+ +EXPLAIN select * from ((select c1 from t1) union all (select c2 from t2) limit 2) as tmp; +Query Plan +===================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------- +|0 |LIMIT | |2 |74 | +|1 | UNION ALL | |2 |74 | +|2 | TABLE SCAN|t1 |2 |37 | +|3 | TABLE SCAN|t2 |2 |37 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil), limit(2), offset(nil) + 1 - output([UNION([1])]), filter(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(2), offset(nil) + 3 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + limit(2), offset(nil) + +select * from ((select c1 from t1) union all (select c2 from t2) limit 2) as tmp; ++----+ +| c1 | ++----+ +| 1 | +| 2 | ++----+ +EXPLAIN select /*+no_rewrite*/ c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |3 |114 | +|1 | TABLE SCAN |t3 |5 |37 | +|2 | LIMIT | |2 |74 | +|3 | UNION ALL | |2 |74 | +|4 | TABLE SCAN |t1 |2 |37 | +|5 | TABLE SCAN |t2 |2 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t3.c3]), filter([t3.c3 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + 2 - output([UNION([1])]), filter(nil), limit(2), offset(nil) + 3 - output([UNION([1])]), filter(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(2), offset(nil) + 5 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + limit(2), offset(nil) + +select /*+no_rewrite*/ c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); ++----+ +| c3 | ++----+ ++----+ +EXPLAIN select c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN| |2 |114 | +|1 | TABLE SCAN |t3 |5 |37 | +|2 | SORT | |2 |76 | +|3 | SUBPLAN SCAN |VIEW1|2 |75 | +|4 | LIMIT | |2 |74 | +|5 | UNION ALL | |2 |74 | +|6 | TABLE SCAN|t1 |2 |37 | +|7 | TABLE SCAN|t2 |2 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t3.c3]), filter(nil), + equal_conds([t3.c3 = VIEW1.c1]), other_conds(nil) + 1 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + 2 - output([VIEW1.c1]), filter(nil), sort_keys([VIEW1.c1, ASC]) + 3 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 4 - output([UNION([1])]), filter(nil), limit(2), offset(nil) + 5 - output([UNION([1])]), filter(nil) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(2), offset(nil) + 7 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + limit(2), offset(nil) + +select c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); ++----+ +| c3 | ++----+ ++----+ +EXPLAIN delete from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |2 |116 | +|1 | MERGE SEMI JOIN| |2 |114 | +|2 | TABLE SCAN |t3 |5 |37 | +|3 | SORT | |2 |76 | +|4 | SUBPLAN SCAN |VIEW1|2 |75 | +|5 | LIMIT | |2 |74 | +|6 | UNION ALL | |2 |74 | +|7 | TABLE SCAN|t1 |2 |37 | +|8 | TABLE SCAN|t2 |2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t3: ({t3: (t3.c3)})}]) + 1 - output([t3.c3]), filter(nil), + equal_conds([t3.c3 = VIEW1.c1]), other_conds(nil) + 2 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + 3 - output([VIEW1.c1]), filter(nil), sort_keys([VIEW1.c1, ASC]) + 4 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 5 - output([UNION([1])]), filter(nil), limit(2), offset(nil) + 6 - output([UNION([1])]), filter(nil) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(2), offset(nil) + 8 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + limit(2), offset(nil) + +delete from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); +EXPLAIN insert into is_c1 select c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |INSERT | |2 |115 | +|1 | SUBPLAN SCAN |VIEW1|2 |114 | +|2 | MERGE SEMI JOIN| |2 |114 | +|3 | TABLE SCAN |t3 |5 |37 | +|4 | SORT | |2 |76 | +|5 | SUBPLAN SCAN |VIEW2|2 |75 | +|6 | LIMIT | |2 |74 | +|7 | UNION ALL | |2 |74 | +|8 | TABLE SCAN|t1 |2 |37 | +|9 | TABLE SCAN|t2 |2 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c3)]), filter(nil), + columns([{is_c1: ({is_c1: (is_c1.__pk_increment, is_c1.c1)})}]), partitions(p0) + 1 - output([VIEW1.c3]), filter(nil), + access([VIEW1.c3]) + 2 - output([t3.c3]), filter(nil), + equal_conds([t3.c3 = VIEW2.c1]), other_conds(nil) + 3 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + 4 - output([VIEW2.c1]), filter(nil), sort_keys([VIEW2.c1, ASC]) + 5 - output([VIEW2.c1]), filter(nil), + access([VIEW2.c1]) + 6 - output([UNION([1])]), filter(nil), limit(2), offset(nil) + 7 - output([UNION([1])]), filter(nil) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(2), offset(nil) + 9 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0), + limit(2), offset(nil) + +insert into is_c1 select c3 from t3 where c3 in ((select c1 from t1) union all (select c2 from t2) limit 2); + +drop table is_c1, is_c2, t1,t2,t3; + +set autocommit = 1; + + +*********************消除subquery中的order by子句 begin***************** + +drop table if exists t1, t2; +create table t1(c1 int not null, c2 int, key idx_c1(c1)); +create table t2(c1 int not null, c2 int, key idx_c2(c2)); +create table is_t1(c1 int); +create table is_t2(c1 int, c2 int); +insert/*trace*/into t1 values(1,2),(2,3),(3,3), (4,3),(4,4),(6,5),(6,5),(10,20); + +****** no limit, elimilate order by in subquery +EXPLAIN select /*+no_rewrite*/ sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |102 | +|1 | SUBPLAN FILTER| |4 |102 | +|2 | TABLE SCAN |t1 |8 |38 | +|3 | SORT | |8 |46 | +|4 | TABLE SCAN |t1 |8 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter([t1.c2 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/ sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| 14 | 15 | ++---------+---------+ +EXPLAIN select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |SCALAR GROUP BY | |1 |92 | +|1 | MERGE SEMI JOIN| |8 |90 | +|2 | SORT | |8 |46 | +|3 | TABLE SCAN |t1 |8 |38 | +|4 | TABLE SCAN |t1(idx_c1)|8 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = t1.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| 14 | 15 | ++---------+---------+ +EXPLAIN update t1 set c2 = c1+1 where c2 in (select c1 from t1 order by c1, c1, c2); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |UPDATE | |8 |99 | +|1 | HASH RIGHT SEMI JOIN| |8 |91 | +|2 | TABLE SCAN |t1(idx_c1)|8 |38 | +|3 | TABLE SCAN |t1 |8 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=column_conv(INT,PS:(11,0),NULL,cast(t1.c1 + 1, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NULL,cast(t1.c1 + 1, INT(-1, 0)))]), filter(nil), + equal_conds([t1.c2 = t1.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t1.c2], [t1.c1], [t1.__pk_increment]), filter(nil), + access([t1.c2], [t1.c1], [t1.__pk_increment]), partitions(p0) + +update t1 set c2 = c1+1 where c2 in (select c1 from t1 order by c1, c1, c2); +EXPLAIN delete from t1 where c2 in (select c1 from t1 order by c1, c1, c2); +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |DELETE | |8 |99 | +|1 | HASH RIGHT SEMI JOIN| |8 |91 | +|2 | TABLE SCAN |t1(idx_c1)|8 |38 | +|3 | TABLE SCAN |t1 |8 |38 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = t1.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 in (select c1 from t1 order by c1, c1, c2); +EXPLAIN insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |85 | +|1 | SUBPLAN SCAN |VIEW1 |1 |85 | +|2 | SCALAR GROUP BY | |1 |85 | +|3 | MERGE SEMI JOIN| |5 |84 | +|4 | SORT | |5 |42 | +|5 | TABLE SCAN |t1 |5 |38 | +|6 | TABLE SCAN |t1(idx_c1)|5 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.sum(c1), INT(-1, 0)))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.sum(c2), INT(-1, 0)))]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.sum(c1)], [VIEW1.sum(c2)]), filter(nil), + access([VIEW1.sum(c1)], [VIEW1.sum(c2)]) + 2 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = t1.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c1, c2); + + +****** has limit, can't elimilate order by in subquery +EXPLAIN select /*+no_rewrite*/sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |80 | +|1 | SUBPLAN FILTER| |3 |79 | +|2 | TABLE SCAN |t1 |5 |38 | +|3 | LIMIT | |1 |40 | +|4 | TOP-N SORT | |1 |40 | +|5 | TABLE SCAN |t1 |5 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter([t1.c2 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(1) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| NULL | NULL | ++---------+---------+ +EXPLAIN select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |81 | +|1 | HASH JOIN | |1 |81 | +|2 | SUBPLAN SCAN |VIEW1|1 |40 | +|3 | LIMIT | |1 |40 | +|4 | TOP-N SORT | |1 |40 | +|5 | TABLE SCAN|t1 |5 |38 | +|6 | TABLE SCAN |t1 |5 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = VIEW1.c1]), other_conds(nil) + 2 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(1) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| NULL | NULL | ++---------+---------+ +EXPLAIN update t1 set c2 = 1 where c2 in (select c1 from t1 order by c1, c2 limit 1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |UPDATE | |1 |82 | +|1 | HASH JOIN | |1 |81 | +|2 | SUBPLAN SCAN |VIEW1|1 |40 | +|3 | LIMIT | |1 |40 | +|4 | TOP-N SORT | |1 |40 | +|5 | TABLE SCAN|t1 |5 |38 | +|6 | TABLE SCAN |t1 |5 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=?]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [?]), filter(nil), + equal_conds([t1.c2 = VIEW1.c1]), other_conds(nil) + 2 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(1) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + +update t1 set c2 = 1 where c2 in (select c1 from t1 order by c1, c2 limit 1); +EXPLAIN delete from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |DELETE | |1 |82 | +|1 | HASH JOIN | |1 |81 | +|2 | SUBPLAN SCAN |VIEW1|1 |40 | +|3 | LIMIT | |1 |40 | +|4 | TOP-N SORT | |1 |40 | +|5 | TABLE SCAN|t1 |5 |38 | +|6 | TABLE SCAN |t1 |5 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = VIEW1.c1]), other_conds(nil) + 2 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 3 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(1) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 6 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + +delete from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); +EXPLAIN insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |INSERT | |1 |81 | +|1 | SUBPLAN SCAN |VIEW1|1 |81 | +|2 | SCALAR GROUP BY| |1 |81 | +|3 | HASH JOIN | |1 |81 | +|4 | SUBPLAN SCAN |VIEW2|1 |40 | +|5 | LIMIT | |1 |40 | +|6 | TOP-N SORT | |1 |40 | +|7 | TABLE SCAN|t1 |5 |38 | +|8 | TABLE SCAN |t1 |5 |38 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.sum(c1), INT(-1, 0)))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.sum(c2), INT(-1, 0)))]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.sum(c1)], [VIEW1.sum(c2)]), filter(nil), + access([VIEW1.sum(c1)], [VIEW1.sum(c2)]) + 2 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = VIEW2.c1]), other_conds(nil) + 4 - output([VIEW2.c1]), filter(nil), + access([VIEW2.c1]) + 5 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 6 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(1) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + +insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by c1, c2 limit 1); + + +****** order by subquery, can't elimilate order by in subquery +EXPLAIN select /*+no_rewrite*/ sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |SCALAR GROUP BY| |1 |83 | +|1 | SUBPLAN FILTER| |3 |82 | +|2 | TABLE SCAN |t1 |5 |38 | +|3 | TABLE SCAN |t1(idx_c1)|5 |38 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter([t1.c2 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrite*/ sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| NULL | NULL | ++---------+---------+ +EXPLAIN select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |SCALAR GROUP BY | |1 |85 | +|1 | MERGE SEMI JOIN| |5 |84 | +|2 | SORT | |5 |42 | +|3 | TABLE SCAN |t1 |5 |38 | +|4 | TABLE SCAN |t1(idx_c1)|5 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = t1.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); ++---------+---------+ +| sum(c1) | sum(c2) | ++---------+---------+ +| NULL | NULL | ++---------+---------+ +EXPLAIN update t1 set c2 = 1 where c2 in (select c1 from t1 order by (select 1)); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |UPDATE | |5 |90 | +|1 | MERGE SEMI JOIN| |5 |85 | +|2 | SORT | |5 |43 | +|3 | TABLE SCAN |t1 |5 |38 | +|4 | TABLE SCAN |t1(idx_c1)|5 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c2=?]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [?]), filter(nil), + equal_conds([t1.c2 = t1.c1]), other_conds(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.c2], [t1.__pk_increment], [t1.c1]), filter(nil), + access([t1.c2], [t1.__pk_increment], [t1.c1]), partitions(p0) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +update t1 set c2 = 1 where c2 in (select c1 from t1 order by (select 1)); +EXPLAIN delete from t1 where c2 in (select c1 from t1 order by (select 1)); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |DELETE | |5 |90 | +|1 | MERGE SEMI JOIN| |5 |85 | +|2 | SORT | |5 |43 | +|3 | TABLE SCAN |t1 |5 |38 | +|4 | TABLE SCAN |t1(idx_c1)|5 |38 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = t1.c1]), other_conds(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 3 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +delete from t1 where c2 in (select c1 from t1 order by (select 1)); +EXPLAIN insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |INSERT | |1 |85 | +|1 | SUBPLAN SCAN |VIEW1 |1 |85 | +|2 | SCALAR GROUP BY | |1 |85 | +|3 | MERGE SEMI JOIN| |5 |84 | +|4 | SORT | |5 |42 | +|5 | TABLE SCAN |t1 |5 |38 | +|6 | TABLE SCAN |t1(idx_c1)|5 |38 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.sum(c1), INT(-1, 0)))], [column_conv(INT,PS:(11,0),NULL,cast(VIEW1.sum(c2), INT(-1, 0)))]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.sum(c1)], [VIEW1.sum(c2)]), filter(nil), + access([VIEW1.sum(c1)], [VIEW1.sum(c2)]) + 2 - output([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)], [T_FUN_SUM(t1.c2)]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c2 = t1.c1]), other_conds(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 5 - output([t1.c2], [t1.c1]), filter(nil), + access([t1.c2], [t1.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +insert into is_t2 select sum(c1), sum(c2) from t1 where c2 in (select c1 from t1 order by (select 1)); +drop table t1, t2; + +*********************消除subquery中的order by子句 end***************** + +*********************消除order by重复列begin***************** + +drop table if exists t1; +create table t1(c1 int not null, c2 int); +EXPLAIN select /*+no_rewrite*/ c1 from t1 order by c1,c1 limit 10; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |10 |112665| +|1 | TOP-N SORT | |10 |112663| +|2 | TABLE SCAN|t1 |100000 |61860 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), topn(10) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrite*/ c1 from t1 order by c1,c1 limit 10; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN select c1 from t1 order by c1,c1 limit 10; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |10 |112665| +|1 | TOP-N SORT | |10 |112663| +|2 | TABLE SCAN|t1 |100000 |61860 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), topn(10) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select c1 from t1 order by c1,c1 limit 10; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN update t1 set c1 = c2 + 1 order by c1,c1 limit 10; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |UPDATE | |10 |133258| +|1 | LIMIT | |10 |133248| +|2 | TOP-N SORT | |10 |133246| +|3 | TABLE SCAN|t1 |100000 |64066 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c1=column_conv(INT,PS:(11,0),NOT NULL,cast(t1.c2 + 1, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t1.c2 + 1, INT(-1, 0)))]), filter(nil), limit(10), offset(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), topn(10) + 3 - output([t1.c1], [t1.c2], [t1.__pk_increment]), filter(nil), + access([t1.c1], [t1.c2], [t1.__pk_increment]), partitions(p0) + +update t1 set c1 = c2 + 1 order by c1,c1 limit 10; +EXPLAIN delete from t1 order by c1,c1 limit 10; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |DELETE | |10 |133258| +|1 | LIMIT | |10 |133248| +|2 | TOP-N SORT | |10 |133246| +|3 | TABLE SCAN|t1 |100000 |64066 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), limit(10), offset(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]), topn(10) + 3 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + +delete from t1 order by c1,c1 limit 10; +EXPLAIN insert into is_t1 select c1 from t1 order by c1,c1 limit 10; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------ +|0 |INSERT | |10 |112668| +|1 | SUBPLAN SCAN |VIEW1|10 |112666| +|2 | LIMIT | |10 |112665| +|3 | TOP-N SORT | |10 |112663| +|4 | TABLE SCAN|t1 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{is_t1: ({is_t1: (is_t1.__pk_increment, is_t1.c1)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]), topn(10) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +insert into is_t1 select c1 from t1 order by c1,c1 limit 10; + + + +EXPLAIN select /*+no_rewrite*/c1 from t1 order by c1,c1,c2 limit 10; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |10 |124337| +|1 | TOP-N SORT | |10 |124336| +|2 | TABLE SCAN|t1 |100000 |64066 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/c1 from t1 order by c1,c1,c2 limit 10; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN select c1 from t1 order by c1,c1,c2 limit 10; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |10 |124337| +|1 | TOP-N SORT | |10 |124336| +|2 | TABLE SCAN|t1 |100000 |64066 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1 from t1 order by c1,c1,c2 limit 10; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN update t1 set c1 = c2 + 1 order by c1,c1,c2 limit 10; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |UPDATE | |10 |133536| +|1 | LIMIT | |10 |133526| +|2 | TOP-N SORT | |10 |133525| +|3 | TABLE SCAN|t1 |100000 |64066 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c1=column_conv(INT,PS:(11,0),NOT NULL,cast(t1.c2 + 1, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t1.c2 + 1, INT(-1, 0)))]), filter(nil), limit(10), offset(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 3 - output([t1.c1], [t1.c2], [t1.__pk_increment]), filter(nil), + access([t1.c1], [t1.c2], [t1.__pk_increment]), partitions(p0) + +update t1 set c1 = c2 + 1 order by c1,c1,c2 limit 10; +EXPLAIN delete from t1 order by c1,c1,c2 limit 10; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |DELETE | |10 |133536| +|1 | LIMIT | |10 |133526| +|2 | TOP-N SORT | |10 |133525| +|3 | TABLE SCAN|t1 |100000 |64066 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), limit(10), offset(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 3 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + +delete from t1 order by c1,c1,c2 limit 10; +EXPLAIN insert into is_t1 select c1 from t1 order by c1,c1,c2 limit 10; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------ +|0 |INSERT | |10 |124340| +|1 | SUBPLAN SCAN |VIEW1|10 |124339| +|2 | LIMIT | |10 |124337| +|3 | TOP-N SORT | |10 |124336| +|4 | TABLE SCAN|t1 |100000 |64066 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{is_t1: ({is_t1: (is_t1.__pk_increment, is_t1.c1)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into is_t1 select c1 from t1 order by c1,c1,c2 limit 10; + + + +EXPLAIN select /*+no_rewrite*/c1 from t1 order by c1,c2,c1 limit 10; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |10 |124337| +|1 | TOP-N SORT | |10 |124336| +|2 | TABLE SCAN|t1 |100000 |64066 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/c1 from t1 order by c1,c2,c1 limit 10; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN select c1 from t1 order by c1,c2,c1 limit 10; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |10 |124337| +|1 | TOP-N SORT | |10 |124336| +|2 | TABLE SCAN|t1 |100000 |64066 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1 from t1 order by c1,c2,c1 limit 10; ++----+ +| c1 | ++----+ ++----+ +EXPLAIN update t1 set c1 = c2 + 1 order by c1,c2,c1 limit 10; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |UPDATE | |10 |133536| +|1 | LIMIT | |10 |133526| +|2 | TOP-N SORT | |10 |133525| +|3 | TABLE SCAN|t1 |100000 |64066 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]), + update([t1.c1=column_conv(INT,PS:(11,0),NOT NULL,cast(t1.c2 + 1, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t1.c2 + 1, INT(-1, 0)))]), filter(nil), limit(10), offset(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 3 - output([t1.c1], [t1.c2], [t1.__pk_increment]), filter(nil), + access([t1.c1], [t1.c2], [t1.__pk_increment]), partitions(p0) + +update t1 set c1 = c2 + 1 order by c1,c2,c1 limit 10; +EXPLAIN delete from t1 order by c1,c2,c1 limit 10; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |DELETE | |10 |133536| +|1 | LIMIT | |10 |133526| +|2 | TOP-N SORT | |10 |133525| +|3 | TABLE SCAN|t1 |100000 |64066 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), limit(10), offset(nil) + 2 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 3 - output([t1.__pk_increment], [t1.c1], [t1.c2]), filter(nil), + access([t1.__pk_increment], [t1.c1], [t1.c2]), partitions(p0) + +delete from t1 order by c1,c2,c1 limit 10; +EXPLAIN insert into is_t1 select c1 from t1 order by c1,c2,c1 limit 10; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------ +|0 |INSERT | |10 |124340| +|1 | SUBPLAN SCAN |VIEW1|10 |124339| +|2 | LIMIT | |10 |124337| +|3 | TOP-N SORT | |10 |124336| +|4 | TABLE SCAN|t1 |100000 |64066 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)]), filter(nil), + columns([{is_t1: ({is_t1: (is_t1.__pk_increment, is_t1.c1)})}]), partitions(p0) + 1 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 2 - output([t1.c1]), filter(nil), limit(10), offset(nil) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]), topn(10) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +insert into is_t1 select c1 from t1 order by c1,c2,c1 limit 10; + +drop table t1; + + +*********************消除order by重复列end***************** + +************************* replace is null condition, begin ********* + +drop table if exists t1_null, t2_null, t3_null; +create table t1_null(c1 int primary key, c2 int); +create table t2_null(c1 int, c2 int not NULL); +create table t3_null(c1 int primary key, c6 int); +insert/*trace*/ into t1_null values(1, 1),(2, 2),(3, 3); +insert/*trace*/ into t2_null values(4, 4),(5, 5),(6, 6); + + +****** pk is null ==> false +EXPLAIN select /*+no_rewrite*/ * from t1_null where c1 is NULL; +Query Plan +===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |TABLE GET|t1_null|1 |52 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +select /*+no_rewrite*/ * from t1_null where c1 is NULL; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN select * from t1_null where c1 is NULL; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t1_null|3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter(nil), startup_filter([0]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +select * from t1_null where c1 is NULL; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN update t1_null set c2 = 0 where c1 is NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t1_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]), + update([t1_null.c2=?]) + 1 - output([t1_null.c1], [t1_null.c2], [?]), filter(nil), startup_filter([0]), + access([t1_null.c2], [t1_null.c1]), partitions(p0) + +update t1_null set c2 = 0 where c1 is NULL; +EXPLAIN delete from t1_null where c1 is NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t1_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), startup_filter([0]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +delete from t1_null where c1 is NULL; +EXPLAIN insert into is_t2 select * from t1_null where c1 is NULL; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |INSERT | |3 |38 | +|1 | SUBPLAN SCAN|VIEW1 |3 |37 | +|2 | TABLE SCAN |t1_null|3 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +insert into is_t2 select * from t1_null where c1 is NULL; + + +****** 多个表达式,pk is null ==> false +EXPLAIN select /*+no_rewrite*/* from t1_null where c1 is NULL and c2 = 1; +Query Plan +===================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------- +|0 |TABLE GET|t1_null|1 |53 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter([t1_null.c2 = 1]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1_null where c1 is NULL and c2 = 1; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN select * from t1_null where c1 is NULL and c2 = 1; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t1_null|3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter(nil), startup_filter([0]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +select * from t1_null where c1 is NULL and c2 = 1; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN update t1_null set c2 = 0 where c1 is NULL and c2 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t1_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]), + update([t1_null.c2=?]) + 1 - output([t1_null.c1], [t1_null.c2], [?]), filter(nil), startup_filter([0]), + access([t1_null.c2], [t1_null.c1]), partitions(p0) + +update t1_null set c2 = 0 where c1 is NULL and c2 = 1; +EXPLAIN delete from t1_null where c1 is NULL and c2 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t1_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), startup_filter([0]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +delete from t1_null where c1 is NULL and c2 = 1; +EXPLAIN insert into is_t2 select * from t1_null where c1 is NULL and c2 = 1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |INSERT | |3 |38 | +|1 | SUBPLAN SCAN|VIEW1 |3 |37 | +|2 | TABLE SCAN |t1_null|3 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +insert into is_t2 select * from t1_null where c1 is NULL and c2 = 1; + + +****** column(not NULL) is NULL ==> false +EXPLAIN select /*+no_rewrite*/* from t2_null where c2 is NULL; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t2_null|0 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2_null.c1], [t2_null.c2]), filter([(T_OP_IS, t2_null.c2, NULL, 0)]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +select /*+no_rewrite*/* from t2_null where c2 is NULL; ++------+----+ +| c1 | c2 | ++------+----+ ++------+----+ +EXPLAIN select * from t2_null where c2 is NULL; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t2_null|3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2_null.c1], [t2_null.c2]), filter(nil), startup_filter([0]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +select * from t2_null where c2 is NULL; ++------+----+ +| c1 | c2 | ++------+----+ ++------+----+ +EXPLAIN update t2_null set c2 = c1 + 1 where c2 is NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t2_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_null: ({t2_null: (t2_null.__pk_increment, t2_null.c1, t2_null.c2)})}]), + update([t2_null.c2=column_conv(INT,PS:(11,0),NOT NULL,cast(t2_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t2_null.c1 + 1, INT(-1, 0)))]), filter(nil), startup_filter([0]), + access([t2_null.c2], [t2_null.c1], [t2_null.__pk_increment]), partitions(p0) + +update t2_null set c2 = c1 + 1 where c2 is NULL; +EXPLAIN delete from t2_null where c2 is NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t2_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_null: ({t2_null: (t2_null.__pk_increment, t2_null.c1, t2_null.c2)})}]) + 1 - output([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2]), filter(nil), startup_filter([0]), + access([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2]), partitions(p0) + +delete from t2_null where c2 is NULL; +EXPLAIN insert into is_t2 select * from t2_null where c2 is NULL; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |INSERT | |3 |38 | +|1 | SUBPLAN SCAN|VIEW1 |3 |37 | +|2 | TABLE SCAN |t2_null|3 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t2_null.c1], [t2_null.c2]), filter(nil), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +insert into is_t2 select * from t2_null where c2 is NULL; + + +****** 多个表达式, column(not NULL) is NULL ==> false +EXPLAIN select /*+no_rewrite*/* from t2_null where c2 is NULL and c1 = 1; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t2_null|0 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2_null.c1], [t2_null.c2]), filter([(T_OP_IS, t2_null.c2, NULL, 0)], [t2_null.c1 = 1]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +select /*+no_rewrite*/* from t2_null where c2 is NULL and c1 = 1; ++------+----+ +| c1 | c2 | ++------+----+ ++------+----+ +EXPLAIN select * from t2_null where c2 is NULL and c1 = 1; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t2_null|3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2_null.c1], [t2_null.c2]), filter(nil), startup_filter([0]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +select * from t2_null where c2 is NULL and c1 = 1; ++------+----+ +| c1 | c2 | ++------+----+ ++------+----+ +EXPLAIN update t2_null set c2 = c1 + 1 where c2 is NULL and c1 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t2_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_null: ({t2_null: (t2_null.__pk_increment, t2_null.c1, t2_null.c2)})}]), + update([t2_null.c2=column_conv(INT,PS:(11,0),NOT NULL,cast(t2_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t2_null.c1 + 1, INT(-1, 0)))]), filter(nil), startup_filter([0]), + access([t2_null.c2], [t2_null.c1], [t2_null.__pk_increment]), partitions(p0) + +update t2_null set c2 = c1 + 1 where c2 is NULL and c1 = 1; +EXPLAIN delete from t2_null where c2 is NULL and c1 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t2_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_null: ({t2_null: (t2_null.__pk_increment, t2_null.c1, t2_null.c2)})}]) + 1 - output([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2]), filter(nil), startup_filter([0]), + access([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2]), partitions(p0) + +delete from t2_null where c2 is NULL and c1 = 1; +EXPLAIN insert into is_t2 select * from t2_null where c2 is NULL and c1 = 1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |INSERT | |3 |38 | +|1 | SUBPLAN SCAN|VIEW1 |3 |37 | +|2 | TABLE SCAN |t2_null|3 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t2_null.c1], [t2_null.c2]), filter(nil), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +insert into is_t2 select * from t2_null where c2 is NULL and c1 = 1; + + +****** pk is not NULL ==> true +EXPLAIN select /*+no_rewrite*/* from t1_null where c1 is not NULL; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t1_null|3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter([(T_OP_IS_NOT, t1_null.c1, NULL, 0)]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1_null where c1 is not NULL; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | ++----+------+ +EXPLAIN select * from t1_null where c1 is not NULL; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t1_null|3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter(nil), startup_filter([1]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +select * from t1_null where c1 is not NULL; ++----+------+ +| c1 | c2 | ++----+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | ++----+------+ +EXPLAIN update t1_null set c2 = 0 where c1 is not NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t1_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]), + update([t1_null.c2=?]) + 1 - output([t1_null.c1], [t1_null.c2], [?]), filter(nil), startup_filter([1]), + access([t1_null.c2], [t1_null.c1]), partitions(p0) + +update t1_null set c2 = 0 where c1 is not NULL; +EXPLAIN delete from t1_null where c1 is not NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t1_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), startup_filter([1]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +delete from t1_null where c1 is not NULL; +EXPLAIN insert into is_t2 select * from t1_null where c1 is not NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------ +|0 |INSERT | |100000 |89464| +|1 | SUBPLAN SCAN|VIEW1 |100000 |75662| +|2 | TABLE SCAN |t1_null|100000 |61860| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([1]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +insert into is_t2 select * from t1_null where c1 is not NULL; + + +****** 多个表达式,pk is not NULL ==> true +EXPLAIN select /*+no_rewrite*/* from t1_null where c1 is not NULL and c2 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------- +|0 |TABLE SCAN|t1_null|990 |86977| +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter([t1_null.c2 = 1], [(T_OP_IS_NOT, t1_null.c1, NULL, 0)]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1_null where c1 is not NULL and c2 = 1; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN select * from t1_null where c1 is not NULL and c2 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------- +|0 |TABLE SCAN|t1_null|990 |78605| +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter([t1_null.c2 = 1]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +select * from t1_null where c1 is not NULL and c2 = 1; ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN update t1_null set c2 = 0 where c1 is not NULL and c2 = 1; +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------- +|0 |UPDATE | |990 |79595| +|1 | TABLE SCAN|t1_null|990 |78605| +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]), + update([t1_null.c2=?]) + 1 - output([t1_null.c1], [t1_null.c2], [?]), filter([t1_null.c2 = 1]), + access([t1_null.c2], [t1_null.c1]), partitions(p0) + +update t1_null set c2 = 0 where c1 is not NULL and c2 = 1; +EXPLAIN delete from t1_null where c1 is not NULL and c2 = 1; +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------- +|0 |DELETE | |990 |79595| +|1 | TABLE SCAN|t1_null|990 |78605| +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]) + 1 - output([t1_null.c1], [t1_null.c2]), filter([t1_null.c2 = 1]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +delete from t1_null where c1 is not NULL and c2 = 1; +EXPLAIN insert into is_t2 select * from t1_null where c1 is not NULL and c2 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------ +|0 |INSERT | |990 |78878| +|1 | SUBPLAN SCAN|VIEW1 |990 |78742| +|2 | TABLE SCAN |t1_null|990 |78605| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_null.c1], [t1_null.c2]), filter([t1_null.c2 = 1]), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + +insert into is_t2 select * from t1_null where c1 is not NULL and c2 = 1; + + +****** column(not NULL) is not NULL ==> true +EXPLAIN select /*+no_rewrite*/* from t2_null where c2 is not NULL; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t2_null|3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2_null.c1], [t2_null.c2]), filter([(T_OP_IS_NOT, t2_null.c2, NULL, 0)]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +select /*+no_rewrite*/* from t2_null where c2 is not NULL; ++------+----+ +| c1 | c2 | ++------+----+ +| 4 | 4 | +| 5 | 5 | +| 6 | 6 | ++------+----+ +EXPLAIN select * from t2_null where c2 is not NULL; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------- +|0 |TABLE SCAN|t2_null|3 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2_null.c1], [t2_null.c2]), filter(nil), startup_filter([1]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +select * from t2_null where c2 is not NULL; ++------+----+ +| c1 | c2 | ++------+----+ +| 4 | 4 | +| 5 | 5 | +| 6 | 6 | ++------+----+ +EXPLAIN update t2_null set c2 = c1 + 1 where c2 is not NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t2_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_null: ({t2_null: (t2_null.__pk_increment, t2_null.c1, t2_null.c2)})}]), + update([t2_null.c2=column_conv(INT,PS:(11,0),NOT NULL,cast(t2_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t2_null.c1 + 1, INT(-1, 0)))]), filter(nil), startup_filter([1]), + access([t2_null.c2], [t2_null.c1], [t2_null.__pk_increment]), partitions(p0) + +update t2_null set c2 = c1 + 1 where c2 is not NULL; +EXPLAIN delete from t2_null where c2 is not NULL; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t2_null|3 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_null: ({t2_null: (t2_null.__pk_increment, t2_null.c1, t2_null.c2)})}]) + 1 - output([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2]), filter(nil), startup_filter([1]), + access([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2]), partitions(p0) + +delete from t2_null where c2 is not NULL; +EXPLAIN insert into is_t2 select * from t2_null where c2 is not NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------ +|0 |INSERT | |100000 |91670| +|1 | SUBPLAN SCAN|VIEW1 |100000 |77868| +|2 | TABLE SCAN |t2_null|100000 |64066| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([1]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t2_null.c1], [t2_null.c2]), filter(nil), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +insert into is_t2 select * from t2_null where c2 is not NULL; + + +****** 多个表达式, column(not NULL) is not NULL ==> true +EXPLAIN select /*+no_rewrite*/* from t2_null where c2 is not NULL and c1 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------- +|0 |TABLE SCAN|t2_null|981 |89183| +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2_null.c1], [t2_null.c2]), filter([t2_null.c1 = 1], [(T_OP_IS_NOT, t2_null.c2, NULL, 0)]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +select /*+no_rewrite*/* from t2_null where c2 is not NULL and c1 = 1; ++------+----+ +| c1 | c2 | ++------+----+ ++------+----+ +EXPLAIN select * from t2_null where c2 is not NULL and c1 = 1; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------- +|0 |TABLE SCAN|t2_null|990 |80811| +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2_null.c1], [t2_null.c2]), filter([t2_null.c1 = 1]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +select * from t2_null where c2 is not NULL and c1 = 1; ++------+----+ +| c1 | c2 | ++------+----+ ++------+----+ +EXPLAIN update t2_null set c2 = c1 + 1 where c2 is not NULL and c1 = 1; +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------- +|0 |UPDATE | |990 |81801| +|1 | TABLE SCAN|t2_null|990 |80811| +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_null: ({t2_null: (t2_null.__pk_increment, t2_null.c1, t2_null.c2)})}]), + update([t2_null.c2=column_conv(INT,PS:(11,0),NOT NULL,cast(t2_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2], [column_conv(INT,PS:(11,0),NOT NULL,cast(t2_null.c1 + 1, INT(-1, 0)))]), filter([t2_null.c1 = 1]), + access([t2_null.c2], [t2_null.c1], [t2_null.__pk_increment]), partitions(p0) + +update t2_null set c2 = c1 + 1 where c2 is not NULL and c1 = 1; +EXPLAIN delete from t2_null where c2 is not NULL and c1 = 1; +Query Plan +======================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------- +|0 |DELETE | |990 |81801| +|1 | TABLE SCAN|t2_null|990 |80811| +======================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_null: ({t2_null: (t2_null.__pk_increment, t2_null.c1, t2_null.c2)})}]) + 1 - output([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2]), filter([t2_null.c1 = 1]), + access([t2_null.__pk_increment], [t2_null.c1], [t2_null.c2]), partitions(p0) + +delete from t2_null where c2 is not NULL and c1 = 1; +EXPLAIN insert into is_t2 select * from t2_null where c2 is not NULL and c1 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------ +|0 |INSERT | |990 |81084| +|1 | SUBPLAN SCAN|VIEW1 |990 |80947| +|2 | TABLE SCAN |t2_null|990 |80811| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t2_null.c1], [t2_null.c2]), filter([t2_null.c1 = 1]), + access([t2_null.c2], [t2_null.c1]), partitions(p0) + +insert into is_t2 select * from t2_null where c2 is not NULL and c1 = 1; + +****** 子查询中 pk is null ==> false +EXPLAIN select /*+no_rewrite*/* from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------- +|0 |SUBPLAN FILTER| |1 |95527| +|1 | TABLE SCAN |t1_null|100000 |61860| +|2 | TABLE SCAN |t2_null|1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter([t1_null.c1 = subquery(1)]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + 2 - output([t2_null.c1]), filter(nil), startup_filter([0]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +select /*+no_rewrite*/* from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER| |1 |72 | +|1 | TABLE GET |t1_null|1 |36 | +|2 | TABLE SCAN |t2_null|1 |36 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + 2 - output([t2_null.c1]), filter(nil), startup_filter([0]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN update t1_null set c2 = c1 + 1 where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |1 |73 | +|1 | SUBPLAN FILTER| |1 |72 | +|2 | TABLE GET |t1_null|1 |36 | +|3 | TABLE SCAN |t2_null|1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]), + update([t1_null.c2=column_conv(INT,PS:(11,0),NULL,cast(t1_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t1_null.c1], [t1_null.c2], [column_conv(INT,PS:(11,0),NULL,cast(t1_null.c1 + 1, INT(-1, 0)))]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1_null.c2], [t1_null.c1]), filter(nil), + access([t1_null.c2], [t1_null.c1]), partitions(p0) + 3 - output([t2_null.c1]), filter(nil), startup_filter([0]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +update t1_null set c2 = c1 + 1 where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); +EXPLAIN delete from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |73 | +|1 | SUBPLAN FILTER| |1 |72 | +|2 | TABLE GET |t1_null|1 |36 | +|3 | TABLE SCAN |t2_null|1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + 3 - output([t2_null.c1]), filter(nil), startup_filter([0]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); +EXPLAIN insert into is_t2 select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |73 | +|1 | SUBPLAN SCAN |VIEW1 |1 |73 | +|2 | SUBPLAN FILTER| |1 |72 | +|3 | TABLE GET |t1_null|1 |36 | +|4 | TABLE SCAN |t2_null|1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_null.c1], [t1_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + 4 - output([t2_null.c1]), filter(nil), startup_filter([0]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +insert into is_t2 select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NULL limit 1); + +****** 子查询中 pk is not null ==> true +EXPLAIN select /*+no_rewrite*/* from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------- +|0 |SUBPLAN FILTER| |1 |95527| +|1 | TABLE SCAN |t1_null|100000 |61860| +|2 | TABLE SCAN |t2_null|1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter([t1_null.c1 = subquery(1)]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + 2 - output([t2_null.c1]), filter(nil), startup_filter([1]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +select /*+no_rewrite*/* from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |SUBPLAN FILTER| |1 |72 | +|1 | TABLE GET |t1_null|1 |36 | +|2 | TABLE SCAN |t2_null|1 |36 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1_null.c1], [t1_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + 2 - output([t2_null.c1]), filter(nil), startup_filter([1]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); ++----+------+ +| c1 | c2 | ++----+------+ ++----+------+ +EXPLAIN update t1_null set c2 = c1 + 1 where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |UPDATE | |1 |73 | +|1 | SUBPLAN FILTER| |1 |72 | +|2 | TABLE GET |t1_null|1 |36 | +|3 | TABLE SCAN |t2_null|1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]), + update([t1_null.c2=column_conv(INT,PS:(11,0),NULL,cast(t1_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t1_null.c1], [t1_null.c2], [column_conv(INT,PS:(11,0),NULL,cast(t1_null.c1 + 1, INT(-1, 0)))]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1_null.c2], [t1_null.c1]), filter(nil), + access([t1_null.c2], [t1_null.c1]), partitions(p0) + 3 - output([t2_null.c1]), filter(nil), startup_filter([1]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +update t1_null set c2 = c1 + 1 where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); +EXPLAIN delete from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |DELETE | |1 |73 | +|1 | SUBPLAN FILTER| |1 |72 | +|2 | TABLE GET |t1_null|1 |36 | +|3 | TABLE SCAN |t2_null|1 |36 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_null: ({t1_null: (t1_null.c1, t1_null.c2)})}]) + 1 - output([t1_null.c1], [t1_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + 3 - output([t2_null.c1]), filter(nil), startup_filter([1]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); +EXPLAIN insert into is_t2 select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |73 | +|1 | SUBPLAN SCAN |VIEW1 |1 |73 | +|2 | SUBPLAN FILTER| |1 |72 | +|3 | TABLE GET |t1_null|1 |36 | +|4 | TABLE SCAN |t2_null|1 |36 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_null.c1], [t1_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1_null.c1], [t1_null.c2]), filter(nil), + access([t1_null.c1], [t1_null.c2]), partitions(p0) + 4 - output([t2_null.c1]), filter(nil), startup_filter([1]), + access([t2_null.c1]), partitions(p0), + limit(1), offset(nil) + +insert into is_t2 select * from t1_null where t1_null.c1 = (select t2_null.c1 from t2_null where t1_null.c1 is NOT NULL limit 1); +drop table t1_null, t2_null; + +************************* replace is null condition, end********* + +************************* replace op null condition, begin ********* + +drop table if exists t1_op_null, t2_op_null; +create table t1_op_null(c1 int , c2 int); +create table t2_op_null(c1 int , c2 int ); +insert/*trace*/ into t1_op_null values (1,1),(2,null),(3,3); +insert/*trace*/ into t2_op_null values (null,4),(5,5),(null,6); + + +****** compare null ==> false +EXPLAIN select /*+no_rewrite*/ * from t1_op_null where c1 = NULL; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t1_op_null|0 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = NULL]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select /*+no_rewrite*/ * from t1_op_null where c1 = NULL; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1_op_null where c1 = NULL; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t1_op_null|3 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select * from t1_op_null where c1 = NULL; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN update t1_op_null set c2 = 0 where c1 != NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t1_op_null|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]), + update([t1_op_null.c2=?]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2], [?]), filter(nil), startup_filter([0]), + access([t1_op_null.c2], [t1_op_null.__pk_increment], [t1_op_null.c1]), partitions(p0) + +update t1_op_null set c2 = 0 where c1 != NULL; +EXPLAIN delete from t1_op_null where c1 > NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t1_op_null|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + access([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +delete from t1_op_null where c1 > NULL; +EXPLAIN insert into is_t2 select * from t1_op_null where c1 < NULL; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |38 | +|1 | SUBPLAN SCAN|VIEW1 |3 |37 | +|2 | TABLE SCAN |t1_op_null|3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +insert into is_t2 select * from t1_op_null where c1 < NULL; +EXPLAIN select * from t1_op_null where c1 <> NULL; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t1_op_null|3 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select * from t1_op_null where c1 <> NULL; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN update t1_op_null set c2 = 0 where c1 >= NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t1_op_null|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]), + update([t1_op_null.c2=?]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2], [?]), filter(nil), startup_filter([0]), + access([t1_op_null.c2], [t1_op_null.__pk_increment], [t1_op_null.c1]), partitions(p0) + +update t1_op_null set c2 = 0 where c1 >= NULL; +EXPLAIN delete from t1_op_null where c1 <= NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t1_op_null|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + access([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +delete from t1_op_null where c1 <= NULL; + + +****** 多个表达式, compare null ==> false +EXPLAIN select /*+no_rewrite*/* from t1_op_null where c1 = NULL and c2 = 1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t1_op_null|0 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = NULL], [t1_op_null.c2 = 1]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1_op_null where c1 = NULL and c2 = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1_op_null where c1 <> NULL or c2 = 1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t1_op_null|1 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c2 = 1]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select * from t1_op_null where c1 <> NULL or c2 = 1; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | ++------+------+ +EXPLAIN update t1_op_null set c2 = 0 where c1 != NULL and c2 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t1_op_null|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]), + update([t1_op_null.c2=?]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2], [?]), filter(nil), startup_filter([0]), + access([t1_op_null.c2], [t1_op_null.__pk_increment], [t1_op_null.c1]), partitions(p0) + +update t1_op_null set c2 = 0 where c1 != NULL and c2 = 1; +EXPLAIN delete from t1_op_null where c1 >= NULL or c2 = 1; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |1 |38 | +|1 | TABLE SCAN|t1_op_null|1 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c2 = 1]), + access([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +delete from t1_op_null where c1 >= NULL or c2 = 1; +EXPLAIN insert into is_t2 select * from t1_op_null where c1 <= NULL and c2 = 1; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |2 |37 | +|1 | SUBPLAN SCAN|VIEW1 |2 |37 | +|2 | TABLE SCAN |t1_op_null|2 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +insert into is_t2 select * from t1_op_null where c1 <= NULL and c2 = 1; +EXPLAIN select * from t1_op_null where c1 <> NULL or c2=1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t1_op_null|1 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c2 = 1]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select * from t1_op_null where c1 <> NULL or c2=1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN update t1_op_null set c2 = 0 where c1 =1 and c2 < NULL or c1=NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |2 |39 | +|1 | TABLE SCAN|t1_op_null|2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]), + update([t1_op_null.c2=?]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2], [?]), filter(nil), startup_filter([0]), + access([t1_op_null.c2], [t1_op_null.__pk_increment], [t1_op_null.c1]), partitions(p0) + +update t1_op_null set c2 = 0 where c1 =1 and c2 < NULL or c1=NULL; +EXPLAIN delete from t1_op_null where c1 >= NULL or c2 = 1 and c1=3 and c2=1 and c2=NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |2 |39 | +|1 | TABLE SCAN|t1_op_null|2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + access([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +delete from t1_op_null where c1 >= NULL or c2 = 1 and c1=3 and c2=1 and c2=NULL; +EXPLAIN insert into is_t2 select * from t1_op_null where c1 <= NULL or c2 != NULL or c1=NULL or c2=1; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |1 |38 | +|1 | SUBPLAN SCAN|VIEW1 |1 |37 | +|2 | TABLE SCAN |t1_op_null|1 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c2 = 1]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +insert into is_t2 select * from t1_op_null where c1 <= NULL or c2 != NULL or c1=NULL or c2=1; + + +****** operator with NULL ==> false +EXPLAIN select /*+no_rewrite*/* from t2_op_null where c2 = NULL+c1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t2_op_null|1 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2_op_null.c1], [t2_op_null.c2]), filter([cast(t2_op_null.c2, DOUBLE(-1, -1)) = NULL + cast(t2_op_null.c1, DOUBLE(-1, -1))]), + access([t2_op_null.c2], [t2_op_null.c1]), partitions(p0) + +select /*+no_rewrite*/* from t2_op_null where c2 = NULL+c1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2_op_null where c2 = NULL+c1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t2_op_null|3 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2_op_null.c1], [t2_op_null.c2]), filter(nil), startup_filter([0]), + access([t2_op_null.c2], [t2_op_null.c1]), partitions(p0) + +select * from t2_op_null where c2 = NULL+c1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN update t2_op_null set c1 = c2 + 1 where c2 = c1-NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t2_op_null|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_op_null: ({t2_op_null: (t2_op_null.__pk_increment, t2_op_null.c1, t2_op_null.c2)})}]), + update([t2_op_null.c1=column_conv(INT,PS:(11,0),NULL,cast(t2_op_null.c2 + 1, INT(-1, 0)))]) + 1 - output([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2], [column_conv(INT,PS:(11,0),NULL,cast(t2_op_null.c2 + 1, INT(-1, 0)))]), filter(nil), startup_filter([0]), + access([t2_op_null.c1], [t2_op_null.c2], [t2_op_null.__pk_increment]), partitions(p0) + +update t2_op_null set c1 = c2 + 1 where c2 = c1-NULL; +EXPLAIN delete from t2_op_null where c2 =c1*NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |3 |40 | +|1 | TABLE SCAN|t2_op_null|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_op_null: ({t2_op_null: (t2_op_null.__pk_increment, t2_op_null.c1, t2_op_null.c2)})}]) + 1 - output([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2]), filter(nil), startup_filter([0]), + access([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2]), partitions(p0) + +delete from t2_op_null where c2 =c1*NULL; +EXPLAIN insert into is_t2 select * from t2_op_null where c2 = c1/NULL; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |38 | +|1 | SUBPLAN SCAN|VIEW1 |3 |37 | +|2 | TABLE SCAN |t2_op_null|3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t2_op_null.c1], [t2_op_null.c2]), filter(nil), + access([t2_op_null.c2], [t2_op_null.c1]), partitions(p0) + +insert into is_t2 select * from t2_op_null where c2 = c1/NULL; +EXPLAIN update t2_op_null set c1 = c2 + 1 where c2 = c1 | NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |1 |37 | +|1 | TABLE SCAN|t2_op_null|1 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_op_null: ({t2_op_null: (t2_op_null.__pk_increment, t2_op_null.c1, t2_op_null.c2)})}]), + update([t2_op_null.c1=column_conv(INT,PS:(11,0),NULL,cast(t2_op_null.c2 + 1, INT(-1, 0)))]) + 1 - output([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2], [column_conv(INT,PS:(11,0),NULL,cast(t2_op_null.c2 + 1, INT(-1, 0)))]), filter([t2_op_null.c2 = (T_OP_BIT_OR, cast(t2_op_null.c1, BIGINT UNSIGNED(-1, 0)), ?)]), + access([t2_op_null.c1], [t2_op_null.c2], [t2_op_null.__pk_increment]), partitions(p0) + +update t2_op_null set c1 = c2 + 1 where c2 = c1 | NULL; +EXPLAIN delete from t2_op_null where c2 =c1 & NULL; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |1 |37 | +|1 | TABLE SCAN|t2_op_null|1 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_op_null: ({t2_op_null: (t2_op_null.__pk_increment, t2_op_null.c1, t2_op_null.c2)})}]) + 1 - output([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2]), filter([t2_op_null.c2 = (T_OP_BIT_AND, cast(t2_op_null.c1, BIGINT UNSIGNED(-1, 0)), ?)]), + access([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2]), partitions(p0) + +delete from t2_op_null where c2 =c1 & NULL; +EXPLAIN insert into is_t2 select * from t2_op_null where c2 = c1 mod NULL; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |38 | +|1 | SUBPLAN SCAN|VIEW1 |3 |37 | +|2 | TABLE SCAN |t2_op_null|3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t2_op_null.c1], [t2_op_null.c2]), filter(nil), + access([t2_op_null.c2], [t2_op_null.c1]), partitions(p0) + +insert into is_t2 select * from t2_op_null where c2 = c1 mod NULL; + + +****** 多个表达式, operator NULL ==> false +EXPLAIN select /*+no_rewrite*/* from t2_op_null where c2 = c1+NULL and c1 = 1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t2_op_null|1 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2_op_null.c1], [t2_op_null.c2]), filter([cast(t2_op_null.c2, DOUBLE(-1, -1)) = cast(t2_op_null.c1, DOUBLE(-1, -1)) + NULL], [t2_op_null.c1 = 1]), + access([t2_op_null.c2], [t2_op_null.c1]), partitions(p0) + +select /*+no_rewrite*/* from t2_op_null where c2 = c1+NULL and c1 = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2_op_null where c2 = NULL-c1 or c1 = 1; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------- +|0 |TABLE SCAN|t2_op_null|1 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2_op_null.c1], [t2_op_null.c2]), filter([t2_op_null.c1 = 1]), + access([t2_op_null.c2], [t2_op_null.c1]), partitions(p0) + +select * from t2_op_null where c2 = NULL-c1 or c1 = 1; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN update t2_op_null set c2 = c1 + 1 where c2 = c1/NULL or c2 = c1*NULL and c2=c1 & NULL ; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |UPDATE | |3 |40 | +|1 | TABLE SCAN|t2_op_null|3 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_op_null: ({t2_op_null: (t2_op_null.__pk_increment, t2_op_null.c1, t2_op_null.c2)})}]), + update([t2_op_null.c2=column_conv(INT,PS:(11,0),NULL,cast(t2_op_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2], [column_conv(INT,PS:(11,0),NULL,cast(t2_op_null.c1 + 1, INT(-1, 0)))]), filter(nil), startup_filter([0]), + access([t2_op_null.c2], [t2_op_null.c1], [t2_op_null.__pk_increment]), partitions(p0) + +update t2_op_null set c2 = c1 + 1 where c2 = c1/NULL or c2 = c1*NULL and c2=c1 & NULL ; +EXPLAIN delete from t2_op_null where c2 = c1 mod NULL or c1 = NULL or c2=c1 | NULL or c1=1; +Query Plan +========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------ +|0 |DELETE | |2 |38 | +|1 | TABLE SCAN|t2_op_null|2 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2_op_null: ({t2_op_null: (t2_op_null.__pk_increment, t2_op_null.c1, t2_op_null.c2)})}]) + 1 - output([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2]), filter([t2_op_null.c2 = (T_OP_BIT_OR, cast(t2_op_null.c1, BIGINT UNSIGNED(-1, 0)), ?) OR t2_op_null.c1 = 1]), + access([t2_op_null.__pk_increment], [t2_op_null.c1], [t2_op_null.c2]), partitions(p0) + +delete from t2_op_null where c2 = c1 mod NULL or c1 = NULL or c2=c1 | NULL or c1=1; +EXPLAIN insert into is_t2 select * from t2_op_null where c2 = NULL and c1 =c2 >> NULL and c1=c2 << NULL ; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |INSERT | |3 |38 | +|1 | SUBPLAN SCAN|VIEW1 |3 |37 | +|2 | TABLE SCAN |t2_op_null|3 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), startup_filter([0]), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t2_op_null.c1], [t2_op_null.c2]), filter(nil), + access([t2_op_null.c2], [t2_op_null.c1]), partitions(p0) + +insert into is_t2 select * from t2_op_null where c2 = NULL and c1 =c2 >> NULL and c1=c2 << NULL ; + +****** 子查询中 has null ==> false +EXPLAIN select /*+no_rewrite*/* from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = NULL limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN FILTER| |1 |74 | +|1 | TABLE SCAN |t1_op_null|2 |37 | +|2 | TABLE SCAN |t2_op_null|1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = subquery(1)]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + 2 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +select /*+no_rewrite*/* from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = NULL limit 1); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = NULL limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN FILTER| |1 |73 | +|1 | TABLE SCAN |t1_op_null|1 |37 | +|2 | TABLE SCAN |t2_op_null|1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = ?]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + 2 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = NULL limit 1); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN update t1_op_null set c2 = c1 + 1 where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 != NULL limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |UPDATE | |1 |74 | +|1 | SUBPLAN FILTER| |1 |73 | +|2 | TABLE SCAN |t1_op_null|1 |37 | +|3 | TABLE SCAN |t2_op_null|1 |36 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]), + update([t1_op_null.c2=column_conv(INT,PS:(11,0),NULL,cast(t1_op_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2], [column_conv(INT,PS:(11,0),NULL,cast(t1_op_null.c1 + 1, INT(-1, 0)))]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1_op_null.c2], [t1_op_null.c1], [t1_op_null.__pk_increment]), filter([t1_op_null.c1 = ?]), + access([t1_op_null.c2], [t1_op_null.c1], [t1_op_null.__pk_increment]), partitions(p0) + 3 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +update t1_op_null set c2 = c1 + 1 where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 != NULL limit 1); +EXPLAIN delete from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 >= NULL limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |DELETE | |1 |74 | +|1 | SUBPLAN FILTER| |1 |73 | +|2 | TABLE SCAN |t1_op_null|1 |37 | +|3 | TABLE SCAN |t2_op_null|1 |36 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = ?]), + access([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + 3 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 >= NULL limit 1); +EXPLAIN insert into is_t2 select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 <= NULL limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |INSERT | |1 |73 | +|1 | SUBPLAN SCAN |VIEW1 |1 |73 | +|2 | SUBPLAN FILTER| |1 |73 | +|3 | TABLE SCAN |t1_op_null|1 |37 | +|4 | TABLE SCAN |t2_op_null|1 |36 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = ?]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + 4 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +insert into is_t2 select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 <= NULL limit 1); +EXPLAIN select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2+NULL limit 1); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN FILTER| |1 |73 | +|1 | TABLE SCAN |t1_op_null|1 |37 | +|2 | TABLE SCAN |t2_op_null|1 |36 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = ?]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + 2 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2+NULL limit 1); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN update t1_op_null set c2 = c1 + 1 where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2-NULL limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |UPDATE | |1 |74 | +|1 | SUBPLAN FILTER| |1 |73 | +|2 | TABLE SCAN |t1_op_null|1 |37 | +|3 | TABLE SCAN |t2_op_null|1 |36 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]), + update([t1_op_null.c2=column_conv(INT,PS:(11,0),NULL,cast(t1_op_null.c1 + 1, INT(-1, 0)))]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2], [column_conv(INT,PS:(11,0),NULL,cast(t1_op_null.c1 + 1, INT(-1, 0)))]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1_op_null.c2], [t1_op_null.c1], [t1_op_null.__pk_increment]), filter([t1_op_null.c1 = ?]), + access([t1_op_null.c2], [t1_op_null.c1], [t1_op_null.__pk_increment]), partitions(p0) + 3 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +update t1_op_null set c2 = c1 + 1 where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2-NULL limit 1); +EXPLAIN delete from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2*NULL limit 1); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |DELETE | |1 |74 | +|1 | SUBPLAN FILTER| |1 |73 | +|2 | TABLE SCAN |t1_op_null|1 |37 | +|3 | TABLE SCAN |t2_op_null|1 |36 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1_op_null: ({t1_op_null: (t1_op_null.__pk_increment, t1_op_null.c1, t1_op_null.c2)})}]) + 1 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = ?]), + access([t1_op_null.__pk_increment], [t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + 3 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +delete from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 = t1_op_null.c2*NULL limit 1); +EXPLAIN insert into is_t2 select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 =t1_op_null.c2/NULL limit 1); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |INSERT | |1 |73 | +|1 | SUBPLAN SCAN |VIEW1 |1 |73 | +|2 | SUBPLAN FILTER| |1 |73 | +|3 | TABLE SCAN |t1_op_null|1 |37 | +|4 | TABLE SCAN |t2_op_null|1 |36 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)]), filter(nil), + columns([{is_t2: ({is_t2: (is_t2.__pk_increment, is_t2.c1, is_t2.c2)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2]), filter(nil), + access([VIEW1.c1], [VIEW1.c2]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1_op_null.c1], [t1_op_null.c2]), filter([t1_op_null.c1 = ?]), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + 4 - output([t2_op_null.c1]), filter(nil), startup_filter([0]), + access([t2_op_null.c1]), partitions(p0), + limit(1), offset(nil) + +insert into is_t2 select * from t1_op_null where t1_op_null.c1 = (select t2_op_null.c1 from t2_op_null where t1_op_null.c1 =t1_op_null.c2/NULL limit 1); + +*****group by having 条件为null ==> false +EXPLAIN select * from t1_op_null group by c1 having count(*) = NULL; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE GROUP BY| |2 |39 | +|1 | SORT | |2 |38 | +|2 | TABLE SCAN |t1_op_null|2 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + group([t1_op_null.c1]), agg_func(nil) + 1 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), sort_keys([t1_op_null.c1, ASC]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select * from t1_op_null group by c1 having count(*) = NULL; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1_op_null group by c1 having count(*) != NULL; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE GROUP BY| |2 |39 | +|1 | SORT | |2 |38 | +|2 | TABLE SCAN |t1_op_null|2 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + group([t1_op_null.c1]), agg_func(nil) + 1 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), sort_keys([t1_op_null.c1, ASC]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select * from t1_op_null group by c1 having count(*) != NULL; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1_op_null where c1 like '%1' group by c1 having count(*) = NULL; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE GROUP BY| |2 |39 | +|1 | SORT | |2 |38 | +|2 | TABLE SCAN |t1_op_null|2 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + group([t1_op_null.c1]), agg_func(nil) + 1 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), sort_keys([t1_op_null.c1, ASC]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select * from t1_op_null where c1 like '%1' group by c1 having count(*) = NULL; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t1_op_null where c1 like '%1' group by c1 having count(*) != NULL; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE GROUP BY| |2 |39 | +|1 | SORT | |2 |38 | +|2 | TABLE SCAN |t1_op_null|2 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), startup_filter([0]), + group([t1_op_null.c1]), agg_func(nil) + 1 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), sort_keys([t1_op_null.c1, ASC]) + 2 - output([t1_op_null.c1], [t1_op_null.c2]), filter(nil), + access([t1_op_null.c1], [t1_op_null.c2]), partitions(p0) + +select * from t1_op_null where c1 like '%1' group by c1 having count(*) != NULL; ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ + + +************************* replace op null condition, end********* + +************************改写向量等值条件 begin********** + +drop table if exists t1, t2; +create table t1 (id int, a int, b int, c varchar(10), d decimal); +create table is_t4 (id int, a int, b int, c varchar(10), d decimal); +insert/*trace*/ into t1 values (0 , 0, 0, '0', 0); +insert/*trace*/ into t1 values (1 , 1, 0, '0', 0); +insert/*trace*/ into t1 values (2 , 0, 1, '0', 0); +insert/*trace*/ into t1 values (3 , 1, 1, '0', 0); +insert/*trace*/ into t1 values (4 , 0, 0, '1', 0); +insert/*trace*/ into t1 values (5 , 1, 0, '1', 0); +insert/*trace*/ into t1 values (6 , 0, 1, '1', 0); +insert/*trace*/ into t1 values (7 , 1, 1, '1', 0); +insert/*trace*/ into t1 values (8 , 0, 0, '0', 1); +insert/*trace*/ into t1 values (9 , 1, 0, '0', 1); +insert/*trace*/ into t1 values (10, 0, 1, '0', 1); +insert/*trace*/ into t1 values (11, 1, 1, '0', 1); +insert/*trace*/ into t1 values (12, 0, 0, '1', 1); +insert/*trace*/ into t1 values (13, 1, 0, '1', 1); +insert/*trace*/ into t1 values (14, 0, 1, '1', 1); +insert/*trace*/ into t1 values (15, 1, 1, '1', 1); + + +****** convert_preds_vector_to_scalar: case 1 +EXPLAIN select /*+no_rewrite*/* from t1 where (a, b) = (1, 1); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |42 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([(t1.a, t1.b) = (1, 1)]), + access([t1.a], [t1.b], [t1.id], [t1.c], [t1.d]), partitions(p0) + +select /*+no_rewrite*/* from t1 where (a, b) = (1, 1); ++------+------+------+------+------+ +| id | a | b | c | d | ++------+------+------+------+------+ +| 3 | 1 | 1 | 0 | 0 | +| 7 | 1 | 1 | 1 | 0 | +| 11 | 1 | 1 | 0 | 1 | +| 15 | 1 | 1 | 1 | 1 | ++------+------+------+------+------+ +EXPLAIN select * from t1 where (a, b) = (1, 1); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |46 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([t1.a = 1], [t1.b = 1]), + access([t1.a], [t1.b], [t1.id], [t1.c], [t1.d]), partitions(p0) + +select * from t1 where (a, b) = (1, 1); ++------+------+------+------+------+ +| id | a | b | c | d | ++------+------+------+------+------+ +| 3 | 1 | 1 | 0 | 0 | +| 7 | 1 | 1 | 1 | 0 | +| 11 | 1 | 1 | 0 | 1 | +| 15 | 1 | 1 | 1 | 1 | ++------+------+------+------+------+ +EXPLAIN update t1 set a = b + 1 where (a, b) = (1, 1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |46 | +|1 | TABLE SCAN|t1 |1 |46 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.id, t1.a, t1.b, t1.c, t1.d)})}]), + update([t1.a=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 1, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 1, INT(-1, 0)))]), filter([t1.a = 1], [t1.b = 1]), + access([t1.a], [t1.b], [t1.__pk_increment], [t1.id], [t1.c], [t1.d]), partitions(p0) + +update t1 set a = b + 1 where (a, b) = (1, 1); +EXPLAIN delete from t1 where (a, b) = (1, 1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |46 | +|1 | TABLE SCAN|t1 |1 |46 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.id, t1.a, t1.b, t1.c, t1.d)})}]) + 1 - output([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([t1.a = 1], [t1.b = 1]), + access([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0) + +delete from t1 where (a, b) = (1, 1); +EXPLAIN insert into is_t4 select * from t1 where (a, b) = (1, 1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |46 | +|1 | SUBPLAN SCAN|VIEW1|1 |46 | +|2 | TABLE SCAN |t1 |1 |46 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.id)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(VARCHAR,utf8mb4_general_ci,length:10,NULL,VIEW1.c)], [column_conv(DECIMAL,PS:(10,0),NULL,VIEW1.d)]), filter(nil), + columns([{is_t4: ({is_t4: (is_t4.__pk_increment, is_t4.id, is_t4.a, is_t4.b, is_t4.c, is_t4.d)})}]), partitions(p0) + 1 - output([VIEW1.id], [VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.d]), filter(nil), + access([VIEW1.id], [VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.d]) + 2 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([t1.a = 1], [t1.b = 1]), + access([t1.a], [t1.b], [t1.id], [t1.c], [t1.d]), partitions(p0) + +insert into is_t4 select * from t1 where (a, b) = (1, 1); + + +****** convert_preds_vector_to_scalar: case 2 +EXPLAIN select /*+no_rewrite*/* from t1 where (a, c) = (1, 1); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |42 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([(t1.a, cast(t1.c, DECIMAL(-1, -1))) = (1, ?)]), + access([t1.a], [t1.c], [t1.id], [t1.b], [t1.d]), partitions(p0) + +select /*+no_rewrite*/* from t1 where (a, c) = (1, 1); ++------+------+------+------+------+ +| id | a | b | c | d | ++------+------+------+------+------+ +| 5 | 1 | 0 | 1 | 0 | +| 13 | 1 | 0 | 1 | 1 | ++------+------+------+------+------+ +EXPLAIN select * from t1 where (a, c) = (1, 1); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |46 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.c, DECIMAL(-1, -1)) = ?], [t1.a = 1]), + access([t1.a], [t1.c], [t1.id], [t1.b], [t1.d]), partitions(p0) + +select * from t1 where (a, c) = (1, 1); ++------+------+------+------+------+ +| id | a | b | c | d | ++------+------+------+------+------+ +| 5 | 1 | 0 | 1 | 0 | +| 13 | 1 | 0 | 1 | 1 | ++------+------+------+------+------+ +EXPLAIN update t1 set a = b + 1 where (a, c) = (1, 1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |46 | +|1 | TABLE SCAN|t1 |1 |46 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.id, t1.a, t1.b, t1.c, t1.d)})}]), + update([t1.a=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 1, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 1, INT(-1, 0)))]), filter([cast(t1.c, DECIMAL(-1, -1)) = ?], [t1.a = 1]), + access([t1.a], [t1.b], [t1.__pk_increment], [t1.id], [t1.c], [t1.d]), partitions(p0) + +update t1 set a = b + 1 where (a, c) = (1, 1); +EXPLAIN delete from t1 where (a, c) = (1, 1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |46 | +|1 | TABLE SCAN|t1 |1 |46 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.id, t1.a, t1.b, t1.c, t1.d)})}]) + 1 - output([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.c, DECIMAL(-1, -1)) = ?], [t1.a = 1]), + access([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0) + +delete from t1 where (a, c) = (1, 1); +EXPLAIN insert into is_t4 select * from t1 where (a, c) = (1, 1); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |46 | +|1 | SUBPLAN SCAN|VIEW1|1 |46 | +|2 | TABLE SCAN |t1 |1 |46 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.id)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(VARCHAR,utf8mb4_general_ci,length:10,NULL,VIEW1.c)], [column_conv(DECIMAL,PS:(10,0),NULL,VIEW1.d)]), filter(nil), + columns([{is_t4: ({is_t4: (is_t4.__pk_increment, is_t4.id, is_t4.a, is_t4.b, is_t4.c, is_t4.d)})}]), partitions(p0) + 1 - output([VIEW1.id], [VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.d]), filter(nil), + access([VIEW1.id], [VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.d]) + 2 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.c, DECIMAL(-1, -1)) = ?], [t1.a = 1]), + access([t1.a], [t1.c], [t1.id], [t1.b], [t1.d]), partitions(p0) + +insert into is_t4 select * from t1 where (a, c) = (1, 1); + + +******convert_preds_vector_to_scalar: case 3 +EXPLAIN select /*+no_rewrite*/* from t1 where (a, b) = (c, d); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |42 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([(cast(t1.a, DECIMAL(11, 0)), cast(t1.b, DECIMAL(11, 0))) = (cast(t1.c, DECIMAL(-1, -1)), t1.d)]), + access([t1.a], [t1.b], [t1.c], [t1.d], [t1.id]), partitions(p0) + +select /*+no_rewrite*/* from t1 where (a, b) = (c, d); ++------+------+------+------+------+ +| id | a | b | c | d | ++------+------+------+------+------+ +| 0 | 0 | 0 | 0 | 0 | +| 10 | 0 | 1 | 0 | 1 | ++------+------+------+------+------+ +EXPLAIN select * from t1 where (a, b) = (c, d); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |46 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.a, DECIMAL(11, 0)) = cast(t1.c, DECIMAL(-1, -1))], [cast(t1.b, DECIMAL(11, 0)) = t1.d]), + access([t1.a], [t1.b], [t1.c], [t1.d], [t1.id]), partitions(p0) + +select * from t1 where (a, b) = (c, d); ++------+------+------+------+------+ +| id | a | b | c | d | ++------+------+------+------+------+ +| 0 | 0 | 0 | 0 | 0 | +| 10 | 0 | 1 | 0 | 1 | ++------+------+------+------+------+ +EXPLAIN update t1 set a = b + 1 where (a, b) = (c, d); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |46 | +|1 | TABLE SCAN|t1 |1 |46 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.id, t1.a, t1.b, t1.c, t1.d)})}]), + update([t1.a=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 1, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 1, INT(-1, 0)))]), filter([cast(t1.a, DECIMAL(11, 0)) = cast(t1.c, DECIMAL(-1, -1))], [cast(t1.b, DECIMAL(11, 0)) = t1.d]), + access([t1.a], [t1.b], [t1.__pk_increment], [t1.id], [t1.c], [t1.d]), partitions(p0) + +update t1 set a = b + 1 where (a, b) = (c, d); +EXPLAIN delete from t1 where (a, b) = (c, d); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |46 | +|1 | TABLE SCAN|t1 |1 |46 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.id, t1.a, t1.b, t1.c, t1.d)})}]) + 1 - output([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.a, DECIMAL(11, 0)) = cast(t1.c, DECIMAL(-1, -1))], [cast(t1.b, DECIMAL(11, 0)) = t1.d]), + access([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0) + +delete from t1 where (a, b) = (c, d); +EXPLAIN insert into is_t4 select * from t1 where (a, b) = (c, d); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |46 | +|1 | SUBPLAN SCAN|VIEW1|1 |46 | +|2 | TABLE SCAN |t1 |1 |46 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.id)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(VARCHAR,utf8mb4_general_ci,length:10,NULL,VIEW1.c)], [column_conv(DECIMAL,PS:(10,0),NULL,VIEW1.d)]), filter(nil), + columns([{is_t4: ({is_t4: (is_t4.__pk_increment, is_t4.id, is_t4.a, is_t4.b, is_t4.c, is_t4.d)})}]), partitions(p0) + 1 - output([VIEW1.id], [VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.d]), filter(nil), + access([VIEW1.id], [VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.d]) + 2 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.a, DECIMAL(11, 0)) = cast(t1.c, DECIMAL(-1, -1))], [cast(t1.b, DECIMAL(11, 0)) = t1.d]), + access([t1.a], [t1.b], [t1.c], [t1.d], [t1.id]), partitions(p0) + +insert into is_t4 select * from t1 where (a, b) = (c, d); + + +******convert_preds_vector_to_scalar: case 4 +EXPLAIN select /*+no_rewrite*/* from t1 where (a, c, d) = (c, d, a); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |42 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([(cast(t1.a, DECIMAL(11, 0)), cast(t1.c, DECIMAL(-1, -1)), t1.d) = (cast(t1.c, DECIMAL(-1, -1)), t1.d, cast(t1.a, DECIMAL(11, 0)))]), + access([t1.a], [t1.c], [t1.d], [t1.id], [t1.b]), partitions(p0) + +select /*+no_rewrite*/* from t1 where (a, c, d) = (c, d, a); ++------+------+------+------+------+ +| id | a | b | c | d | ++------+------+------+------+------+ +| 2 | 0 | 1 | 0 | 0 | ++------+------+------+------+------+ +EXPLAIN select * from t1 where (a, c, d) = (c, d, a); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |46 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.a, DECIMAL(11, 0)) = cast(t1.c, DECIMAL(-1, -1))], [t1.d = cast(t1.a, DECIMAL(11, 0))]), + access([t1.a], [t1.c], [t1.d], [t1.id], [t1.b]), partitions(p0) + +select * from t1 where (a, c, d) = (c, d, a); ++------+------+------+------+------+ +| id | a | b | c | d | ++------+------+------+------+------+ +| 2 | 0 | 1 | 0 | 0 | ++------+------+------+------+------+ +EXPLAIN update t1 set a = b + 1 where (a, c, d) = (c, d, a); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |46 | +|1 | TABLE SCAN|t1 |1 |46 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.id, t1.a, t1.b, t1.c, t1.d)})}]), + update([t1.a=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 1, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 1, INT(-1, 0)))]), filter([cast(t1.a, DECIMAL(11, 0)) = cast(t1.c, DECIMAL(-1, -1))], [t1.d = cast(t1.a, DECIMAL(11, 0))]), + access([t1.a], [t1.b], [t1.__pk_increment], [t1.id], [t1.c], [t1.d]), partitions(p0) + +update t1 set a = b + 1 where (a, c, d) = (c, d, a); +EXPLAIN delete from t1 where (a, c, d) = (c, d, a); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |46 | +|1 | TABLE SCAN|t1 |1 |46 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.id, t1.a, t1.b, t1.c, t1.d)})}]) + 1 - output([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.a, DECIMAL(11, 0)) = cast(t1.c, DECIMAL(-1, -1))], [t1.d = cast(t1.a, DECIMAL(11, 0))]), + access([t1.__pk_increment], [t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), partitions(p0) + +delete from t1 where (a, c, d) = (c, d, a); +EXPLAIN insert into is_t4 select * from t1 where (a, c, d) = (c, d, a); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |46 | +|1 | SUBPLAN SCAN|VIEW1|1 |46 | +|2 | TABLE SCAN |t1 |1 |46 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.id)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(VARCHAR,utf8mb4_general_ci,length:10,NULL,VIEW1.c)], [column_conv(DECIMAL,PS:(10,0),NULL,VIEW1.d)]), filter(nil), + columns([{is_t4: ({is_t4: (is_t4.__pk_increment, is_t4.id, is_t4.a, is_t4.b, is_t4.c, is_t4.d)})}]), partitions(p0) + 1 - output([VIEW1.id], [VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.d]), filter(nil), + access([VIEW1.id], [VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.d]) + 2 - output([t1.id], [t1.a], [t1.b], [t1.c], [t1.d]), filter([cast(t1.a, DECIMAL(11, 0)) = cast(t1.c, DECIMAL(-1, -1))], [t1.d = cast(t1.a, DECIMAL(11, 0))]), + access([t1.a], [t1.c], [t1.d], [t1.id], [t1.b]), partitions(p0) + +insert into is_t4 select * from t1 where (a, c, d) = (c, d, a); + +drop table t1; + + +************************改写向量等值条件 end********** + +********************remove dummy exprs begin************************ + +drop table if exists t1; +create table t1(a int, b int, c int); +create table t_temp(a int, b int, c int); +insert/*trace*/ into t1 values (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5); +set autocommit = 0; + +******false or filter-> filter********** +EXPLAIN select * from t1 where false or t1.a < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where false or t1.a < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ +| 1 | 1 | 1 | +| 2 | 2 | 2 | ++------+------+------+ +EXPLAIN insert into t_temp select * from t1 where false or t1.a < 3; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |38 | +|1 | SUBPLAN SCAN|VIEW1|1 |38 | +|2 | TABLE SCAN |t1 |1 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert into t_temp select * from t1 where false or t1.a < 3; +EXPLAIN insert /*+NO_REWRITE*/into t_temp select * from t1 where false or t1.a < 3; +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |1 |38 | +|1 | SUBPLAN SCAN|VIEW1|1 |38 | +|2 | TABLE SCAN |t1 |1 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert /*+NO_REWRITE*/into t_temp select * from t1 where false or t1.a < 3; +EXPLAIN update t1 set t1.b = t1.b + 100 where false or t1.a < 3; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |39 | +|1 | TABLE SCAN|t1 |1 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]), + update([t1.b=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]), filter([t1.a < 3]), + access([t1.b], [t1.__pk_increment], [t1.a], [t1.c]), partitions(p0) + +update t1 set t1.b = t1.b + 100 where false or t1.a < 3; +EXPLAIN update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where false or t1.a < 3; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |38 | +|1 | TABLE SCAN|t1 |1 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]), + update([t1.b=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]), filter([0 OR t1.a < 3]), + access([t1.b], [t1.__pk_increment], [t1.a], [t1.c]), partitions(p0) + +update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where false or t1.a < 3; +EXPLAIN delete from t1 where false or t1.a < 3; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |39 | +|1 | TABLE SCAN|t1 |1 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), partitions(p0) + +delete from t1 where false or t1.a < 3; +EXPLAIN delete /*+NO_REWRITE*/from t1 where false or t1.a < 3; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |38 | +|1 | TABLE SCAN|t1 |1 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), filter([0 OR t1.a < 3]), + access([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), partitions(p0) + +delete /*+NO_REWRITE*/from t1 where false or t1.a < 3; +EXPLAIN select * from t1 where t1.a < 3 or 1 > 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 or 1 > 2; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where false or t1.a < 3 or t1.b < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3 OR t1.b < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where false or t1.a < 3 or t1.b < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 or 1 > 2 or t1.b < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3 OR t1.b < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 or 1 > 2 or t1.b < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where false or false or t1.a < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where false or false or t1.a < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 or false or false; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 or false or false; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where false or (t1.a < 3 and t1.b < 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |39 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3], [t1.b < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where false or (t1.a < 3 and t1.b < 3); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + + +******true or filter-> true********** +EXPLAIN select * from t1 where t1.a < 3 or true; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 or true; ++------+------+------+ +| a | b | c | ++------+------+------+ +| 3 | 3 | 3 | +| 4 | 4 | 4 | +| 5 | 5 | 5 | ++------+------+------+ +EXPLAIN insert into t_temp as select * from t1 where t1.a < 3 or true; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'as select * from t1 where t1.a < 3 or true' at line 1 +insert into t_temp as select * from t1 where t1.a < 3 or true; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'as select * from t1 where t1.a < 3 or true' at line 1 +EXPLAIN insert /*+NO_REWRITE*/into t_temp as select * from t1 where t1.a < 3 or true; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'as select * from t1 where t1.a < 3 or true' at line 1 +insert /*+NO_REWRITE*/into t_temp as select * from t1 where t1.a < 3 or true; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'as select * from t1 where t1.a < 3 or true' at line 1 +EXPLAIN update t1 set t1.b = t1.b + 100 where t1.a < 3 or true; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |5 |42 | +|1 | TABLE SCAN|t1 |5 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]), + update([t1.b=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]), filter(nil), startup_filter([1]), + access([t1.b], [t1.__pk_increment], [t1.a], [t1.c]), partitions(p0) + +update t1 set t1.b = t1.b + 100 where t1.a < 3 or true; +EXPLAIN update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where t1.a < 3 or true; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |5 |43 | +|1 | TABLE SCAN|t1 |5 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]), + update([t1.b=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]), filter([t1.a < 3 OR 1]), + access([t1.b], [t1.__pk_increment], [t1.a], [t1.c]), partitions(p0) + +update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where t1.a < 3 or true; +EXPLAIN delete from t1 where t1.a < 3 or true; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |5 |42 | +|1 | TABLE SCAN|t1 |5 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), partitions(p0) + +delete from t1 where t1.a < 3 or true; +EXPLAIN delete /*+NO_REWRITE*/from t1 where t1.a < 3 or true; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |5 |43 | +|1 | TABLE SCAN|t1 |5 |38 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), filter([t1.a < 3 OR 1]), + access([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), partitions(p0) + +delete /*+NO_REWRITE*/from t1 where t1.a < 3 or true; +EXPLAIN select * from t1 where t1.a < 3 or 1 < 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 or 1 < 2; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where true or t1.a < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where true or t1.a < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where 1 < 2 or t1.a < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where 1 < 2 or t1.a < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 or t1.b < 3 or true; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 or t1.b < 3 or true; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 or t1.b < 3 or 1 < 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 or t1.b < 3 or 1 < 2; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where true or (t1.a < 3 and t1.b < 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where true or (t1.a < 3 and t1.b < 3); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + + +******false and filter-> false********** +EXPLAIN select * from t1 where false and t1.a < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([0]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where false and t1.a < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 and 1 > 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([0]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 and 1 > 2; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 and false and t1. b < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([0]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 and false and t1. b < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 and t1.b < 3 and 1 > 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([0]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 and t1.b < 3 and 1 > 2; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where false and (t1.a < 3 and t1.b < 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([0]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where false and (t1.a < 3 and t1.b < 3); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN insert into t_temp select * from t1 where false and (t1.a < 3 and t1.b < 3); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |5 |39 | +|1 | SUBPLAN SCAN|VIEW1|5 |38 | +|2 | TABLE SCAN |t1 |5 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), startup_filter([0]), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert into t_temp select * from t1 where false and (t1.a < 3 and t1.b < 3); +EXPLAIN insert /*+NO_REWRITE*/into t_temp select * from t1 where false and (t1.a < 3 and t1.b < 3); +Query Plan +======================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------- +|0 |INSERT | |5 |39 | +|1 | SUBPLAN SCAN|VIEW1|5 |38 | +|2 | TABLE SCAN |t1 |5 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), startup_filter([0]), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert /*+NO_REWRITE*/into t_temp select * from t1 where false and (t1.a < 3 and t1.b < 3); +EXPLAIN update t1 set t1.b = t1.b + 100 where false and (t1.a < 3 and t1.b < 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |5 |42 | +|1 | TABLE SCAN|t1 |5 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]), + update([t1.b=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]), filter(nil), startup_filter([0]), + access([t1.b], [t1.__pk_increment], [t1.a], [t1.c]), partitions(p0) + +update t1 set t1.b = t1.b + 100 where false and (t1.a < 3 and t1.b < 3); +EXPLAIN update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where false and (t1.a < 3 and t1.b < 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |UPDATE | |1 |39 | +|1 | TABLE SCAN|t1 |1 |39 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]), + update([t1.b=column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c], [column_conv(INT,PS:(11,0),NULL,cast(t1.b + 100, INT(-1, 0)))]), filter([t1.a < 3], [t1.b < 3]), startup_filter([0]), + access([t1.b], [t1.__pk_increment], [t1.a], [t1.c]), partitions(p0) + +update /*+NO_REWRITE*/t1 set t1.b = t1.b + 100 where false and (t1.a < 3 and t1.b < 3); +EXPLAIN delete from t1 where false and (t1.a < 3 and t1.b < 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |5 |42 | +|1 | TABLE SCAN|t1 |5 |37 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([0]), + access([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), partitions(p0) + +delete from t1 where false and (t1.a < 3 and t1.b < 3); +EXPLAIN delete /*+NO_REWRITE*/from t1 where false and (t1.a < 3 and t1.b < 3); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |DELETE | |1 |39 | +|1 | TABLE SCAN|t1 |1 |39 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b, t1.c)})}]) + 1 - output([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), filter([t1.a < 3], [t1.b < 3]), startup_filter([0]), + access([t1.__pk_increment], [t1.a], [t1.b], [t1.c]), partitions(p0) + +delete /*+NO_REWRITE*/from t1 where false and (t1.a < 3 and t1.b < 3); + + +******true and filter-> filter********** +EXPLAIN select * from t1 where true and t1.a < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where true and t1.a < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 and true and 1 < 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |38 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 and true and 1 < 2; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where t1.a < 3 and 1 < 2 and t1.b < 3; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |39 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3], [t1.b < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where t1.a < 3 and 1 < 2 and t1.b < 3; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where true and (t1.a < 3 and t1.b < 3); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |1 |39 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter([t1.a < 3], [t1.b < 3]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where true and (t1.a < 3 and t1.b < 3); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + + +**********test cases where we can not remove dummy exprs********** +EXPLAIN select * from t1 where 1 + true >= 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([1]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where 1 + true >= 2; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t1 where 1 + false >= 2; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |TABLE SCAN|t1 |5 |37 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), startup_filter([0]), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from t1 where 1 + false >= 2; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +drop table t1; +drop table t_temp; + + +drop table if exists cache, resource_assigned; +CREATE TABLE `cache` ( `id` varchar(20) NOT NULL, `name` varchar(200) DEFAULT NULL, `description` varchar(200) DEFAULT NULL, `iaas_id` varchar(200) DEFAULT NULL, `provider_id` varchar(20) DEFAULT NULL, `region_id` varchar(20) DEFAULT NULL, `zone_id` varchar(20) DEFAULT NULL, `tenant_id` varchar(20) DEFAULT NULL, `workspace_id` varchar(20) DEFAULT NULL, `iaas_type` varchar(100) DEFAULT NULL, `status` varchar(50) NOT NULL, `network_type` varchar(50) DEFAULT NULL, `vpc_id` varchar(20) DEFAULT NULL, `v_switch_iaas_id` varchar(200) DEFAULT NULL, `spec_iaas_id` varchar(200) DEFAULT NULL, `capacity` bigint(20) DEFAULT NULL, `qps` bigint(20) DEFAULT NULL, `bandwidth` bigint(20) DEFAULT NULL, `max_connections` bigint(20) DEFAULT NULL, `connection_domain` varchar(200) DEFAULT NULL, `port` bigint(20) DEFAULT NULL, `user_name` varchar(200) DEFAULT NULL, `password` varchar(200) DEFAULT NULL, `utc_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `utc_modified` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `utc_deleted` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `workspace_id` (`workspace_id`) BLOCK_SIZE 16384, KEY `zone_id` (`zone_id`) BLOCK_SIZE 16384, KEY `iaas_id` (`iaas_id`) BLOCK_SIZE 16384, KEY `region_id` (`region_id`) BLOCK_SIZE 16384, KEY `status` (`status`) BLOCK_SIZE 16384 ); +CREATE TABLE `resource_assigned` ( `id` varchar(20) NOT NULL, `resource_id` varchar(20) NOT NULL, `resource_type` varchar(20) NOT NULL, `workspace_id` varchar(20) NOT NULL, `app_id` varchar(20) NOT NULL, `utc_create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `utc_modified` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `assignedResource_UNIQUE` (`resource_id`, `resource_type`, `workspace_id`, `app_id`) BLOCK_SIZE 16384, KEY `resource_id` (`resource_id`) BLOCK_SIZE 16384, KEY `workspace_id` (`workspace_id`) BLOCK_SIZE 16384, KEY `app_id` (`app_id`) BLOCK_SIZE 16384 ); +EXPLAIN SELECT COUNT(cache.id) FROM cache WHERE false OR cache.workspace_id IN ('0077508610') AND EXISTS ( SELECT resource_assigned.resource_id FROM resource_assigned WHERE resource_assigned.resource_id = cache.id AND resource_assigned.resource_type = 'CACHE' AND resource_assigned.workspace_id IN ('0077508610') AND resource_assigned.app_id IN ('0080452727') ) AND cache.status != 'DELETED'; +Query Plan +===================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |6680| +|1 | NESTED-LOOP JOIN| |1 |6680| +|2 | TABLE SCAN |resource_assigned(workspace_id)|1 |6677| +|3 | TABLE GET |cache |1 |37 | +===================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(cache.id)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(cache.id)]) + 1 - output([cache.id]), filter(nil), + conds(nil), nl_params_([resource_assigned.resource_id]) + 2 - output([resource_assigned.resource_id]), filter([resource_assigned.resource_type = 'CACHE'], [resource_assigned.app_id = '0080452727']), + access([resource_assigned.resource_id], [resource_assigned.resource_type], [resource_assigned.app_id]), partitions(p0) + 3 - output([cache.id]), filter([cache.workspace_id = '0077508610'], [cache.status != 'DELETED']), + access([cache.id], [cache.workspace_id], [cache.status]), partitions(p0) + +SELECT COUNT(cache.id) FROM cache WHERE false OR cache.workspace_id IN ('0077508610') AND EXISTS ( SELECT resource_assigned.resource_id FROM resource_assigned WHERE resource_assigned.resource_id = cache.id AND resource_assigned.resource_type = 'CACHE' AND resource_assigned.workspace_id IN ('0077508610') AND resource_assigned.app_id IN ('0080452727') ) AND cache.status != 'DELETED'; ++-----------------+ +| COUNT(cache.id) | ++-----------------+ +| 0 | ++-----------------+ +drop table cache, resource_assigned; + +*********************remove dummy exprs end************************ + +drop table if exists t1, t2; +create table t1 (c1 int); +create table t2 (c1 int primary key); + +EXPLAIN insert into t1 values (1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1)})}]), partitions(p0) + 1 - output([__values.c1]), filter(nil) + values({1}) + +insert into t1 values (1); +EXPLAIN insert into t1 values (2); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,__values.c1)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1)})}]), partitions(p0) + 1 - output([__values.c1]), filter(nil) + values({2}) + +insert into t1 values (2); +EXPLAIN insert into t2 values (1); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)]), filter(nil), + columns([{t2: ({t2: (t2.c1)})}]), partitions(p0) + 1 - output([__values.c1]), filter(nil) + values({1}) + +insert into t2 values (1); +EXPLAIN insert into t2 values (2); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------ +|0 |INSERT | |1 |1 | +|1 | EXPRESSION| |1 |1 | +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(INT,PS:(11,0),NOT NULL,__values.c1)]), filter(nil), + columns([{t2: ({t2: (t2.c1)})}]), partitions(p0) + 1 - output([__values.c1]), filter(nil) + values({2}) + +insert into t2 values (2); + +EXPLAIN select * from t1 where c1 between coalesce( ( SELECT 1 ), -10 )AND 10; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |78605| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([(T_OP_BTW, cast(t1.c1, DECIMAL(11, 0)), ?, ?)]), + access([t1.c1]), partitions(p0) + +select * from t1 where c1 between coalesce( ( SELECT 1 ), -10 )AND 10; ++------+ +| c1 | ++------+ +| 1 | +| 2 | ++------+ + +EXPLAIN select * from t2 where c1 = 1 + (select 1); +Query Plan +================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------- +|0 |TABLE GET|t2 |1 |52 | +================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select * from t2 where c1 = 1 + (select 1); ++----+ +| c1 | ++----+ +| 2 | ++----+ + +EXPLAIN select * from t2 where c1 = 1 + (select 1); +Query Plan +================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------- +|0 |TABLE GET|t2 |1 |52 | +================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select * from t2 where c1 = 1 + (select 1); ++----+ +| c1 | ++----+ +| 2 | ++----+ + +drop table t1; +drop table t2; + + +*********************remove dummy exprs end************************ +drop table if exists t1; +create table t1 (c1 int primary key, c2 int); + +EXPLAIN select c1, max(c2) from t1 group by c1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |100000 |61860| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1, max(c2) from t1 group by c1; ++----+---------+ +| c1 | max(c2) | ++----+---------+ ++----+---------+ +EXPLAIN select c1, max(c2) from t1 group by c1 with rollup; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |MERGE GROUP BY| |100000 |89334| +|1 | TABLE SCAN |t1 |100000 |61860| +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_MAX(t1.c2)]), filter(nil), + group(nil), rollup([t1.c1]), agg_func([T_FUN_MAX(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1, max(c2) from t1 group by c1 with rollup; ++----+---------+ +| c1 | max(c2) | ++----+---------+ ++----+---------+ + +drop table t1; + +DROP TABLE IF EXISTS `b`, `cc`; +CREATE TABLE `b` ( + `col_int` int(11) DEFAULT NULL, + `col_varchar` varchar(1) DEFAULT NULL, + `col_varchar_10` varchar(10) DEFAULT NULL, + `col_int_key` int(11) DEFAULT NULL, + `col_varchar_20` varchar(20) DEFAULT NULL, + `pk` int(11) NOT NULL, + `col_varchar_key` varchar(1) DEFAULT NULL, + `col_varchar_10_key` varchar(10) DEFAULT NULL, + `col_varchar_20_key` varchar(20) DEFAULT NULL, + PRIMARY KEY (`pk`), + KEY `idx1` (`pk`, `col_int_key`) , + KEY `idx3` (`pk`, `col_varchar_key`) , + KEY `idx5` (`pk`, `col_varchar_10_key`) , + KEY `idx7` (`pk`, `col_varchar_20_key`) +) ; +CREATE TABLE `cc` ( + `col_int` int(11) DEFAULT NULL, + `col_varchar_10` varchar(10) DEFAULT NULL, + `col_varchar` varchar(1) DEFAULT NULL, + `col_varchar_20_key` varchar(20) DEFAULT NULL, + `col_varchar_key` varchar(1) DEFAULT NULL, + `col_varchar_20` varchar(20) DEFAULT NULL, + `col_int_key` int(11) DEFAULT NULL, + `col_varchar_10_key` varchar(10) DEFAULT NULL, + `pk` int(11) NOT NULL, + PRIMARY KEY (`pk`), + KEY `idx7` (`pk`, `col_varchar_20_key`) , + KEY `idx3` (`pk`, `col_varchar_key`) , + KEY `idx1` (`pk`, `col_int_key`) , + KEY `idx5` (`pk`, `col_varchar_10_key`) +) ; +EXPLAIN SELECT table1 . col_varchar_key AS field1, + CONCAT (table2 . `col_varchar_20`, table1 . `col_varchar_20_key`) AS field2, + ((table2 . `col_int`) + (table1 . `col_int_key`)) AS field3, + table2 . `col_varchar` AS field4, + (SELECT SUM(SUBQUERY1_t2 . `pk`) AS SUBQUERY1_field1 + FROM (CC AS SUBQUERY1_t1 INNER JOIN B AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk`)) + WHERE SUBQUERY1_t1 . `col_varchar_10` <> table1 . `col_varchar_20` + AND SUBQUERY1_t1 . `col_int_key` = table1 . `col_int_key` ) AS field5, + table1 . `pk` AS field6, + table2 . col_varchar_20_key AS field7, + CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field8, + table2 . `col_int_key` AS field9, + SUM(table2 . `pk`) AS field10, + CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field11, + SUM(table2 . `col_int_key`) AS field12, + table1 . col_varchar_20_key AS field13, + CONCAT (table1 . `col_varchar_20`, table2 . `col_varchar`) AS field14, + ((table1 . `pk`) + (table2 . `col_int_key`)) AS field15 +FROM (CC AS table1 + INNER JOIN CC AS table2 ON (table2 . `pk` = table1 . `pk`)) +WHERE (NOT EXISTS ((SELECT 6 FROM DUAL))) + AND table1 . `col_varchar_key` = table1 . `col_varchar_key` +GROUP BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field11, + field13, + field14, + field15 +HAVING ((field2 >= 'r' + AND field1 < 'qr') + AND field10 < 'pq') +ORDER BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field12, + field13, + field14, + field15 +LIMIT 100 +OFFSET 2; +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------ +|0 |LIMIT | |100 |711695| +|1 | TOP-N SORT | |102 |711681| +|2 | HASH GROUP BY | |334 |710002| +|3 | SUBPLAN FILTER | |80859 |678937| +|4 | HASH OUTER JOIN| |161717 |656616| +|5 | TABLE SCAN |table1 |334 |16909 | +|6 | HASH JOIN | |99000 |345403| +|7 | TABLE SCAN |SUBQUERY1_t2|100000 |61860 | +|8 | TABLE SCAN |SUBQUERY1_t1|100000 |64066 | +|9 | LIMIT | |1 |1 | +|10| EXPRESSION | |1 |1 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([table1.col_varchar_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)], [table1.col_int + table1.col_int_key], [table1.col_varchar], [T_FUN_SUM(SUBQUERY1_t2.pk)], [table1.pk], [table1.col_varchar_20_key], [CONCAT(table1.col_varchar_10_key, table1.col_varchar_10_key)], [table1.col_int_key], [cast(table1.pk, DECIMAL(11, 0))], [CONCAT(table1.col_varchar_10_key, table1.col_varchar_10_key)], [cast(table1.col_int_key, DECIMAL(11, 0))], [table1.col_varchar_20_key], [CONCAT(table1.col_varchar_20, table1.col_varchar)], [table1.pk + table1.col_int_key]), filter(nil), limit(100), offset(2) + 1 - output([table1.col_varchar_key], [table1.col_varchar_20], [table1.col_varchar_20_key], [table1.col_int_key], [table1.col_varchar], [T_FUN_SUM(SUBQUERY1_t2.pk)], [table1.pk], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)], [table1.col_int + table1.col_int_key]), filter(nil), sort_keys([table1.col_varchar_key, ASC], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key), ASC], [table1.col_int + table1.col_int_key, ASC], [table1.col_varchar, ASC], [T_FUN_SUM(SUBQUERY1_t2.pk), ASC], [table1.pk, ASC]), topn(100 + 2) + 2 - output([table1.col_varchar_key], [table1.col_varchar_20], [table1.col_varchar_20_key], [table1.col_int_key], [table1.col_varchar], [T_FUN_SUM(SUBQUERY1_t2.pk)], [table1.pk], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)], [table1.col_int + table1.col_int_key]), filter(nil), + group([table1.pk]), agg_func([T_FUN_SUM(SUBQUERY1_t2.pk)]) + 3 - output([table1.col_varchar_key], [table1.col_varchar_20], [table1.col_varchar_20_key], [table1.col_int], [table1.col_int_key], [table1.col_varchar], [SUBQUERY1_t2.pk], [table1.pk], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_NOT_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 4 - output([table1.col_varchar_key], [table1.col_varchar_20], [table1.col_varchar_20_key], [table1.col_int], [table1.col_int_key], [table1.col_varchar], [SUBQUERY1_t2.pk], [table1.pk], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter(nil), + equal_conds([SUBQUERY1_t1.col_int_key = table1.col_int_key]), other_conds([SUBQUERY1_t1.col_varchar_10 != table1.col_varchar_20]) + 5 - output([table1.pk], [table1.col_varchar_key], [table1.col_varchar_20_key], [table1.col_int], [table1.col_int_key], [table1.col_varchar], [table1.col_varchar_20], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter([table1.col_varchar_key < 'qr'], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key) >= 'r']), + access([table1.pk], [table1.col_varchar_key], [table1.col_varchar_20_key], [table1.col_int], [table1.col_int_key], [table1.col_varchar], [table1.col_varchar_20], [table1.col_varchar_10_key]), partitions(p0) + 6 - output([SUBQUERY1_t2.pk], [SUBQUERY1_t1.col_varchar_10], [SUBQUERY1_t1.col_int_key]), filter(nil), + equal_conds([SUBQUERY1_t2.col_int = SUBQUERY1_t1.pk]), other_conds(nil) + 7 - output([SUBQUERY1_t2.col_int], [SUBQUERY1_t2.pk]), filter(nil), + access([SUBQUERY1_t2.col_int], [SUBQUERY1_t2.pk]), partitions(p0) + 8 - output([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_10], [SUBQUERY1_t1.col_int_key]), filter(nil), + access([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_10], [SUBQUERY1_t1.col_int_key]), partitions(p0) + 9 - output([6]), filter(nil), limit(1), offset(nil) + 10 - output([1]), filter(nil) + values({1}) + +SELECT table1 . col_varchar_key AS field1, + CONCAT (table2 . `col_varchar_20`, table1 . `col_varchar_20_key`) AS field2, + ((table2 . `col_int`) + (table1 . `col_int_key`)) AS field3, + table2 . `col_varchar` AS field4, + (SELECT SUM(SUBQUERY1_t2 . `pk`) AS SUBQUERY1_field1 + FROM (CC AS SUBQUERY1_t1 INNER JOIN B AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk`)) + WHERE SUBQUERY1_t1 . `col_varchar_10` <> table1 . `col_varchar_20` + AND SUBQUERY1_t1 . `col_int_key` = table1 . `col_int_key` ) AS field5, + table1 . `pk` AS field6, + table2 . col_varchar_20_key AS field7, + CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field8, + table2 . `col_int_key` AS field9, + SUM(table2 . `pk`) AS field10, + CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field11, + SUM(table2 . `col_int_key`) AS field12, + table1 . col_varchar_20_key AS field13, + CONCAT (table1 . `col_varchar_20`, table2 . `col_varchar`) AS field14, + ((table1 . `pk`) + (table2 . `col_int_key`)) AS field15 +FROM (CC AS table1 + INNER JOIN CC AS table2 ON (table2 . `pk` = table1 . `pk`)) +WHERE (NOT EXISTS ((SELECT 6 FROM DUAL))) + AND table1 . `col_varchar_key` = table1 . `col_varchar_key` +GROUP BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field11, + field13, + field14, + field15 +HAVING ((field2 >= 'r' + AND field1 < 'qr') + AND field10 < 'pq') +ORDER BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field12, + field13, + field14, + field15 +LIMIT 100 +OFFSET 2; ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+ +| field1 | field2 | field3 | field4 | field5 | field6 | field7 | field8 | field9 | field10 | field11 | field12 | field13 | field14 | field15 | ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+ ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+ + +EXPLAIN SELECT /*+no_rewrite*/ table1 . col_varchar_key AS field1, + CONCAT (table2 . `col_varchar_20`, table1 . `col_varchar_20_key`) AS field2, + ((table2 . `col_int`) + (table1 . `col_int_key`)) AS field3, + table2 . `col_varchar` AS field4, + (SELECT SUM(SUBQUERY1_t2 . `pk`) AS SUBQUERY1_field1 + FROM (CC AS SUBQUERY1_t1 INNER JOIN B AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk`)) + WHERE SUBQUERY1_t1 . `col_varchar_10` <> table1 . `col_varchar_20` + AND SUBQUERY1_t1 . `col_int_key` = table1 . `col_int_key` ) AS field5, + table1 . `pk` AS field6, + table2 . col_varchar_20_key AS field7, + CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field8, + table2 . `col_int_key` AS field9, + SUM(table2 . `pk`) AS field10, + CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field11, + SUM(table2 . `col_int_key`) AS field12, + table1 . col_varchar_20_key AS field13, + CONCAT (table1 . `col_varchar_20`, table2 . `col_varchar`) AS field14, + ((table1 . `pk`) + (table2 . `col_int_key`)) AS field15 +FROM (CC AS table1 + INNER JOIN CC AS table2 ON (table2 . `pk` = table1 . `pk`)) +WHERE (NOT EXISTS ((SELECT 6 FROM DUAL))) + AND table1 . `col_varchar_key` = table1 . `col_varchar_key` +GROUP BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field11, + field13, + field14, + field15 +HAVING ((field2 >= 'r' + AND field1 < 'qr') + AND field10 < 'pq') +ORDER BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field12, + field13, + field14, + field15 +LIMIT 100 +OFFSET 2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------------------------- +|0 |LIMIT | |81 |14506246305| +|1 | TOP-N SORT | |83 |14506246293| +|2 | MERGE GROUP BY | |83 |14506245758| +|3 | SUBPLAN FILTER | |49501 |14506229535| +|4 | SUBPLAN FILTER | |49501 |288049 | +|5 | MERGE JOIN | |99001 |274384 | +|6 | TABLE SCAN |table1 |99000 |117520 | +|7 | TABLE SCAN |table2 |100000 |70683 | +|8 | EXPRESSION | |1 |1 | +|9 | SCALAR GROUP BY| |1 |293050 | +|10| HASH JOIN | |99000 |274139 | +|11| TABLE SCAN |SUBQUERY1_t1|971 |119275 | +|12| TABLE SCAN |SUBQUERY1_t2|100000 |61860 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([table1.col_varchar_key], [CONCAT(table2.col_varchar_20, table1.col_varchar_20_key)], [table2.col_int + table1.col_int_key], [table2.col_varchar], [subquery(1)], [table1.pk], [table2.col_varchar_20_key], [CONCAT(table1.col_varchar_10_key, table1.col_varchar_10_key)], [table2.col_int_key], [T_FUN_SUM(table2.pk)], [CONCAT(table1.col_varchar_10_key, table1.col_varchar_10_key)], [T_FUN_SUM(table2.col_int_key)], [table1.col_varchar_20_key], [CONCAT(table1.col_varchar_20, table2.col_varchar)], [table1.pk + table2.col_int_key]), filter(nil), limit(100), offset(2) + 1 - output([table1.col_varchar_key], [table1.col_varchar_20_key], [table2.col_varchar], [subquery(1)], [table1.pk], [table2.col_varchar_20_key], [table1.col_varchar_10_key], [table2.col_int_key], [T_FUN_SUM(table2.pk)], [T_FUN_SUM(table2.col_int_key)], [table1.col_varchar_20], [CONCAT(table2.col_varchar_20, table1.col_varchar_20_key)], [table2.col_int + table1.col_int_key]), filter(nil), sort_keys([table1.col_varchar_key, ASC], [CONCAT(table2.col_varchar_20, table1.col_varchar_20_key), ASC], [table2.col_int + table1.col_int_key, ASC], [table2.col_varchar, ASC], [subquery(1), ASC], [table1.pk, ASC], [T_FUN_SUM(table2.pk), ASC], [T_FUN_SUM(table2.col_int_key), ASC]), topn(100 + 2) + 2 - output([table1.col_varchar_key], [table1.col_varchar_20_key], [table2.col_varchar], [subquery(1)], [table1.pk], [table2.col_varchar_20_key], [table1.col_varchar_10_key], [table2.col_int_key], [T_FUN_SUM(table2.pk)], [T_FUN_SUM(table2.col_int_key)], [table1.col_varchar_20], [CONCAT(table2.col_varchar_20, table1.col_varchar_20_key)], [table2.col_int + table1.col_int_key]), filter([T_FUN_SUM(table2.pk) < ?], [table1.col_varchar_key < 'qr'], [CONCAT(table2.col_varchar_20, table1.col_varchar_20_key) >= 'r']), + group([table1.pk]), agg_func([T_FUN_SUM(table2.pk)], [T_FUN_SUM(table2.col_int_key)]) + 3 - output([table1.col_varchar_key], [table2.col_varchar_20], [table1.col_varchar_20_key], [table2.col_int], [table1.col_int_key], [table2.col_varchar], [subquery(1)], [table1.pk], [table2.col_varchar_20_key], [table1.col_varchar_10_key], [table2.col_int_key], [table2.pk], [table1.col_varchar_20]), filter(nil), + exec_params_([table1.col_int_key], [table1.col_varchar_20]), onetime_exprs_(nil), init_plan_idxs_(nil) + 4 - output([table1.col_varchar_key], [table2.col_varchar_20], [table1.col_varchar_20_key], [table2.col_int], [table1.col_int_key], [table2.col_varchar], [table1.pk], [table2.col_varchar_20_key], [table1.col_varchar_10_key], [table2.col_int_key], [table2.pk], [table1.col_varchar_20]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_NOT_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 5 - output([table1.col_varchar_key], [table2.col_varchar_20], [table1.col_varchar_20_key], [table2.col_int], [table1.col_int_key], [table2.col_varchar], [table1.pk], [table2.col_varchar_20_key], [table1.col_varchar_10_key], [table2.col_int_key], [table2.pk], [table1.col_varchar_20]), filter(nil), + equal_conds([table2.pk = table1.pk]), other_conds(nil) + 6 - output([table1.pk], [table1.col_varchar_key], [table1.col_varchar_20_key], [table1.col_int_key], [table1.col_varchar_20], [table1.col_varchar_10_key]), filter([table1.col_varchar_key = table1.col_varchar_key]), + access([table1.pk], [table1.col_varchar_key], [table1.col_varchar_20_key], [table1.col_int_key], [table1.col_varchar_20], [table1.col_varchar_10_key]), partitions(p0) + 7 - output([table2.pk], [table2.col_varchar_20], [table2.col_int], [table2.col_varchar], [table2.col_varchar_20_key], [table2.col_int_key]), filter(nil), + access([table2.pk], [table2.col_varchar_20], [table2.col_int], [table2.col_varchar], [table2.col_varchar_20_key], [table2.col_int_key]), partitions(p0) + 8 - output([6]), filter(nil) + values({6}) + 9 - output([T_FUN_SUM(SUBQUERY1_t2.pk)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(SUBQUERY1_t2.pk)]) + 10 - output([SUBQUERY1_t2.pk]), filter(nil), + equal_conds([SUBQUERY1_t2.col_int = SUBQUERY1_t1.pk]), other_conds(nil) + 11 - output([SUBQUERY1_t1.pk]), filter([SUBQUERY1_t1.col_int_key = ?], [SUBQUERY1_t1.col_varchar_10 != ?]), + access([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_10], [SUBQUERY1_t1.col_int_key]), partitions(p0) + 12 - output([SUBQUERY1_t2.col_int], [SUBQUERY1_t2.pk]), filter(nil), + access([SUBQUERY1_t2.col_int], [SUBQUERY1_t2.pk]), partitions(p0) + +SELECT /*+no_rewrite*/ table1 . col_varchar_key AS field1, + CONCAT (table2 . `col_varchar_20`, table1 . `col_varchar_20_key`) AS field2, + ((table2 . `col_int`) + (table1 . `col_int_key`)) AS field3, + table2 . `col_varchar` AS field4, + (SELECT SUM(SUBQUERY1_t2 . `pk`) AS SUBQUERY1_field1 + FROM (CC AS SUBQUERY1_t1 INNER JOIN B AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk`)) + WHERE SUBQUERY1_t1 . `col_varchar_10` <> table1 . `col_varchar_20` + AND SUBQUERY1_t1 . `col_int_key` = table1 . `col_int_key` ) AS field5, + table1 . `pk` AS field6, + table2 . col_varchar_20_key AS field7, + CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field8, + table2 . `col_int_key` AS field9, + SUM(table2 . `pk`) AS field10, + CONCAT (table1 . `col_varchar_10_key`, table1 . `col_varchar_10_key`) AS field11, + SUM(table2 . `col_int_key`) AS field12, + table1 . col_varchar_20_key AS field13, + CONCAT (table1 . `col_varchar_20`, table2 . `col_varchar`) AS field14, + ((table1 . `pk`) + (table2 . `col_int_key`)) AS field15 +FROM (CC AS table1 + INNER JOIN CC AS table2 ON (table2 . `pk` = table1 . `pk`)) +WHERE (NOT EXISTS ((SELECT 6 FROM DUAL))) + AND table1 . `col_varchar_key` = table1 . `col_varchar_key` +GROUP BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field11, + field13, + field14, + field15 +HAVING ((field2 >= 'r' + AND field1 < 'qr') + AND field10 < 'pq') +ORDER BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field12, + field13, + field14, + field15 +LIMIT 100 +OFFSET 2; ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+ +| field1 | field2 | field3 | field4 | field5 | field6 | field7 | field8 | field9 | field10 | field11 | field12 | field13 | field14 | field15 | ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+ ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+---------+---------+ + + +************************消除冗余select begin********** + +drop table if exists t1,t2,t3; +create table t1 (c1 int, c2 int); +create table t2 (c1 int, c2 int); +create table t3 (c1 int, c2 int); +EXPLAIN select (select 123 from dual) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([123]), filter(nil) + values({123}) + +select (select 123 from dual) from dual; ++------------------------+ +| (select 123 from dual) | ++------------------------+ +| 123 | ++------------------------+ +EXPLAIN select /*+no_rewrite*/ (select 123 from dual) from dual; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |1 | +|1 | EXPRESSION | |1 |1 | +|2 | EXPRESSION | |1 |1 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([123]), filter(nil) + values({123}) + +select /*+no_rewrite*/ (select 123 from dual) from dual; ++------------------------+ +| (select 123 from dual) | ++------------------------+ +| 123 | ++------------------------+ +EXPLAIN select (select sum(c1) from t1) from dual; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |80961| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select (select sum(c1) from t1) from dual; ++--------------------------+ +| (select sum(c1) from t1) | ++--------------------------+ +| 15 | ++--------------------------+ +EXPLAIN select /*+no_rewrite*/ (select sum(c1) from t1) from dual; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SUBPLAN FILTER | |1 |80962| +|1 | EXPRESSION | |1 |1 | +|2 | SCALAR GROUP BY| |1 |80961| +|3 | TABLE SCAN |t1 |100000 |61860| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrite*/ (select sum(c1) from t1) from dual; ++--------------------------+ +| (select sum(c1) from t1) | ++--------------------------+ +| 15 | ++--------------------------+ +EXPLAIN select (select c1 from t1 limit 1) from dual; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |37 | +|1 | EXPRESSION | |1 |1 | +|2 | TABLE SCAN |t1 |1 |36 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +select (select c1 from t1 limit 1) from dual; ++-----------------------------+ +| (select c1 from t1 limit 1) | ++-----------------------------+ +| 1 | ++-----------------------------+ +EXPLAIN select /*+no_rewrite*/ (select c1 from t1 limit 1) from dual; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |37 | +|1 | EXPRESSION | |1 |1 | +|2 | TABLE SCAN |t1 |1 |36 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(1), offset(nil) + +select /*+no_rewrite*/ (select c1 from t1 limit 1) from dual; ++-----------------------------+ +| (select c1 from t1 limit 1) | ++-----------------------------+ +| 1 | ++-----------------------------+ +EXPLAIN select (select c1 from t1 limit 0) from dual; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |1 | +|1 | EXPRESSION | |1 |1 | +|2 | TABLE SCAN |t1 |0 |0 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(0), offset(nil) + +select (select c1 from t1 limit 0) from dual; ++-----------------------------+ +| (select c1 from t1 limit 0) | ++-----------------------------+ +| NULL | ++-----------------------------+ +EXPLAIN select /*+no_rewrite*/ (select c1 from t1 limit 0) from dual; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |1 | +|1 | EXPRESSION | |1 |1 | +|2 | TABLE SCAN |t1 |0 |0 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0), + limit(0), offset(nil) + +select /*+no_rewrite*/ (select c1 from t1 limit 0) from dual; ++-----------------------------+ +| (select c1 from t1 limit 0) | ++-----------------------------+ +| NULL | ++-----------------------------+ +EXPLAIN select (select 'x' from dual where 1>2) from dual; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |1 | +|1 | EXPRESSION | |1 |1 | +|2 | EXPRESSION | |1 |1 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output(['x']), filter([0]) + values({'x'}) + +select (select 'x' from dual where 1>2) from dual; ++----------------------------------+ +| (select 'x' from dual where 1>2) | ++----------------------------------+ +| NULL | ++----------------------------------+ +EXPLAIN select /*+no_rewrite*/ (select 'x' from dual where 1>2) from dual; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |1 | +|1 | EXPRESSION | |1 |1 | +|2 | EXPRESSION | |1 |1 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output(['x']), filter([0]) + values({'x'}) + +select /*+no_rewrite*/ (select 'x' from dual where 1>2) from dual; ++----------------------------------+ +| (select 'x' from dual where 1>2) | ++----------------------------------+ +| NULL | ++----------------------------------+ +select (select sum(c1) over() from t1) from dual; +ERROR 21000: Subquery returns more than 1 row +EXPLAIN select * from (select (select 123 from dual) from dual); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([123]), filter(nil) + values({123}) + +select * from (select (select 123 from dual) from dual); ++------------------------+ +| (select 123 from dual) | ++------------------------+ +| 123 | ++------------------------+ +EXPLAIN select * from (select /*+no_rewrite*/ (select 123 from dual) from dual); +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |1 | +|1 | EXPRESSION | |1 |1 | +|2 | EXPRESSION | |1 |1 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([123]), filter(nil) + values({123}) + +select * from (select /*+no_rewrite*/ (select 123 from dual) from dual); ++------------------------+ +| (select 123 from dual) | ++------------------------+ +| 123 | ++------------------------+ +EXPLAIN select * from (select (select sum(c1) from t1) from dual); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |80961| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from (select (select sum(c1) from t1) from dual); ++--------------------------+ +| (select sum(c1) from t1) | ++--------------------------+ +| 15 | ++--------------------------+ +EXPLAIN select * from (select /*+no_rewrite*/ (select sum(c1) from t1) from dual); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SUBPLAN FILTER | |1 |80962| +|1 | EXPRESSION | |1 |1 | +|2 | SCALAR GROUP BY| |1 |80961| +|3 | TABLE SCAN |t1 |100000 |61860| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from (select /*+no_rewrite*/ (select sum(c1) from t1) from dual); ++--------------------------+ +| (select sum(c1) from t1) | ++--------------------------+ +| 15 | ++--------------------------+ +EXPLAIN select * from t2,(select (select 123 from dual) as c1 from dual) V where t2.c1 = V.c1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |NESTED-LOOP JOIN| |990 |95118| +|1 | SUBPLAN SCAN |V |1 |1 | +|2 | EXPRESSION | |1 |1 | +|3 | TABLE SCAN |t2 |100000 |64066| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [V.c1]), filter(nil), + conds([t2.c1 = V.c1]), nl_params_(nil) + 1 - output([V.c1]), filter(nil), + access([V.c1]) + 2 - output([123]), filter(nil) + values({123}) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2,(select (select 123 from dual) as c1 from dual) V where t2.c1 = V.c1; ++------+------+----+ +| c1 | c2 | c1 | ++------+------+----+ ++------+------+----+ +EXPLAIN select * from t2,(select /*+no_rewrite*/ (select 123 from dual) as c1 from dual) V where t2.c1 = V.c1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |NESTED-LOOP JOIN| |990 |95118| +|1 | SUBPLAN SCAN |V |1 |1 | +|2 | SUBPLAN FILTER| |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | EXPRESSION | |1 |1 | +|5 | TABLE SCAN |t2 |100000 |64066| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [V.c1]), filter(nil), + conds([t2.c1 = V.c1]), nl_params_(nil) + 1 - output([V.c1]), filter(nil), + access([V.c1]) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([123]), filter(nil) + values({123}) + 5 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2,(select /*+no_rewrite*/ (select 123 from dual) as c1 from dual) V where t2.c1 = V.c1; ++------+------+----+ +| c1 | c2 | c1 | ++------+------+----+ ++------+------+----+ +EXPLAIN select * from t2,(select (select sum(c1) from t1) as c1 from dual) V where t2.c1 = V.c1; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |NESTED-LOOP JOIN | |500 |175829| +|1 | SUBPLAN SCAN |V |1 |80961 | +|2 | SCALAR GROUP BY| |1 |80961 | +|3 | TABLE SCAN |t1 |100000 |61860 | +|4 | TABLE SCAN |t2 |100000 |64066 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [V.c1]), filter(nil), + conds([cast(t2.c1, DECIMAL(11, 0)) = V.c1]), nl_params_(nil) + 1 - output([V.c1]), filter(nil), + access([V.c1]) + 2 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2,(select (select sum(c1) from t1) as c1 from dual) V where t2.c1 = V.c1; ++------+------+------+ +| c1 | c2 | c1 | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t2,(select /*+no_rewrite*/ (select sum(c1) from t1) as c1 from dual) V where t2.c1 = V.c1; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |NESTED-LOOP JOIN | |500 |175829| +|1 | SUBPLAN SCAN |V |1 |80962 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SCALAR GROUP BY| |1 |80961 | +|5 | TABLE SCAN |t1 |100000 |61860 | +|6 | TABLE SCAN |t2 |100000 |64066 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [V.c1]), filter(nil), + conds([cast(t2.c1, DECIMAL(11, 0)) = V.c1]), nl_params_(nil) + 1 - output([V.c1]), filter(nil), + access([V.c1]) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2,(select /*+no_rewrite*/ (select sum(c1) from t1) as c1 from dual) V where t2.c1 = V.c1; ++------+------+------+ +| c1 | c2 | c1 | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t2 where t2.c1 = (select (select 123 from dual) from dual); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |990 |80811| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 = 123]), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 = (select (select 123 from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select 123 from dual) from dual); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SUBPLAN FILTER | |990 |80948| +|1 | TABLE SCAN |t2 |990 |80811| +|2 | SUBPLAN FILTER| |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | EXPRESSION | |1 |1 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2]), filter([t2.c1 = ?]), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([123]), filter(nil) + values({123}) + +select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select 123 from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 = (select (select count(c1) from t1) from dual); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------------- +|0 |NESTED-LOOP JOIN | |990 |176078| +|1 | SUBPLAN SCAN |VIEW1|1 |80961 | +|2 | SCALAR GROUP BY| |1 |80961 | +|3 | TABLE SCAN |t1 |100000 |61860 | +|4 | TABLE SCAN |t2 |100000 |64066 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 = VIEW1.count(c1)]), nl_params_(nil) + 1 - output([VIEW1.count(c1)]), filter(nil), + access([VIEW1.count(c1)]) + 2 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 = (select (select count(c1) from t1) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select count(c1) from t1) from dual); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |SUBPLAN FILTER | |990 |161908| +|1 | TABLE SCAN |t2 |990 |80811 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SCALAR GROUP BY| |1 |80961 | +|5 | TABLE SCAN |t1 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2]), filter([t2.c1 = ?]), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select count(c1) from t1) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where t2.c1 in (select (select 123 from dual) from dual); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |990 |80811| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 = 123]), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 in (select (select 123 from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select 123 from dual) from dual); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SUBPLAN FILTER | |50000 |96652| +|1 | TABLE SCAN |t2 |100000 |64066| +|2 | SUBPLAN FILTER| |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | EXPRESSION | |1 |1 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([123]), filter(nil) + values({123}) + +select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select 123 from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 in (select (select count(c1) from t1) from dual); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------------- +|0 |NESTED-LOOP JOIN | |990 |176078| +|1 | SUBPLAN SCAN |VIEW1|1 |80961 | +|2 | SCALAR GROUP BY| |1 |80961 | +|3 | TABLE SCAN |t1 |100000 |61860 | +|4 | TABLE SCAN |t2 |100000 |64066 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 = VIEW1.count(c1)]), nl_params_(nil) + 1 - output([VIEW1.count(c1)]), filter(nil), + access([VIEW1.count(c1)]) + 2 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 in (select (select count(c1) from t1) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select count(c1) from t1) from dual); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |SUBPLAN FILTER | |50000 |177613| +|1 | TABLE SCAN |t2 |100000 |64066 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SCALAR GROUP BY| |1 |80961 | +|5 | TABLE SCAN |t1 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select count(c1) from t1) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where exists (select (select 123 from dual) from dual); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |SUBPLAN FILTER| |50000 |77868| +|1 | TABLE SCAN |t2 |100000 |64066| +|2 | LIMIT | |1 |1 | +|3 | EXPRESSION | |1 |1 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([123]), filter(nil), limit(1), offset(nil) + 3 - output([1]), filter(nil) + values({1}) + +select * from t2 where exists (select (select 123 from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where exists (select /*+no_rewrite*/ (select 123 from dual) from dual); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SUBPLAN FILTER | |50000 |77869| +|1 | TABLE SCAN |t2 |100000 |64066| +|2 | SUBPLAN FILTER| |1 |1 | +|3 | LIMIT | |1 |1 | +|4 | EXPRESSION | |1 |1 | +|5 | EXPRESSION | |1 |1 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil), limit(1), offset(nil) + 4 - output([1]), filter(nil) + values({1}) + 5 - output([123]), filter(nil) + values({123}) + +select * from t2 where exists (select /*+no_rewrite*/ (select 123 from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where exists (select (select count(c1) from t1) from dual); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |100000 |64066| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), startup_filter([1]), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where exists (select (select count(c1) from t1) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where exists (select /*+no_rewrite*/ (select count(c1) from t1) from dual); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |SUBPLAN FILTER | |50000 |158829| +|1 | TABLE SCAN |t2 |100000 |64066 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | LIMIT | |1 |1 | +|4 | EXPRESSION | |1 |1 | +|5 | SCALAR GROUP BY| |1 |80961 | +|6 | TABLE SCAN |t1 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil), limit(1), offset(nil) + 4 - output([1]), filter(nil) + values({1}) + 5 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from t2 where exists (select /*+no_rewrite*/ (select count(c1) from t1) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where t2.c1 > all (select (select 123 from dual) from dual); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |10000 |80811| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 > 123]), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 > all (select (select 123 from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 > all (select /*+no_rewrite*/ (select 123 from dual) from dual); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SUBPLAN FILTER | |50000 |96652| +|1 | TABLE SCAN |t2 |100000 |64066| +|2 | SUBPLAN FILTER| |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | EXPRESSION | |1 |1 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([123]), filter(nil) + values({123}) + +select * from t2 where t2.c1 > all (select /*+no_rewrite*/ (select 123 from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 > all (select (select count(c1) from t1) from dual); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |66000 |190546| +|1 | TABLE SCAN |t2 |100000 |64066 | +|2 | MATERIAL | |1 |80962 | +|3 | SUBPLAN SCAN |VIEW1|1 |80961 | +|4 | SCALAR GROUP BY | |1 |80961 | +|5 | TABLE SCAN |t1 |100000 |61860 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 <= VIEW1.count(c1) OR (T_OP_IS, t2.c1, NULL, 0)]), nl_params_(nil) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([VIEW1.count(c1)]), filter(nil) + 3 - output([VIEW1.count(c1)]), filter(nil), + access([VIEW1.count(c1)]) + 4 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from t2 where t2.c1 > all (select (select count(c1) from t1) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 > all (select /*+no_rewrite*/ (select count(c1) from t1) from dual); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |SUBPLAN FILTER | |50000 |177613| +|1 | TABLE SCAN |t2 |100000 |64066 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SCALAR GROUP BY| |1 |80961 | +|5 | TABLE SCAN |t1 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 > ALL(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from t2 where t2.c1 > all (select /*+no_rewrite*/ (select count(c1) from t1) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select t2.c1, (select (select 123 from dual) from dual) as s1 from t2 order by s1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |100000 |61860| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [123]), filter(nil), + access([t2.c1]), partitions(p0) + +select t2.c1, (select (select 123 from dual) from dual) as s1 from t2 order by s1; ++------+-----+ +| c1 | s1 | ++------+-----+ +| 1 | 123 | +| 2 | 123 | +| 3 | 123 | +| 4 | 123 | +| 5 | 123 | ++------+-----+ +EXPLAIN select t2.c1, (select /*+no_rewrite*/ (select 123 from dual) from dual) as s1 from t2 order by s1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SUBPLAN FILTER | |100000 |75663| +|1 | TABLE SCAN |t2 |100000 |61860| +|2 | SUBPLAN FILTER| |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | EXPRESSION | |1 |1 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([123]), filter(nil) + values({123}) + +select t2.c1, (select /*+no_rewrite*/ (select 123 from dual) from dual) as s1 from t2 order by s1; ++------+-----+ +| c1 | s1 | ++------+-----+ +| 1 | 123 | +| 2 | 123 | +| 3 | 123 | +| 4 | 123 | +| 5 | 123 | ++------+-----+ +EXPLAIN select t2.c1, (select (select sum(c1) from t1) from dual) as s1 from t2 order by s1; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------- +|0 |SORT | |100000 |561967| +|1 | NESTED-LOOP JOIN CARTESIAN| |100000 |207559| +|2 | SUBPLAN SCAN |VIEW1|1 |80961 | +|3 | SCALAR GROUP BY | |1 |80961 | +|4 | TABLE SCAN |t1 |100000 |61860 | +|5 | TABLE SCAN |t2 |100000 |61860 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [VIEW1.sum(c1)]), filter(nil), sort_keys([VIEW1.sum(c1), ASC]) + 1 - output([t2.c1], [VIEW1.sum(c1)]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([VIEW1.sum(c1)]), filter(nil), + access([VIEW1.sum(c1)]) + 3 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select t2.c1, (select (select sum(c1) from t1) from dual) as s1 from t2 order by s1; ++------+------+ +| c1 | s1 | ++------+------+ +| 1 | 15 | +| 2 | 15 | +| 3 | 15 | +| 4 | 15 | +| 5 | 15 | ++------+------+ +EXPLAIN select t2.c1, (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as s1 from t2 order by s1; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |SUBPLAN FILTER | |100000 |156623| +|1 | TABLE SCAN |t2 |100000 |61860 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SCALAR GROUP BY| |1 |80961 | +|5 | TABLE SCAN |t1 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select t2.c1, (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as s1 from t2 order by s1; ++------+------+ +| c1 | s1 | ++------+------+ +| 1 | 15 | +| 2 | 15 | +| 3 | 15 | +| 4 | 15 | +| 5 | 15 | ++------+------+ +EXPLAIN select t2.c1, (select (select 123 from dual) from dual) as s1 from t2 having s1 > 5; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |100000 |61860| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [123]), filter(nil), startup_filter([?]), + access([t2.c1]), partitions(p0) + +select t2.c1, (select (select 123 from dual) from dual) as s1 from t2 having s1 > 5; ++------+-----+ +| c1 | s1 | ++------+-----+ +| 1 | 123 | +| 2 | 123 | +| 3 | 123 | +| 4 | 123 | +| 5 | 123 | ++------+-----+ +EXPLAIN select t2.c1, (select /*+no_rewrite*/ (select 123 from dual) from dual) as s1 from t2 having s1 > 5; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SUBPLAN FILTER | |33334 |75663| +|1 | TABLE SCAN |t2 |100000 |61860| +|2 | SUBPLAN FILTER| |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | EXPRESSION | |1 |1 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [?]), filter([? > 5]), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([123]), filter(nil) + values({123}) + +select t2.c1, (select /*+no_rewrite*/ (select 123 from dual) from dual) as s1 from t2 having s1 > 5; ++------+-----+ +| c1 | s1 | ++------+-----+ +| 1 | 123 | +| 2 | 123 | +| 3 | 123 | +| 4 | 123 | +| 5 | 123 | ++------+-----+ +EXPLAIN select t2.c1, (select (select sum(c1) from t1) from dual) as s1 from t2 having s1 > 5; +Query Plan +===================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |5000 |87291| +|1 | SUBPLAN SCAN |VIEW1|1 |80961| +|2 | SCALAR GROUP BY | |1 |80961| +|3 | TABLE SCAN |t1 |100000 |61860| +|4 | TABLE SCAN |t2 |100000 |61860| +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [VIEW1.sum(c1)]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([VIEW1.sum(c1)]), filter(nil), + access([VIEW1.sum(c1)]) + 2 - output([T_FUN_SUM(t1.c1)]), filter([T_FUN_SUM(t1.c1) > ?]), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select t2.c1, (select (select sum(c1) from t1) from dual) as s1 from t2 having s1 > 5; ++------+------+ +| c1 | s1 | ++------+------+ +| 1 | 15 | +| 2 | 15 | +| 3 | 15 | +| 4 | 15 | +| 5 | 15 | ++------+------+ +EXPLAIN select t2.c1, (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as s1 from t2 having s1 > 5; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |SUBPLAN FILTER | |33334 |156623| +|1 | TABLE SCAN |t2 |100000 |61860 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SCALAR GROUP BY| |1 |80961 | +|5 | TABLE SCAN |t1 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [?]), filter([? > ?]), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select t2.c1, (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as s1 from t2 having s1 > 5; ++------+------+ +| c1 | s1 | ++------+------+ +| 1 | 15 | +| 2 | 15 | +| 3 | 15 | +| 4 | 15 | +| 5 | 15 | ++------+------+ +EXPLAIN select (select (select 123 from dual) from dual) from dual; +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([123]), filter(nil) + values({123}) + +select (select (select 123 from dual) from dual) from dual; ++-------------------------------------------+ +| (select (select 123 from dual) from dual) | ++-------------------------------------------+ +| 123 | ++-------------------------------------------+ +EXPLAIN select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER | |1 |1 | +|1 | EXPRESSION | |1 |1 | +|2 | SUBPLAN FILTER| |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | EXPRESSION | |1 |1 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([123]), filter(nil) + values({123}) + +select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual; ++-----------------------------------------------------------+ +| (select /*+no_rewrite*/ (select 123 from dual) from dual) | ++-----------------------------------------------------------+ +| 123 | ++-----------------------------------------------------------+ +EXPLAIN select (select (select sum(c1) from t1) from dual) from dual; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |80961| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select (select (select sum(c1) from t1) from dual) from dual; ++---------------------------------------------+ +| (select (select sum(c1) from t1) from dual) | ++---------------------------------------------+ +| 15 | ++---------------------------------------------+ +EXPLAIN select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual; +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |SUBPLAN FILTER | |1 |80962| +|1 | EXPRESSION | |1 |1 | +|2 | SUBPLAN FILTER | |1 |80962| +|3 | EXPRESSION | |1 |1 | +|4 | SCALAR GROUP BY| |1 |80961| +|5 | TABLE SCAN |t1 |100000 |61860| +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual; ++-------------------------------------------------------------+ +| (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) | ++-------------------------------------------------------------+ +| 15 | ++-------------------------------------------------------------+ +EXPLAIN select * from (select (select (select 123 from dual) from dual) from dual); +Query Plan +=================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------- +|0 |EXPRESSION| |1 |1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([123]), filter(nil) + values({123}) + +select * from (select (select (select 123 from dual) from dual) from dual); ++-------------------------------------------+ +| (select (select 123 from dual) from dual) | ++-------------------------------------------+ +| 123 | ++-------------------------------------------+ +EXPLAIN select * from (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER | |1 |1 | +|1 | EXPRESSION | |1 |1 | +|2 | SUBPLAN FILTER| |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | EXPRESSION | |1 |1 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([123]), filter(nil) + values({123}) + +select * from (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); ++-----------------------------------------------------------+ +| (select /*+no_rewrite*/ (select 123 from dual) from dual) | ++-----------------------------------------------------------+ +| 123 | ++-----------------------------------------------------------+ +EXPLAIN select * from (select (select (select sum(c1) from t1) from dual) from dual); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |80961| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from (select (select (select sum(c1) from t1) from dual) from dual); ++---------------------------------------------+ +| (select (select sum(c1) from t1) from dual) | ++---------------------------------------------+ +| 15 | ++---------------------------------------------+ +EXPLAIN select * from (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |SUBPLAN FILTER | |1 |80962| +|1 | EXPRESSION | |1 |1 | +|2 | SUBPLAN FILTER | |1 |80962| +|3 | EXPRESSION | |1 |1 | +|4 | SCALAR GROUP BY| |1 |80961| +|5 | TABLE SCAN |t1 |100000 |61860| +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual); ++-------------------------------------------------------------+ +| (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) | ++-------------------------------------------------------------+ +| 15 | ++-------------------------------------------------------------+ +EXPLAIN select * from t2,(select (select (select 123 from dual) from dual) as c1 from dual) V where t2.c1 = V.c1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |NESTED-LOOP JOIN| |990 |95118| +|1 | SUBPLAN SCAN |V |1 |1 | +|2 | EXPRESSION | |1 |1 | +|3 | TABLE SCAN |t2 |100000 |64066| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [V.c1]), filter(nil), + conds([t2.c1 = V.c1]), nl_params_(nil) + 1 - output([V.c1]), filter(nil), + access([V.c1]) + 2 - output([123]), filter(nil) + values({123}) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2,(select (select (select 123 from dual) from dual) as c1 from dual) V where t2.c1 = V.c1; ++------+------+----+ +| c1 | c2 | c1 | ++------+------+----+ ++------+------+----+ +EXPLAIN select * from t2,(select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) as c1 from dual) V where t2.c1 = V.c1; +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |NESTED-LOOP JOIN | |990 |95118| +|1 | SUBPLAN SCAN |V |1 |1 | +|2 | SUBPLAN FILTER | |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | SUBPLAN FILTER| |1 |1 | +|5 | EXPRESSION | |1 |1 | +|6 | EXPRESSION | |1 |1 | +|7 | TABLE SCAN |t2 |100000 |64066| +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [V.c1]), filter(nil), + conds([t2.c1 = V.c1]), nl_params_(nil) + 1 - output([V.c1]), filter(nil), + access([V.c1]) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil) + values({1}) + 6 - output([123]), filter(nil) + values({123}) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2,(select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) as c1 from dual) V where t2.c1 = V.c1; ++------+------+----+ +| c1 | c2 | c1 | ++------+------+----+ ++------+------+----+ +EXPLAIN select * from t2,(select (select (select sum(c1) from t1) from dual) as c1 from dual) V where t2.c1 = V.c1; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |NESTED-LOOP JOIN | |500 |175829| +|1 | SUBPLAN SCAN |V |1 |80961 | +|2 | SCALAR GROUP BY| |1 |80961 | +|3 | TABLE SCAN |t1 |100000 |61860 | +|4 | TABLE SCAN |t2 |100000 |64066 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [V.c1]), filter(nil), + conds([cast(t2.c1, DECIMAL(11, 0)) = V.c1]), nl_params_(nil) + 1 - output([V.c1]), filter(nil), + access([V.c1]) + 2 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2,(select (select (select sum(c1) from t1) from dual) as c1 from dual) V where t2.c1 = V.c1; ++------+------+------+ +| c1 | c2 | c1 | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t2,(select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as c1 from dual) V where t2.c1 = V.c1; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------------- +|0 |NESTED-LOOP JOIN | |500 |175829| +|1 | SUBPLAN SCAN |V |1 |80962 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SUBPLAN FILTER | |1 |80962 | +|5 | EXPRESSION | |1 |1 | +|6 | SCALAR GROUP BY| |1 |80961 | +|7 | TABLE SCAN |t1 |100000 |61860 | +|8 | TABLE SCAN |t2 |100000 |64066 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2], [V.c1]), filter(nil), + conds([cast(t2.c1, DECIMAL(11, 0)) = V.c1]), nl_params_(nil) + 1 - output([V.c1]), filter(nil), + access([V.c1]) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil) + values({1}) + 6 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2,(select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) as c1 from dual) V where t2.c1 = V.c1; ++------+------+------+ +| c1 | c2 | c1 | ++------+------+------+ ++------+------+------+ +EXPLAIN select * from t2 where t2.c1 = (select (select (select 123 from dual) from dual) from dual); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |990 |80811| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 = 123]), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 = (select (select (select 123 from dual) from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SUBPLAN FILTER | |990 |80948| +|1 | TABLE SCAN |t2 |990 |80811| +|2 | SUBPLAN FILTER | |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | SUBPLAN FILTER| |1 |1 | +|5 | EXPRESSION | |1 |1 | +|6 | EXPRESSION | |1 |1 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2]), filter([t2.c1 = ?]), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil) + values({1}) + 6 - output([123]), filter(nil) + values({123}) + +select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 = (select (select (select count(c1) from t1) from dual) from dual); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------------- +|0 |NESTED-LOOP JOIN | |990 |176078| +|1 | SUBPLAN SCAN |VIEW1|1 |80961 | +|2 | SCALAR GROUP BY| |1 |80961 | +|3 | TABLE SCAN |t1 |100000 |61860 | +|4 | TABLE SCAN |t2 |100000 |64066 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 = VIEW1.count(c1)]), nl_params_(nil) + 1 - output([VIEW1.count(c1)]), filter(nil), + access([VIEW1.count(c1)]) + 2 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 = (select (select (select count(c1) from t1) from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select count(c1) from t1) from dual) from dual); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |SUBPLAN FILTER | |990 |161909| +|1 | TABLE SCAN |t2 |990 |80811 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SUBPLAN FILTER | |1 |80962 | +|5 | EXPRESSION | |1 |1 | +|6 | SCALAR GROUP BY| |1 |80961 | +|7 | TABLE SCAN |t1 |100000 |61860 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1], [t2.c2]), filter([t2.c1 = ?]), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil) + values({1}) + 6 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from t2 where t2.c1 = (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select count(c1) from t1) from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where t2.c1 in (select (select (select 123 from dual) from dual) from dual); +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |990 |80811| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 = 123]), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 in (select (select (select 123 from dual) from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SUBPLAN FILTER | |50000 |96653| +|1 | TABLE SCAN |t2 |100000 |64066| +|2 | SUBPLAN FILTER | |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | SUBPLAN FILTER| |1 |1 | +|5 | EXPRESSION | |1 |1 | +|6 | EXPRESSION | |1 |1 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil) + values({1}) + 6 - output([123]), filter(nil) + values({123}) + +select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t2 where t2.c1 in (select (select (select count(c1) from t1) from dual) from dual); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------------- +|0 |NESTED-LOOP JOIN | |990 |176078| +|1 | SUBPLAN SCAN |VIEW1|1 |80961 | +|2 | SCALAR GROUP BY| |1 |80961 | +|3 | TABLE SCAN |t1 |100000 |61860 | +|4 | TABLE SCAN |t2 |100000 |64066 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter(nil), + conds([t2.c1 = VIEW1.count(c1)]), nl_params_(nil) + 1 - output([VIEW1.count(c1)]), filter(nil), + access([VIEW1.count(c1)]) + 2 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t2 where t2.c1 in (select (select (select count(c1) from t1) from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | ++------+------+ +EXPLAIN select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select count(c1) from t1) from dual) from dual); +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |SUBPLAN FILTER | |50000 |177613| +|1 | TABLE SCAN |t2 |100000 |64066 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SUBPLAN FILTER | |1 |80962 | +|5 | EXPRESSION | |1 |1 | +|6 | SCALAR GROUP BY| |1 |80961 | +|7 | TABLE SCAN |t1 |100000 |61860 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [t2.c2]), filter([t2.c1 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil) + values({1}) + 6 - output([T_FUN_COUNT(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(t1.c1)]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select * from t2 where t2.c1 in (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select count(c1) from t1) from dual) from dual); ++------+------+ +| c1 | c2 | ++------+------+ +| 5 | 5 | ++------+------+ +EXPLAIN select t2.c1, (select (select (select 123 from dual) from dual) from dual) as s1 from t2 order by s1; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t2 |100000 |61860| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [123]), filter(nil), + access([t2.c1]), partitions(p0) + +select t2.c1, (select (select (select 123 from dual) from dual) from dual) as s1 from t2 order by s1; ++------+-----+ +| c1 | s1 | ++------+-----+ +| 1 | 123 | +| 2 | 123 | +| 3 | 123 | +| 4 | 123 | +| 5 | 123 | ++------+-----+ +EXPLAIN select t2.c1, (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual) as s1 from t2 order by s1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SUBPLAN FILTER | |100000 |75663| +|1 | TABLE SCAN |t2 |100000 |61860| +|2 | SUBPLAN FILTER | |1 |1 | +|3 | EXPRESSION | |1 |1 | +|4 | SUBPLAN FILTER| |1 |1 | +|5 | EXPRESSION | |1 |1 | +|6 | EXPRESSION | |1 |1 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil) + values({1}) + 6 - output([123]), filter(nil) + values({123}) + +select t2.c1, (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select 123 from dual) from dual) from dual) as s1 from t2 order by s1; ++------+-----+ +| c1 | s1 | ++------+-----+ +| 1 | 123 | +| 2 | 123 | +| 3 | 123 | +| 4 | 123 | +| 5 | 123 | ++------+-----+ +EXPLAIN select t2.c1, (select (select (select sum(c1) from t1) from dual) from dual) as s1 from t2 order by s1; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------- +|0 |SORT | |100000 |561967| +|1 | NESTED-LOOP JOIN CARTESIAN| |100000 |207559| +|2 | SUBPLAN SCAN |VIEW1|1 |80961 | +|3 | SCALAR GROUP BY | |1 |80961 | +|4 | TABLE SCAN |t1 |100000 |61860 | +|5 | TABLE SCAN |t2 |100000 |61860 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [VIEW1.sum(c1)]), filter(nil), sort_keys([VIEW1.sum(c1), ASC]) + 1 - output([t2.c1], [VIEW1.sum(c1)]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([VIEW1.sum(c1)]), filter(nil), + access([VIEW1.sum(c1)]) + 3 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select t2.c1, (select (select (select sum(c1) from t1) from dual) from dual) as s1 from t2 order by s1; ++------+------+ +| c1 | s1 | ++------+------+ +| 1 | 15 | +| 2 | 15 | +| 3 | 15 | +| 4 | 15 | +| 5 | 15 | ++------+------+ +EXPLAIN select t2.c1, (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual) as s1 from t2 order by s1; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |SUBPLAN FILTER | |100000 |156624| +|1 | TABLE SCAN |t2 |100000 |61860 | +|2 | SUBPLAN FILTER | |1 |80962 | +|3 | EXPRESSION | |1 |1 | +|4 | SUBPLAN FILTER | |1 |80962 | +|5 | EXPRESSION | |1 |1 | +|6 | SCALAR GROUP BY| |1 |80961 | +|7 | TABLE SCAN |t1 |100000 |61860 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c1], [?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 2 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([1]), filter(nil) + values({1}) + 4 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil) + values({1}) + 6 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c1)]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select t2.c1, (select /*+no_rewrite*/ (select /*+no_rewrite*/ (select sum(c1) from t1) from dual) from dual) as s1 from t2 order by s1; ++------+------+ +| c1 | s1 | ++------+------+ +| 1 | 15 | +| 2 | 15 | +| 3 | 15 | +| 4 | 15 | +| 5 | 15 | ++------+------+ + +drop table t1,t2,t3; + +*********************remove dummy exprs end************************ + +************************消除冗余group by/distinct********** + +drop table if exists t1, t2, t3, tpart1, tpart2, t4, t5, t6; +create table t1 (c1 int, c2 int, c3 int, c4 int); +create table t2 (c1 int, c2 int, c3 int, c4 int); +create table t3 (c1 int, c2 int, c3 int, c4 int); +create table tpart1 (c1 int, c2 int, c3 int, c4 int) partition by hash(c1) partitions 3; +create table tpart2 (c1 int, c2 int, c3 int, c4 int) partition by hash(c1) partitions 3; +create table t4 (c1 int, c2 int, c3 int, c4 int); +create table t5 (c1 int, c2 int, c3 int, c4 int); +create table t6 (c1 int, c2 float, c3 decimal, c4 varchar(20), c5 date); +set autocommit = 1; + +##basic test +EXPLAIN select c1, c2, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1,c2; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |7 |46 | +|1 | TABLE SCAN |t1 |7 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, c2, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1,c2; ++------+------+------------+ +| c1 | c2 | min(minc3) | ++------+------+------------+ +| 1 | 1 | 3 | +| 1 | 2 | 1 | +| 2 | 1 | 2 | +| NULL | NULL | NULL | ++------+------+------------+ +EXPLAIN select /*+no_rewrite*/ c1, c2, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1,c2; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |52 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.c2], [T_FUN_MIN(.minc3)]), filter(nil), + group([.c1], [.c2]), agg_func([T_FUN_MIN(.minc3)]) + 1 - output([.c1], [.c2], [.minc3]), filter(nil), + access([.c1], [.c2], [.minc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, c2, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1,c2; ++------+------+------------+ +| c1 | c2 | min(minc3) | ++------+------+------------+ +| NULL | NULL | NULL | +| 1 | 1 | 3 | +| 1 | 2 | 1 | +| 2 | 1 | 2 | ++------+------+------------+ +EXPLAIN select c1, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |7 |45 | +|1 | TABLE SCAN |t1 |7 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MIN(t1.c3)]) + 1 - output([t1.c1], [t1.c3]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1; ++------+------------+ +| c1 | min(minc3) | ++------+------------+ +| 1 | 1 | +| 2 | 2 | +| NULL | NULL | ++------+------------+ +EXPLAIN select /*+no_rewrite*/ c1, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_MIN(.minc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_MIN(.minc3)]) + 1 - output([.c1], [.minc3]), filter(nil), + access([.c1], [.minc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2) group by c1; ++------+------------+ +| c1 | min(minc3) | ++------+------------+ +| NULL | NULL | +| 1 | 1 | +| 2 | 2 | ++------+------------+ +EXPLAIN select min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(t1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(t1.c3)]) + 1 - output([t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2); ++------------+ +| min(minc3) | ++------------+ +| 1 | ++------------+ +EXPLAIN select /*+no_rewrite*/ min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |48 | +|1 | SUBPLAN SCAN | |7 |47 | +|2 | HASH GROUP BY| |7 |46 | +|3 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.minc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.minc3)]) + 1 - output([.minc3]), filter(nil), + access([.minc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ min(minc3) from (select c1, c2, min(c3) minc3 from t1 group by c1,c2); ++------------+ +| min(minc3) | ++------------+ +| 1 | ++------------+ +EXPLAIN select min(minc3) from (select min(c3) minc3 from t1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(t1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(t1.c3)]) + 1 - output([t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select min(minc3) from (select min(c3) minc3 from t1); ++------------+ +| min(minc3) | ++------------+ +| 1 | ++------------+ +EXPLAIN select /*+no_rewrite*/ min(minc3) from (select min(c3) minc3 from t1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SCALAR GROUP BY | |1 |39 | +|1 | SUBPLAN SCAN | |1 |39 | +|2 | SCALAR GROUP BY| |1 |39 | +|3 | TABLE SCAN |t1 |7 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.minc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.minc3)]) + 1 - output([.minc3]), filter(nil), + access([.minc3]) + 2 - output([T_FUN_MIN(t1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select /*+no_rewrite*/ min(minc3) from (select min(c3) minc3 from t1); ++------------+ +| min(minc3) | ++------------+ +| 1 | ++------------+ + +EXPLAIN select c1, c2, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1,c2; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |7 |46 | +|1 | TABLE SCAN |t1 |7 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, c2, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1,c2; ++------+------+------------+ +| c1 | c2 | max(maxc3) | ++------+------+------------+ +| 1 | 1 | 5 | +| 1 | 2 | 4 | +| 2 | 1 | 2 | +| NULL | NULL | NULL | ++------+------+------------+ +EXPLAIN select /*+no_rewrite*/ c1, c2, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1,c2; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |52 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.c2], [T_FUN_MAX(.maxc3)]), filter(nil), + group([.c1], [.c2]), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.c1], [.c2], [.maxc3]), filter(nil), + access([.c1], [.c2], [.maxc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, c2, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1,c2; ++------+------+------------+ +| c1 | c2 | max(maxc3) | ++------+------+------------+ +| NULL | NULL | NULL | +| 1 | 1 | 5 | +| 1 | 2 | 4 | +| 2 | 1 | 2 | ++------+------+------------+ +EXPLAIN select c1, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |7 |45 | +|1 | TABLE SCAN |t1 |7 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c3)]) + 1 - output([t1.c1], [t1.c3]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1; ++------+------------+ +| c1 | max(maxc3) | ++------+------------+ +| 1 | 5 | +| 2 | 2 | +| NULL | NULL | ++------+------------+ +EXPLAIN select /*+no_rewrite*/ c1, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_MAX(.maxc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.c1], [.maxc3]), filter(nil), + access([.c1], [.maxc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2) group by c1; ++------+------------+ +| c1 | max(maxc3) | ++------+------------+ +| NULL | NULL | +| 1 | 5 | +| 2 | 2 | ++------+------------+ +EXPLAIN select max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(t1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(t1.c3)]) + 1 - output([t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2); ++------------+ +| max(maxc3) | ++------------+ +| 5 | ++------------+ +EXPLAIN select /*+no_rewrite*/ max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |48 | +|1 | SUBPLAN SCAN | |7 |47 | +|2 | HASH GROUP BY| |7 |46 | +|3 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.maxc3]), filter(nil), + access([.maxc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ max(maxc3) from (select c1, c2, max(c3) maxc3 from t1 group by c1,c2); ++------------+ +| max(maxc3) | ++------------+ +| 5 | ++------------+ +EXPLAIN select max(maxc3) from (select max(c3) maxc3 from t1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(t1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(t1.c3)]) + 1 - output([t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select max(maxc3) from (select max(c3) maxc3 from t1); ++------------+ +| max(maxc3) | ++------------+ +| 5 | ++------------+ +EXPLAIN select /*+no_rewrite*/ max(maxc3) from (select max(c3) maxc3 from t1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SCALAR GROUP BY | |1 |39 | +|1 | SUBPLAN SCAN | |1 |39 | +|2 | SCALAR GROUP BY| |1 |39 | +|3 | TABLE SCAN |t1 |7 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.maxc3]), filter(nil), + access([.maxc3]) + 2 - output([T_FUN_MAX(t1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select /*+no_rewrite*/ max(maxc3) from (select max(c3) maxc3 from t1); ++------------+ +| max(maxc3) | ++------------+ +| 5 | ++------------+ + +EXPLAIN select c1, c2, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1,c2; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |7 |46 | +|1 | TABLE SCAN |t1 |7 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, c2, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1,c2; ++------+------+----------+ +| c1 | c2 | sum(sc3) | ++------+------+----------+ +| 1 | 1 | 8 | +| 1 | 2 | 5 | +| 2 | 1 | 2 | +| NULL | NULL | NULL | ++------+------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, c2, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1,c2; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |52 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.c2], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1], [.c2]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.c2], [.sc3]), filter(nil), + access([.c1], [.c2], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, c2, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1,c2; ++------+------+----------+ +| c1 | c2 | sum(sc3) | ++------+------+----------+ +| NULL | NULL | NULL | +| 1 | 1 | 8 | +| 1 | 2 | 5 | +| 2 | 1 | 2 | ++------+------+----------+ +EXPLAIN select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |7 |45 | +|1 | TABLE SCAN |t1 |7 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]) + 1 - output([t1.c1], [cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 1 | 13 | +| 2 | 2 | +| NULL | NULL | ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2) group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| NULL | NULL | +| 1 | 13 | +| 2 | 2 | ++------+----------+ +EXPLAIN select sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]) + 1 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + +select sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |48 | +|1 | SUBPLAN SCAN | |7 |47 | +|2 | HASH GROUP BY| |7 |46 | +|3 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select sum(sc3) from (select sum(c3) sc3 from t1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]) + 1 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + +select sum(sc3) from (select sum(c3) sc3 from t1); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) from (select sum(c3) sc3 from t1); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SCALAR GROUP BY | |1 |39 | +|1 | SUBPLAN SCAN | |1 |39 | +|2 | SCALAR GROUP BY| |1 |39 | +|3 | TABLE SCAN |t1 |7 |38 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) from (select sum(c3) sc3 from t1); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ + +EXPLAIN select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |41 | +|1 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(t1.c1)], [T_FUN_MAX(t1.c2)], [T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t1.c3)], [T_FUN_MAX(t1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(t1.c1)], [T_FUN_MAX(t1.c2)], [T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t1.c3)], [T_FUN_MAX(t1.c3)]) + 1 - output([t1.c1], [t1.c2], [t1.c3], [cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t1 group by c1,c2); ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| 1 | 2 | 15 | 1 | 5 | ++---------+---------+----------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |50 | +|1 | SUBPLAN SCAN | |7 |48 | +|2 | HASH GROUP BY| |7 |47 | +|3 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]) + 1 - output([.c1], [.c2], [.sc3], [.minc3], [.maxc3]), filter(nil), + access([.c1], [.c2], [.sc3], [.minc3], [.maxc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)], [T_FUN_MIN(t1.c3)], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)], [T_FUN_MIN(t1.c3)], [T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t1 group by c1,c2); ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| 1 | 2 | 15 | 1 | 5 | ++---------+---------+----------+------------+------------+ +EXPLAIN select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from tpart1 group by c1,c2); +Query Plan +====================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------ +|0 |SCALAR GROUP BY | |1 |39 | +|1 | PX COORDINATOR | |1 |38 | +|2 | EXCHANGE OUT DISTR |:EX10000|1 |38 | +|3 | MERGE GROUP BY | |1 |38 | +|4 | PX PARTITION ITERATOR| |3 |37 | +|5 | TABLE SCAN |tpart1 |3 |37 | +====================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(T_FUN_MIN(tpart1.c1))], [T_FUN_MAX(T_FUN_MAX(tpart1.c2))], [T_FUN_SUM(T_FUN_SUM(cast(tpart1.c3, DECIMAL(11, 0))))], [T_FUN_MIN(T_FUN_MIN(tpart1.c3))], [T_FUN_MAX(T_FUN_MAX(tpart1.c3))]), filter(nil), + group(nil), agg_func([T_FUN_MIN(T_FUN_MIN(tpart1.c1))], [T_FUN_MAX(T_FUN_MAX(tpart1.c2))], [T_FUN_SUM(T_FUN_SUM(cast(tpart1.c3, DECIMAL(11, 0))))], [T_FUN_MIN(T_FUN_MIN(tpart1.c3))], [T_FUN_MAX(T_FUN_MAX(tpart1.c3))]) + 1 - output([T_FUN_MIN(tpart1.c1)], [T_FUN_MAX(tpart1.c2)], [T_FUN_SUM(cast(tpart1.c3, DECIMAL(11, 0)))], [T_FUN_MIN(tpart1.c3)], [T_FUN_MAX(tpart1.c3)]), filter(nil) + 2 - output([T_FUN_MIN(tpart1.c1)], [T_FUN_MAX(tpart1.c2)], [T_FUN_SUM(cast(tpart1.c3, DECIMAL(11, 0)))], [T_FUN_MIN(tpart1.c3)], [T_FUN_MAX(tpart1.c3)]), filter(nil), dop=1 + 3 - output([T_FUN_MIN(tpart1.c1)], [T_FUN_MAX(tpart1.c2)], [T_FUN_SUM(cast(tpart1.c3, DECIMAL(11, 0)))], [T_FUN_MIN(tpart1.c3)], [T_FUN_MAX(tpart1.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(tpart1.c1)], [T_FUN_MAX(tpart1.c2)], [T_FUN_SUM(cast(tpart1.c3, DECIMAL(11, 0)))], [T_FUN_MIN(tpart1.c3)], [T_FUN_MAX(tpart1.c3)]) + 4 - output([tpart1.c1], [tpart1.c2], [tpart1.c3], [cast(tpart1.c3, DECIMAL(11, 0))]), filter(nil) + 5 - output([tpart1.c1], [tpart1.c2], [tpart1.c3], [cast(tpart1.c3, DECIMAL(11, 0))]), filter(nil), + access([tpart1.c1], [tpart1.c2], [tpart1.c3]), partitions(p[0-2]) + +select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from tpart1 group by c1,c2); ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| 1 | 2 | 13 | 1 | 3 | ++---------+---------+----------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from tpart1 group by c1,c2); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |44 | +|1 | PX COORDINATOR | |1 |43 | +|2 | EXCHANGE OUT DISTR |:EX10000|1 |42 | +|3 | MERGE GROUP BY | |1 |42 | +|4 | SUBPLAN SCAN | |3 |41 | +|5 | PX PARTITION ITERATOR| |3 |41 | +|6 | HASH GROUP BY | |3 |41 | +|7 | TABLE SCAN |tpart1 |3 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(T_FUN_MIN(.c1))], [T_FUN_MAX(T_FUN_MAX(.c2))], [T_FUN_SUM(T_FUN_SUM(.sc3))], [T_FUN_MIN(T_FUN_MIN(.minc3))], [T_FUN_MAX(T_FUN_MAX(.maxc3))]), filter(nil), + group(nil), agg_func([T_FUN_MIN(T_FUN_MIN(.c1))], [T_FUN_MAX(T_FUN_MAX(.c2))], [T_FUN_SUM(T_FUN_SUM(.sc3))], [T_FUN_MIN(T_FUN_MIN(.minc3))], [T_FUN_MAX(T_FUN_MAX(.maxc3))]) + 1 - output([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil) + 2 - output([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), dop=1 + 3 - output([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]) + 4 - output([.c1], [.c2], [.sc3], [.minc3], [.maxc3]), filter(nil), + access([.c1], [.c2], [.sc3], [.minc3], [.maxc3]) + 5 - output([tpart1.c1], [tpart1.c2], [T_FUN_SUM(tpart1.c3)], [T_FUN_MIN(tpart1.c3)], [T_FUN_MAX(tpart1.c3)]), filter(nil) + 6 - output([tpart1.c1], [tpart1.c2], [T_FUN_SUM(tpart1.c3)], [T_FUN_MIN(tpart1.c3)], [T_FUN_MAX(tpart1.c3)]), filter(nil), + group([tpart1.c1], [tpart1.c2]), agg_func([T_FUN_SUM(tpart1.c3)], [T_FUN_MIN(tpart1.c3)], [T_FUN_MAX(tpart1.c3)]) + 7 - output([tpart1.c1], [tpart1.c2], [tpart1.c3]), filter(nil), + access([tpart1.c1], [tpart1.c2], [tpart1.c3]), partitions(p[0-2]) + +select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from tpart1 group by c1,c2); ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| 1 | 2 | 13 | 1 | 3 | ++---------+---------+----------+------------+------------+ + +EXPLAIN select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2) group by c1; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |1 |38 | +|1 | TABLE SCAN |t4 |1 |36 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(t4.c1)], [T_FUN_MAX(t4.c2)], [T_FUN_SUM(cast(t4.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]), filter(nil), + group([t4.c1]), agg_func([T_FUN_MIN(t4.c1)], [T_FUN_MAX(t4.c2)], [T_FUN_SUM(cast(t4.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]) + 1 - output([t4.c1], [t4.c2], [t4.c3], [cast(t4.c3, DECIMAL(11, 0))]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2) group by c1; ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| NULL | NULL | NULL | NULL | NULL | ++---------+---------+----------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |38 | +|1 | SUBPLAN SCAN | |1 |38 | +|2 | MERGE GROUP BY| |1 |38 | +|3 | SORT | |1 |37 | +|4 | TABLE SCAN |t4 |1 |36 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]) + 1 - output([.c1], [.c2], [.sc3], [.minc3], [.maxc3]), filter(nil), + access([.c1], [.c2], [.sc3], [.minc3], [.maxc3]) + 2 - output([t4.c1], [t4.c2], [T_FUN_SUM(t4.c3)], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]), filter(nil), + group([t4.c1], [t4.c2]), agg_func([T_FUN_SUM(t4.c3)], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]) + 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), sort_keys([t4.c1, ASC], [t4.c2, ASC]) + 4 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2) group by c1; ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| NULL | NULL | NULL | NULL | NULL | ++---------+---------+----------+------------+------------+ +EXPLAIN select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |37 | +|1 | TABLE SCAN |t4 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(t4.c1)], [T_FUN_MAX(t4.c2)], [T_FUN_SUM(cast(t4.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(t4.c1)], [T_FUN_MAX(t4.c2)], [T_FUN_SUM(cast(t4.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]) + 1 - output([t4.c1], [t4.c2], [t4.c3], [cast(t4.c3, DECIMAL(11, 0))]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2); ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| NULL | NULL | NULL | NULL | NULL | ++---------+---------+----------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |38 | +|1 | SUBPLAN SCAN | |1 |38 | +|2 | HASH GROUP BY| |1 |38 | +|3 | TABLE SCAN |t4 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]) + 1 - output([.c1], [.c2], [.sc3], [.minc3], [.maxc3]), filter(nil), + access([.c1], [.c2], [.sc3], [.minc3], [.maxc3]) + 2 - output([t4.c1], [t4.c2], [T_FUN_SUM(t4.c3)], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]), filter(nil), + group([t4.c1], [t4.c2]), agg_func([T_FUN_SUM(t4.c3)], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]) + 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4 group by c1,c2); ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| NULL | NULL | NULL | NULL | NULL | ++---------+---------+----------+------------+------------+ +EXPLAIN select sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |37 | +|1 | TABLE SCAN |t4 |1 |36 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(cast(t4.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(cast(t4.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]) + 1 - output([t4.c3], [cast(t4.c3, DECIMAL(11, 0))]), filter(nil), + access([t4.c3]), partitions(p0) + +select sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4); ++----------+------------+------------+ +| sum(sc3) | min(minc3) | max(maxc3) | ++----------+------------+------------+ +| NULL | NULL | NULL | ++----------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SCALAR GROUP BY | |1 |37 | +|1 | SUBPLAN SCAN | |1 |37 | +|2 | SCALAR GROUP BY| |1 |37 | +|3 | TABLE SCAN |t4 |1 |36 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]) + 1 - output([.sc3], [.minc3], [.maxc3]), filter(nil), + access([.sc3], [.minc3], [.maxc3]) + 2 - output([t4.c1], [t4.c2], [T_FUN_SUM(t4.c3)], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t4.c3)], [T_FUN_MIN(t4.c3)], [T_FUN_MAX(t4.c3)]) + 3 - output([t4.c1], [t4.c2], [t4.c3]), filter(nil), + access([t4.c1], [t4.c2], [t4.c3]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t4); ++----------+------------+------------+ +| sum(sc3) | min(minc3) | max(maxc3) | ++----------+------------+------------+ +| NULL | NULL | NULL | ++----------+------------+------------+ + +EXPLAIN select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2) group by c1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |HASH GROUP BY| |101 |125664| +|1 | TABLE SCAN |t5 |100000 |66272 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(t5.c1)], [T_FUN_MAX(t5.c2)], [T_FUN_SUM(cast(t5.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]), filter(nil), + group([t5.c1]), agg_func([T_FUN_MIN(t5.c1)], [T_FUN_MAX(t5.c2)], [T_FUN_SUM(cast(t5.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [cast(t5.c3, DECIMAL(11, 0))]), filter(nil), + access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) + +select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2) group by c1; ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ ++---------+---------+----------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2) group by c1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |HASH GROUP BY | |101 |135349| +|1 | SUBPLAN SCAN | |10001 |129345| +|2 | HASH GROUP BY| |10001 |127965| +|3 | TABLE SCAN |t5 |100000 |66272 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]) + 1 - output([.c1], [.c2], [.sc3], [.minc3], [.maxc3]), filter(nil), + access([.c1], [.c2], [.sc3], [.minc3], [.maxc3]) + 2 - output([t5.c1], [t5.c2], [T_FUN_SUM(t5.c3)], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]), filter(nil), + group([t5.c1], [t5.c2]), agg_func([T_FUN_SUM(t5.c3)], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]) + 3 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil), + access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) + +select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2) group by c1; ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ ++---------+---------+----------+------------+------------+ +EXPLAIN select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SCALAR GROUP BY| |1 |106569| +|1 | TABLE SCAN |t5 |100000 |66272 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(t5.c1)], [T_FUN_MAX(t5.c2)], [T_FUN_SUM(cast(t5.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(t5.c1)], [T_FUN_MAX(t5.c2)], [T_FUN_SUM(cast(t5.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]) + 1 - output([t5.c1], [t5.c2], [t5.c3], [cast(t5.c3, DECIMAL(11, 0))]), filter(nil), + access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) + +select min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2); ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| NULL | NULL | NULL | NULL | NULL | ++---------+---------+----------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SCALAR GROUP BY| |1 |133375| +|1 | SUBPLAN SCAN | |10001 |129345| +|2 | HASH GROUP BY| |10001 |127965| +|3 | TABLE SCAN |t5 |100000 |66272 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.c1)], [T_FUN_MAX(.c2)], [T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]) + 1 - output([.c1], [.c2], [.sc3], [.minc3], [.maxc3]), filter(nil), + access([.c1], [.c2], [.sc3], [.minc3], [.maxc3]) + 2 - output([t5.c1], [t5.c2], [T_FUN_SUM(t5.c3)], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]), filter(nil), + group([t5.c1], [t5.c2]), agg_func([T_FUN_SUM(t5.c3)], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]) + 3 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil), + access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) + +select /*+no_rewrite*/ min(c1), max(c2), sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5 group by c1,c2); ++---------+---------+----------+------------+------------+ +| min(c1) | max(c2) | sum(sc3) | min(minc3) | max(maxc3) | ++---------+---------+----------+------------+------------+ +| NULL | NULL | NULL | NULL | NULL | ++---------+---------+----------+------------+------------+ +EXPLAIN select sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |91559| +|1 | TABLE SCAN |t5 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(cast(t5.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(cast(t5.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]) + 1 - output([t5.c3], [cast(t5.c3, DECIMAL(11, 0))]), filter(nil), + access([t5.c3]), partitions(p0) + +select sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5); ++----------+------------+------------+ +| sum(sc3) | min(minc3) | max(maxc3) | ++----------+------------+------------+ +| NULL | NULL | NULL | ++----------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |SCALAR GROUP BY | |1 |95971| +|1 | SUBPLAN SCAN | |1 |95971| +|2 | SCALAR GROUP BY| |1 |95971| +|3 | TABLE SCAN |t5 |100000 |66272| +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)], [T_FUN_MIN(.minc3)], [T_FUN_MAX(.maxc3)]) + 1 - output([.sc3], [.minc3], [.maxc3]), filter(nil), + access([.sc3], [.minc3], [.maxc3]) + 2 - output([t5.c1], [t5.c2], [T_FUN_SUM(t5.c3)], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t5.c3)], [T_FUN_MIN(t5.c3)], [T_FUN_MAX(t5.c3)]) + 3 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil), + access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3), min(minc3), max(maxc3) from (select c1, c2, sum(c3) sc3, min(c3) minc3, max(c3) maxc3 from t5); ++----------+------------+------------+ +| sum(sc3) | min(minc3) | max(maxc3) | ++----------+------------+------------+ +| NULL | NULL | NULL | ++----------+------------+------------+ + +##union all test +EXPLAIN select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from t2 group by c1,c2)); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |84 | +|1 | SUBPLAN SCAN | |14 |81 | +|2 | UNION ALL | |14 |79 | +|3 | TABLE SCAN |t1 |7 |38 | +|4 | TABLE SCAN |t2 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + 4 - output([cast(t2.c3, DECIMAL(11, 0))]), filter(nil), + access([t2.c3]), partitions(p0) + +select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from t2 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 34 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from t2 group by c1,c2)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |101 | +|1 | SUBPLAN SCAN | |14 |98 | +|2 | UNION ALL | |14 |96 | +|3 | HASH GROUP BY| |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |7 |46 | +|6 | TABLE SCAN |t2 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), + access([t1.c3], [t1.c1], [t1.c2]), partitions(p0) + 5 - output([T_FUN_SUM(t2.c3)]), filter(nil), + group([t2.c1], [t2.c2]), agg_func([T_FUN_SUM(t2.c3)]) + 6 - output([t2.c3], [t2.c1], [t2.c2]), filter(nil), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from t2 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 34 | ++----------+ + +EXPLAIN select max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1,c2) + union all + (select c1 from t2)); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |84 | +|1 | SUBPLAN SCAN | |14 |81 | +|2 | UNION ALL | |14 |79 | +|3 | TABLE SCAN |t1 |7 |38 | +|4 | TABLE SCAN |t2 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.maxc3]), filter(nil), + access([.maxc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([t1.c3]), filter(nil), + access([t1.c3]), partitions(p0) + 4 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1,c2) + union all + (select c1 from t2)); ++------------+ +| max(maxc3) | ++------------+ +| 5 | ++------------+ +EXPLAIN select /*+no_rewrite*/ max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1,c2) + union all + (select c1 from t2)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |92 | +|1 | SUBPLAN SCAN | |14 |89 | +|2 | UNION ALL | |14 |88 | +|3 | HASH GROUP BY| |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | TABLE SCAN |t2 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.maxc3]), filter(nil), + access([.maxc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 4 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), + access([t1.c3], [t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select /*+no_rewrite*/ max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1,c2) + union all + (select c1 from t2)); ++------------+ +| max(maxc3) | ++------------+ +| 5 | ++------------+ + +EXPLAIN select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1) + union all + (select min(c3) sc3 from t2 group by c1,c2)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |92 | +|1 | SUBPLAN SCAN | |14 |89 | +|2 | UNION ALL | |14 |88 | +|3 | TABLE SCAN |t1 |7 |38 | +|4 | HASH GROUP BY| |7 |46 | +|5 | TABLE SCAN |t2 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + 4 - output([cast(T_FUN_MIN(t2.c3), DECIMAL(11, 0))]), filter(nil), + group([t2.c1], [t2.c2]), agg_func([T_FUN_MIN(t2.c3)]) + 5 - output([t2.c3], [t2.c1], [t2.c2]), filter(nil), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + +select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1) + union all + (select min(c3) sc3 from t2 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 19 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1) + union all + (select min(c3) sc3 from t2 group by c1,c2)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |100 | +|1 | SUBPLAN SCAN | |14 |97 | +|2 | UNION ALL | |14 |95 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |7 |46 | +|6 | TABLE SCAN |t2 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([cast(T_FUN_MIN(t2.c3), DECIMAL(11, 0))]), filter(nil), + group([t2.c1], [t2.c2]), agg_func([T_FUN_MIN(t2.c3)]) + 6 - output([t2.c3], [t2.c1], [t2.c2]), filter(nil), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1) + union all + (select min(c3) sc3 from t2 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 19 | ++----------+ + +EXPLAIN select sum(sc3) +from ((select sum(c3) sc3 from tpart1 group by c1,c2) + union all + (select sum(c3) sc3 from tpart2 group by c1,c2)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |78 | +|1 | PX COORDINATOR | |1 |77 | +|2 | EXCHANGE OUT DISTR |:EX10000|1 |77 | +|3 | MERGE GROUP BY | |1 |77 | +|4 | SUBPLAN SCAN | |6 |76 | +|5 | PX PARTITION ITERATOR| |6 |75 | +|6 | UNION ALL | |6 |75 | +|7 | TABLE SCAN |tpart1 |3 |37 | +|8 | TABLE SCAN |tpart2 |3 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(T_FUN_SUM(.sc3))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(.sc3))]) + 1 - output([T_FUN_SUM(.sc3)]), filter(nil) + 2 - output([T_FUN_SUM(.sc3)]), filter(nil), dop=1 + 3 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 4 - output([.sc3]), filter(nil), + access([.sc3]) + 5 - output([UNION([1])]), filter(nil) + 6 - output([UNION([1])]), filter(nil) + 7 - output([cast(tpart1.c3, DECIMAL(11, 0))]), filter(nil), + access([tpart1.c3]), partitions(p[0-2]) + 8 - output([cast(tpart2.c3, DECIMAL(11, 0))]), filter(nil), + access([tpart2.c3]), partitions(p[0-2]) + +select sum(sc3) +from ((select sum(c3) sc3 from tpart1 group by c1,c2) + union all + (select sum(c3) sc3 from tpart2 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 44 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from tpart1 group by c1,c2) + union all + (select sum(c3) sc3 from tpart2 group by c1,c2)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |85 | +|1 | PX COORDINATOR | |1 |84 | +|2 | EXCHANGE OUT DISTR |:EX10000|1 |84 | +|3 | MERGE GROUP BY | |1 |84 | +|4 | SUBPLAN SCAN | |6 |83 | +|5 | PX PARTITION ITERATOR| |6 |82 | +|6 | UNION ALL | |6 |82 | +|7 | HASH GROUP BY | |3 |40 | +|8 | TABLE SCAN |tpart1 |3 |37 | +|9 | HASH GROUP BY | |3 |40 | +|10| TABLE SCAN |tpart2 |3 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(T_FUN_SUM(.sc3))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(T_FUN_SUM(.sc3))]) + 1 - output([T_FUN_SUM(.sc3)]), filter(nil) + 2 - output([T_FUN_SUM(.sc3)]), filter(nil), dop=1 + 3 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 4 - output([.sc3]), filter(nil), + access([.sc3]) + 5 - output([UNION([1])]), filter(nil) + 6 - output([UNION([1])]), filter(nil) + 7 - output([T_FUN_SUM(tpart1.c3)]), filter(nil), + group([tpart1.c1], [tpart1.c2]), agg_func([T_FUN_SUM(tpart1.c3)]) + 8 - output([tpart1.c1], [tpart1.c3], [tpart1.c2]), filter(nil), + access([tpart1.c1], [tpart1.c3], [tpart1.c2]), partitions(p[0-2]) + 9 - output([T_FUN_SUM(tpart2.c3)]), filter(nil), + group([tpart2.c1], [tpart2.c2]), agg_func([T_FUN_SUM(tpart2.c3)]) + 10 - output([tpart2.c1], [tpart2.c3], [tpart2.c2]), filter(nil), + access([tpart2.c1], [tpart2.c3], [tpart2.c2]), partitions(p[0-2]) + +select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from tpart1 group by c1,c2) + union all + (select sum(c3) sc3 from tpart2 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 44 | ++----------+ + +EXPLAIN select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from tpart2 group by c1,c2)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |81 | +|1 | SUBPLAN SCAN | |10 |79 | +|2 | UNION ALL | |10 |77 | +|3 | TABLE SCAN |t1 |7 |38 | +|4 | PX COORDINATOR | |3 |37 | +|5 | EXCHANGE OUT DISTR |:EX10000|3 |37 | +|6 | PX PARTITION ITERATOR| |3 |37 | +|7 | TABLE SCAN |tpart2 |3 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + 4 - output([cast(tpart2.c3, DECIMAL(11, 0))]), filter(nil) + 5 - output([cast(tpart2.c3, DECIMAL(11, 0))]), filter(nil), dop=1 + 6 - output([cast(tpart2.c3, DECIMAL(11, 0))]), filter(nil) + 7 - output([cast(tpart2.c3, DECIMAL(11, 0))]), filter(nil), + access([tpart2.c3]), partitions(p[0-2]) + +select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from tpart2 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 46 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from tpart2 group by c1,c2)); +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |93 | +|1 | SUBPLAN SCAN | |10 |91 | +|2 | UNION ALL | |10 |90 | +|3 | HASH GROUP BY | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | PX COORDINATOR | |3 |41 | +|6 | EXCHANGE OUT DISTR |:EX10000|3 |40 | +|7 | PX PARTITION ITERATOR| |3 |40 | +|8 | HASH GROUP BY | |3 |40 | +|9 | TABLE SCAN |tpart2 |3 |37 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), + access([t1.c3], [t1.c1], [t1.c2]), partitions(p0) + 5 - output([T_FUN_SUM(tpart2.c3)]), filter(nil) + 6 - output([T_FUN_SUM(tpart2.c3)]), filter(nil), dop=1 + 7 - output([T_FUN_SUM(tpart2.c3)]), filter(nil) + 8 - output([T_FUN_SUM(tpart2.c3)]), filter(nil), + group([tpart2.c1], [tpart2.c2]), agg_func([T_FUN_SUM(tpart2.c3)]) + 9 - output([tpart2.c1], [tpart2.c3], [tpart2.c2]), filter(nil), + access([tpart2.c1], [tpart2.c3], [tpart2.c2]), partitions(p[0-2]) + +select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from tpart2 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 46 | ++----------+ + +EXPLAIN select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from t2 group by c1,c2) + union all + (select sum(c3) sc3 from t3 group by c1,c2)); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |124 | +|1 | SUBPLAN SCAN | |19 |120 | +|2 | UNION ALL | |19 |117 | +|3 | TABLE SCAN |t1 |7 |38 | +|4 | TABLE SCAN |t2 |7 |38 | +|5 | TABLE SCAN |t3 |5 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + 4 - output([cast(t2.c3, DECIMAL(11, 0))]), filter(nil), + access([t2.c3]), partitions(p0) + 5 - output([cast(t3.c3, DECIMAL(11, 0))]), filter(nil), + access([t3.c3]), partitions(p0) + +select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from t2 group by c1,c2) + union all + (select sum(c3) sc3 from t3 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 46 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from t2 group by c1,c2) + union all + (select sum(c3) sc3 from t3 group by c1,c2)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |146 | +|1 | SUBPLAN SCAN | |19 |143 | +|2 | UNION ALL | |19 |140 | +|3 | HASH GROUP BY| |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |7 |46 | +|6 | TABLE SCAN |t2 |7 |38 | +|7 | HASH GROUP BY| |5 |43 | +|8 | TABLE SCAN |t3 |5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), + access([t1.c3], [t1.c1], [t1.c2]), partitions(p0) + 5 - output([T_FUN_SUM(t2.c3)]), filter(nil), + group([t2.c1], [t2.c2]), agg_func([T_FUN_SUM(t2.c3)]) + 6 - output([t2.c3], [t2.c1], [t2.c2]), filter(nil), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 7 - output([T_FUN_SUM(t3.c3)]), filter(nil), + group([t3.c1], [t3.c2]), agg_func([T_FUN_SUM(t3.c3)]) + 8 - output([t3.c3], [t3.c1], [t3.c2]), filter(nil), + access([t3.c3], [t3.c1], [t3.c2]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select sum(c3) sc3 from t2 group by c1,c2) + union all + (select sum(c3) sc3 from t3 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 46 | ++----------+ + +EXPLAIN select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select min(c3) sc3 from t2 group by c1,c2) + union all + (select sum(c3) sc3 from t3 group by c1,c2)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |132 | +|1 | SUBPLAN SCAN | |19 |128 | +|2 | UNION ALL | |19 |126 | +|3 | TABLE SCAN |t1 |7 |38 | +|4 | HASH GROUP BY| |7 |46 | +|5 | TABLE SCAN |t2 |7 |38 | +|6 | TABLE SCAN |t3 |5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + 4 - output([cast(T_FUN_MIN(t2.c3), DECIMAL(11, 0))]), filter(nil), + group([t2.c1], [t2.c2]), agg_func([T_FUN_MIN(t2.c3)]) + 5 - output([t2.c3], [t2.c1], [t2.c2]), filter(nil), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 6 - output([cast(t3.c3, DECIMAL(11, 0))]), filter(nil), + access([t3.c3]), partitions(p0) + +select sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select min(c3) sc3 from t2 group by c1,c2) + union all + (select sum(c3) sc3 from t3 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 31 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select min(c3) sc3 from t2 group by c1,c2) + union all + (select sum(c3) sc3 from t3 group by c1,c2)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |146 | +|1 | SUBPLAN SCAN | |19 |143 | +|2 | UNION ALL | |19 |140 | +|3 | HASH GROUP BY| |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |7 |46 | +|6 | TABLE SCAN |t2 |7 |38 | +|7 | HASH GROUP BY| |5 |43 | +|8 | TABLE SCAN |t3 |5 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), + access([t1.c3], [t1.c1], [t1.c2]), partitions(p0) + 5 - output([cast(T_FUN_MIN(t2.c3), DECIMAL(11, 0))]), filter(nil), + group([t2.c1], [t2.c2]), agg_func([T_FUN_MIN(t2.c3)]) + 6 - output([t2.c3], [t2.c1], [t2.c2]), filter(nil), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 7 - output([T_FUN_SUM(t3.c3)]), filter(nil), + group([t3.c1], [t3.c2]), agg_func([T_FUN_SUM(t3.c3)]) + 8 - output([t3.c3], [t3.c1], [t3.c2]), filter(nil), + access([t3.c3], [t3.c1], [t3.c2]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) +from ((select sum(c3) sc3 from t1 group by c1,c2) + union all + (select min(c3) sc3 from t2 group by c1,c2) + union all + (select sum(c3) sc3 from t3 group by c1,c2)); ++----------+ +| sum(sc3) | ++----------+ +| 31 | ++----------+ + +##data type test +EXPLAIN select min(minc2), min(minc3), min(minc4), min(minc5) from (select min(c2) minc2, min(c3) minc3, min(c4) minc4 , min(c5) minc5 from t6 group by c1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t6 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(t6.c2)], [T_FUN_MIN(t6.c3)], [T_FUN_MIN(t6.c4)], [T_FUN_MIN(t6.c5)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(t6.c2)], [T_FUN_MIN(t6.c3)], [T_FUN_MIN(t6.c4)], [T_FUN_MIN(t6.c5)]) + 1 - output([t6.c2], [t6.c3], [t6.c4], [t6.c5]), filter(nil), + access([t6.c2], [t6.c3], [t6.c4], [t6.c5]), partitions(p0) + +select min(minc2), min(minc3), min(minc4), min(minc5) from (select min(c2) minc2, min(c3) minc3, min(c4) minc4 , min(c5) minc5 from t6 group by c1); ++------------+------------+------------+------------+ +| min(minc2) | min(minc3) | min(minc4) | min(minc5) | ++------------+------------+------------+------------+ +| 2.5 | 4 | ertt | 2020-07-12 | ++------------+------------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ min(minc2), min(minc3), min(minc4), min(minc5) from (select min(c2) minc2, min(c3) minc3, min(c4) minc4 , min(c5) minc5 from t6 group by c1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |44 | +|1 | SUBPLAN SCAN | |4 |43 | +|2 | HASH GROUP BY| |4 |42 | +|3 | TABLE SCAN |t6 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.minc2)], [T_FUN_MIN(.minc3)], [T_FUN_MIN(.minc4)], [T_FUN_MIN(.minc5)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.minc2)], [T_FUN_MIN(.minc3)], [T_FUN_MIN(.minc4)], [T_FUN_MIN(.minc5)]) + 1 - output([.minc2], [.minc3], [.minc4], [.minc5]), filter(nil), + access([.minc2], [.minc3], [.minc4], [.minc5]) + 2 - output([T_FUN_MIN(t6.c2)], [T_FUN_MIN(t6.c3)], [T_FUN_MIN(t6.c4)], [T_FUN_MIN(t6.c5)]), filter(nil), + group([t6.c1]), agg_func([T_FUN_MIN(t6.c2)], [T_FUN_MIN(t6.c3)], [T_FUN_MIN(t6.c4)], [T_FUN_MIN(t6.c5)]) + 3 - output([t6.c2], [t6.c3], [t6.c4], [t6.c5], [t6.c1]), filter(nil), + access([t6.c2], [t6.c3], [t6.c4], [t6.c5], [t6.c1]), partitions(p0) + +select /*+no_rewrite*/ min(minc2), min(minc3), min(minc4), min(minc5) from (select min(c2) minc2, min(c3) minc3, min(c4) minc4 , min(c5) minc5 from t6 group by c1); ++------------+------------+------------+------------+ +| min(minc2) | min(minc3) | min(minc4) | min(minc5) | ++------------+------------+------------+------------+ +| 2.5 | 4 | ertt | 2020-07-12 | ++------------+------------+------------+------------+ +EXPLAIN select max(maxc2), max(maxc3), max(maxc4), max(maxc5) from (select max(c2) maxc2, max(c3) maxc3, max(c4) maxc4 , max(c5) maxc5 from t6 group by c1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t6 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(t6.c2)], [T_FUN_MAX(t6.c3)], [T_FUN_MAX(t6.c4)], [T_FUN_MAX(t6.c5)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(t6.c2)], [T_FUN_MAX(t6.c3)], [T_FUN_MAX(t6.c4)], [T_FUN_MAX(t6.c5)]) + 1 - output([t6.c2], [t6.c3], [t6.c4], [t6.c5]), filter(nil), + access([t6.c2], [t6.c3], [t6.c4], [t6.c5]), partitions(p0) + +select max(maxc2), max(maxc3), max(maxc4), max(maxc5) from (select max(c2) maxc2, max(c3) maxc3, max(c4) maxc4 , max(c5) maxc5 from t6 group by c1); ++------------+------------+------------+------------+ +| max(maxc2) | max(maxc3) | max(maxc4) | max(maxc5) | ++------------+------------+------------+------------+ +| 5.4 | 9 | trew | 2020-07-30 | ++------------+------------+------------+------------+ +EXPLAIN select /*+no_rewrite*/ max(maxc2), max(maxc3), max(maxc4), max(maxc5) from (select max(c2) maxc2, max(c3) maxc3, max(c4) maxc4 , max(c5) maxc5 from t6 group by c1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |44 | +|1 | SUBPLAN SCAN | |4 |43 | +|2 | HASH GROUP BY| |4 |42 | +|3 | TABLE SCAN |t6 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc2)], [T_FUN_MAX(.maxc3)], [T_FUN_MAX(.maxc4)], [T_FUN_MAX(.maxc5)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc2)], [T_FUN_MAX(.maxc3)], [T_FUN_MAX(.maxc4)], [T_FUN_MAX(.maxc5)]) + 1 - output([.maxc2], [.maxc3], [.maxc4], [.maxc5]), filter(nil), + access([.maxc2], [.maxc3], [.maxc4], [.maxc5]) + 2 - output([T_FUN_MAX(t6.c2)], [T_FUN_MAX(t6.c3)], [T_FUN_MAX(t6.c4)], [T_FUN_MAX(t6.c5)]), filter(nil), + group([t6.c1]), agg_func([T_FUN_MAX(t6.c2)], [T_FUN_MAX(t6.c3)], [T_FUN_MAX(t6.c4)], [T_FUN_MAX(t6.c5)]) + 3 - output([t6.c2], [t6.c3], [t6.c4], [t6.c5], [t6.c1]), filter(nil), + access([t6.c2], [t6.c3], [t6.c4], [t6.c5], [t6.c1]), partitions(p0) + +select /*+no_rewrite*/ max(maxc2), max(maxc3), max(maxc4), max(maxc5) from (select max(c2) maxc2, max(c3) maxc3, max(c4) maxc4 , max(c5) maxc5 from t6 group by c1); ++------------+------------+------------+------------+ +| max(maxc2) | max(maxc3) | max(maxc4) | max(maxc5) | ++------------+------------+------------+------------+ +| 5.4 | 9 | trew | 2020-07-30 | ++------------+------------+------------+------------+ +EXPLAIN select sum(sumc2), sum(sumc3) from (select sum(c2) sumc2, sum(c3) sumc3 from t6 group by c1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |38 | +|1 | TABLE SCAN |t6 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(cast(t6.c2, DOUBLE(-1, -1)))], [T_FUN_SUM(t6.c3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(cast(t6.c2, DOUBLE(-1, -1)))], [T_FUN_SUM(t6.c3)]) + 1 - output([t6.c3], [cast(t6.c2, DOUBLE(-1, -1))]), filter(nil), + access([t6.c2], [t6.c3]), partitions(p0) + +select sum(sumc2), sum(sumc3) from (select sum(c2) sumc2, sum(c3) sumc3 from t6 group by c1); ++--------------------+------------+ +| sum(sumc2) | sum(sumc3) | ++--------------------+------------+ +| 15.299999952316284 | 24 | ++--------------------+------------+ +EXPLAIN select /*+no_rewrite*/ sum(sumc2), sum(sumc3) from (select sum(c2) sumc2, sum(c3) sumc3 from t6 group by c1); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |43 | +|1 | SUBPLAN SCAN | |4 |42 | +|2 | HASH GROUP BY| |4 |42 | +|3 | TABLE SCAN |t6 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sumc2)], [T_FUN_SUM(.sumc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sumc2)], [T_FUN_SUM(.sumc3)]) + 1 - output([.sumc2], [.sumc3]), filter(nil), + access([.sumc2], [.sumc3]) + 2 - output([T_FUN_SUM(cast(t6.c2, DOUBLE(-1, -1)))], [T_FUN_SUM(t6.c3)]), filter(nil), + group([t6.c1]), agg_func([T_FUN_SUM(cast(t6.c2, DOUBLE(-1, -1)))], [T_FUN_SUM(t6.c3)]) + 3 - output([t6.c3], [t6.c1], [cast(t6.c2, DOUBLE(-1, -1))]), filter(nil), + access([t6.c2], [t6.c3], [t6.c1]), partitions(p0) + +select /*+no_rewrite*/ sum(sumc2), sum(sumc3) from (select sum(c2) sumc2, sum(c3) sumc3 from t6 group by c1); ++--------------------+------------+ +| sum(sumc2) | sum(sumc3) | ++--------------------+------------+ +| 15.299999952316284 | 24 | ++--------------------+------------+ + +EXPLAIN select sum(sumc3) +from ((select sum(c3) sumc3 from t1 group by c1) + union all + (select sum(c2) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |89 | +|1 | SUBPLAN SCAN | |11 |87 | +|2 | UNION ALL | |11 |85 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sumc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sumc3)]) + 1 - output([.sumc3]), filter(nil), + access([.sumc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(T_FUN_SUM(t1.c3), DOUBLE(-1, -1))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([cast(t6.c2, DOUBLE(-1, -1))]), filter(nil), + access([t6.c2]), partitions(p0) + +select sum(sumc3) +from ((select sum(c3) sumc3 from t1 group by c1) + union all + (select sum(c2) from t6 group by c1)); ++--------------------+ +| sum(sumc3) | ++--------------------+ +| 30.299999952316284 | ++--------------------+ +EXPLAIN select /*+no_rewrite*/ sum(sumc3) +from ((select sum(c3) sumc3 from t1 group by c1) + union all + (select sum(c2) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |94 | +|1 | SUBPLAN SCAN | |11 |91 | +|2 | UNION ALL | |11 |90 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |4 |41 | +|6 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sumc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sumc3)]) + 1 - output([.sumc3]), filter(nil), + access([.sumc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(T_FUN_SUM(t1.c3), DOUBLE(-1, -1))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([T_FUN_SUM(cast(t6.c2, DOUBLE(-1, -1)))]), filter(nil), + group([t6.c1]), agg_func([T_FUN_SUM(cast(t6.c2, DOUBLE(-1, -1)))]) + 6 - output([t6.c1], [cast(t6.c2, DOUBLE(-1, -1))]), filter(nil), + access([t6.c2], [t6.c1]), partitions(p0) + +select /*+no_rewrite*/ sum(sumc3) +from ((select sum(c3) sumc3 from t1 group by c1) + union all + (select sum(c2) from t6 group by c1)); ++--------------------+ +| sum(sumc3) | ++--------------------+ +| 30.299999952316284 | ++--------------------+ + +EXPLAIN select sum(sumc3) +from ((select sum(c3) sumc3 from t1 group by c1) + union all + (select sum(c3) from t6 group by c1)); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |81 | +|1 | SUBPLAN SCAN | |11 |79 | +|2 | UNION ALL | |11 |78 | +|3 | TABLE SCAN |t1 |7 |38 | +|4 | TABLE SCAN |t6 |4 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sumc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sumc3)]) + 1 - output([.sumc3]), filter(nil), + access([.sumc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + 4 - output([t6.c3]), filter(nil), + access([t6.c3]), partitions(p0) + +select sum(sumc3) +from ((select sum(c3) sumc3 from t1 group by c1) + union all + (select sum(c3) from t6 group by c1)); ++------------+ +| sum(sumc3) | ++------------+ +| 39 | ++------------+ +EXPLAIN select /*+no_rewrite*/ sum(sumc3) +from ((select sum(c3) sumc3 from t1 group by c1) + union all + (select sum(c3) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |94 | +|1 | SUBPLAN SCAN | |11 |91 | +|2 | UNION ALL | |11 |90 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |4 |41 | +|6 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sumc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sumc3)]) + 1 - output([.sumc3]), filter(nil), + access([.sumc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([T_FUN_SUM(t6.c3)]), filter(nil), + group([t6.c1]), agg_func([T_FUN_SUM(t6.c3)]) + 6 - output([t6.c3], [t6.c1]), filter(nil), + access([t6.c3], [t6.c1]), partitions(p0) + +select /*+no_rewrite*/ sum(sumc3) +from ((select sum(c3) sumc3 from t1 group by c1) + union all + (select sum(c3) from t6 group by c1)); ++------------+ +| sum(sumc3) | ++------------+ +| 39 | ++------------+ + +EXPLAIN select min(minc3) +from ((select min(c3) minc3 from t1 group by c1) + union all + (select min(c3) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |89 | +|1 | SUBPLAN SCAN | |11 |87 | +|2 | UNION ALL | |11 |85 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.minc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.minc3)]) + 1 - output([.minc3]), filter(nil), + access([.minc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(T_FUN_MIN(t1.c3), DECIMAL(11, 0))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MIN(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([t6.c3]), filter(nil), + access([t6.c3]), partitions(p0) + +select min(minc3) +from ((select min(c3) minc3 from t1 group by c1) + union all + (select min(c3) from t6 group by c1)); ++------------+ +| min(minc3) | ++------------+ +| 1 | ++------------+ +EXPLAIN select /*+no_rewrite*/ min(minc3) +from ((select min(c3) minc3 from t1 group by c1) + union all + (select min(c3) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |94 | +|1 | SUBPLAN SCAN | |11 |91 | +|2 | UNION ALL | |11 |90 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |4 |41 | +|6 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.minc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.minc3)]) + 1 - output([.minc3]), filter(nil), + access([.minc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(T_FUN_MIN(t1.c3), DECIMAL(11, 0))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MIN(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([T_FUN_MIN(t6.c3)]), filter(nil), + group([t6.c1]), agg_func([T_FUN_MIN(t6.c3)]) + 6 - output([t6.c3], [t6.c1]), filter(nil), + access([t6.c3], [t6.c1]), partitions(p0) + +select /*+no_rewrite*/ min(minc3) +from ((select min(c3) minc3 from t1 group by c1) + union all + (select min(c3) from t6 group by c1)); ++------------+ +| min(minc3) | ++------------+ +| 1 | ++------------+ + +EXPLAIN select max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1) + union all + (select max(c4) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |89 | +|1 | SUBPLAN SCAN | |11 |87 | +|2 | UNION ALL | |11 |85 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.maxc3]), filter(nil), + access([.maxc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(T_FUN_MAX(t1.c3), VARCHAR(20))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([t6.c4]), filter(nil), + access([t6.c4]), partitions(p0) + +select max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1) + union all + (select max(c4) from t6 group by c1)); ++------------+ +| max(maxc3) | ++------------+ +| trew | ++------------+ +EXPLAIN select /*+no_rewrite*/ max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1) + union all + (select max(c4) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |94 | +|1 | SUBPLAN SCAN | |11 |91 | +|2 | UNION ALL | |11 |90 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |4 |41 | +|6 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.maxc3]), filter(nil), + access([.maxc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(T_FUN_MAX(t1.c3), VARCHAR(20))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([T_FUN_MAX(t6.c4)]), filter(nil), + group([t6.c1]), agg_func([T_FUN_MAX(t6.c4)]) + 6 - output([t6.c4], [t6.c1]), filter(nil), + access([t6.c4], [t6.c1]), partitions(p0) + +select /*+no_rewrite*/ max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1) + union all + (select max(c4) from t6 group by c1)); ++------------+ +| max(maxc3) | ++------------+ +| trew | ++------------+ + +EXPLAIN select max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1) + union all + (select max(c5) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |94 | +|1 | SUBPLAN SCAN | |11 |91 | +|2 | UNION ALL | |11 |90 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |4 |41 | +|6 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.maxc3]), filter(nil), + access([.maxc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(T_FUN_MAX(t1.c3), VARCHAR(11))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([cast(T_FUN_MAX(t6.c5), VARCHAR(11))]), filter(nil), + group([t6.c1]), agg_func([T_FUN_MAX(t6.c5)]) + 6 - output([t6.c5], [t6.c1]), filter(nil), + access([t6.c5], [t6.c1]), partitions(p0) + +select max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1) + union all + (select max(c5) from t6 group by c1)); ++------------+ +| max(maxc3) | ++------------+ +| 5 | ++------------+ +EXPLAIN select /*+no_rewrite*/ max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1) + union all + (select max(c5) from t6 group by c1)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |94 | +|1 | SUBPLAN SCAN | |11 |91 | +|2 | UNION ALL | |11 |90 | +|3 | HASH GROUP BY| |7 |45 | +|4 | TABLE SCAN |t1 |7 |38 | +|5 | HASH GROUP BY| |4 |41 | +|6 | TABLE SCAN |t6 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(.maxc3)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(.maxc3)]) + 1 - output([.maxc3]), filter(nil), + access([.maxc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([cast(T_FUN_MAX(t1.c3), VARCHAR(11))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c3)]) + 4 - output([t1.c3], [t1.c1]), filter(nil), + access([t1.c3], [t1.c1]), partitions(p0) + 5 - output([cast(T_FUN_MAX(t6.c5), VARCHAR(11))]), filter(nil), + group([t6.c1]), agg_func([T_FUN_MAX(t6.c5)]) + 6 - output([t6.c5], [t6.c1]), filter(nil), + access([t6.c5], [t6.c1]), partitions(p0) + +select /*+no_rewrite*/ max(maxc3) +from ((select max(c3) maxc3 from t1 group by c1) + union all + (select max(c5) from t6 group by c1)); ++------------+ +| max(maxc3) | ++------------+ +| 5 | ++------------+ + +##消除条件测试 +##1.select 中有非 aggr 项 +EXPLAIN select c1, sc3 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.sc3]), filter(nil), + group([.c1]), agg_func(nil) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, sc3 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; ++------+------+ +| c1 | sc3 | ++------+------+ +| NULL | NULL | +| 1 | 5 | +| 2 | 2 | ++------+------+ +EXPLAIN select /*+no_rewrite*/ c1, sc3 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.sc3]), filter(nil), + group([.c1]), agg_func(nil) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sc3 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; ++------+------+ +| c1 | sc3 | ++------+------+ +| NULL | NULL | +| 1 | 5 | +| 2 | 2 | ++------+------+ +EXPLAIN select c1, c2 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |49 | +|1 | SUBPLAN SCAN | |7 |47 | +|2 | MERGE GROUP BY| |7 |46 | +|3 | SORT | |7 |44 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.c2]), filter(nil), + group([.c1]), agg_func(nil) + 1 - output([.c1], [.c2]), filter(nil), + access([.c1], [.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + group([t1.c1], [t1.c2]), agg_func(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select c1, c2 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | NULL | +| 1 | 1 | +| 2 | 1 | ++------+------+ +EXPLAIN select /*+no_rewrite*/c1, c2 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.c2]), filter(nil), + group([.c1]), agg_func(nil) + 1 - output([.c1], [.c2]), filter(nil), + access([.c1], [.c2]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/c1, c2 from (select c1, c2, max(c3) sc3 from t1 group by c1,c2) group by c1; ++------+------+ +| c1 | c2 | ++------+------+ +| NULL | NULL | +| 1 | 1 | +| 2 | 1 | ++------+------+ + +##2.aggr 不匹配 +EXPLAIN select c1, sum(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.c3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, sum(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; ++------+---------+ +| c1 | sum(c3) | ++------+---------+ +| NULL | NULL | +| 1 | 4 | +| 2 | 2 | ++------+---------+ +EXPLAIN select /*+no_rewrite*/c1, sum(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.c3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/c1, sum(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; ++------+---------+ +| c1 | sum(c3) | ++------+---------+ +| NULL | NULL | +| 1 | 4 | +| 2 | 2 | ++------+---------+ +EXPLAIN select c1, sum(c3) from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.c3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, sum(c3) from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1; ++------+---------+ +| c1 | sum(c3) | ++------+---------+ +| NULL | NULL | +| 1 | 9 | +| 2 | 2 | ++------+---------+ +EXPLAIN select /*+no_rewrite*/c1, sum(c3) from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.c3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/c1, sum(c3) from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1; ++------+---------+ +| c1 | sum(c3) | ++------+---------+ +| NULL | NULL | +| 1 | 9 | +| 2 | 2 | ++------+---------+ +EXPLAIN select c1, max(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_MAX(.c3)]), filter(nil), + group([.c1]), agg_func([T_FUN_MAX(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, max(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; ++------+---------+ +| c1 | max(c3) | ++------+---------+ +| NULL | NULL | +| 1 | 3 | +| 2 | 2 | ++------+---------+ +EXPLAIN select /*+no_rewrite*/c1, max(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_MAX(.c3)]), filter(nil), + group([.c1]), agg_func([T_FUN_MAX(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/c1, max(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1; ++------+---------+ +| c1 | max(c3) | ++------+---------+ +| NULL | NULL | +| 1 | 3 | +| 2 | 2 | ++------+---------+ + +##3.limit/distinct +EXPLAIN select sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2 limit 5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |47 | +|1 | SUBPLAN SCAN | |5 |46 | +|2 | LIMIT | |5 |45 | +|3 | HASH GROUP BY| |5 |44 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([T_FUN_SUM(t1.c3)]), filter(nil), limit(5), offset(nil) + 3 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2 limit 5); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2 limit 5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |47 | +|1 | SUBPLAN SCAN | |5 |46 | +|2 | LIMIT | |5 |45 | +|3 | HASH GROUP BY| |5 |44 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), limit(5), offset(nil) + 3 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2 limit 5); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select sum(sc3) from (select distinct c1, c2, sum(c3) sc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |39 | +|1 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]) + 1 - output([cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c3]), partitions(p0) + +select sum(sc3) from (select distinct c1, c2, sum(c3) sc3 from t1 group by c1,c2); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) from (select distinct c1, c2, sum(c3) sc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |48 | +|1 | SUBPLAN SCAN | |7 |47 | +|2 | HASH GROUP BY| |7 |46 | +|3 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) from (select distinct c1, c2, sum(c3) sc3 from t1 group by c1,c2); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select sum(sc3) from (select c1, c2, sum(distinct c3) sc3 from t1 group by c1,c2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([T_FUN_SUM(distinct t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(distinct t1.c3)]) + 3 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select sum(sc3) from (select c1, c2, sum(distinct c3) sc3 from t1 group by c1,c2); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(distinct c3) sc3 from t1 group by c1,c2); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SCALAR GROUP BY | |1 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(distinct t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(distinct t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ sum(sc3) from (select c1, c2, sum(distinct c3) sc3 from t1 group by c1,c2); ++----------+ +| sum(sc3) | ++----------+ +| 15 | ++----------+ +EXPLAIN select sum(distinct sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |48 | +|1 | SUBPLAN SCAN | |7 |47 | +|2 | HASH GROUP BY| |7 |46 | +|3 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(distinct .sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(distinct .sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select sum(distinct sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); ++-------------------+ +| sum(distinct sc3) | ++-------------------+ +| 15 | ++-------------------+ +EXPLAIN select /*+no_rewrite*/ sum(distinct sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SCALAR GROUP BY| |1 |48 | +|1 | SUBPLAN SCAN | |7 |47 | +|2 | HASH GROUP BY| |7 |46 | +|3 | TABLE SCAN |t1 |7 |38 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(distinct .sc3)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(distinct .sc3)]) + 1 - output([.sc3]), filter(nil), + access([.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ sum(distinct sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1,c2); ++-------------------+ +| sum(distinct sc3) | ++-------------------+ +| 15 | ++-------------------+ + +##4.having/condition测试 +EXPLAIN select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 where c1 > 10 group by c1, c2) group by c1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |MERGE GROUP BY| |1 |40 | +|1 | SORT | |1 |39 | +|2 | TABLE SCAN |t1 |1 |39 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]) + 1 - output([t1.c1], [cast(t1.c3, DECIMAL(11, 0))]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c3]), filter([t1.c1 > 10]), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 where c1 > 10 group by c1, c2) group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 where c1 > 10 group by c1, c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |40 | +|1 | SUBPLAN SCAN | |1 |40 | +|2 | MERGE GROUP BY| |1 |40 | +|3 | SORT | |1 |40 | +|4 | TABLE SCAN |t1 |1 |39 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c1 > 10]), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 where c1 > 10 group by c1, c2) group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ ++------+----------+ +EXPLAIN select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2 having sc3 > 10) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |46 | +|1 | SORT | |1 |46 | +|2 | SUBPLAN SCAN | |1 |46 | +|3 | HASH GROUP BY| |1 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), sort_keys([.c1, ASC]) + 2 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 3 - output([t1.c1], [T_FUN_SUM(t1.c3)]), filter([T_FUN_SUM(t1.c3) > ?]), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2 having sc3 > 10) group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2 having sc3 > 3) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |46 | +|1 | SORT | |1 |46 | +|2 | SUBPLAN SCAN | |1 |46 | +|3 | HASH GROUP BY| |1 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), sort_keys([.c1, ASC]) + 2 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 3 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter([T_FUN_SUM(t1.c3) > ?]), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2 having sc3 > 3) group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 1 | 13 | ++------+----------+ +EXPLAIN select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) where sc3 > 10 group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |46 | +|1 | SORT | |1 |46 | +|2 | SUBPLAN SCAN | |1 |46 | +|3 | HASH GROUP BY| |1 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), sort_keys([.c1, ASC]) + 2 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 3 - output([t1.c1], [T_FUN_SUM(t1.c3)]), filter([T_FUN_SUM(t1.c3) > ?]), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) where sc3 > 10 group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) where sc3 > 3 group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |46 | +|1 | SORT | |1 |46 | +|2 | SUBPLAN SCAN | |1 |46 | +|3 | HASH GROUP BY| |1 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), sort_keys([.c1, ASC]) + 2 - output([.sc3], [.c1]), filter(nil), + access([.sc3], [.c1]) + 3 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter([T_FUN_SUM(t1.c3) > ?]), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) where sc3 > 3 group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 1 | 13 | ++------+----------+ +EXPLAIN select c1, c3 from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1 having c3 > 10; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |4 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.c3]), filter([.c3 > 10]), + group([.c1]), agg_func(nil) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, c3 from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1 having c3 > 10; ++------+------+ +| c1 | c3 | ++------+------+ ++------+------+ +EXPLAIN select /*+no_rewrite*/ c1, c3 from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1 having c3 > 3; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |4 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [.c3]), filter([.c3 > 3]), + group([.c1]), agg_func(nil) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MAX(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MAX(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, c3 from (select c1, c2, max(c3) c3 from t1 group by c1,c2) group by c1 having c3 > 3; ++------+------+ +| c1 | c3 | ++------+------+ +| 1 | 5 | ++------+------+ +EXPLAIN select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(sc3)> 3; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |1 |45 | +|1 | TABLE SCAN |t1 |7 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]), filter([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0))) > ?]), + group([t1.c1]), agg_func([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]) + 1 - output([t1.c1], [cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(sc3)> 3; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 1 | 13 | ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(sc3)> 3; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter([T_FUN_SUM(.sc3) > ?]), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(sc3)> 3; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 1 | 13 | ++------+----------+ +EXPLAIN select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(c1)> 3; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |52 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter([T_FUN_SUM(.c1) > ?]), + group([.c1]), agg_func([T_FUN_SUM(.sc3)], [T_FUN_SUM(.c1)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(c1)> 3; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(c1)> 3; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |52 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter([T_FUN_SUM(.c1) > ?]), + group([.c1]), agg_func([T_FUN_SUM(.sc3)], [T_FUN_SUM(.c1)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having sum(c1)> 3; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ ++------+----------+ +EXPLAIN select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having min(c1)> 1; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH GROUP BY| |1 |46 | +|1 | TABLE SCAN |t1 |7 |38 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]), filter([T_FUN_MIN(t1.c1) > 1]), + group([t1.c1]), agg_func([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))], [T_FUN_MIN(t1.c1)]) + 1 - output([t1.c1], [cast(t1.c3, DECIMAL(11, 0))]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having min(c1)> 1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 2 | 2 | ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having min(c1)> 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |1 |52 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter([T_FUN_MIN(.c1) > 1]), + group([.c1]), agg_func([T_FUN_SUM(.sc3)], [T_FUN_MIN(.c1)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having min(c1)> 1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 2 | 2 | ++------+----------+ +EXPLAIN select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having c1> 1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |MERGE GROUP BY| |1 |40 | +|1 | SORT | |1 |39 | +|2 | TABLE SCAN |t1 |1 |39 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]), filter(nil), + group([t1.c1]), agg_func([T_FUN_SUM(cast(t1.c3, DECIMAL(11, 0)))]) + 1 - output([t1.c1], [cast(t1.c3, DECIMAL(11, 0))]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c3]), filter([t1.c1 > 1]), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having c1> 1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 2 | 2 | ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having c1> 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |4 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter([.c1 > 1]), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1 having c1> 1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| 2 | 2 | ++------+----------+ + +##5.使用child aggr进行计算 +EXPLAIN select c1, sum(c1 + sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(cast(.c1, DECIMAL(11, 0)) + .sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(cast(.c1, DECIMAL(11, 0)) + .sc3)]) + 1 - output([.c1], [cast(.c1, DECIMAL(11, 0)) + .sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, sum(c1 + sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1; ++------+---------------+ +| c1 | sum(c1 + sc3) | ++------+---------------+ +| NULL | NULL | +| 1 | 15 | +| 2 | 4 | ++------+---------------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(c1 + sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(cast(.c1, DECIMAL(11, 0)) + .sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(cast(.c1, DECIMAL(11, 0)) + .sc3)]) + 1 - output([.c1], [cast(.c1, DECIMAL(11, 0)) + .sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(c1 + sc3) from (select c1, c2, sum(c3) sc3 from t1 group by c1, c2) group by c1; ++------+---------------+ +| c1 | sum(c1 + sc3) | ++------+---------------+ +| NULL | NULL | +| 1 | 15 | +| 2 | 4 | ++------+---------------+ +EXPLAIN select c1, sum(sc3) from (select c1, c2, 2 + sum(c3) sc3 from t1 group by c1, c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [? + T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, sum(sc3) from (select c1, c2, 2 + sum(c3) sc3 from t1 group by c1, c2) group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| NULL | NULL | +| 1 | 17 | +| 2 | 4 | ++------+----------+ +EXPLAIN select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, 2 + sum(c3) sc3 from t1 group by c1, c2) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_SUM(.sc3)]), filter(nil), + group([.c1]), agg_func([T_FUN_SUM(.sc3)]) + 1 - output([.c1], [.sc3]), filter(nil), + access([.c1], [.sc3]) + 2 - output([t1.c1], [t1.c2], [? + T_FUN_SUM(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_SUM(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, sum(sc3) from (select c1, c2, 2 + sum(c3) sc3 from t1 group by c1, c2) group by c1; ++------+----------+ +| c1 | sum(sc3) | ++------+----------+ +| NULL | NULL | +| 1 | 17 | +| 2 | 4 | ++------+----------+ + +##6.rollup test +EXPLAIN select c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2 with rollup) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |HASH GROUP BY | |7 |57 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_MIN(.c3)]), filter(nil), + group([.c1]), agg_func([T_FUN_MIN(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [T_FUN_MIN(t1.c3)]), filter(nil), + group(nil), rollup([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c3], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2 with rollup) group by c1; ++------+---------+ +| c1 | min(c3) | ++------+---------+ +| NULL | 1 | +| 1 | 1 | +| 2 | 2 | ++------+---------+ +EXPLAIN select /*+no_rewrite*/ c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2 with rollup) group by c1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |HASH GROUP BY | |7 |57 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_MIN(.c3)]), filter(nil), + group([.c1]), agg_func([T_FUN_MIN(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MIN(t1.c3)]), filter(nil), + group(nil), rollup([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2 with rollup) group by c1; ++------+---------+ +| c1 | min(c3) | ++------+---------+ +| NULL | 1 | +| 1 | 1 | +| 2 | 2 | ++------+---------+ + +EXPLAIN select c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1 with rollup; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |MERGE GROUP BY| |7 |46 | +|1 | SORT | |7 |44 | +|2 | TABLE SCAN |t1 |7 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_MIN(t1.c3)]), filter(nil), + group(nil), rollup([t1.c1]), agg_func([T_FUN_MIN(t1.c3)]) + 1 - output([t1.c1], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c3]), filter(nil), + access([t1.c1], [t1.c3]), partitions(p0) + +select c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1 with rollup; ++------+---------+ +| c1 | min(c3) | ++------+---------+ +| NULL | NULL | +| 1 | 1 | +| 2 | 2 | +| NULL | 1 | ++------+---------+ +EXPLAIN select /*+no_rewrite*/ c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1 with rollup; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE GROUP BY | |7 |51 | +|1 | SUBPLAN SCAN | |7 |49 | +|2 | MERGE GROUP BY| |7 |48 | +|3 | SORT | |7 |46 | +|4 | TABLE SCAN |t1 |7 |38 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.c1], [T_FUN_MIN(.c3)]), filter(nil), + group(nil), rollup([.c1]), agg_func([T_FUN_MIN(.c3)]) + 1 - output([.c1], [.c3]), filter(nil), + access([.c1], [.c3]) + 2 - output([t1.c1], [t1.c2], [T_FUN_MIN(t1.c3)]), filter(nil), + group([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +select /*+no_rewrite*/ c1, min(c3) from (select c1, c2, min(c3) c3 from t1 group by c1,c2) group by c1 with rollup; ++------+---------+ +| c1 | min(c3) | ++------+---------+ +| NULL | NULL | +| 1 | 1 | +| 2 | 2 | +| NULL | 1 | ++------+---------+ + +EXPLAIN select min(minc3) +from ((select min(c3) minc3 from t1 group by c1,c2 with rollup) + union all + (select min(c3) minc3 from t2 group by c1,c2) + union all + (select min(c3) minc3 from t3 group by c1,c2)); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SCALAR GROUP BY | |1 |135 | +|1 | SUBPLAN SCAN | |19 |131 | +|2 | UNION ALL | |19 |128 | +|3 | MERGE GROUP BY| |7 |48 | +|4 | SORT | |7 |46 | +|5 | TABLE SCAN |t1 |7 |38 | +|6 | TABLE SCAN |t2 |7 |38 | +|7 | TABLE SCAN |t3 |5 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.minc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.minc3)]) + 1 - output([.minc3]), filter(nil), + access([.minc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_MIN(t1.c3)]), filter(nil), + group(nil), rollup([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 4 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 5 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), + access([t1.c3], [t1.c1], [t1.c2]), partitions(p0) + 6 - output([t2.c3]), filter(nil), + access([t2.c3]), partitions(p0) + 7 - output([t3.c3]), filter(nil), + access([t3.c3]), partitions(p0) + +select min(minc3) +from ((select min(c3) minc3 from t1 group by c1,c2 with rollup) + union all + (select min(c3) minc3 from t2 group by c1,c2) + union all + (select min(c3) minc3 from t3 group by c1,c2)); ++------------+ +| min(minc3) | ++------------+ +| 1 | ++------------+ +EXPLAIN select /*+no_rewrite*/ min(minc3) +from ((select min(c3) minc3 from t1 group by c1,c2 with rollup) + union all + (select min(c3) minc3 from t2 group by c1,c2) + union all + (select min(c3) minc3 from t3 group by c1,c2)); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------ +|0 |SCALAR GROUP BY | |1 |149 | +|1 | SUBPLAN SCAN | |19 |145 | +|2 | UNION ALL | |19 |143 | +|3 | MERGE GROUP BY| |7 |48 | +|4 | SORT | |7 |46 | +|5 | TABLE SCAN |t1 |7 |38 | +|6 | HASH GROUP BY | |7 |46 | +|7 | TABLE SCAN |t2 |7 |38 | +|8 | HASH GROUP BY | |5 |43 | +|9 | TABLE SCAN |t3 |5 |37 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(.minc3)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(.minc3)]) + 1 - output([.minc3]), filter(nil), + access([.minc3]) + 2 - output([UNION([1])]), filter(nil) + 3 - output([T_FUN_MIN(t1.c3)]), filter(nil), + group(nil), rollup([t1.c1], [t1.c2]), agg_func([T_FUN_MIN(t1.c3)]) + 4 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 5 - output([t1.c3], [t1.c1], [t1.c2]), filter(nil), + access([t1.c3], [t1.c1], [t1.c2]), partitions(p0) + 6 - output([T_FUN_MIN(t2.c3)]), filter(nil), + group([t2.c1], [t2.c2]), agg_func([T_FUN_MIN(t2.c3)]) + 7 - output([t2.c3], [t2.c1], [t2.c2]), filter(nil), + access([t2.c3], [t2.c1], [t2.c2]), partitions(p0) + 8 - output([T_FUN_MIN(t3.c3)]), filter(nil), + group([t3.c1], [t3.c2]), agg_func([T_FUN_MIN(t3.c3)]) + 9 - output([t3.c3], [t3.c1], [t3.c2]), filter(nil), + access([t3.c3], [t3.c1], [t3.c2]), partitions(p0) + +select /*+no_rewrite*/ min(minc3) +from ((select min(c3) minc3 from t1 group by c1,c2 with rollup) + union all + (select min(c3) minc3 from t2 group by c1,c2) + union all + (select min(c3) minc3 from t3 group by c1,c2)); ++------------+ +| min(minc3) | ++------------+ +| 1 | ++------------+ + +##消除冗余distinct +EXPLAIN select distinct c1, c2 from t1 +union all +select distinct c1, c2 from t2; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |UNION ALL | |14 |96 | +|1 | HASH DISTINCT| |7 |45 | +|2 | TABLE SCAN |t1 |7 |38 | +|3 | HASH DISTINCT| |7 |45 | +|4 | TABLE SCAN |t2 |7 |38 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + distinct([t1.c1], [t1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + distinct([t2.c1], [t2.c2]) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select distinct c1, c2 from t1 +union all +select distinct c1, c2 from t2; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 2 | +| 2 | 1 | +| NULL | NULL | +| 1 | 1 | +| 2 | 2 | +| 2 | 1 | +| NULL | NULL | ++------+------+ + +EXPLAIN select distinct c1, c2 from t1 +union +select distinct c1, c2 from t2; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |HASH UNION DISTINCT| |14 |90 | +|1 | TABLE SCAN |t1 |7 |38 | +|2 | TABLE SCAN |t2 |7 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select distinct c1, c2 from t1 +union +select distinct c1, c2 from t2; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 2 | +| 2 | 1 | +| NULL | NULL | +| 2 | 2 | ++------+------+ + +EXPLAIN select distinct c1, c2 from t1 +intersect +select distinct c1, c2 from t2; +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |HASH INTERSECT DISTINCT| |7 |89 | +|1 | TABLE SCAN |t1 |7 |38 | +|2 | TABLE SCAN |t2 |7 |38 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([INTERSECT([1])], [INTERSECT([2])]), filter(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select distinct c1, c2 from t1 +intersect +select distinct c1, c2 from t2; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 2 | 1 | +| NULL | NULL | ++------+------+ + +EXPLAIN select distinct c1, c2 from t1 +except +select distinct c1, c2 from t2; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |HASH EXCEPT DISTINCT| |7 |89 | +|1 | TABLE SCAN |t1 |7 |38 | +|2 | TABLE SCAN |t2 |7 |38 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([EXCEPT([1])], [EXCEPT([2])]), filter(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select distinct c1, c2 from t1 +except +select distinct c1, c2 from t2; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 2 | ++------+------+ + +EXPLAIN select distinct c1, c2 from t1 +union +(select distinct c1, c2 from t2 +union all +select distinct c1, c2 from t3); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |HASH UNION DISTINCT| |19 |137 | +|1 | TABLE SCAN |t1 |7 |38 | +|2 | UNION ALL | |12 |79 | +|3 | TABLE SCAN |t2 |7 |38 | +|4 | TABLE SCAN |t3 |5 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([UNION([1])], [UNION([2])]), filter(nil) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select distinct c1, c2 from t1 +union +(select distinct c1, c2 from t2 +union all +select distinct c1, c2 from t3); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 2 | +| 2 | 1 | +| NULL | NULL | +| 2 | 2 | ++------+------+ + +EXPLAIN select distinct c1, c2 from t1 +union +(select distinct c1, c2 from t2 +union +select distinct c1, c2 from t3); +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------- +|0 |HASH DISTINCT| |19 |140 | +|1 | UNION ALL | |19 |119 | +|2 | TABLE SCAN |t1 |7 |38 | +|3 | TABLE SCAN |t2 |7 |38 | +|4 | TABLE SCAN |t3 |5 |37 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil), + distinct([UNION([1])], [UNION([2])]) + 1 - output([UNION([1])], [UNION([2])]), filter(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 4 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select distinct c1, c2 from t1 +union +(select distinct c1, c2 from t2 +union +select distinct c1, c2 from t3); ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 2 | +| 2 | 1 | +| NULL | NULL | +| 2 | 2 | ++------+------+ + +##消除冗余distinct expect no rewrite +EXPLAIN select distinct c1, c2 from t1 +union +select distinct c1, c2 from t2 limit 2; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |LIMIT | |2 |82 | +|1 | HASH UNION DISTINCT| |2 |82 | +|2 | LIMIT | |2 |39 | +|3 | HASH DISTINCT | |2 |39 | +|4 | TABLE SCAN |t1 |2 |37 | +|5 | LIMIT | |2 |39 | +|6 | HASH DISTINCT | |2 |39 | +|7 | TABLE SCAN |t2 |2 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil), limit(2), offset(nil) + 1 - output([UNION([1])], [UNION([2])]), filter(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), limit(2), offset(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + distinct([t1.c1], [t1.c2]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1], [t2.c2]), filter(nil), limit(2), offset(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + distinct([t2.c1], [t2.c2]) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select distinct c1, c2 from t1 +union +select distinct c1, c2 from t2 limit 2; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 2 | ++------+------+ + +EXPLAIN select distinct c1, c2 from t1 limit 2 +union +select distinct c1, c2 from t2; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +-------------------------------------------- +|0 |HASH UNION DISTINCT| |9 |86 | +|1 | LIMIT | |2 |39 | +|2 | HASH DISTINCT | |2 |39 | +|3 | TABLE SCAN |t1 |2 |37 | +|4 | TABLE SCAN |t2 |7 |38 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), limit(2), offset(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + distinct([t1.c1], [t1.c2]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select distinct c1, c2 from t1 limit 2 +union +select distinct c1, c2 from t2; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 1 | +| 1 | 2 | +| 2 | 2 | +| 2 | 1 | +| NULL | NULL | ++------+------+ + +drop table t1,t2,t3,tpart1,tpart2,t4,t5,t6; +set autocommit = 0; + +************************消除冗余group by/distinct end********** + +*********************push down outer join on condition begin************** + +set autocommit = 1; + +drop table if exists t1,t2,t3,t4,t5,tp1,tp2; +create table t1 (c1 int, c2 int); +create table t2 (c1 int, c2 int); +create table t3 (c1 int, c2 int); +create table t4 (c1 int, c2 int); +create table t5 (c1 int, c2 int); +create table tp1 (c1 int, c2 int) partition by hash(c1) partitions 2; +create table tp2 (c1 int, c2 int) partition by hash(c1) partitions 2; +## basic table +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |127 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t1 |4 |37 | +|3 | SUBPLAN SCAN |VIEW1|4 |84 | +|4 | MERGE SEMI JOIN| |4 |83 | +|5 | SORT | |4 |41 | +|6 | TABLE SCAN |t2 |4 |37 | +|7 | SORT | |4 |40 | +|8 | TABLE SCAN |t3 |4 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t2.c1], [VIEW1.t2.c2]) + 4 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 8 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| NULL | NULL | NULL | NULL | +| 1 | 1 | 1 | 1 | +| 2 | 2 | NULL | NULL | +| 3 | 3 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3); +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 ta left join t1 tb on ta.c1 = tb.c1 and tb.c1 in (select c2 from t3); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |127 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |ta |4 |37 | +|3 | SUBPLAN SCAN |VIEW1|4 |84 | +|4 | MERGE SEMI JOIN| |4 |83 | +|5 | SORT | |4 |41 | +|6 | TABLE SCAN |tb |4 |37 | +|7 | SORT | |4 |40 | +|8 | TABLE SCAN |t3 |4 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([ta.c1], [ta.c2], [VIEW1.tb.c1], [VIEW1.tb.c2]), filter(nil), + equal_conds([ta.c1 = VIEW1.tb.c1]), other_conds(nil) + 1 - output([ta.c1], [ta.c2]), filter(nil), sort_keys([ta.c1, ASC]) + 2 - output([ta.c1], [ta.c2]), filter(nil), + access([ta.c1], [ta.c2]), partitions(p0) + 3 - output([VIEW1.tb.c1], [VIEW1.tb.c2]), filter(nil), + access([VIEW1.tb.c1], [VIEW1.tb.c2]) + 4 - output([tb.c1], [tb.c2]), filter(nil), + equal_conds([tb.c1 = t3.c2]), other_conds(nil) + 5 - output([tb.c1], [tb.c2]), filter(nil), sort_keys([tb.c1, ASC]) + 6 - output([tb.c1], [tb.c2]), filter(nil), + access([tb.c1], [tb.c2]), partitions(p0) + 7 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 8 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from t1 ta left join t1 tb on ta.c1 = tb.c1 and tb.c1 in (select c2 from t3); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| NULL | NULL | NULL | NULL | +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 3 | 3 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 ta left join t1 tb on ta.c1 = tb.c1 and tb.c1 in (select c2 from t3); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 ta left join t1 tb on ta.c1 = tb.c1 and tb.c1 in (select c2 from t3); +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3), t4; +Query Plan +==================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |16 |177 | +|1 | MERGE OUTER JOIN | |4 |127 | +|2 | SORT | |4 |41 | +|3 | TABLE SCAN |t1 |4 |37 | +|4 | SUBPLAN SCAN |VIEW1|4 |84 | +|5 | MERGE SEMI JOIN | |4 |83 | +|6 | SORT | |4 |41 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | SORT | |4 |40 | +|9 | TABLE SCAN |t3 |4 |37 | +|10| MATERIAL | |4 |39 | +|11| TABLE SCAN |t4 |4 |37 | +==================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t4.c1], [t4.c2]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 9 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 10 - output([t4.c1], [t4.c2]), filter(nil) + 11 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3), t4; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | 2 | 2 | +| NULL | NULL | NULL | NULL | 3 | 3 | +| NULL | NULL | NULL | NULL | 4 | 4 | +| NULL | NULL | NULL | NULL | NULL | NULL | +| 1 | 1 | 1 | 1 | 2 | 2 | +| 1 | 1 | 1 | 1 | 3 | 3 | +| 1 | 1 | 1 | 1 | 4 | 4 | +| 1 | 1 | 1 | 1 | NULL | NULL | +| 2 | 2 | NULL | NULL | 2 | 2 | +| 2 | 2 | NULL | NULL | 3 | 3 | +| 2 | 2 | NULL | NULL | 4 | 4 | +| 2 | 2 | NULL | NULL | NULL | NULL | +| 3 | 3 | NULL | NULL | 2 | 2 | +| 3 | 3 | NULL | NULL | 3 | 3 | +| 3 | 3 | NULL | NULL | 4 | 4 | +| 3 | 3 | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3), t4; +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3), t4; +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t4) left join t3 on t1.c1 = t3.c1; +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |171 | +|1 | MERGE OUTER JOIN | |4 |127 | +|2 | SORT | |4 |41 | +|3 | TABLE SCAN |t1 |4 |37 | +|4 | SUBPLAN SCAN |VIEW1|4 |84 | +|5 | MERGE SEMI JOIN| |4 |83 | +|6 | SORT | |4 |41 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | SORT | |4 |40 | +|9 | TABLE SCAN |t4 |4 |37 | +|10| SORT | |4 |41 | +|11| TABLE SCAN |t3 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 9 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 10 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 11 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t4) left join t3 on t1.c1 = t3.c1; ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | NULL | NULL | +| 1 | 1 | NULL | NULL | 1 | 1 | +| 2 | 2 | NULL | NULL | 2 | 2 | +| 3 | 3 | 3 | 3 | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t4) left join t3 on t1.c1 = t3.c1; +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t4) left join t3 on t1.c1 = t3.c1; +ERROR 0A000: Not supported feature or function + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 and (t1.c1,t2.c1) in (select c1,c2 from t3); +ERROR 0A000: Not supported feature or function +select * from t1 left join t2 on t1.c1 = t2.c1 and (t1.c1,t2.c1) in (select c1,c2 from t3); +ERROR 0A000: Not supported feature or function +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and (t1.c1,t2.c1) in (select c1,c2 from t3); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 and (t1.c1,t2.c1) in (select c1,c2 from t3); +ERROR 0A000: Not supported feature or function + +EXPLAIN select * from tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c2 from t3); +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |PX COORDINATOR | |2 |120 | +|1 | EXCHANGE OUT DISTR |:EX10001|2 |119 | +|2 | MERGE OUTER JOIN | |2 |119 | +|3 | SORT | |2 |38 | +|4 | PX PARTITION ITERATOR | |2 |37 | +|5 | TABLE SCAN |tp1 |2 |37 | +|6 | SUBPLAN SCAN |VIEW1 |2 |80 | +|7 | MERGE SEMI JOIN | |2 |80 | +|8 | SORT | |2 |38 | +|9 | PX PARTITION ITERATOR | |2 |37 | +|10| TABLE SCAN |tp2 |2 |37 | +|11| SORT | |4 |40 | +|12| EXCHANGE IN DISTR | |4 |37 | +|13| EXCHANGE OUT DISTR (PKEY)|:EX10000|4 |37 | +|14| TABLE SCAN |t3 |4 |37 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([tp1.c1], [tp1.c2], [VIEW1.tp2.c1], [VIEW1.tp2.c2]), filter(nil) + 1 - output([tp1.c1], [tp1.c2], [VIEW1.tp2.c1], [VIEW1.tp2.c2]), filter(nil), dop=1 + 2 - output([tp1.c1], [tp1.c2], [VIEW1.tp2.c1], [VIEW1.tp2.c2]), filter(nil), + equal_conds([tp1.c1 = VIEW1.tp2.c1]), other_conds(nil) + 3 - output([tp1.c1], [tp1.c2]), filter(nil), sort_keys([tp1.c1, ASC]), local merge sort + 4 - output([tp1.c1], [tp1.c2]), filter(nil) + 5 - output([tp1.c1], [tp1.c2]), filter(nil), + access([tp1.c1], [tp1.c2]), partitions(p[0-1]) + 6 - output([VIEW1.tp2.c1], [VIEW1.tp2.c2]), filter(nil), + access([VIEW1.tp2.c1], [VIEW1.tp2.c2]) + 7 - output([tp2.c1], [tp2.c2]), filter(nil), + equal_conds([tp2.c1 = t3.c2]), other_conds(nil) + 8 - output([tp2.c1], [tp2.c2]), filter(nil), sort_keys([tp2.c1, ASC]), local merge sort + 9 - output([tp2.c1], [tp2.c2]), filter(nil) + 10 - output([tp2.c1], [tp2.c2]), filter(nil), + access([tp2.c1], [tp2.c2]), partitions(p[0-1]) + 11 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 12 - output([t3.c2]), filter(nil) + 13 - (#keys=1, [t3.c2]), output([t3.c2]), filter(nil), is_single, dop=1 + 14 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c2 from t3); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 3 | 3 | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c2 from t3); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c2 from t3); +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join tp1 on t1.c1 = tp1.c1 and tp1.c1 in (select c2 from tp2); +Query Plan +============================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------------------- +|0 |HASH RIGHT OUTER JOIN | |4 |120 | +|1 | PX COORDINATOR | |2 |78 | +|2 | EXCHANGE OUT DISTR |:EX10001|2 |78 | +|3 | SUBPLAN SCAN |VIEW1 |2 |78 | +|4 | MERGE SEMI JOIN | |2 |78 | +|5 | SORT | |2 |38 | +|6 | PX PARTITION ITERATOR | |2 |37 | +|7 | TABLE SCAN |tp1 |2 |37 | +|8 | SORT | |2 |38 | +|9 | EXCHANGE IN DISTR | |2 |37 | +|10| EXCHANGE OUT DISTR (PKEY)|:EX10000|2 |37 | +|11| PX PARTITION ITERATOR | |2 |37 | +|12| TABLE SCAN |tp2 |2 |37 | +|13| TABLE SCAN |t1 |4 |37 | +============================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [VIEW1.tp1.c1], [VIEW1.tp1.c2]), filter(nil), + equal_conds([t1.c1 = VIEW1.tp1.c1]), other_conds(nil) + 1 - output([VIEW1.tp1.c1], [VIEW1.tp1.c2]), filter(nil) + 2 - output([VIEW1.tp1.c1], [VIEW1.tp1.c2]), filter(nil), dop=1 + 3 - output([VIEW1.tp1.c1], [VIEW1.tp1.c2]), filter(nil), + access([VIEW1.tp1.c1], [VIEW1.tp1.c2]) + 4 - output([tp1.c1], [tp1.c2]), filter(nil), + equal_conds([tp1.c1 = tp2.c2]), other_conds(nil) + 5 - output([tp1.c1], [tp1.c2]), filter(nil), sort_keys([tp1.c1, ASC]), local merge sort + 6 - output([tp1.c1], [tp1.c2]), filter(nil) + 7 - output([tp1.c1], [tp1.c2]), filter(nil), + access([tp1.c1], [tp1.c2]), partitions(p[0-1]) + 8 - output([tp2.c2]), filter(nil), sort_keys([tp2.c2, ASC]) + 9 - output([tp2.c2]), filter(nil) + 10 - (#keys=1, [tp2.c2]), output([tp2.c2]), filter(nil), dop=1 + 11 - output([tp2.c2]), filter(nil) + 12 - output([tp2.c2]), filter(nil), + access([tp2.c2]), partitions(p[0-1]) + 13 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join tp1 on t1.c1 = tp1.c1 and tp1.c1 in (select c2 from tp2); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| 1 | 1 | 1 | 1 | +| 2 | 2 | 2 | 2 | +| 3 | 3 | 3 | 3 | +| NULL | NULL | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join tp1 on t1.c1 = tp1.c1 and tp1.c1 in (select c2 from tp2); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join tp1 on t1.c1 = tp1.c1 and tp1.c1 in (select c2 from tp2); +ERROR 0A000: Not supported feature or function + +## generate table +EXPLAIN select * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------ +|0 |HASH RIGHT OUTER JOIN | |4 |117 | +|1 | SUBPLAN SCAN |VIEW2|1 |79 | +|2 | HASH RIGHT SEMI JOIN| |1 |79 | +|3 | TABLE SCAN |t3 |4 |37 | +|4 | TABLE SCAN |t2 |4 |37 | +|5 | TABLE SCAN |t1 |4 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [VIEW2.VIEW1.a], [VIEW2.VIEW1.b]), filter(nil), + equal_conds([t1.c1 = VIEW2.VIEW1.a]), other_conds(nil) + 1 - output([VIEW2.VIEW1.a], [VIEW2.VIEW1.b]), filter(nil), + access([VIEW2.VIEW1.a], [VIEW2.VIEW1.b]) + 2 - output([t2.c1 + t2.c2], [t2.c2]), filter(nil), + equal_conds([t2.c1 + t2.c2 = t3.c2]), other_conds(nil) + 3 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 4 - output([t2.c2], [t2.c1 + t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 5 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); ++------+------+------+------+ +| c1 | c2 | a | b | ++------+------+------+------+ +| 1 | 1 | NULL | NULL | +| 2 | 2 | 2 | 1 | +| 3 | 3 | NULL | NULL | +| NULL | NULL | NULL | NULL | ++------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); +ERROR 0A000: Not supported feature or function +EXPLAIN select t1.*, v.b, v.a, v.c from t1 left join (select c1 a,c2 b, c1 + c2 c from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |127 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t1 |4 |37 | +|3 | SUBPLAN SCAN |VIEW2|4 |84 | +|4 | MERGE SEMI JOIN| |4 |83 | +|5 | SORT | |4 |41 | +|6 | TABLE SCAN |t2 |4 |37 | +|7 | SORT | |4 |40 | +|8 | TABLE SCAN |t3 |4 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [VIEW2.VIEW1.b], [VIEW2.VIEW1.a], [VIEW2.VIEW1.c]), filter(nil), + equal_conds([t1.c1 = VIEW2.VIEW1.a]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([VIEW2.VIEW1.a], [VIEW2.VIEW1.b], [VIEW2.VIEW1.c]), filter(nil), + access([VIEW2.VIEW1.a], [VIEW2.VIEW1.b], [VIEW2.VIEW1.c]) + 4 - output([t2.c1], [t2.c2], [t2.c1 + t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 8 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select t1.*, v.b, v.a, v.c from t1 left join (select c1 a,c2 b, c1 + c2 c from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); ++------+------+------+------+------+ +| c1 | c2 | b | a | c | ++------+------+------+------+------+ +| NULL | NULL | NULL | NULL | NULL | +| 1 | 1 | 1 | 1 | 2 | +| 2 | 2 | NULL | NULL | NULL | +| 3 | 3 | NULL | NULL | NULL | ++------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ t1.*, v.b, v.a, v.c from t1 left join (select c1 a,c2 b, c1 + c2 c from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ t1.*, v.b, v.a, v.c from t1 left join (select c1 a,c2 b, c1 + c2 c from t2) v on t1.c1 = v.a and v.a in (select c2 from t3); +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t4) left join t3 on t1.c1 = t3.c1; +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |HASH RIGHT OUTER JOIN | |4 |163 | +|1 | TABLE SCAN |t3 |4 |37 | +|2 | HASH RIGHT OUTER JOIN | |4 |117 | +|3 | SUBPLAN SCAN |VIEW2|1 |79 | +|4 | HASH RIGHT SEMI JOIN| |1 |79 | +|5 | TABLE SCAN |t4 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +|7 | TABLE SCAN |t1 |4 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [VIEW2.VIEW1.a], [VIEW2.VIEW1.b], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [VIEW2.VIEW1.a], [VIEW2.VIEW1.b]), filter(nil), + equal_conds([t1.c1 = VIEW2.VIEW1.a]), other_conds(nil) + 3 - output([VIEW2.VIEW1.a], [VIEW2.VIEW1.b]), filter(nil), + access([VIEW2.VIEW1.a], [VIEW2.VIEW1.b]) + 4 - output([t2.c1 + t2.c2], [t2.c2]), filter(nil), + equal_conds([t2.c1 + t2.c2 = t4.c2]), other_conds(nil) + 5 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 6 - output([t2.c2], [t2.c1 + t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t4) left join t3 on t1.c1 = t3.c1; ++------+------+------+------+------+------+ +| c1 | c2 | a | b | c1 | c2 | ++------+------+------+------+------+------+ +| 1 | 1 | NULL | NULL | 1 | 1 | +| 2 | 2 | 2 | 1 | 2 | 2 | +| 3 | 3 | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t4) left join t3 on t1.c1 = t3.c1; +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join (select c1+c2 a,c2 b from t2) v on t1.c1 = v.a and v.a in (select c2 from t4) left join t3 on t1.c1 = t3.c1; +ERROR 0A000: Not supported feature or function + +## join table +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |171 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t3 |4 |37 | +|3 | SUBPLAN SCAN |VIEW1|4 |127 | +|4 | MERGE JOIN | |4 |127 | +|5 | MERGE SEMI JOIN| |4 |83 | +|6 | SORT | |4 |41 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | SORT | |4 |40 | +|9 | TABLE SCAN |t4 |4 |37 | +|10| SORT | |4 |41 | +|11| TABLE SCAN |t1 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 2 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 9 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 10 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 11 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4); ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | 1 | 1 | +| NULL | NULL | NULL | NULL | 2 | 2 | +| NULL | NULL | NULL | NULL | 4 | 4 | ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4); +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4); +Query Plan +============================================ +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |171 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t3 |4 |37 | +|3 | SUBPLAN SCAN |VIEW1|4 |127 | +|4 | MERGE OUTER JOIN| |4 |127 | +|5 | MERGE SEMI JOIN| |4 |83 | +|6 | SORT | |4 |41 | +|7 | TABLE SCAN |t1 |4 |37 | +|8 | SORT | |4 |40 | +|9 | TABLE SCAN |t4 |4 |37 | +|10| SORT | |4 |41 | +|11| TABLE SCAN |t2 |4 |37 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 2 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]) + 4 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 5 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t4.c2]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 7 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 8 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 9 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 10 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 11 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4); ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | 1 | 1 | +| 2 | 2 | NULL | NULL | 2 | 2 | +| NULL | NULL | NULL | NULL | 4 | 4 | ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4); +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4); +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |215 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t3 |4 |37 | +|3 | MERGE OUTER JOIN | |4 |171 | +|4 | SUBPLAN SCAN |VIEW1|4 |127 | +|5 | MERGE JOIN | |4 |127 | +|6 | MERGE SEMI JOIN| |4 |83 | +|7 | SORT | |4 |41 | +|8 | TABLE SCAN |t2 |4 |37 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t4 |4 |37 | +|11| SORT | |4 |41 | +|12| TABLE SCAN |t1 |4 |37 | +|13| SORT | |4 |41 | +|14| TABLE SCAN |t5 |4 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 2 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t5.c1]), other_conds(nil) + 4 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 10 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 11 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 12 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 13 - output([t5.c1], [t5.c2]), filter(nil), sort_keys([t5.c1, ASC]) + 14 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | 1 | 1 | NULL | NULL | +| NULL | NULL | NULL | NULL | 2 | 2 | NULL | NULL | +| NULL | NULL | NULL | NULL | 4 | 4 | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |215 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t3 |4 |37 | +|3 | MERGE OUTER JOIN | |4 |171 | +|4 | SUBPLAN SCAN |VIEW1|4 |127 | +|5 | MERGE OUTER JOIN| |4 |127 | +|6 | MERGE SEMI JOIN| |4 |83 | +|7 | SORT | |4 |41 | +|8 | TABLE SCAN |t1 |4 |37 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t4 |4 |37 | +|11| SORT | |4 |41 | +|12| TABLE SCAN |t2 |4 |37 | +|13| SORT | |4 |41 | +|14| TABLE SCAN |t5 |4 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 2 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t5.c1]), other_conds(nil) + 4 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t4.c2]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 10 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 12 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 13 - output([t5.c1], [t5.c2]), filter(nil), sort_keys([t5.c1, ASC]) + 14 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | 1 | 1 | NULL | NULL | +| 2 | 2 | NULL | NULL | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | 4 | 4 | NULL | NULL | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) left join t5 on t1.c1 = t5.c1; +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |215 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t5 |4 |37 | +|3 | MERGE JOIN | |4 |171 | +|4 | SUBPLAN SCAN |VIEW1|4 |127 | +|5 | MERGE JOIN | |4 |127 | +|6 | MERGE SEMI JOIN| |4 |83 | +|7 | SORT | |4 |41 | +|8 | TABLE SCAN |t2 |4 |37 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t4 |4 |37 | +|11| SORT | |4 |41 | +|12| TABLE SCAN |t1 |4 |37 | +|13| SORT | |4 |41 | +|14| TABLE SCAN |t3 |4 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t5.c1]), other_conds(nil) + 1 - output([t5.c1], [t5.c2]), filter(nil), sort_keys([t5.c1, ASC]) + 2 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 4 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 7 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 9 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 10 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 11 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 12 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 13 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 14 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | 1 | 1 | +| NULL | NULL | NULL | NULL | NULL | NULL | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | 5 | 5 | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; +ERROR 0A000: Not supported feature or function +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE OUTER JOIN | |4 |215 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t5 |4 |37 | +|3 | MERGE JOIN | |4 |171 | +|4 | SUBPLAN SCAN |VIEW1|4 |127 | +|5 | MERGE OUTER JOIN| |4 |127 | +|6 | MERGE SEMI JOIN| |4 |83 | +|7 | SORT | |4 |41 | +|8 | TABLE SCAN |t1 |4 |37 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t4 |4 |37 | +|11| SORT | |4 |41 | +|12| TABLE SCAN |t2 |4 |37 | +|13| SORT | |4 |41 | +|14| TABLE SCAN |t3 |4 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2], [t5.c1], [t5.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t5.c1]), other_conds(nil) + 1 - output([t5.c1], [t5.c2]), filter(nil), sort_keys([t5.c1, ASC]) + 2 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + 3 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 4 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t4.c2]), other_conds(nil) + 7 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 8 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 9 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 10 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 11 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 12 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 13 - output([t3.c1], [t3.c2]), filter(nil), sort_keys([t3.c1, ASC]) + 14 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; ++------+------+------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | NULL | NULL | NULL | NULL | 1 | 1 | +| 2 | 2 | NULL | NULL | 2 | 2 | 2 | 2 | +| NULL | NULL | NULL | NULL | NULL | NULL | 5 | 5 | ++------+------+------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; +ERROR 0A000: Not supported feature or function +select /*+no_rewrite*/ * from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t1.c1 in (select c2 from t4) right join t5 on t1.c1 = t5.c1; +ERROR 0A000: Not supported feature or function + +## stmt has semi/anti join +EXPLAIN select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 not in (select c1 from t4); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |170 | +|1 | MERGE OUTER JOIN | |4 |127 | +|2 | SORT | |4 |40 | +|3 | TABLE SCAN |t1 |4 |37 | +|4 | SUBPLAN SCAN |VIEW1|4 |84 | +|5 | MERGE SEMI JOIN | |4 |83 | +|6 | SORT | |4 |41 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | SORT | |4 |40 | +|9 | TABLE SCAN |t3 |4 |37 | +|10| MATERIAL | |4 |38 | +|11| TABLE SCAN |t4 |4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t2.c2]), filter(nil), + conds([(T_OP_OR, VIEW1.t2.c1 = t4.c1, (T_OP_IS, VIEW1.t2.c1, NULL, 0), (T_OP_IS, t4.c1, NULL, 0))]), nl_params_(nil) + 1 - output([VIEW1.t2.c2], [VIEW1.t2.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 3 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 4 - output([VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 9 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 10 - output([t4.c1]), filter(nil) + 11 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + +select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 not in (select c1 from t4); ++------+ +| c2 | ++------+ ++------+ +EXPLAIN select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 in (select c1 from t4); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN | |4 |169 | +|1 | MERGE SEMI JOIN| |4 |126 | +|2 | MERGE JOIN | |4 |83 | +|3 | SORT | |4 |40 | +|4 | TABLE SCAN |t1 |4 |37 | +|5 | SORT | |4 |41 | +|6 | TABLE SCAN |t2 |4 |37 | +|7 | SORT | |4 |40 | +|8 | TABLE SCAN |t4 |4 |37 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t3 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + equal_conds([t2.c1 = t4.c1]), other_conds(nil) + 2 - output([t2.c2], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t2.c2], [t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 8 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 9 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 10 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 in (select c1 from t4); ++------+ +| c2 | ++------+ ++------+ + +EXPLAIN select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t2.c1 not in (select c1 from t5); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |213 | +|1 | MERGE OUTER JOIN | |4 |169 | +|2 | SORT | |4 |40 | +|3 | TABLE SCAN |t3 |4 |37 | +|4 | SUBPLAN SCAN |VIEW1|4 |127 | +|5 | MERGE SEMI JOIN | |4 |126 | +|6 | MERGE JOIN | |4 |83 | +|7 | SORT | |4 |40 | +|8 | TABLE SCAN |t1 |4 |37 | +|9 | SORT | |4 |41 | +|10| TABLE SCAN |t2 |4 |37 | +|11| SORT | |4 |40 | +|12| TABLE SCAN |t4 |4 |37 | +|13| MATERIAL | |4 |38 | +|14| TABLE SCAN |t5 |4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t2.c2]), filter(nil), + conds([(T_OP_OR, VIEW1.t2.c1 = t5.c1, (T_OP_IS, VIEW1.t2.c1, NULL, 0), (T_OP_IS, t5.c1, NULL, 0))]), nl_params_(nil) + 1 - output([VIEW1.t2.c2], [VIEW1.t2.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 2 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([VIEW1.t1.c1], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t1.c1], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 6 - output([t1.c1], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 11 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 12 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 13 - output([t5.c1]), filter(nil) + 14 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + +select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t2.c1 not in (select c1 from t5); ++------+ +| c2 | ++------+ ++------+ +EXPLAIN select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t2.c1 in (select c1 from t5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN | |4 |211 | +|1 | MERGE SEMI JOIN| |4 |169 | +|2 | MERGE JOIN | |4 |126 | +|3 | MERGE JOIN | |4 |82 | +|4 | SORT | |4 |40 | +|5 | TABLE SCAN |t3 |4 |37 | +|6 | SORT | |4 |40 | +|7 | TABLE SCAN |t1 |4 |37 | +|8 | SORT | |4 |41 | +|9 | TABLE SCAN |t2 |4 |37 | +|10| SORT | |4 |40 | +|11| TABLE SCAN |t5 |4 |37 | +|12| SORT | |4 |40 | +|13| TABLE SCAN |t4 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + equal_conds([t2.c1 = t5.c1]), other_conds(nil) + 2 - output([t2.c2], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c2], [t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 10 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 11 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 12 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 13 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + +select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t2.c1 in (select c1 from t5); ++------+ +| c2 | ++------+ ++------+ +EXPLAIN select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t1.c1 not in (select c1 from t5); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |213 | +|1 | MERGE OUTER JOIN | |4 |169 | +|2 | SORT | |4 |40 | +|3 | TABLE SCAN |t3 |4 |37 | +|4 | SUBPLAN SCAN |VIEW1|4 |127 | +|5 | MERGE SEMI JOIN | |4 |126 | +|6 | MERGE JOIN | |4 |83 | +|7 | SORT | |4 |40 | +|8 | TABLE SCAN |t1 |4 |37 | +|9 | SORT | |4 |41 | +|10| TABLE SCAN |t2 |4 |37 | +|11| SORT | |4 |40 | +|12| TABLE SCAN |t4 |4 |37 | +|13| MATERIAL | |4 |38 | +|14| TABLE SCAN |t5 |4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t2.c2]), filter(nil), + conds([(T_OP_OR, VIEW1.t1.c1 = t5.c1, (T_OP_IS, VIEW1.t1.c1, NULL, 0), (T_OP_IS, t5.c1, NULL, 0))]), nl_params_(nil) + 1 - output([VIEW1.t2.c2], [VIEW1.t1.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 2 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([VIEW1.t1.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t2.c2]) + 5 - output([t1.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 6 - output([t1.c1], [t2.c2], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c2], [t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 11 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 12 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 13 - output([t5.c1]), filter(nil) + 14 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + +select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t1.c1 not in (select c1 from t5); ++------+ +| c2 | ++------+ ++------+ +EXPLAIN select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t1.c1 in (select c1 from t5); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |MERGE SEMI JOIN | |4 |211 | +|1 | MERGE SEMI JOIN| |4 |169 | +|2 | MERGE JOIN | |4 |126 | +|3 | MERGE JOIN | |4 |82 | +|4 | SORT | |4 |40 | +|5 | TABLE SCAN |t3 |4 |37 | +|6 | SORT | |4 |40 | +|7 | TABLE SCAN |t1 |4 |37 | +|8 | SORT | |4 |41 | +|9 | TABLE SCAN |t2 |4 |37 | +|10| SORT | |4 |40 | +|11| TABLE SCAN |t5 |4 |37 | +|12| SORT | |4 |40 | +|13| TABLE SCAN |t4 |4 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 1 - output([t2.c2], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t5.c1]), other_conds(nil) + 2 - output([t2.c2], [t2.c1], [t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 4 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c2], [t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 9 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 10 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 11 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 12 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 13 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + +select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where t1.c1 in (select c1 from t5); ++------+ +| c2 | ++------+ ++------+ +EXPLAIN select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where (t1.c1, t2.c1) not in (select c1,c2 from t5); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |215 | +|1 | MERGE OUTER JOIN | |4 |169 | +|2 | SORT | |4 |40 | +|3 | TABLE SCAN |t3 |4 |37 | +|4 | SUBPLAN SCAN |VIEW1|4 |127 | +|5 | MERGE SEMI JOIN | |4 |126 | +|6 | MERGE JOIN | |4 |83 | +|7 | SORT | |4 |40 | +|8 | TABLE SCAN |t1 |4 |37 | +|9 | SORT | |4 |41 | +|10| TABLE SCAN |t2 |4 |37 | +|11| SORT | |4 |40 | +|12| TABLE SCAN |t4 |4 |37 | +|13| MATERIAL | |4 |39 | +|14| TABLE SCAN |t5 |4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t2.c2]), filter(nil), + conds([(T_OP_OR, VIEW1.t1.c1 = t5.c1, (T_OP_IS, VIEW1.t1.c1, NULL, 0), (T_OP_IS, t5.c1, NULL, 0))], [(T_OP_OR, VIEW1.t2.c1 = t5.c2, (T_OP_IS, VIEW1.t2.c1, NULL, 0), (T_OP_IS, t5.c2, NULL, 0))]), nl_params_(nil) + 1 - output([VIEW1.t2.c2], [VIEW1.t1.c1], [VIEW1.t2.c1]), filter(nil), + equal_conds([VIEW1.t1.c1 = t3.c1]), other_conds(nil) + 2 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 4 - output([VIEW1.t1.c1], [VIEW1.t2.c1], [VIEW1.t2.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t2.c1], [VIEW1.t2.c2]) + 5 - output([t1.c1], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 6 - output([t1.c1], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 7 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 8 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 9 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 11 - output([t4.c2]), filter(nil), sort_keys([t4.c2, ASC]) + 12 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 13 - output([t5.c1], [t5.c2]), filter(nil) + 14 - output([t5.c1], [t5.c2]), filter(nil), + access([t5.c1], [t5.c2]), partitions(p0) + +select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where (t1.c1, t2.c1) not in (select c1,c2 from t5); ++------+ +| c2 | ++------+ ++------+ +EXPLAIN select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where (t1.c1, t2.c1) in (select c1,c2 from t5); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |HASH JOIN | |1 |195 | +|1 | HASH SEMI JOIN | |1 |155 | +|2 | HASH JOIN | |1 |115 | +|3 | HASH RIGHT SEMI JOIN| |1 |76 | +|4 | SUBPLAN SCAN |VIEW3|1 |37 | +|5 | TABLE SCAN |t5 |1 |37 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | TABLE SCAN |t4 |4 |37 | +|9 | TABLE SCAN |t3 |4 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t2.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 1 - output([t2.c2], [t1.c1]), filter(nil), + equal_conds([t2.c1 = t4.c2]), other_conds(nil) + 2 - output([t2.c2], [t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 3 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW3.c1]), other_conds(nil) + 4 - output([VIEW3.c1]), filter(nil), + access([VIEW3.c1]) + 5 - output([t5.c1]), filter([t5.c1 = t5.c2]), + access([t5.c1], [t5.c2]), partitions(p0) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 9 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +select t2.c2 from t1 left join t2 on t1.c1 = t2.c1 right join t3 on t1.c1 = t3.c1 and t2.c1 in (select c2 from t4) where (t1.c1, t2.c1) in (select c1,c2 from t5); ++------+ +| c2 | ++------+ ++------+ + +EXPLAIN select * from t4 where c1 not in (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |170 | +|1 | TABLE SCAN |t4 |4 |37 | +|2 | MATERIAL | |4 |127 | +|3 | SUBPLAN SCAN |VIEW3|4 |126 | +|4 | MERGE OUTER JOIN | |4 |126 | +|5 | SORT | |4 |40 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | SUBPLAN SCAN |VIEW1|4 |83 | +|8 | MERGE SEMI JOIN | |4 |82 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t2 |4 |37 | +|11| SORT | |4 |40 | +|12| TABLE SCAN |t3 |4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t4.c1], [t4.c2]), filter(nil), + conds([(T_OP_OR, t4.c1 = VIEW3.c1, (T_OP_IS, t4.c1, NULL, 0), (T_OP_IS, VIEW3.c1, NULL, 0))]), nl_params_(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 2 - output([VIEW3.c1]), filter(nil) + 3 - output([VIEW3.c1]), filter(nil), + access([VIEW3.c1]) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 8 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 12 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from t4 where c1 not in (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t4 where c1 in (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +--------------------------------------------- +|0 |MERGE SEMI JOIN | |4 |170 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t4 |4 |37 | +|3 | SUBPLAN SCAN |VIEW3|4 |126 | +|4 | MERGE OUTER JOIN | |4 |126 | +|5 | SORT | |4 |40 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | SUBPLAN SCAN |VIEW1|4 |83 | +|8 | MERGE SEMI JOIN| |4 |82 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t2 |4 |37 | +|11| SORT | |4 |40 | +|12| TABLE SCAN |t3 |4 |37 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = VIEW3.c1]), other_conds(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 2 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 3 - output([VIEW3.c1]), filter(nil), + access([VIEW3.c1]) + 4 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 8 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 12 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from t4 where c1 in (select t1.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); ++------+------+ +| c1 | c2 | ++------+------+ +| 2 | 2 | +| 3 | 3 | ++------+------+ +EXPLAIN select * from t4 where c1 not in (select t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |170 | +|1 | TABLE SCAN |t4 |4 |37 | +|2 | MATERIAL | |4 |127 | +|3 | SUBPLAN SCAN |VIEW3|4 |126 | +|4 | MERGE OUTER JOIN | |4 |126 | +|5 | SORT | |4 |40 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | SUBPLAN SCAN |VIEW1|4 |83 | +|8 | MERGE SEMI JOIN | |4 |82 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t2 |4 |37 | +|11| SORT | |4 |40 | +|12| TABLE SCAN |t3 |4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t4.c1], [t4.c2]), filter(nil), + conds([(T_OP_OR, t4.c1 = VIEW3.c1, (T_OP_IS, t4.c1, NULL, 0), (T_OP_IS, VIEW3.c1, NULL, 0))]), nl_params_(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 2 - output([VIEW3.c1]), filter(nil) + 3 - output([VIEW3.c1]), filter(nil), + access([VIEW3.c1]) + 4 - output([VIEW1.t2.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 8 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 12 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from t4 where c1 not in (select t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t4 where c1 in (select t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------- +|0 |MERGE SEMI JOIN | |4 |169 | +|1 | SORT | |4 |41 | +|2 | TABLE SCAN |t4 |4 |37 | +|3 | SUBPLAN SCAN |VIEW3|4 |126 | +|4 | MERGE SEMI JOIN| |4 |125 | +|5 | MERGE JOIN | |4 |82 | +|6 | SORT | |4 |40 | +|7 | TABLE SCAN |t1 |4 |37 | +|8 | SORT | |4 |40 | +|9 | TABLE SCAN |t2 |4 |37 | +|10| SORT | |4 |40 | +|11| TABLE SCAN |t3 |4 |37 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = VIEW3.c1]), other_conds(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), sort_keys([t4.c1, ASC]) + 2 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 3 - output([VIEW3.c1]), filter(nil), + access([VIEW3.c1]) + 4 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 5 - output([t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 6 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 7 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 8 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 9 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 10 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 11 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from t4 where c1 in (select t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t4 where c1 not in (select t1.c1 + t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |170 | +|1 | TABLE SCAN |t4 |4 |37 | +|2 | MATERIAL | |4 |127 | +|3 | SUBPLAN SCAN |VIEW3|4 |126 | +|4 | MERGE OUTER JOIN | |4 |126 | +|5 | SORT | |4 |40 | +|6 | TABLE SCAN |t1 |4 |37 | +|7 | SUBPLAN SCAN |VIEW1|4 |83 | +|8 | MERGE SEMI JOIN | |4 |82 | +|9 | SORT | |4 |40 | +|10| TABLE SCAN |t2 |4 |37 | +|11| SORT | |4 |40 | +|12| TABLE SCAN |t3 |4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t4.c1], [t4.c2]), filter(nil), + conds([(T_OP_OR, t4.c1 = VIEW3.t1.c1 + t2.c1, (T_OP_IS, t4.c1, NULL, 0), (T_OP_IS, VIEW3.t1.c1 + t2.c1, NULL, 0))]), nl_params_(nil) + 1 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + 2 - output([VIEW3.t1.c1 + t2.c1]), filter(nil) + 3 - output([VIEW3.t1.c1 + t2.c1]), filter(nil), + access([VIEW3.t1.c1 + t2.c1]) + 4 - output([t1.c1 + VIEW1.t2.c1]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 5 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 6 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 7 - output([VIEW1.t2.c1]), filter(nil), + access([VIEW1.t2.c1]) + 8 - output([t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 9 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 10 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 11 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 12 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from t4 where c1 not in (select t1.c1 + t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); ++------+------+ +| c1 | c2 | ++------+------+ ++------+------+ +EXPLAIN select * from t4 where c1 in (select t1.c1 + t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +---------------------------------------------- +|0 |HASH RIGHT SEMI JOIN| |4 |171 | +|1 | SUBPLAN SCAN |VIEW3|4 |126 | +|2 | MERGE SEMI JOIN | |4 |125 | +|3 | MERGE JOIN | |4 |82 | +|4 | SORT | |4 |40 | +|5 | TABLE SCAN |t1 |4 |37 | +|6 | SORT | |4 |40 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | SORT | |4 |40 | +|9 | TABLE SCAN |t3 |4 |37 | +|10| TABLE SCAN |t4 |4 |37 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t4.c1], [t4.c2]), filter(nil), + equal_conds([t4.c1 = VIEW3.t1.c1 + t2.c1]), other_conds(nil) + 1 - output([VIEW3.t1.c1 + t2.c1]), filter(nil), + access([VIEW3.t1.c1 + t2.c1]) + 2 - output([t1.c1 + t2.c1]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 3 - output([t1.c1], [t2.c1]), filter(nil), + equal_conds([t1.c1 = t2.c1]), other_conds(nil) + 4 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 5 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 6 - output([t2.c1]), filter(nil), sort_keys([t2.c1, ASC]) + 7 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + 8 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 9 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 10 - output([t4.c1], [t4.c2]), filter(nil), + access([t4.c1], [t4.c2]), partitions(p0) + +select * from t4 where c1 in (select t1.c1 + t2.c1 from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3)); ++------+------+ +| c1 | c2 | ++------+------+ +| 2 | 2 | ++------+------+ + +EXPLAIN select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 not in (select t4.c1 from t4 left join t5 on t4.c1 = t5.c1 and t5.c1 in (select c2 from t3)); +Query Plan +=============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +----------------------------------------------- +|0 |NESTED-LOOP ANTI JOIN| |0 |260 | +|1 | MERGE OUTER JOIN | |4 |127 | +|2 | SORT | |4 |41 | +|3 | TABLE SCAN |t1 |4 |37 | +|4 | SUBPLAN SCAN |VIEW2|4 |84 | +|5 | MERGE SEMI JOIN | |4 |83 | +|6 | SORT | |4 |41 | +|7 | TABLE SCAN |t2 |4 |37 | +|8 | SORT | |4 |40 | +|9 | TABLE SCAN |t3 |4 |37 | +|10| MATERIAL | |4 |127 | +|11| SUBPLAN SCAN |VIEW5|4 |126 | +|12| MERGE OUTER JOIN | |4 |126 | +|13| SORT | |4 |40 | +|14| TABLE SCAN |t4 |4 |37 | +|15| SUBPLAN SCAN |VIEW1|4 |83 | +|16| MERGE SEMI JOIN | |4 |82 | +|17| SORT | |4 |40 | +|18| TABLE SCAN |t5 |4 |37 | +|19| SORT | |4 |40 | +|20| TABLE SCAN |t3 |4 |37 | +=============================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [VIEW2.t2.c1], [VIEW2.t2.c2]), filter(nil), + conds([(T_OP_OR, VIEW2.t2.c1 = VIEW5.c1, (T_OP_IS, VIEW2.t2.c1, NULL, 0), (T_OP_IS, VIEW5.c1, NULL, 0))]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [VIEW2.t2.c1], [VIEW2.t2.c2]), filter(nil), + equal_conds([t1.c1 = VIEW2.t2.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([VIEW2.t2.c1], [VIEW2.t2.c2]), filter(nil), + access([VIEW2.t2.c1], [VIEW2.t2.c2]) + 5 - output([t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t3.c2]), other_conds(nil) + 6 - output([t2.c1], [t2.c2]), filter(nil), sort_keys([t2.c1, ASC]) + 7 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 8 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 9 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + 10 - output([VIEW5.c1]), filter(nil) + 11 - output([VIEW5.c1]), filter(nil), + access([VIEW5.c1]) + 12 - output([t4.c1]), filter(nil), + equal_conds([t4.c1 = VIEW1.t5.c1]), other_conds(nil) + 13 - output([t4.c1]), filter(nil), sort_keys([t4.c1, ASC]) + 14 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 15 - output([VIEW1.t5.c1]), filter(nil), + access([VIEW1.t5.c1]) + 16 - output([t5.c1]), filter(nil), + equal_conds([t5.c1 = t3.c2]), other_conds(nil) + 17 - output([t5.c1]), filter(nil), sort_keys([t5.c1, ASC]) + 18 - output([t5.c1]), filter(nil), + access([t5.c1]), partitions(p0) + 19 - output([t3.c2]), filter(nil), sort_keys([t3.c2, ASC]) + 20 - output([t3.c2]), filter(nil), + access([t3.c2]), partitions(p0) + +select * from t1 left join t2 on t1.c1 = t2.c1 and t2.c1 in (select c2 from t3) where t2.c1 not in (select t4.c1 from t4 left join t5 on t4.c1 = t5.c1 and t5.c1 in (select c2 from t3)); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ ++------+------+------+------+ + +## update outer join +explain update t1 left join t2 on t1.c1 = t2.c1 and t2.c2 in (select c1 from t3) set t2.c2 = 10; +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |4 |131 | +|1 | HASH OUTER JOIN | |4 |127 | +|2 | TABLE SCAN |t1 |4 |37 | +|3 | SUBPLAN SCAN |VIEW1|4 |82 | +|4 | HASH RIGHT SEMI JOIN| |4 |82 | +|5 | TABLE SCAN |t3 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2: ({t2: (VIEW1.t2.__pk_increment, VIEW1.t2.c1, VIEW1.t2.c2)}), hash_distinct}]), + update([VIEW1.t2.c2=?]) + 1 - output([VIEW1.t2.__pk_increment], [VIEW1.t2.c1], [VIEW1.t2.c2], [?]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([VIEW1.t2.c1], [VIEW1.t2.c2], [VIEW1.t2.__pk_increment]), filter(nil), + access([VIEW1.t2.c1], [VIEW1.t2.c2], [VIEW1.t2.__pk_increment]) + 4 - output([t2.c1], [t2.c2], [t2.__pk_increment]), filter(nil), + equal_conds([t2.c2 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.__pk_increment]), filter(nil), + access([t2.c1], [t2.c2], [t2.__pk_increment]), partitions(p0) + +EXPLAIN update t1 left join t2 on t1.c1 = t2.c1 and t2.c2 in (select c1 from t3) set t2.c2 = 10; +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |UPDATE | |4 |131 | +|1 | HASH OUTER JOIN | |4 |127 | +|2 | TABLE SCAN |t1 |4 |37 | +|3 | SUBPLAN SCAN |VIEW1|4 |82 | +|4 | HASH RIGHT SEMI JOIN| |4 |82 | +|5 | TABLE SCAN |t3 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t2: ({t2: (VIEW1.t2.__pk_increment, VIEW1.t2.c1, VIEW1.t2.c2)}), hash_distinct}]), + update([VIEW1.t2.c2=?]) + 1 - output([VIEW1.t2.__pk_increment], [VIEW1.t2.c1], [VIEW1.t2.c2], [?]), filter(nil), + equal_conds([t1.c1 = VIEW1.t2.c1]), other_conds(nil) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([VIEW1.t2.c1], [VIEW1.t2.c2], [VIEW1.t2.__pk_increment]), filter(nil), + access([VIEW1.t2.c1], [VIEW1.t2.c2], [VIEW1.t2.__pk_increment]) + 4 - output([t2.c1], [t2.c2], [t2.__pk_increment]), filter(nil), + equal_conds([t2.c2 = t3.c1]), other_conds(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2], [t2.__pk_increment]), filter(nil), + access([t2.c1], [t2.c2], [t2.__pk_increment]), partitions(p0) + +update t1 left join t2 on t1.c1 = t2.c1 and t2.c2 in (select c1 from t3) set t2.c2 = 10; +explain update tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c1 from t3) set tp2.c2 = 10; +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------- +|0 |MULTI PARTITION UPDATE | |2 |122 | +|1 | PX COORDINATOR | |2 |120 | +|2 | EXCHANGE OUT DISTR |:EX10001|2 |119 | +|3 | MERGE OUTER JOIN | |2 |119 | +|4 | SORT | |2 |38 | +|5 | PX PARTITION ITERATOR | |2 |37 | +|6 | TABLE SCAN |tp1 |2 |37 | +|7 | SUBPLAN SCAN |VIEW1 |2 |80 | +|8 | MERGE SEMI JOIN | |2 |80 | +|9 | SORT | |2 |39 | +|10| PX PARTITION ITERATOR | |2 |37 | +|11| TABLE SCAN |tp2 |2 |37 | +|12| SORT | |4 |40 | +|13| EXCHANGE IN DISTR | |4 |37 | +|14| EXCHANGE OUT DISTR (PKEY)|:EX10000|4 |37 | +|15| TABLE SCAN |t3 |4 |37 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{tp2: ({tp2: (VIEW1.tp2.c1, VIEW1.tp2.__pk_increment, VIEW1.tp2.c2)}), hash_distinct}]), + update([VIEW1.tp2.c2=?]) + 1 - output([VIEW1.tp2.c1], [VIEW1.tp2.__pk_increment], [VIEW1.tp2.c2], [?]), filter(nil) + 2 - output([VIEW1.tp2.c1], [VIEW1.tp2.__pk_increment], [VIEW1.tp2.c2], [?]), filter(nil), dop=1 + 3 - output([VIEW1.tp2.c1], [VIEW1.tp2.__pk_increment], [VIEW1.tp2.c2], [?]), filter(nil), + equal_conds([tp1.c1 = VIEW1.tp2.c1]), other_conds(nil) + 4 - output([tp1.c1]), filter(nil), sort_keys([tp1.c1, ASC]), local merge sort + 5 - output([tp1.c1]), filter(nil) + 6 - output([tp1.c1]), filter(nil), + access([tp1.c1]), partitions(p[0-1]) + 7 - output([VIEW1.tp2.c1], [VIEW1.tp2.c2], [VIEW1.tp2.__pk_increment]), filter(nil), + access([VIEW1.tp2.c1], [VIEW1.tp2.c2], [VIEW1.tp2.__pk_increment]) + 8 - output([tp2.c1], [tp2.c2], [tp2.__pk_increment]), filter(nil), + equal_conds([tp2.c1 = t3.c1]), other_conds(nil) + 9 - output([tp2.c1], [tp2.c2], [tp2.__pk_increment]), filter(nil), sort_keys([tp2.c1, ASC]), local merge sort + 10 - output([tp2.c1], [tp2.c2], [tp2.__pk_increment]), filter(nil) + 11 - output([tp2.c1], [tp2.c2], [tp2.__pk_increment]), filter(nil), + access([tp2.c1], [tp2.c2], [tp2.__pk_increment]), partitions(p[0-1]) + 12 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 13 - output([t3.c1]), filter(nil) + 14 - (#keys=1, [t3.c1]), output([t3.c1]), filter(nil), is_single, dop=1 + 15 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +EXPLAIN update tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c1 from t3) set tp2.c2 = 10; +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------- +|0 |MULTI PARTITION UPDATE | |2 |122 | +|1 | PX COORDINATOR | |2 |120 | +|2 | EXCHANGE OUT DISTR |:EX10001|2 |119 | +|3 | MERGE OUTER JOIN | |2 |119 | +|4 | SORT | |2 |38 | +|5 | PX PARTITION ITERATOR | |2 |37 | +|6 | TABLE SCAN |tp1 |2 |37 | +|7 | SUBPLAN SCAN |VIEW1 |2 |80 | +|8 | MERGE SEMI JOIN | |2 |80 | +|9 | SORT | |2 |39 | +|10| PX PARTITION ITERATOR | |2 |37 | +|11| TABLE SCAN |tp2 |2 |37 | +|12| SORT | |4 |40 | +|13| EXCHANGE IN DISTR | |4 |37 | +|14| EXCHANGE OUT DISTR (PKEY)|:EX10000|4 |37 | +|15| TABLE SCAN |t3 |4 |37 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{tp2: ({tp2: (VIEW1.tp2.c1, VIEW1.tp2.__pk_increment, VIEW1.tp2.c2)}), hash_distinct}]), + update([VIEW1.tp2.c2=?]) + 1 - output([VIEW1.tp2.c1], [VIEW1.tp2.__pk_increment], [VIEW1.tp2.c2], [?]), filter(nil) + 2 - output([VIEW1.tp2.c1], [VIEW1.tp2.__pk_increment], [VIEW1.tp2.c2], [?]), filter(nil), dop=1 + 3 - output([VIEW1.tp2.c1], [VIEW1.tp2.__pk_increment], [VIEW1.tp2.c2], [?]), filter(nil), + equal_conds([tp1.c1 = VIEW1.tp2.c1]), other_conds(nil) + 4 - output([tp1.c1]), filter(nil), sort_keys([tp1.c1, ASC]), local merge sort + 5 - output([tp1.c1]), filter(nil) + 6 - output([tp1.c1]), filter(nil), + access([tp1.c1]), partitions(p[0-1]) + 7 - output([VIEW1.tp2.c1], [VIEW1.tp2.c2], [VIEW1.tp2.__pk_increment]), filter(nil), + access([VIEW1.tp2.c1], [VIEW1.tp2.c2], [VIEW1.tp2.__pk_increment]) + 8 - output([tp2.c1], [tp2.c2], [tp2.__pk_increment]), filter(nil), + equal_conds([tp2.c1 = t3.c1]), other_conds(nil) + 9 - output([tp2.c1], [tp2.c2], [tp2.__pk_increment]), filter(nil), sort_keys([tp2.c1, ASC]), local merge sort + 10 - output([tp2.c1], [tp2.c2], [tp2.__pk_increment]), filter(nil) + 11 - output([tp2.c1], [tp2.c2], [tp2.__pk_increment]), filter(nil), + access([tp2.c1], [tp2.c2], [tp2.__pk_increment]), partitions(p[0-1]) + 12 - output([t3.c1]), filter(nil), sort_keys([t3.c1, ASC]) + 13 - output([t3.c1]), filter(nil) + 14 - (#keys=1, [t3.c1]), output([t3.c1]), filter(nil), is_single, dop=1 + 15 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + +update tp1 left join tp2 on tp1.c1 = tp2.c1 and tp2.c1 in (select c1 from t3) set tp2.c2 = 10; + +drop table if exists C, D, BB, CC, B; +CREATE TABLE C ( +col_varchar_10 varchar(10), +col_varchar varchar (1), +col_int int, +pk int, +col_varchar_20 varchar(20), +col_varchar_key varchar (1), +col_varchar_10_key varchar(10), +col_int_key int, +col_varchar_20_key varchar(20), +/*Indices*/ +primary key (pk) , +key idx3(pk, col_varchar_key ), +key idx5(pk, col_varchar_10_key ), +key idx1(pk, col_int_key ), +key idx7(pk, col_varchar_20_key )) ; + +CREATE TABLE D ( +pk int, +col_varchar_10 varchar(10), +col_varchar_20 varchar(20), +col_varchar_10_key varchar(10), +col_varchar_20_key varchar(20), +col_int int, +col_int_key int, +col_varchar_key varchar (1), +col_varchar varchar (1), +/*Indices*/ +primary key (pk) , +key idx5(pk, col_varchar_10_key ), +key idx7(pk, col_varchar_20_key ), +key idx1(pk, col_int_key ), +key idx3(pk, col_varchar_key )) ; + +CREATE TABLE BB ( +col_varchar_20_key varchar(20), +col_int_key int, +col_int int, +col_varchar_10 varchar(10), +col_varchar_10_key varchar(10), +col_varchar_key varchar (1), +col_varchar varchar (1), +col_varchar_20 varchar(20), +pk int, +/*Indices*/ +key idx7(pk, col_varchar_20_key ), +key idx1(pk, col_int_key ), +key idx5(pk, col_varchar_10_key ), +key idx3(pk, col_varchar_key ), +primary key (pk) ) ; + +CREATE TABLE CC ( +col_varchar_20_key varchar(20), +col_varchar_key varchar (1), +col_varchar_10_key varchar(10), +col_varchar_20 varchar(20), +col_int int, +pk int, +col_varchar varchar (1), +col_varchar_10 varchar(10), +col_int_key int, +/*Indices*/ +key idx7(pk, col_varchar_20_key ), +key idx3(pk, col_varchar_key ), +key idx5(pk, col_varchar_10_key ), +primary key (pk) , +key idx1(pk, col_int_key )) ; + +CREATE TABLE B ( +col_varchar varchar (1), +col_int int, +col_varchar_20 varchar(20), +col_varchar_10 varchar(10), +col_int_key int, +col_varchar_10_key varchar(10), +pk int, +col_varchar_20_key varchar(20), +col_varchar_key varchar (1), +/*Indices*/ +key idx1(pk, col_int_key ), +key idx5(pk, col_varchar_10_key ), +primary key (pk) , +key idx7(pk, col_varchar_20_key ), +key idx3(pk, col_varchar_key )) ; + +EXPLAIN SELECT table2 . col_int_key AS field1 +FROM ( C AS table1 LEFT JOIN + ( CC AS table2 INNER JOIN + ( SELECT SUBQUERY1_t2 . * + FROM ( D AS SUBQUERY1_t2 RIGHT JOIN + CC AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `col_varchar_10_key` = SUBQUERY1_t2 . `col_varchar_key` + AND SUBQUERY1_t2 . `col_varchar_10` != SOME ( SELECT CHILD_SUBQUERY1_t1 . `col_varchar_10_key` AS CHILD_SUBQUERY1_field1 + FROM C AS CHILD_SUBQUERY1_t1 ))) + WHERE EXISTS ( SELECT DISTINCT CHILD_SUBQUERY2_t1 . `col_varchar_10` AS CHILD_SUBQUERY1_field1 FROM CC AS CHILD_SUBQUERY2_t1 WHERE CHILD_SUBQUERY2_t1 . `col_int_key` != SUBQUERY1_t3 . `pk` ) ) + AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_20_key` ) ) + ON (table3 . `pk` = table2 . `pk` ) ) +WHERE ( table1 . `col_varchar_10_key` > table3 . `col_varchar_20` AND table1 . `col_int` <> table1 . `col_int` ) GROUP BY field1 ORDER BY field1; +Query Plan +=================================================================================== +|ID|OPERATOR |NAME |EST. ROWS |COST | +----------------------------------------------------------------------------------- +|0 |SORT | |101 |2.512494e+12 | +|1 | HASH GROUP BY | |101 |2.512494e+12 | +|2 | NESTED-LOOP JOIN | |400248337500|2.381112e+12 | +|3 | NESTED-LOOP SEMI JOIN | |24014901 |1.361088e+12 | +|4 | HASH JOIN | |48029801 |6606964932 | +|5 | TABLE SCAN |SUBQUERY1_t3(idx5) |100000 |27937 | +|6 | NESTED-LOOP SEMI JOIN| |49005 |6559769374 | +|7 | MERGE JOIN | |98010 |261974 | +|8 | TABLE SCAN |table2 |100000 |64066 | +|9 | TABLE SCAN |SUBQUERY1_t2 |100000 |66272 | +|10| MATERIAL | |100000 |50906 | +|11| TABLE SCAN |CHILD_SUBQUERY1_t1(idx5)|100000 |27937 | +|12| MATERIAL | |100000 |46313 | +|13| TABLE SCAN |CHILD_SUBQUERY2_t1(idx1)|100000 |27937 | +|14| MATERIAL | |50000 |93111 | +|15| TABLE SCAN |table1 |50000 |72438 | +=================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([table2.col_int_key]), filter(nil), sort_keys([table2.col_int_key, ASC]) + 1 - output([table2.col_int_key]), filter(nil), + group([table2.col_int_key]), agg_func(nil) + 2 - output([table2.col_int_key]), filter(nil), + conds([table1.col_varchar_10_key > SUBQUERY1_t2.col_varchar_20]), nl_params_(nil) + 3 - output([table2.col_int_key], [SUBQUERY1_t2.col_varchar_20]), filter(nil), + conds([CHILD_SUBQUERY2_t1.col_int_key != SUBQUERY1_t3.pk]), nl_params_(nil) + 4 - output([table2.col_int_key], [SUBQUERY1_t2.col_varchar_20], [SUBQUERY1_t3.pk]), filter(nil), + equal_conds([SUBQUERY1_t3.col_varchar_10_key = SUBQUERY1_t2.col_varchar_key]), other_conds(nil) + 5 - output([SUBQUERY1_t3.col_varchar_10_key], [SUBQUERY1_t3.pk]), filter(nil), + access([SUBQUERY1_t3.col_varchar_10_key], [SUBQUERY1_t3.pk]), partitions(p0) + 6 - output([table2.col_int_key], [SUBQUERY1_t2.col_varchar_20], [SUBQUERY1_t2.col_varchar_key]), filter(nil), + conds([SUBQUERY1_t2.col_varchar_10 != CHILD_SUBQUERY1_t1.col_varchar_10_key]), nl_params_(nil) + 7 - output([table2.col_int_key], [SUBQUERY1_t2.col_varchar_20], [SUBQUERY1_t2.col_varchar_key], [SUBQUERY1_t2.col_varchar_10]), filter(nil), + equal_conds([SUBQUERY1_t2.pk = table2.pk], [SUBQUERY1_t2.col_varchar_key = table2.col_varchar_20_key]), other_conds(nil) + 8 - output([table2.col_varchar_20_key], [table2.pk], [table2.col_int_key]), filter(nil), + access([table2.col_varchar_20_key], [table2.pk], [table2.col_int_key]), partitions(p0) + 9 - output([SUBQUERY1_t2.col_varchar_key], [SUBQUERY1_t2.col_varchar_10], [SUBQUERY1_t2.pk], [SUBQUERY1_t2.col_varchar_20]), filter(nil), + access([SUBQUERY1_t2.col_varchar_key], [SUBQUERY1_t2.col_varchar_10], [SUBQUERY1_t2.pk], [SUBQUERY1_t2.col_varchar_20]), partitions(p0) + 10 - output([CHILD_SUBQUERY1_t1.col_varchar_10_key]), filter(nil) + 11 - output([CHILD_SUBQUERY1_t1.col_varchar_10_key]), filter(nil), + access([CHILD_SUBQUERY1_t1.col_varchar_10_key]), partitions(p0) + 12 - output([CHILD_SUBQUERY2_t1.col_int_key]), filter(nil) + 13 - output([CHILD_SUBQUERY2_t1.col_int_key]), filter(nil), + access([CHILD_SUBQUERY2_t1.col_int_key]), partitions(p0) + 14 - output([table1.col_varchar_10_key]), filter(nil) + 15 - output([table1.col_varchar_10_key]), filter([table1.col_int != table1.col_int]), + access([table1.col_varchar_10_key], [table1.col_int]), partitions(p0) + +SELECT table2 . col_int_key AS field1 +FROM ( C AS table1 LEFT JOIN + ( CC AS table2 INNER JOIN + ( SELECT SUBQUERY1_t2 . * + FROM ( D AS SUBQUERY1_t2 RIGHT JOIN + CC AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `col_varchar_10_key` = SUBQUERY1_t2 . `col_varchar_key` + AND SUBQUERY1_t2 . `col_varchar_10` != SOME ( SELECT CHILD_SUBQUERY1_t1 . `col_varchar_10_key` AS CHILD_SUBQUERY1_field1 + FROM C AS CHILD_SUBQUERY1_t1 ))) + WHERE EXISTS ( SELECT DISTINCT CHILD_SUBQUERY2_t1 . `col_varchar_10` AS CHILD_SUBQUERY1_field1 FROM CC AS CHILD_SUBQUERY2_t1 WHERE CHILD_SUBQUERY2_t1 . `col_int_key` != SUBQUERY1_t3 . `pk` ) ) + AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_20_key` ) ) + ON (table3 . `pk` = table2 . `pk` ) ) +WHERE ( table1 . `col_varchar_10_key` > table3 . `col_varchar_20` AND table1 . `col_int` <> table1 . `col_int` ) GROUP BY field1 ORDER BY field1; ++--------+ +| field1 | ++--------+ ++--------+ + +EXPLAIN SELECT SUBQUERY1_t2 . * +FROM ( D AS SUBQUERY1_t2 RIGHT JOIN + CC AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `col_varchar_10_key` = SUBQUERY1_t2 . `col_varchar_key` + AND SUBQUERY1_t2 . `col_varchar_10` != SOME ( SELECT CHILD_SUBQUERY1_t1 . `col_varchar_10_key` AS CHILD_SUBQUERY1_field1 + FROM C AS CHILD_SUBQUERY1_t1 ))) +WHERE EXISTS (SELECT DISTINCT CHILD_SUBQUERY2_t1 . `col_varchar_10` AS CHILD_SUBQUERY1_field1 FROM CC AS CHILD_SUBQUERY2_t1 WHERE CHILD_SUBQUERY2_t1 . `col_int_key` != SUBQUERY1_t2 . `pk`); +Query Plan +========================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------------------------------- +|0 |HASH JOIN | |24502500 |6190717737| +|1 | NESTED-LOOP SEMI JOIN | |25000 |6166579702| +|2 | NESTED-LOOP SEMI JOIN| |50000 |2820208781| +|3 | TABLE SCAN |SUBQUERY1_t2 |100000 |77301 | +|4 | MATERIAL | |100000 |46313 | +|5 | TABLE SCAN |CHILD_SUBQUERY2_t1(idx1)|100000 |27937 | +|6 | MATERIAL | |100000 |50906 | +|7 | TABLE SCAN |CHILD_SUBQUERY1_t1(idx5)|100000 |27937 | +|8 | TABLE SCAN |SUBQUERY1_t3(idx5) |100000 |27937 | +========================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([SUBQUERY1_t2.pk], [SUBQUERY1_t2.col_varchar_10], [SUBQUERY1_t2.col_varchar_20], [SUBQUERY1_t2.col_varchar_10_key], [SUBQUERY1_t2.col_varchar_20_key], [SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar_key], [SUBQUERY1_t2.col_varchar]), filter(nil), + equal_conds([SUBQUERY1_t3.col_varchar_10_key = SUBQUERY1_t2.col_varchar_key]), other_conds(nil) + 1 - output([SUBQUERY1_t2.pk], [SUBQUERY1_t2.col_varchar_10], [SUBQUERY1_t2.col_varchar_20], [SUBQUERY1_t2.col_varchar_10_key], [SUBQUERY1_t2.col_varchar_20_key], [SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar_key], [SUBQUERY1_t2.col_varchar]), filter(nil), + conds([SUBQUERY1_t2.col_varchar_10 != CHILD_SUBQUERY1_t1.col_varchar_10_key]), nl_params_(nil) + 2 - output([SUBQUERY1_t2.pk], [SUBQUERY1_t2.col_varchar_10], [SUBQUERY1_t2.col_varchar_20], [SUBQUERY1_t2.col_varchar_10_key], [SUBQUERY1_t2.col_varchar_20_key], [SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar_key], [SUBQUERY1_t2.col_varchar]), filter(nil), + conds([CHILD_SUBQUERY2_t1.col_int_key != SUBQUERY1_t2.pk]), nl_params_(nil) + 3 - output([SUBQUERY1_t2.col_varchar_key], [SUBQUERY1_t2.col_varchar_10], [SUBQUERY1_t2.pk], [SUBQUERY1_t2.col_varchar_20], [SUBQUERY1_t2.col_varchar_10_key], [SUBQUERY1_t2.col_varchar_20_key], [SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar]), filter(nil), + access([SUBQUERY1_t2.col_varchar_key], [SUBQUERY1_t2.col_varchar_10], [SUBQUERY1_t2.pk], [SUBQUERY1_t2.col_varchar_20], [SUBQUERY1_t2.col_varchar_10_key], [SUBQUERY1_t2.col_varchar_20_key], [SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar]), partitions(p0) + 4 - output([CHILD_SUBQUERY2_t1.col_int_key]), filter(nil) + 5 - output([CHILD_SUBQUERY2_t1.col_int_key]), filter(nil), + access([CHILD_SUBQUERY2_t1.col_int_key]), partitions(p0) + 6 - output([CHILD_SUBQUERY1_t1.col_varchar_10_key]), filter(nil) + 7 - output([CHILD_SUBQUERY1_t1.col_varchar_10_key]), filter(nil), + access([CHILD_SUBQUERY1_t1.col_varchar_10_key]), partitions(p0) + 8 - output([SUBQUERY1_t3.col_varchar_10_key]), filter(nil), + access([SUBQUERY1_t3.col_varchar_10_key]), partitions(p0) + +SELECT SUBQUERY1_t2 . * +FROM ( D AS SUBQUERY1_t2 RIGHT JOIN + CC AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `col_varchar_10_key` = SUBQUERY1_t2 . `col_varchar_key` + AND SUBQUERY1_t2 . `col_varchar_10` != SOME ( SELECT CHILD_SUBQUERY1_t1 . `col_varchar_10_key` AS CHILD_SUBQUERY1_field1 + FROM C AS CHILD_SUBQUERY1_t1 ))) +WHERE EXISTS (SELECT DISTINCT CHILD_SUBQUERY2_t1 . `col_varchar_10` AS CHILD_SUBQUERY1_field1 FROM CC AS CHILD_SUBQUERY2_t1 WHERE CHILD_SUBQUERY2_t1 . `col_int_key` != SUBQUERY1_t2 . `pk`); ++----+----------------+----------------+--------------------+--------------------+---------+-------------+-----------------+-------------+ +| pk | col_varchar_10 | col_varchar_20 | col_varchar_10_key | col_varchar_20_key | col_int | col_int_key | col_varchar_key | col_varchar | ++----+----------------+----------------+--------------------+--------------------+---------+-------------+-----------------+-------------+ ++----+----------------+----------------+--------------------+--------------------+---------+-------------+-----------------+-------------+ + +## 简化case +EXPLAIN select * from ( t1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in ( select c1 from t3))); +Query Plan +================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST| +------------------------------------------------- +|0 |HASH RIGHT OUTER JOIN | |4 |119 | +|1 | SUBPLAN SCAN |VIEW1|0 |81 | +|2 | NESTED-LOOP ANTI JOIN| |0 |81 | +|3 | TABLE SCAN |t1 |4 |37 | +|4 | MATERIAL | |4 |38 | +|5 | TABLE SCAN |t3 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +================================================= + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW1.t1.c1]), other_conds(nil) + 1 - output([VIEW1.t1.c1], [VIEW1.t1.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + conds([(T_OP_OR, t1.c2 = t3.c1, (T_OP_IS, t1.c2, NULL, 0), (T_OP_IS, t3.c1, NULL, 0))]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from ( t1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in ( select c1 from t3))); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ +| NULL | NULL | 1 | 10 | +| NULL | NULL | 3 | 3 | +| NULL | NULL | 4 | 4 | +| NULL | NULL | NULL | NULL | ++------+------+------+------+ + +EXPLAIN select * from ( t1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in (select c1 from t3))) +where exists (select distinct c2 from t2 where t1.c2 != t2.c1); +Query Plan +================================================ +|ID|OPERATOR |NAME|EST. ROWS|COST| +------------------------------------------------ +|0 |NESTED-LOOP SEMI JOIN | |0 |156 | +|1 | HASH JOIN | |0 |119 | +|2 | NESTED-LOOP ANTI JOIN| |0 |81 | +|3 | TABLE SCAN |t1 |4 |37 | +|4 | MATERIAL | |4 |38 | +|5 | TABLE SCAN |t3 |4 |37 | +|6 | TABLE SCAN |t2 |4 |37 | +|7 | MATERIAL | |4 |38 | +|8 | TABLE SCAN |t2 |4 |37 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + conds([t1.c2 != t2.c1]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = t1.c1]), other_conds(nil) + 2 - output([t1.c1], [t1.c2]), filter(nil), + conds([(T_OP_OR, t1.c2 = t3.c1, (T_OP_IS, t1.c2, NULL, 0), (T_OP_IS, t3.c1, NULL, 0))]), nl_params_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t3.c1]), filter(nil) + 5 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + 6 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + 7 - output([t2.c1]), filter(nil) + 8 - output([t2.c1]), filter(nil), + access([t2.c1]), partitions(p0) + +select * from ( t1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in (select c1 from t3))) +where exists (select distinct c2 from t2 where t1.c2 != t2.c1); ++------+------+------+------+ +| c1 | c2 | c1 | c2 | ++------+------+------+------+ ++------+------+------+------+ + +EXPLAIN select * from ( t1 right join t3 on t1.c1 = t3.c1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in ( select c1 from t4))); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |HASH RIGHT OUTER JOIN | |4 |157 | +|1 | SUBPLAN SCAN |VIEW1|0 |119 | +|2 | HASH JOIN | |0 |119 | +|3 | NESTED-LOOP ANTI JOIN| |0 |81 | +|4 | TABLE SCAN |t1 |4 |37 | +|5 | MATERIAL | |4 |38 | +|6 | TABLE SCAN |t4 |4 |37 | +|7 | TABLE SCAN |t3 |4 |37 | +|8 | TABLE SCAN |t2 |4 |37 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t3.c1], [VIEW1.t3.c2], [t2.c1], [t2.c2]), filter(nil), + equal_conds([t2.c1 = VIEW1.t1.c1]), other_conds(nil) + 1 - output([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t3.c1], [VIEW1.t3.c2]), filter(nil), + access([VIEW1.t1.c1], [VIEW1.t1.c2], [VIEW1.t3.c1], [VIEW1.t3.c2]) + 2 - output([t1.c1], [t1.c2], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t1.c1 = t3.c1]), other_conds(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + conds([(T_OP_OR, t1.c2 = t4.c1, (T_OP_IS, t1.c2, NULL, 0), (T_OP_IS, t4.c1, NULL, 0))]), nl_params_(nil) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t4.c1]), filter(nil) + 6 - output([t4.c1]), filter(nil), + access([t4.c1]), partitions(p0) + 7 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p0) + 8 - output([t2.c1], [t2.c2]), filter(nil), + access([t2.c1], [t2.c2]), partitions(p0) + +select * from ( t1 right join t3 on t1.c1 = t3.c1 right join t2 on (t2.c1 = t1.c1 and t1.c2 not in ( select c1 from t4))); ++------+------+------+------+------+------+ +| c1 | c2 | c1 | c2 | c1 | c2 | ++------+------+------+------+------+------+ +| NULL | NULL | NULL | NULL | 1 | 10 | +| NULL | NULL | NULL | NULL | 3 | 3 | +| NULL | NULL | NULL | NULL | 4 | 4 | +| NULL | NULL | NULL | NULL | NULL | NULL | ++------+------+------+------+------+------+ + +EXPLAIN SELECT Count(table1 . `pk`) AS field1, + table1 . col_varchar_key AS field2 +FROM ( (SELECT DISTINCT SUBQUERY1_t1 . * + FROM ( cc AS SUBQUERY1_t1 + RIGHT JOIN bb AS SUBQUERY1_t2 + ON ( SUBQUERY1_t2 . `pk` = SUBQUERY1_t1 . `col_int` ) ) + WHERE SUBQUERY1_t1 . `pk` < 7) AS table1 + RIGHT OUTER JOIN d AS table2 + ON ( table2 . `pk` = table1 . `col_int_key` + AND ( 9, 7 ) IN (SELECT Sum(SUBQUERY2_t1 . + `col_int_key`) AS + SUBQUERY2_field1, + Count(SUBQUERY2_t1 . `pk`) + AS + SUBQUERY2_field2 + FROM ( cc AS SUBQUERY2_t1 + INNER JOIN cc AS + SUBQUERY2_t2 + ON ( SUBQUERY2_t2 . + `col_int_key` + = + SUBQUERY2_t1 . + `pk` ) + ) + ) ) ) +WHERE ( EXISTS ((SELECT 5 + FROM DUAL)) ) + OR table1 . `pk` < table1 . `col_int` +GROUP BY field2 +ORDER BY field1, + field2; +Query Plan +======================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------------------------ +|0 |SORT | |101 |355614| +|1 | HASH GROUP BY | |101 |355406| +|2 | SUBPLAN FILTER | |66667 |329919| +|3 | MERGE OUTER JOIN | |66667 |320717| +|4 | TABLE SCAN |table2(idx5) |100000 |25731 | +|5 | SORT | |5 |281180| +|6 | NESTED-LOOP JOIN CARTESIAN| |5 |281173| +|7 | SUBPLAN SCAN |VIEW5 |1 |281133| +|8 | SCALAR GROUP BY | |1 |281133| +|9 | HASH JOIN | |99000 |256977| +|10| TABLE SCAN |SUBQUERY2_t2(idx1)|100000 |27937 | +|11| TABLE SCAN |SUBQUERY2_t1(idx1)|100000 |27937 | +|12| MERGE JOIN | |9900 |73654 | +|13| SORT | |10000 |26869 | +|14| TABLE SCAN |SUBQUERY1_t1 |10000 |6660 | +|15| TABLE SCAN |SUBQUERY1_t2(idx7)|100000 |25731 | +|16| LIMIT | |1 |1 | +|17| EXPRESSION | |1 |1 | +======================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(SUBQUERY1_t1.pk)], [SUBQUERY1_t1.col_varchar_key]), filter(nil), sort_keys([T_FUN_COUNT(SUBQUERY1_t1.pk), ASC], [SUBQUERY1_t1.col_varchar_key, ASC]) + 1 - output([T_FUN_COUNT(SUBQUERY1_t1.pk)], [SUBQUERY1_t1.col_varchar_key]), filter(nil), + group([SUBQUERY1_t1.col_varchar_key]), agg_func([T_FUN_COUNT(SUBQUERY1_t1.pk)]) + 2 - output([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_key]), filter(nil), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 3 - output([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_key]), filter([? OR SUBQUERY1_t1.pk < SUBQUERY1_t1.col_int]), + equal_conds([table2.pk = SUBQUERY1_t1.col_int_key]), other_conds(nil) + 4 - output([table2.pk]), filter(nil), + access([table2.pk]), partitions(p0) + 5 - output([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key], [SUBQUERY1_t1.col_int]), filter(nil), sort_keys([SUBQUERY1_t1.col_int_key, ASC]) + 6 - output([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key], [SUBQUERY1_t1.col_int]), filter(nil), + conds(nil), nl_params_(nil) + 7 - output([1]), filter(nil), + access(nil) + 8 - output([T_FUN_SUM(SUBQUERY2_t1.col_int_key)], [T_FUN_COUNT(SUBQUERY2_t1.pk)]), filter([T_FUN_COUNT(SUBQUERY2_t1.pk) = 7], [T_FUN_SUM(SUBQUERY2_t1.col_int_key) = ?]), + group(nil), agg_func([T_FUN_SUM(SUBQUERY2_t1.col_int_key)], [T_FUN_COUNT(SUBQUERY2_t1.pk)]) + 9 - output([SUBQUERY2_t1.col_int_key], [SUBQUERY2_t1.pk]), filter(nil), + equal_conds([SUBQUERY2_t2.col_int_key = SUBQUERY2_t1.pk]), other_conds(nil) + 10 - output([SUBQUERY2_t2.col_int_key]), filter(nil), + access([SUBQUERY2_t2.col_int_key]), partitions(p0) + 11 - output([SUBQUERY2_t1.pk], [SUBQUERY2_t1.col_int_key]), filter(nil), + access([SUBQUERY2_t1.pk], [SUBQUERY2_t1.col_int_key]), partitions(p0) + 12 - output([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key], [SUBQUERY1_t1.col_int]), filter(nil), + equal_conds([SUBQUERY1_t2.pk = SUBQUERY1_t1.col_int]), other_conds(nil) + 13 - output([SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key], [SUBQUERY1_t1.col_int]), filter(nil), sort_keys([SUBQUERY1_t1.col_int, ASC]) + 14 - output([SUBQUERY1_t1.col_int], [SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key]), filter(nil), + access([SUBQUERY1_t1.col_int], [SUBQUERY1_t1.pk], [SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key]), partitions(p0) + 15 - output([SUBQUERY1_t2.pk]), filter(nil), + access([SUBQUERY1_t2.pk]), partitions(p0) + 16 - output([5]), filter(nil), limit(1), offset(nil) + 17 - output([1]), filter(nil) + values({1}) + +SELECT Count(table1 . `pk`) AS field1, + table1 . col_varchar_key AS field2 +FROM ( (SELECT DISTINCT SUBQUERY1_t1 . * + FROM ( cc AS SUBQUERY1_t1 + RIGHT JOIN bb AS SUBQUERY1_t2 + ON ( SUBQUERY1_t2 . `pk` = SUBQUERY1_t1 . `col_int` ) ) + WHERE SUBQUERY1_t1 . `pk` < 7) AS table1 + RIGHT OUTER JOIN d AS table2 + ON ( table2 . `pk` = table1 . `col_int_key` + AND ( 9, 7 ) IN (SELECT Sum(SUBQUERY2_t1 . + `col_int_key`) AS + SUBQUERY2_field1, + Count(SUBQUERY2_t1 . `pk`) + AS + SUBQUERY2_field2 + FROM ( cc AS SUBQUERY2_t1 + INNER JOIN cc AS + SUBQUERY2_t2 + ON ( SUBQUERY2_t2 . + `col_int_key` + = + SUBQUERY2_t1 . + `pk` ) + ) + ) ) ) +WHERE ( EXISTS ((SELECT 5 + FROM DUAL)) ) + OR table1 . `pk` < table1 . `col_int` +GROUP BY field2 +ORDER BY field1, + field2; ++--------+--------+ +| field1 | field2 | ++--------+--------+ ++--------+--------+ + +EXPLAIN SELECT table1 . col_varchar_key +FROM (SELECT * FROM CC AS SUBQUERY1_t1) AS table1 + RIGHT OUTER JOIN D AS table2 ON table2 . `pk` = table1 . `col_int_key` + AND 9 IN (SELECT `col_int_key` AS SUBQUERY2_field1 FROM CC AS SUBQUERY2_t1); +Query Plan +============================================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------------------------------------------- +|0 |HASH OUTER JOIN | |100000 |20030531| +|1 | TABLE SCAN |table2(idx5) |100000 |25731 | +|2 | SUBPLAN SCAN |VIEW2 |100000 |19803698| +|3 | NESTED-LOOP SEMI JOIN CARTESIAN| |100000 |19789895| +|4 | TABLE SCAN |SUBQUERY1_t1 |100000 |64066 | +|5 | MATERIAL | |990 |45001 | +|6 | SUBPLAN SCAN |VIEW3 |990 |44819 | +|7 | TABLE SCAN |SUBQUERY2_t1(idx1)|990 |44682 | +============================================================================ + +Outputs & filters: +------------------------------------- + 0 - output([VIEW2.VIEW1.col_varchar_key]), filter(nil), + equal_conds([table2.pk = VIEW2.VIEW1.col_int_key]), other_conds(nil) + 1 - output([table2.pk]), filter(nil), + access([table2.pk]), partitions(p0) + 2 - output([VIEW2.VIEW1.col_varchar_key], [VIEW2.VIEW1.col_int_key]), filter(nil), + access([VIEW2.VIEW1.col_varchar_key], [VIEW2.VIEW1.col_int_key]) + 3 - output([SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key]), filter(nil), + access([SUBQUERY1_t1.col_varchar_key], [SUBQUERY1_t1.col_int_key]), partitions(p0) + 5 - output([1]), filter(nil) + 6 - output([1]), filter(nil), + access(nil) + 7 - output([1]), filter([SUBQUERY2_t1.col_int_key = 9]), + access([SUBQUERY2_t1.col_int_key]), partitions(p0) + +SELECT table1 . col_varchar_key +FROM (SELECT * FROM CC AS SUBQUERY1_t1) AS table1 + RIGHT OUTER JOIN D AS table2 ON table2 . `pk` = table1 . `col_int_key` + AND 9 IN (SELECT `col_int_key` AS SUBQUERY2_field1 FROM CC AS SUBQUERY2_t1); ++-----------------+ +| col_varchar_key | ++-----------------+ ++-----------------+ + +EXPLAIN SELECT Min(table2 . `pk`) AS field1 +FROM ( cc AS table1 +RIGHT OUTER JOIN c AS table2 +ON ( table2 . `col_varchar` = table1 . `col_varchar_key` ) +) +WHERE ( ( 9, 5 ) IN (SELECT Sum(SUBQUERY1_t1 . `col_int`) AS SUBQUERY1_field1, +Max(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field2 +FROM ( cc AS SUBQUERY1_t1 +LEFT JOIN ( c AS SUBQUERY1_t2 +INNER JOIN c AS SUBQUERY1_t3 +ON ( SUBQUERY1_t3 . +`col_int_key` = +SUBQUERY1_t2 . +`col_int_key` +OR ( 'x', 'j' ) IN +(SELECT Sum(CHILD_SUBQUERY1_t1 . +`col_varchar_key`) AS +CHILD_SUBQUERY1_field1, +Sum(CHILD_SUBQUERY1_t1 . +`col_varchar` +) +AS +CHILD_SUBQUERY1_field2 +FROM ( cc AS CHILD_SUBQUERY1_t1 +INNER JOIN cc AS +CHILD_SUBQUERY1_t2 +ON ( +CHILD_SUBQUERY1_t2 . +`col_varchar_20` += +CHILD_SUBQUERY1_t1 . +`col_varchar_key` +) ) +) ) ) +ON ( SUBQUERY1_t3 . `col_varchar` = +SUBQUERY1_t2 . `col_varchar_key` +OR +SUBQUERY1_t3 . `col_varchar_20_key` NOT +IN +(SELECT 5 +UNION +SELECT 8) +) ) +WHERE ( 'i', 'm' ) IN (SELECT Min(CHILD_SUBQUERY3_t1 . +`col_varchar`) AS +CHILD_SUBQUERY3_field1, +Count(CHILD_SUBQUERY3_t1 . +`col_varchar_key`) AS +CHILD_SUBQUERY3_field2 +FROM ( cc AS CHILD_SUBQUERY3_t1 +RIGHT JOIN b AS +CHILD_SUBQUERY3_t2 +ON ( +CHILD_SUBQUERY3_t2 . +`col_varchar_10` = +CHILD_SUBQUERY3_t1 . +`col_varchar_key` ) +) +WHERE +CHILD_SUBQUERY3_t2 . `col_varchar_10` +<= +CHILD_SUBQUERY3_t2 . `col_varchar`)) ) +AND ( table1 . `col_int_key` NOT BETWEEN 226 AND ( 226 + 183 ) +OR table1 . `col_varchar_key` <= 'm' ) +AND (SELECT Max(SUBQUERY2_t1 . `col_varchar_20`) AS SUBQUERY2_field1 +FROM ( cc AS SUBQUERY2_t1 +INNER JOIN c AS SUBQUERY2_t2 +ON ( SUBQUERY2_t2 . `col_varchar_key` = +SUBQUERY2_t1 . `col_varchar` ) )) IS NULL +HAVING field1 > 't' +ORDER BY field1; +Query Plan +============================================================================================= +|ID|OPERATOR |NAME |EST. ROWS |COST | +--------------------------------------------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |5285272607 | +|1 | NESTED-LOOP JOIN CARTESIAN | |1348 |5285272350 | +|2 | SUBPLAN SCAN |VIEW9 |1 |114861662 | +|3 | SCALAR GROUP BY | |1 |114861662 | +|4 | HASH JOIN | |98010000 |96140537 | +|5 | TABLE SCAN |SUBQUERY2_t2(idx3)|100000 |27937 | +|6 | TABLE SCAN |SUBQUERY2_t1 |100000 |64066 | +|7 | NESTED-LOOP JOIN CARTESIAN | |26953 |103408196302 | +|8 | SUBPLAN SCAN |VIEW7 |1 |103408130766 | +|9 | SCALAR GROUP BY | |1 |103408130766 | +|10| NESTED-LOOP JOIN CARTESIAN | |64643294591 |87634981224 | +|11| SUBPLAN SCAN |VIEW4 |1 |40212539 | +|12| SCALAR GROUP BY | |1 |40212539 | +|13| HASH OUTER JOIN | |32670000 |32240965 | +|14| TABLE SCAN |CHILD_SUBQUERY3_t2|33334 |110903 | +|15| TABLE SCAN |CHILD_SUBQUERY3_t1|100000 |64066 | +|16| NESTED-LOOP OUTER JOIN CARTESIAN| |1.292866e+14 |9.149205e+13 | +|17| TABLE SCAN |SUBQUERY1_t1 |100000 |61860 | +|18| MATERIAL | |1292865892 |3774567240 | +|19| SUBPLAN SCAN |VIEW1 |1292865892 |3536998278 | +|20| UNION ALL | |1292865892 |3358554425 | +|21| SUBPLAN FILTER | |49485299 |206585288 | +|22| HASH JOIN | |49485299 |79666051 | +|23| TABLE SCAN |SUBQUERY1_t2 |100000 |64066 | +|24| TABLE SCAN |SUBQUERY1_t3 |100000 |64066 | +|25| SCALAR GROUP BY | |1 |120089181 | +|26| HASH JOIN | |98010000 |96174459 | +|27| TABLE SCAN |CHILD_SUBQUERY1_t1|100000 |64066 | +|28| TABLE SCAN |CHILD_SUBQUERY1_t2|100000 |61860 | +|29| SUBPLAN FILTER | |1243380594 |2726571861 | +|30| NESTED-LOOP JOIN | |1243380594 |2434868884 | +|31| NESTED-LOOP ANTI JOIN | |49253 |148523 | +|32| TABLE SCAN |SUBQUERY1_t3 |100000 |66272 | +|33| MATERIAL | |2 |2 | +|34| SUBPLAN SCAN |VIEW10 |2 |2 | +|35| MERGE UNION DISTINCT | |2 |1 | +|36| EXPRESSION | |1 |1 | +|37| EXPRESSION | |1 |1 | +|38| MATERIAL | |100000 |82441 | +|39| TABLE SCAN |SUBQUERY1_t2 |100000 |64066 | +|40| SCALAR GROUP BY | |1 |120089181 | +|41| HASH JOIN | |98010000 |96174459 | +|42| TABLE SCAN |CHILD_SUBQUERY1_t1|100000 |64066 | +|43| TABLE SCAN |CHILD_SUBQUERY1_t2|100000 |61860 | +|44| HASH OUTER JOIN | |53905500 |96174459 | +|45| TABLE SCAN |table2 |100000 |61860 | +|46| TABLE SCAN |table1 |100000 |64066 | +============================================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(table2.pk)]), filter([cast(T_FUN_MIN(table2.pk), DECIMAL(11, 0)) > ?]), + group(nil), agg_func([T_FUN_MIN(table2.pk)]) + 1 - output([table2.pk]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([1]), filter(nil), + access(nil) + 3 - output([T_FUN_MAX(SUBQUERY2_t1.col_varchar_20)]), filter([(T_OP_IS, T_FUN_MAX(SUBQUERY2_t1.col_varchar_20), NULL, 0)]), + group(nil), agg_func([T_FUN_MAX(SUBQUERY2_t1.col_varchar_20)]) + 4 - output([SUBQUERY2_t1.col_varchar_20]), filter(nil), + equal_conds([SUBQUERY2_t2.col_varchar_key = SUBQUERY2_t1.col_varchar]), other_conds(nil) + 5 - output([SUBQUERY2_t2.col_varchar_key]), filter(nil), + access([SUBQUERY2_t2.col_varchar_key]), partitions(p0) + 6 - output([SUBQUERY2_t1.col_varchar], [SUBQUERY2_t1.col_varchar_20]), filter(nil), + access([SUBQUERY2_t1.col_varchar], [SUBQUERY2_t1.col_varchar_20]), partitions(p0) + 7 - output([table2.pk]), filter(nil), + conds(nil), nl_params_(nil) + 8 - output([1]), filter(nil), + access(nil) + 9 - output([T_FUN_SUM(SUBQUERY1_t1.col_int)], [T_FUN_MAX(SUBQUERY1_t1.pk)]), filter([T_FUN_MAX(SUBQUERY1_t1.pk) = 5], [T_FUN_SUM(SUBQUERY1_t1.col_int) = ?]), + group(nil), agg_func([T_FUN_SUM(SUBQUERY1_t1.col_int)], [T_FUN_MAX(SUBQUERY1_t1.pk)]) + 10 - output([SUBQUERY1_t1.col_int], [SUBQUERY1_t1.pk]), filter(nil), + conds(nil), nl_params_(nil) + 11 - output([1]), filter(nil), + access(nil) + 12 - output([T_FUN_MIN(CHILD_SUBQUERY3_t1.col_varchar)], [cast(T_FUN_COUNT(CHILD_SUBQUERY3_t1.col_varchar_key), DECIMAL(20, 0))]), filter([T_FUN_MIN(CHILD_SUBQUERY3_t1.col_varchar) = 'i'], [cast(T_FUN_COUNT(CHILD_SUBQUERY3_t1.col_varchar_key), DECIMAL(20, 0)) = ?]), + group(nil), agg_func([T_FUN_MIN(CHILD_SUBQUERY3_t1.col_varchar)], [T_FUN_COUNT(CHILD_SUBQUERY3_t1.col_varchar_key)]) + 13 - output([CHILD_SUBQUERY3_t1.col_varchar], [CHILD_SUBQUERY3_t1.col_varchar_key]), filter(nil), + equal_conds([CHILD_SUBQUERY3_t2.col_varchar_10 = CHILD_SUBQUERY3_t1.col_varchar_key]), other_conds(nil) + 14 - output([CHILD_SUBQUERY3_t2.col_varchar_10]), filter([CHILD_SUBQUERY3_t2.col_varchar_10 <= CHILD_SUBQUERY3_t2.col_varchar]), + access([CHILD_SUBQUERY3_t2.col_varchar_10], [CHILD_SUBQUERY3_t2.col_varchar]), partitions(p0) + 15 - output([CHILD_SUBQUERY3_t1.col_varchar_key], [CHILD_SUBQUERY3_t1.col_varchar]), filter(nil), + access([CHILD_SUBQUERY3_t1.col_varchar_key], [CHILD_SUBQUERY3_t1.col_varchar]), partitions(p0) + 16 - output([SUBQUERY1_t1.col_int], [SUBQUERY1_t1.pk]), filter(nil), + conds(nil), nl_params_(nil) + 17 - output([SUBQUERY1_t1.col_int], [SUBQUERY1_t1.pk]), filter(nil), + access([SUBQUERY1_t1.col_int], [SUBQUERY1_t1.pk]), partitions(p0) + 18 - output([1]), filter(nil) + 19 - output([1]), filter(nil), + access(nil) + 20 - output([UNION([1])]), filter(nil) + 21 - output([1]), filter(nil), + exec_params_(nil), onetime_exprs_([(?, ?) = ANY(subquery(1))]), init_plan_idxs_(nil) + 22 - output([1]), filter(nil), + equal_conds([SUBQUERY1_t3.col_varchar = SUBQUERY1_t2.col_varchar_key]), other_conds([SUBQUERY1_t3.col_int_key = SUBQUERY1_t2.col_int_key OR ?]) + 23 - output([SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar_key]), filter(nil), + access([SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar_key]), partitions(p0) + 24 - output([SUBQUERY1_t3.col_int_key], [SUBQUERY1_t3.col_varchar]), filter(nil), + access([SUBQUERY1_t3.col_int_key], [SUBQUERY1_t3.col_varchar]), partitions(p0) + 25 - output([T_FUN_SUM(cast(CHILD_SUBQUERY1_t1.col_varchar_key, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(CHILD_SUBQUERY1_t1.col_varchar, DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(cast(CHILD_SUBQUERY1_t1.col_varchar_key, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(CHILD_SUBQUERY1_t1.col_varchar, DOUBLE(-1, -1)))]) + 26 - output([cast(CHILD_SUBQUERY1_t1.col_varchar_key, DOUBLE(-1, -1))], [cast(CHILD_SUBQUERY1_t1.col_varchar, DOUBLE(-1, -1))]), filter(nil), + equal_conds([CHILD_SUBQUERY1_t2.col_varchar_20 = CHILD_SUBQUERY1_t1.col_varchar_key]), other_conds(nil) + 27 - output([CHILD_SUBQUERY1_t1.col_varchar_key], [CHILD_SUBQUERY1_t1.col_varchar]), filter(nil), + access([CHILD_SUBQUERY1_t1.col_varchar_key], [CHILD_SUBQUERY1_t1.col_varchar]), partitions(p0) + 28 - output([CHILD_SUBQUERY1_t2.col_varchar_20]), filter(nil), + access([CHILD_SUBQUERY1_t2.col_varchar_20]), partitions(p0) + 29 - output([1]), filter(nil), + exec_params_(nil), onetime_exprs_([(?, ?) = ANY(subquery(1))]), init_plan_idxs_(nil) + 30 - output([1]), filter(nil), + conds([SUBQUERY1_t3.col_int_key = SUBQUERY1_t2.col_int_key OR ?], [lnnvl(cast(SUBQUERY1_t3.col_varchar = SUBQUERY1_t2.col_varchar_key, TINYINT(-1, 0)))]), nl_params_(nil) + 31 - output([SUBQUERY1_t3.col_int_key], [SUBQUERY1_t3.col_varchar]), filter(nil), + conds([(T_OP_OR, cast(SUBQUERY1_t3.col_varchar_20_key, DECIMAL(-1, -1)) = VIEW10.5, (T_OP_IS, cast(SUBQUERY1_t3.col_varchar_20_key, DECIMAL(-1, -1)), NULL, 0), (T_OP_IS, VIEW10.5, NULL, 0))]), nl_params_(nil) + 32 - output([SUBQUERY1_t3.col_int_key], [SUBQUERY1_t3.col_varchar], [SUBQUERY1_t3.col_varchar_20_key]), filter(nil), + access([SUBQUERY1_t3.col_int_key], [SUBQUERY1_t3.col_varchar], [SUBQUERY1_t3.col_varchar_20_key]), partitions(p0) + 33 - output([VIEW10.5]), filter(nil) + 34 - output([VIEW10.5]), filter(nil), + access([VIEW10.5]) + 35 - output([cast(UNION([1]), DECIMAL(1, 0))]), filter(nil) + 36 - output([5]), filter(nil) + values({5}) + 37 - output([8]), filter(nil) + values({8}) + 38 - output([SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar_key]), filter(nil) + 39 - output([SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar_key]), filter(nil), + access([SUBQUERY1_t2.col_int_key], [SUBQUERY1_t2.col_varchar_key]), partitions(p0) + 40 - output([T_FUN_SUM(cast(CHILD_SUBQUERY1_t1.col_varchar_key, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(CHILD_SUBQUERY1_t1.col_varchar, DOUBLE(-1, -1)))]), filter(nil), + group(nil), agg_func([T_FUN_SUM(cast(CHILD_SUBQUERY1_t1.col_varchar_key, DOUBLE(-1, -1)))], [T_FUN_SUM(cast(CHILD_SUBQUERY1_t1.col_varchar, DOUBLE(-1, -1)))]) + 41 - output([cast(CHILD_SUBQUERY1_t1.col_varchar_key, DOUBLE(-1, -1))], [cast(CHILD_SUBQUERY1_t1.col_varchar, DOUBLE(-1, -1))]), filter(nil), + equal_conds([CHILD_SUBQUERY1_t2.col_varchar_20 = CHILD_SUBQUERY1_t1.col_varchar_key]), other_conds(nil) + 42 - output([CHILD_SUBQUERY1_t1.col_varchar_key], [CHILD_SUBQUERY1_t1.col_varchar]), filter(nil), + access([CHILD_SUBQUERY1_t1.col_varchar_key], [CHILD_SUBQUERY1_t1.col_varchar]), partitions(p0) + 43 - output([CHILD_SUBQUERY1_t2.col_varchar_20]), filter(nil), + access([CHILD_SUBQUERY1_t2.col_varchar_20]), partitions(p0) + 44 - output([table2.pk]), filter([(T_OP_NOT_BTW, cast(table1.col_int_key, DECIMAL(11, 0)), ?, ?) OR table1.col_varchar_key <= 'm']), + equal_conds([table2.col_varchar = table1.col_varchar_key]), other_conds(nil) + 45 - output([table2.col_varchar], [table2.pk]), filter(nil), + access([table2.col_varchar], [table2.pk]), partitions(p0) + 46 - output([table1.col_varchar_key], [table1.col_int_key]), filter(nil), + access([table1.col_varchar_key], [table1.col_int_key]), partitions(p0) + +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'x' +Warning 1292 Truncated incorrect DOUBLE value: 'j' +SELECT Min(table2 . `pk`) AS field1 +FROM ( cc AS table1 +RIGHT OUTER JOIN c AS table2 +ON ( table2 . `col_varchar` = table1 . `col_varchar_key` ) +) +WHERE ( ( 9, 5 ) IN (SELECT Sum(SUBQUERY1_t1 . `col_int`) AS SUBQUERY1_field1, +Max(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field2 +FROM ( cc AS SUBQUERY1_t1 +LEFT JOIN ( c AS SUBQUERY1_t2 +INNER JOIN c AS SUBQUERY1_t3 +ON ( SUBQUERY1_t3 . +`col_int_key` = +SUBQUERY1_t2 . +`col_int_key` +OR ( 'x', 'j' ) IN +(SELECT Sum(CHILD_SUBQUERY1_t1 . +`col_varchar_key`) AS +CHILD_SUBQUERY1_field1, +Sum(CHILD_SUBQUERY1_t1 . +`col_varchar` +) +AS +CHILD_SUBQUERY1_field2 +FROM ( cc AS CHILD_SUBQUERY1_t1 +INNER JOIN cc AS +CHILD_SUBQUERY1_t2 +ON ( +CHILD_SUBQUERY1_t2 . +`col_varchar_20` += +CHILD_SUBQUERY1_t1 . +`col_varchar_key` +) ) +) ) ) +ON ( SUBQUERY1_t3 . `col_varchar` = +SUBQUERY1_t2 . `col_varchar_key` +OR +SUBQUERY1_t3 . `col_varchar_20_key` NOT +IN +(SELECT 5 +UNION +SELECT 8) +) ) +WHERE ( 'i', 'm' ) IN (SELECT Min(CHILD_SUBQUERY3_t1 . +`col_varchar`) AS +CHILD_SUBQUERY3_field1, +Count(CHILD_SUBQUERY3_t1 . +`col_varchar_key`) AS +CHILD_SUBQUERY3_field2 +FROM ( cc AS CHILD_SUBQUERY3_t1 +RIGHT JOIN b AS +CHILD_SUBQUERY3_t2 +ON ( +CHILD_SUBQUERY3_t2 . +`col_varchar_10` = +CHILD_SUBQUERY3_t1 . +`col_varchar_key` ) +) +WHERE +CHILD_SUBQUERY3_t2 . `col_varchar_10` +<= +CHILD_SUBQUERY3_t2 . `col_varchar`)) ) +AND ( table1 . `col_int_key` NOT BETWEEN 226 AND ( 226 + 183 ) +OR table1 . `col_varchar_key` <= 'm' ) +AND (SELECT Max(SUBQUERY2_t1 . `col_varchar_20`) AS SUBQUERY2_field1 +FROM ( cc AS SUBQUERY2_t1 +INNER JOIN c AS SUBQUERY2_t2 +ON ( SUBQUERY2_t2 . `col_varchar_key` = +SUBQUERY2_t1 . `col_varchar` ) )) IS NULL +HAVING field1 > 't' +ORDER BY field1; ++--------+ +| field1 | ++--------+ ++--------+ +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'x' +Warning 1292 Truncated incorrect DOUBLE value: 'j' + +## 简化case +EXPLAIN SELECT 1 FROM ( cc AS SUBQUERY1_t1 LEFT JOIN ( c AS SUBQUERY1_t2 +INNER JOIN c AS SUBQUERY1_t3 +ON ( SUBQUERY1_t3.`col_int_key` = SUBQUERY1_t2.`col_int_key` +OR 1 IN (SELECT 1 union select 2)) +) ON (SUBQUERY1_t3.`col_varchar_20_key` NOT IN (SELECT 5 UNION SELECT 8))); +Query Plan +======================================================================================== +|ID|OPERATOR |NAME |EST. ROWS |COST | +---------------------------------------------------------------------------------------- +|0 |NESTED-LOOP OUTER JOIN CARTESIAN| |2.486761e+14 |1.759768e+14 | +|1 | TABLE SCAN |SUBQUERY1_t1(idx7)|100000 |25731 | +|2 | MATERIAL | |2486761188 |3799200062 | +|3 | SUBPLAN SCAN |VIEW1 |2486761188 |3342248357 | +|4 | SUBPLAN FILTER | |2486761188 |2999020764 | +|5 | NESTED-LOOP JOIN | |2486761188 |2655793169 | +|6 | NESTED-LOOP ANTI JOIN | |49253 |146317 | +|7 | TABLE SCAN |SUBQUERY1_t3 |100000 |64066 | +|8 | MATERIAL | |2 |2 | +|9 | SUBPLAN SCAN |VIEW2 |2 |2 | +|10| MERGE UNION DISTINCT | |2 |1 | +|11| EXPRESSION | |1 |1 | +|12| EXPRESSION | |1 |1 | +|13| MATERIAL | |100000 |46313 | +|14| TABLE SCAN |SUBQUERY1_t2(idx1)|100000 |27937 | +|15| MERGE UNION DISTINCT | |2 |1 | +|16| EXPRESSION | |1 |1 | +|17| EXPRESSION | |1 |1 | +======================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([1]), filter(nil), + access([SUBQUERY1_t1.pk]), partitions(p0) + 2 - output([1]), filter(nil) + 3 - output([1]), filter(nil), + access(nil) + 4 - output([1]), filter(nil), + exec_params_(nil), onetime_exprs_([1 = ANY(subquery(1))]), init_plan_idxs_(nil) + 5 - output([1]), filter(nil), + conds([SUBQUERY1_t3.col_int_key = SUBQUERY1_t2.col_int_key OR ?]), nl_params_(nil) + 6 - output([SUBQUERY1_t3.col_int_key]), filter(nil), + conds([(T_OP_OR, cast(SUBQUERY1_t3.col_varchar_20_key, DECIMAL(-1, -1)) = VIEW2.5, (T_OP_IS, cast(SUBQUERY1_t3.col_varchar_20_key, DECIMAL(-1, -1)), NULL, 0), (T_OP_IS, VIEW2.5, NULL, 0))]), nl_params_(nil) + 7 - output([SUBQUERY1_t3.col_int_key], [SUBQUERY1_t3.col_varchar_20_key]), filter(nil), + access([SUBQUERY1_t3.col_int_key], [SUBQUERY1_t3.col_varchar_20_key]), partitions(p0) + 8 - output([VIEW2.5]), filter(nil) + 9 - output([VIEW2.5]), filter(nil), + access([VIEW2.5]) + 10 - output([cast(UNION([1]), DECIMAL(1, 0))]), filter(nil) + 11 - output([5]), filter(nil) + values({5}) + 12 - output([8]), filter(nil) + values({8}) + 13 - output([SUBQUERY1_t2.col_int_key]), filter(nil) + 14 - output([SUBQUERY1_t2.col_int_key]), filter(nil), + access([SUBQUERY1_t2.col_int_key]), partitions(p0) + 15 - output([UNION([1])]), filter(nil) + 16 - output([1]), filter(nil) + values({1}) + 17 - output([2]), filter(nil) + values({2}) + +SELECT 1 FROM ( cc AS SUBQUERY1_t1 LEFT JOIN ( c AS SUBQUERY1_t2 +INNER JOIN c AS SUBQUERY1_t3 +ON ( SUBQUERY1_t3.`col_int_key` = SUBQUERY1_t2.`col_int_key` +OR 1 IN (SELECT 1 union select 2)) +) ON (SUBQUERY1_t3.`col_varchar_20_key` NOT IN (SELECT 5 UNION SELECT 8))); ++---+ +| 1 | ++---+ ++---+ + +drop table t1,t2,t3,t4,t5,tp1,tp2,C,D,BB,CC,B; +set autocommit = 0; + + +*********************push down outer join on condition end************** + +************************pullup select expr in query with offset begin********** +************************通过调整逻辑算子分配顺序实现,case不移除********************** + +set autocommit = 1; + +drop table if exists t1, t2; +create table t1 (c1 int, c2 int); +create table t2 (c1 int, c2 int); +EXPLAIN select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |74 | +|1 | TABLE SCAN |t1 |1 |37 | +|2 | TABLE SCAN |t2 |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(1), offset(2) + 2 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; ++------+------+--------------------------------------+ +| c1 | c2 | (select c1 from t2 where c2 = t1.c1) | ++------+------+--------------------------------------+ +| 3 | 3 | 3 | ++------+------+--------------------------------------+ +EXPLAIN select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |74 | +|1 | TABLE SCAN |t1 |1 |37 | +|2 | TABLE SCAN |t2 |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(1), offset(2) + 2 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; ++------+------+--------------------------------------+ +| c1 | c2 | (select c1 from t2 where c2 = t1.c1) | ++------+------+--------------------------------------+ +| 3 | 3 | 3 | ++------+------+--------------------------------------+ +EXPLAIN select c1, c2, c1 + c2, c2 + (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |74 | +|1 | TABLE SCAN |t1 |1 |37 | +|2 | TABLE SCAN |t2 |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c1 + t1.c2], [t1.c2 + subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(1), offset(2) + 2 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select c1, c2, c1 + c2, c2 + (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; ++------+------+---------+-------------------------------------------+ +| c1 | c2 | c1 + c2 | c2 + (select c1 from t2 where c2 = t1.c1) | ++------+------+---------+-------------------------------------------+ +| 3 | 3 | 6 | 6 | ++------+------+---------+-------------------------------------------+ +EXPLAIN select /*+no_rewrite*/ c1, c2, c1 + c2, c2 + (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |SUBPLAN FILTER| |1 |74 | +|1 | TABLE SCAN |t1 |1 |37 | +|2 | TABLE SCAN |t2 |1 |37 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c1 + t1.c2], [t1.c2 + subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0), + limit(1), offset(2) + 2 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+no_rewrite*/ c1, c2, c1 + c2, c2 + (select c1 from t2 where c2 = t1.c1) from t1 limit 1 offset 2; ++------+------+---------+-------------------------------------------+ +| c1 | c2 | c1 + c2 | c2 + (select c1 from t2 where c2 = t1.c1) | ++------+------+---------+-------------------------------------------+ +| 3 | 3 | 6 | 6 | ++------+------+---------+-------------------------------------------+ + +EXPLAIN select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 order by 3 limit 10 offset 2; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |LIMIT | |3 |227 | +|1 | TOP-N SORT | |5 |226 | +|2 | SUBPLAN FILTER| |5 |222 | +|3 | TABLE SCAN |t1 |5 |37 | +|4 | TABLE SCAN |t2 |1 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), limit(10), offset(2) + 1 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), sort_keys([subquery(1), ASC]), topn(10 + 2) + 2 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 order by 3 limit 10 offset 2; ++------+------+--------------------------------------+ +| c1 | c2 | (select c1 from t2 where c2 = t1.c1) | ++------+------+--------------------------------------+ +| 1 | 1 | 1 | +| 2 | 2 | 2 | +| 3 | 3 | 3 | ++------+------+--------------------------------------+ +EXPLAIN select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 order by 3 limit 10 offset 2; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |LIMIT | |3 |227 | +|1 | TOP-N SORT | |5 |226 | +|2 | SUBPLAN FILTER| |5 |222 | +|3 | TABLE SCAN |t1 |5 |37 | +|4 | TABLE SCAN |t2 |1 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), limit(10), offset(2) + 1 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), sort_keys([subquery(1), ASC]), topn(10 + 2) + 2 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 order by 3 limit 10 offset 2; ++------+------+--------------------------------------+ +| c1 | c2 | (select c1 from t2 where c2 = t1.c1) | ++------+------+--------------------------------------+ +| 1 | 1 | 1 | +| 2 | 2 | 2 | +| 3 | 3 | 3 | ++------+------+--------------------------------------+ +EXPLAIN select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 limit 10 offset 2; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER | |3 |154 | +|1 | LIMIT | |3 |43 | +|2 | HASH GROUP BY| |5 |43 | +|3 | TABLE SCAN |t1 |5 |37 | +|4 | TABLE SCAN |t2 |1 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), limit(10), offset(2) + 2 - output([t1.c1], [t1.c2]), filter(nil), + group([t1.c1], [t1.c2]), agg_func(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 limit 10 offset 2; ++------+------+--------------------------------------+ +| c1 | c2 | (select c1 from t2 where c2 = t1.c1) | ++------+------+--------------------------------------+ +| 3 | 3 | 3 | +| 4 | 4 | NULL | +| 5 | 5 | NULL | ++------+------+--------------------------------------+ +EXPLAIN select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 limit 10 offset 2; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------- +|0 |SUBPLAN FILTER | |3 |154 | +|1 | LIMIT | |3 |43 | +|2 | HASH GROUP BY| |5 |43 | +|3 | TABLE SCAN |t1 |5 |37 | +|4 | TABLE SCAN |t2 |1 |37 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), limit(10), offset(2) + 2 - output([t1.c1], [t1.c2]), filter(nil), + group([t1.c1], [t1.c2]), agg_func(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 4 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 limit 10 offset 2; ++------+------+--------------------------------------+ +| c1 | c2 | (select c1 from t2 where c2 = t1.c1) | ++------+------+--------------------------------------+ +| 3 | 3 | 3 | +| 4 | 4 | NULL | +| 5 | 5 | NULL | ++------+------+--------------------------------------+ +EXPLAIN select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 with rollup limit 10 offset 2; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |3 |155 | +|1 | LIMIT | |3 |44 | +|2 | MERGE GROUP BY| |5 |43 | +|3 | SORT | |5 |42 | +|4 | TABLE SCAN |t1 |5 |37 | +|5 | TABLE SCAN |t2 |1 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), limit(10), offset(2) + 2 - output([t1.c1], [t1.c2]), filter(nil), + group(nil), rollup([t1.c1], [t1.c2]), agg_func(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 with rollup limit 10 offset 2; ++------+------+--------------------------------------+ +| c1 | c2 | (select c1 from t2 where c2 = t1.c1) | ++------+------+--------------------------------------+ +| 2 | 2 | 2 | +| 2 | NULL | 2 | +| 3 | 3 | 3 | +| 3 | NULL | 3 | +| 4 | 4 | NULL | +| 4 | NULL | NULL | +| 5 | 5 | NULL | +| 5 | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------------------------+ +EXPLAIN select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 with rollup limit 10 offset 2; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +----------------------------------------- +|0 |SUBPLAN FILTER | |3 |155 | +|1 | LIMIT | |3 |44 | +|2 | MERGE GROUP BY| |5 |43 | +|3 | SORT | |5 |42 | +|4 | TABLE SCAN |t1 |5 |37 | +|5 | TABLE SCAN |t2 |1 |37 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [subquery(1)]), filter(nil), + exec_params_([t1.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), limit(10), offset(2) + 2 - output([t1.c1], [t1.c2]), filter(nil), + group(nil), rollup([t1.c1], [t1.c2]), agg_func(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC], [t1.c2, ASC]) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 5 - output([t2.c1]), filter([t2.c2 = ?]), + access([t2.c2], [t2.c1]), partitions(p0) + +select /*+no_rewrite*/ c1, c2, (select c1 from t2 where c2 = t1.c1) from t1 group by c1, c2 with rollup limit 10 offset 2; ++------+------+--------------------------------------+ +| c1 | c2 | (select c1 from t2 where c2 = t1.c1) | ++------+------+--------------------------------------+ +| 2 | 2 | 2 | +| 2 | NULL | 2 | +| 3 | 3 | 3 | +| 3 | NULL | 3 | +| 4 | 4 | NULL | +| 4 | NULL | NULL | +| 5 | 5 | NULL | +| 5 | NULL | NULL | +| NULL | NULL | NULL | ++------+------+--------------------------------------+ + +##select /*+no_rewrite*/ c1, (select max(c2) from t2) a from t1 order by (select c1 from t2 where c2 = a) + 1; +##select /*+no_rewrite*/ c1, (select max(c2) from t2) a from t1 group by (select c1 from t2 where c2 = a) + 1; +##select /*+no_rewrite*/ c1, (select max(c2) from t2) a from t1 order by (select c1 from t2 where c2 in (select c1 from t1 where c2 = a)) + 1; +##select /*+no_rewrite*/ c1, (select c1 from t2 where c2 = max(t1.c1) over () limit 1) a from t1 group by (select c1 from t2 where c2 = a); +##select /*+no_rewrite*/ c1, (select c2 from t2 zt2 where c1 = zt1.c1) a from t1 zt1 order by (select /*+no_rewrite*/ c1 from t2 zt3 where c2 = a); +##select /*+no_rewrite*/ c1, (select c2 from t2 zt2 where c1 = zt1.c1) a from t1 zt1 order by (select /*+no_rewrite*/ c1 from t2 zt3 where c2 = a) desc; +##select /*+no_rewrite*/ zt1.c1, (select zt2.c2 from t2 zt2 where zt2.c1 = zt1.c1) a from t1 zt1 order by (select /*+no_rewrite*/ zt3.c1 from t2 zt3 where zt3.c2 = a); +##select /*+no_rewrite*/ (select c1 from t2 where t1.c1 = c2 limit 1) a from t1 group by a order by a; +drop table t1; +drop table t2; + +set autocommit = 0; + + +************************pullup select expr in query with offset end********** +DROP TABLE IF EXISTS B, C, BB, CC; +CREATE TABLE B ( +col_varchar_10_key varchar(10), +pk int, +col_varchar_20_key varchar(20), +col_varchar varchar (1), +col_varchar_10 varchar(10), +col_int int, +col_varchar_20 varchar(20), +col_varchar_key varchar (1), +col_int_key int, +/*Indices*/ +key idx5(pk, col_varchar_10_key ), +primary key (pk) , +key idx7(pk, col_varchar_20_key ), +key idx3(pk, col_varchar_key ), +key idx1(pk, col_int_key )) ; + +CREATE TABLE C ( +col_varchar_10_key varchar(10), +col_varchar_10 varchar(10), +col_int_key int, +col_varchar_20_key varchar(20), +col_varchar_key varchar (1), +pk int, +col_int int, +col_varchar_20 varchar(20), +col_varchar varchar (1), +/*Indices*/ +key idx5(pk, col_varchar_10_key ), +key idx1(pk, col_int_key ), +key idx7(pk, col_varchar_20_key ), +key idx3(pk, col_varchar_key ), +primary key (pk) ) ; + +CREATE TABLE BB ( +col_varchar_20_key varchar(20), +pk int, +col_varchar_10 varchar(10), +col_varchar_key varchar (1), +col_varchar_10_key varchar(10), +col_int_key int, +col_varchar varchar (1), +col_int int, +col_varchar_20 varchar(20), +/*Indices*/ +key idx7(pk, col_varchar_20_key ), +primary key (pk) , +key idx3(pk, col_varchar_key ), +key idx5(pk, col_varchar_10_key ), +key idx1(pk, col_int_key )) ; + +CREATE TABLE CC ( +col_varchar_10 varchar(10), +col_varchar varchar (1), +col_int int, +col_varchar_key varchar (1), +pk int, +col_varchar_10_key varchar(10), +col_varchar_20 varchar(20), +col_int_key int, +col_varchar_20_key varchar(20), +/*Indices*/ +key idx3(pk, col_varchar_key ), +primary key (pk) , +key idx5(pk, col_varchar_10_key ), +key idx1(pk, col_int_key ), +key idx7(pk, col_varchar_20_key )) ; +EXPLAIN SELECT table1 . col_int_key AS field1, + table1 . col_varchar_20_key AS field2, + MAX(table1 . `col_varchar`) AS field3, + table2 . `col_int_key` AS field4, + + (SELECT DISTINCT SUM(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 + FROM C AS SUBQUERY1_t1) AS field5, + CONCAT (table1 . `col_varchar_20`, + table1 . `col_varchar_20_key`) AS field6, + table1 . `col_varchar_20` AS field7, + table2 . col_varchar_10_key AS field8, + table1 . `col_int` AS field9, + table1 . col_varchar_20_key AS field10, + + (SELECT MAX(SUBQUERY2_t2 . `pk`) AS SUBQUERY2_field1 + FROM (BB AS SUBQUERY2_t1 + LEFT OUTER JOIN C AS SUBQUERY2_t2 ON (SUBQUERY2_t2 . `col_varchar_key` = SUBQUERY2_t1 . `col_varchar`))) AS field11, + MIN(table1 . `col_int`) AS field12, + table1 . col_varchar_10_key AS field13 +FROM (CC AS table1 + LEFT JOIN ((B AS table2 + INNER JOIN CC AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_10_key`))) ON (table3 . `pk` = table2 . `col_int_key`)) +WHERE (table1 . `col_varchar_10` IN + (SELECT SUBQUERY3_t1 . `col_varchar_20` AS SUBQUERY3_field1 + FROM CC AS SUBQUERY3_t1 + GROUP BY SUBQUERY3_field1)) + AND (table1 . `col_varchar_key` IN ('a') + OR table1 . `col_varchar_key` <> 'g') + AND table1 . `col_varchar` IS NULL +GROUP BY field1, + field2, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field13 +HAVING field6 >= 'bx' +ORDER BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field12, + field13 +LIMIT 100; +Query Plan +================================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------------------------------------------------- +|0 |LIMIT | |100 |351842700| +|1 | TOP-N SORT | |100 |351842686| +|2 | HASH GROUP BY | |31388980 |285804647| +|3 | NESTED-LOOP JOIN CARTESIAN | |31388980 |233285952| +|4 | SUBPLAN SCAN |VIEW3 |1 |114859457| +|5 | SCALAR GROUP BY | |1 |114859457| +|6 | HASH OUTER JOIN | |98010000 |96138331 | +|7 | TABLE SCAN |SUBQUERY2_t1 |100000 |61860 | +|8 | TABLE SCAN |SUBQUERY2_t2(idx3)|100000 |27937 | +|9 | NESTED-LOOP JOIN CARTESIAN | |31388980 |98105914 | +|10| SUBPLAN SCAN |VIEW2 |1 |44833 | +|11| SCALAR GROUP BY | |1 |44833 | +|12| TABLE SCAN |SUBQUERY1_t1(idx5)|100000 |25731 | +|13| HASH RIGHT SEMI JOIN | |31388980 |77740499 | +|14| TABLE SCAN |SUBQUERY3_t1 |100000 |61860 | +|15| NESTED-LOOP OUTER JOIN CARTESIAN| |31706041 |23847064 | +|16| TABLE SCAN |table1 |327 |179347 | +|17| MATERIAL | |97030 |486167 | +|18| HASH JOIN | |97030 |428221 | +|19| TABLE SCAN |table3(idx3) |100000 |27937 | +|20| TABLE SCAN |table2 |100000 |64066 | +================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([table1.col_int_key], [table1.col_varchar_20_key], [T_FUN_MAX(table1.col_varchar)], [table2.col_int_key], [VIEW2.SUBQUERY1_field1], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_20_key], [VIEW3.SUBQUERY2_field1], [T_FUN_MIN(table1.col_int)], [table1.col_varchar_10_key]), filter(nil), limit(100), offset(nil) + 1 - output([table1.col_int_key], [table1.col_varchar_20_key], [T_FUN_MAX(table1.col_varchar)], [table2.col_int_key], [VIEW2.SUBQUERY1_field1], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [VIEW3.SUBQUERY2_field1], [T_FUN_MIN(table1.col_int)], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter(nil), sort_keys([table1.col_int_key, ASC], [table1.col_varchar_20_key, ASC], [T_FUN_MAX(table1.col_varchar), ASC], [table2.col_int_key, ASC], [VIEW2.SUBQUERY1_field1, ASC], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key), ASC], [table1.col_varchar_20, ASC], [table2.col_varchar_10_key, ASC], [table1.col_int, ASC], [VIEW3.SUBQUERY2_field1, ASC], [T_FUN_MIN(table1.col_int), ASC], [table1.col_varchar_10_key, ASC]), topn(100) + 2 - output([table1.col_int_key], [table1.col_varchar_20_key], [T_FUN_MAX(table1.col_varchar)], [table2.col_int_key], [VIEW2.SUBQUERY1_field1], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [VIEW3.SUBQUERY2_field1], [T_FUN_MIN(table1.col_int)], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter(nil), + group([VIEW2.SUBQUERY1_field1], [VIEW3.SUBQUERY2_field1], [table1.col_int_key], [table1.col_varchar_20_key], [table2.col_int_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_10_key]), agg_func([T_FUN_MAX(table1.col_varchar)], [T_FUN_MIN(table1.col_int)]) + 3 - output([table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar], [table2.col_int_key], [VIEW2.SUBQUERY1_field1], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [VIEW3.SUBQUERY2_field1], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([VIEW3.SUBQUERY2_field1]), filter(nil), + access([VIEW3.SUBQUERY2_field1]) + 5 - output([T_FUN_MAX(SUBQUERY2_t2.pk)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(SUBQUERY2_t2.pk)]) + 6 - output([SUBQUERY2_t2.pk]), filter(nil), + equal_conds([SUBQUERY2_t2.col_varchar_key = SUBQUERY2_t1.col_varchar]), other_conds(nil) + 7 - output([SUBQUERY2_t1.col_varchar]), filter(nil), + access([SUBQUERY2_t1.col_varchar]), partitions(p0) + 8 - output([SUBQUERY2_t2.col_varchar_key], [SUBQUERY2_t2.pk]), filter(nil), + access([SUBQUERY2_t2.col_varchar_key], [SUBQUERY2_t2.pk]), partitions(p0) + 9 - output([table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar], [table2.col_int_key], [VIEW2.SUBQUERY1_field1], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([VIEW2.SUBQUERY1_field1]), filter(nil), + access([VIEW2.SUBQUERY1_field1]) + 11 - output([T_FUN_SUM(SUBQUERY1_t1.pk)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(SUBQUERY1_t1.pk)]) + 12 - output([SUBQUERY1_t1.pk]), filter(nil), + access([SUBQUERY1_t1.pk]), partitions(p0) + 13 - output([table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar], [table2.col_int_key], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter(nil), + equal_conds([table1.col_varchar_10 = SUBQUERY3_t1.col_varchar_20]), other_conds(nil) + 14 - output([SUBQUERY3_t1.col_varchar_20]), filter(nil), + access([SUBQUERY3_t1.col_varchar_20]), partitions(p0) + 15 - output([table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar], [table2.col_int_key], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)], [table1.col_varchar_10]), filter(nil), + conds(nil), nl_params_(nil) + 16 - output([table1.col_varchar_10], [table1.col_varchar], [table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar_20], [table1.col_int], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter([(T_OP_IS, table1.col_varchar, NULL, 0)], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key) >= 'bx'], [table1.col_varchar_key = 'a' OR table1.col_varchar_key != 'g']), + access([table1.col_varchar_10], [table1.col_varchar_key], [table1.col_varchar], [table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar_20], [table1.col_int], [table1.col_varchar_10_key]), partitions(p0) + 17 - output([table2.col_int_key], [table2.col_varchar_10_key]), filter(nil) + 18 - output([table2.col_int_key], [table2.col_varchar_10_key]), filter(nil), + equal_conds([table3.pk = table2.col_int_key], [table3.col_varchar_key = table2.col_varchar_10_key]), other_conds(nil) + 19 - output([table3.col_varchar_key], [table3.pk]), filter(nil), + access([table3.col_varchar_key], [table3.pk]), partitions(p0) + 20 - output([table2.col_varchar_10_key], [table2.col_int_key]), filter(nil), + access([table2.col_varchar_10_key], [table2.col_int_key]), partitions(p0) + +SELECT table1 . col_int_key AS field1, + table1 . col_varchar_20_key AS field2, + MAX(table1 . `col_varchar`) AS field3, + table2 . `col_int_key` AS field4, + + (SELECT DISTINCT SUM(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 + FROM C AS SUBQUERY1_t1) AS field5, + CONCAT (table1 . `col_varchar_20`, + table1 . `col_varchar_20_key`) AS field6, + table1 . `col_varchar_20` AS field7, + table2 . col_varchar_10_key AS field8, + table1 . `col_int` AS field9, + table1 . col_varchar_20_key AS field10, + + (SELECT MAX(SUBQUERY2_t2 . `pk`) AS SUBQUERY2_field1 + FROM (BB AS SUBQUERY2_t1 + LEFT OUTER JOIN C AS SUBQUERY2_t2 ON (SUBQUERY2_t2 . `col_varchar_key` = SUBQUERY2_t1 . `col_varchar`))) AS field11, + MIN(table1 . `col_int`) AS field12, + table1 . col_varchar_10_key AS field13 +FROM (CC AS table1 + LEFT JOIN ((B AS table2 + INNER JOIN CC AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_10_key`))) ON (table3 . `pk` = table2 . `col_int_key`)) +WHERE (table1 . `col_varchar_10` IN + (SELECT SUBQUERY3_t1 . `col_varchar_20` AS SUBQUERY3_field1 + FROM CC AS SUBQUERY3_t1 + GROUP BY SUBQUERY3_field1)) + AND (table1 . `col_varchar_key` IN ('a') + OR table1 . `col_varchar_key` <> 'g') + AND table1 . `col_varchar` IS NULL +GROUP BY field1, + field2, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field13 +HAVING field6 >= 'bx' +ORDER BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field12, + field13 +LIMIT 100; ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+ +| field1 | field2 | field3 | field4 | field5 | field6 | field7 | field8 | field9 | field10 | field11 | field12 | field13 | ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+ +| 5 | w | NULL | NULL | 3 | xw | x | NULL | 2 | w | 2 | 2 | n | ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+ + +EXPLAIN SELECT /*+no_rewrite*/table1 . col_int_key AS field1, + table1 . col_varchar_20_key AS field2, + MAX(table1 . `col_varchar`) AS field3, + table2 . `col_int_key` AS field4, + + (SELECT DISTINCT SUM(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 + FROM C AS SUBQUERY1_t1) AS field5, + CONCAT (table1 . `col_varchar_20`, + table1 . `col_varchar_20_key`) AS field6, + table1 . `col_varchar_20` AS field7, + table2 . col_varchar_10_key AS field8, + table1 . `col_int` AS field9, + table1 . col_varchar_20_key AS field10, + + (SELECT MAX(SUBQUERY2_t2 . `pk`) AS SUBQUERY2_field1 + FROM (BB AS SUBQUERY2_t1 + LEFT OUTER JOIN C AS SUBQUERY2_t2 ON (SUBQUERY2_t2 . `col_varchar_key` = SUBQUERY2_t1 . `col_varchar`))) AS field11, + MIN(table1 . `col_int`) AS field12, + table1 . col_varchar_10_key AS field13 +FROM (CC AS table1 + LEFT JOIN ((B AS table2 + INNER JOIN CC AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_10_key`))) ON (table3 . `pk` = table2 . `col_int_key`)) +WHERE (table1 . `col_varchar_10` IN + (SELECT SUBQUERY3_t1 . `col_varchar_20` AS SUBQUERY3_field1 + FROM CC AS SUBQUERY3_t1 + GROUP BY SUBQUERY3_field1)) + AND (table1 . `col_varchar_key` IN ('a') + OR table1 . `col_varchar_key` <> 'g') + AND table1 . `col_varchar` IS NULL +GROUP BY field1, + field2, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field13 +HAVING field6 >= 'bx' +ORDER BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field12, + field13 +LIMIT 100; +Query Plan +================================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------------------------------------------------- +|0 |LIMIT | |100 |2346780066| +|1 | TOP-N SORT | |100 |2346780052| +|2 | HASH GROUP BY | |15853021 |2316704643| +|3 | SUBPLAN FILTER | |47559061 |2239895690| +|4 | SUBPLAN FILTER | |47559061 |2118427208| +|5 | NESTED-LOOP OUTER JOIN CARTESIAN| |95118121 |70163328 | +|6 | TABLE SCAN |table1 |981 |132510 | +|7 | MATERIAL | |97030 |486167 | +|8 | HASH JOIN | |97030 |428221 | +|9 | TABLE SCAN |table3(idx3) |100000 |27937 | +|10| TABLE SCAN |table2 |100000 |64066 | +|11| HASH GROUP BY | |101 |94757 | +|12| TABLE SCAN |SUBQUERY3_t1 |100000 |61860 | +|13| SCALAR GROUP BY | |1 |44833 | +|14| TABLE SCAN |SUBQUERY1_t1(idx5)|100000 |25731 | +|15| SCALAR GROUP BY | |1 |114859457 | +|16| HASH OUTER JOIN | |98010000 |96138331 | +|17| TABLE SCAN |SUBQUERY2_t1 |100000 |61860 | +|18| TABLE SCAN |SUBQUERY2_t2(idx3)|100000 |27937 | +================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([table1.col_int_key], [table1.col_varchar_20_key], [T_FUN_MAX(table1.col_varchar)], [table2.col_int_key], [?], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_20_key], [?], [T_FUN_MIN(table1.col_int)], [table1.col_varchar_10_key]), filter(nil), limit(100), offset(nil) + 1 - output([table1.col_int_key], [table1.col_varchar_20_key], [T_FUN_MAX(table1.col_varchar)], [table2.col_int_key], [?], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [?], [T_FUN_MIN(table1.col_int)], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter(nil), sort_keys([table1.col_int_key, ASC], [table1.col_varchar_20_key, ASC], [T_FUN_MAX(table1.col_varchar), ASC], [table2.col_int_key, ASC], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key), ASC], [table1.col_varchar_20, ASC], [table2.col_varchar_10_key, ASC], [table1.col_int, ASC], [T_FUN_MIN(table1.col_int), ASC], [table1.col_varchar_10_key, ASC]), topn(100) + 2 - output([table1.col_int_key], [table1.col_varchar_20_key], [T_FUN_MAX(table1.col_varchar)], [table2.col_int_key], [?], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [?], [T_FUN_MIN(table1.col_int)], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter([CONCAT(table1.col_varchar_20, table1.col_varchar_20_key) >= 'bx']), + group([table1.col_int_key], [table1.col_varchar_20_key], [table2.col_int_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_20_key], [table1.col_varchar_10_key]), agg_func([T_FUN_MAX(table1.col_varchar)], [T_FUN_MIN(table1.col_int)]) + 3 - output([table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar], [table2.col_int_key], [?], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [?], [table1.col_varchar_10_key], [CONCAT(table1.col_varchar_20, table1.col_varchar_20_key)]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)], [subquery(2)]), init_plan_idxs_(nil) + 4 - output([table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar], [table2.col_int_key], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_10_key]), filter([table1.col_varchar_10 = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 5 - output([table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar], [table2.col_int_key], [table1.col_varchar_20], [table2.col_varchar_10_key], [table1.col_int], [table1.col_varchar_10_key], [table1.col_varchar_10]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([table1.col_varchar_10], [table1.col_varchar], [table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar_20], [table1.col_int], [table1.col_varchar_10_key]), filter([(T_OP_IS, table1.col_varchar, NULL, 0)], [table1.col_varchar_key = 'a' OR table1.col_varchar_key != 'g']), + access([table1.col_varchar_10], [table1.col_varchar_key], [table1.col_varchar], [table1.col_int_key], [table1.col_varchar_20_key], [table1.col_varchar_20], [table1.col_int], [table1.col_varchar_10_key]), partitions(p0) + 7 - output([table2.col_int_key], [table2.col_varchar_10_key]), filter(nil) + 8 - output([table2.col_int_key], [table2.col_varchar_10_key]), filter(nil), + equal_conds([table3.pk = table2.col_int_key], [table3.col_varchar_key = table2.col_varchar_10_key]), other_conds(nil) + 9 - output([table3.col_varchar_key], [table3.pk]), filter(nil), + access([table3.col_varchar_key], [table3.pk]), partitions(p0) + 10 - output([table2.col_varchar_10_key], [table2.col_int_key]), filter(nil), + access([table2.col_varchar_10_key], [table2.col_int_key]), partitions(p0) + 11 - output([SUBQUERY3_t1.col_varchar_20]), filter(nil), + group([SUBQUERY3_t1.col_varchar_20]), agg_func(nil) + 12 - output([SUBQUERY3_t1.col_varchar_20]), filter(nil), + access([SUBQUERY3_t1.col_varchar_20]), partitions(p0) + 13 - output([T_FUN_SUM(SUBQUERY1_t1.pk)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(SUBQUERY1_t1.pk)]) + 14 - output([SUBQUERY1_t1.pk]), filter(nil), + access([SUBQUERY1_t1.pk]), partitions(p0) + 15 - output([T_FUN_MAX(SUBQUERY2_t2.pk)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(SUBQUERY2_t2.pk)]) + 16 - output([SUBQUERY2_t2.pk]), filter(nil), + equal_conds([SUBQUERY2_t2.col_varchar_key = SUBQUERY2_t1.col_varchar]), other_conds(nil) + 17 - output([SUBQUERY2_t1.col_varchar]), filter(nil), + access([SUBQUERY2_t1.col_varchar]), partitions(p0) + 18 - output([SUBQUERY2_t2.col_varchar_key], [SUBQUERY2_t2.pk]), filter(nil), + access([SUBQUERY2_t2.col_varchar_key], [SUBQUERY2_t2.pk]), partitions(p0) + +SELECT /*+no_rewrite*/table1 . col_int_key AS field1, + table1 . col_varchar_20_key AS field2, + MAX(table1 . `col_varchar`) AS field3, + table2 . `col_int_key` AS field4, + + (SELECT DISTINCT SUM(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 + FROM C AS SUBQUERY1_t1) AS field5, + CONCAT (table1 . `col_varchar_20`, + table1 . `col_varchar_20_key`) AS field6, + table1 . `col_varchar_20` AS field7, + table2 . col_varchar_10_key AS field8, + table1 . `col_int` AS field9, + table1 . col_varchar_20_key AS field10, + + (SELECT MAX(SUBQUERY2_t2 . `pk`) AS SUBQUERY2_field1 + FROM (BB AS SUBQUERY2_t1 + LEFT OUTER JOIN C AS SUBQUERY2_t2 ON (SUBQUERY2_t2 . `col_varchar_key` = SUBQUERY2_t1 . `col_varchar`))) AS field11, + MIN(table1 . `col_int`) AS field12, + table1 . col_varchar_10_key AS field13 +FROM (CC AS table1 + LEFT JOIN ((B AS table2 + INNER JOIN CC AS table3 ON (table3 . `col_varchar_key` = table2 . `col_varchar_10_key`))) ON (table3 . `pk` = table2 . `col_int_key`)) +WHERE (table1 . `col_varchar_10` IN + (SELECT SUBQUERY3_t1 . `col_varchar_20` AS SUBQUERY3_field1 + FROM CC AS SUBQUERY3_t1 + GROUP BY SUBQUERY3_field1)) + AND (table1 . `col_varchar_key` IN ('a') + OR table1 . `col_varchar_key` <> 'g') + AND table1 . `col_varchar` IS NULL +GROUP BY field1, + field2, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field13 +HAVING field6 >= 'bx' +ORDER BY field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8, + field9, + field10, + field11, + field12, + field13 +LIMIT 100; ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+ +| field1 | field2 | field3 | field4 | field5 | field6 | field7 | field8 | field9 | field10 | field11 | field12 | field13 | ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+ +| 5 | w | NULL | NULL | 3 | xw | x | NULL | 2 | w | 2 | 2 | n | ++--------+--------+--------+--------+--------+--------+--------+--------+--------+---------+---------+---------+---------+ + +drop table if exists t1, t2 ,t3; +create table t1(a int, b int, c int); +create table t2(a int, b int, c int); +create table t3(a int, b int, c int); +create table t_temp(a int, b int, c int); +create table t_temp_join(a int, b int, c int, d int, e int, f int); + +set autocommit = 0; + +##test basic view stmt ==> remove order by +EXPLAIN select a, b from (select a, b from t1 order by a) group by a, b; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |HASH GROUP BY| |10001 |109862| +|1 | TABLE SCAN |t1 |100000 |64066 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b]), filter(nil), + group([t1.a], [t1.b]), agg_func(nil) + 1 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + +select a, b from (select a, b from t1 order by a) group by a, b; ++------+------+ +| a | b | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++------+------+ +EXPLAIN select /*+no_rewrite*/a,b from (select * from t1 order by a) group by a, b; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |HASH GROUP BY| |10001 |355778| +|1 | SUBPLAN SCAN| |100000 |309982| +|2 | SORT | |100000 |296180| +|3 | TABLE SCAN|t1 |100000 |66272 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b]), filter(nil), + group([.a], [.b]), agg_func(nil) + 1 - output([.a], [.b]), filter(nil), + access([.a], [.b]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/a,b from (select * from t1 order by a) group by a, b; ++------+------+ +| a | b | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++------+------+ +EXPLAIN insert into t_temp select * from (select * from t1 order by a) group by a, b; +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------- +|0 |INSERT | |10001 |114828| +|1 | SUBPLAN SCAN |VIEW1|10001 |113448| +|2 | HASH GROUP BY| |10001 |112068| +|3 | TABLE SCAN |t1 |100000 |66272 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + group([t1.a], [t1.b]), agg_func(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert into t_temp select * from (select * from t1 order by a) group by a, b; +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ +| 1 | 1 | 1 | +| 2 | 2 | 2 | +| 3 | 3 | 3 | +| 4 | 4 | 4 | ++------+------+------+ +rollback; +EXPLAIN insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a) group by a, b; +Query Plan +=========================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------- +|0 |INSERT | |10001 |114828| +|1 | SUBPLAN SCAN |VIEW1|10001 |113448| +|2 | HASH GROUP BY| |10001 |112068| +|3 | TABLE SCAN |t1 |100000 |66272 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + group([t1.a], [t1.b]), agg_func(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a) group by a, b; +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |UPDATE | |99000 |428234| +|1 | HASH RIGHT SEMI JOIN| |99000 |329234| +|2 | TABLE SCAN |t1 |100000 |61860 | +|3 | TABLE SCAN |t_temp|100000 |66272 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), + update([t_temp.b=column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c], [column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]), filter(nil), + equal_conds([t_temp.b = t1.a]), other_conds(nil) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 3 - output([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), filter(nil), + access([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), partitions(p0) + +update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN update /*+no_rewrite*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------ +|0 |UPDATE | |50000 |1983232714| +|1 | SUBPLAN FILTER| |50000 |1983182714| +|2 | TABLE SCAN |t_temp|100000 |66272 | +|3 | SORT | |100000 |252929 | +|4 | TABLE SCAN |t1 |100000 |61860 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), + update([t_temp.b=column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c], [column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]), filter([t_temp.b = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), filter(nil), + access([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), partitions(p0) + 3 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +update /*+no_rewrite*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN delete from t_temp where not exists (select null from t1 where t1.a = t_temp.a order by a); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |DELETE | |1000 |330234| +|1 | HASH RIGHT ANTI JOIN| |1000 |329234| +|2 | TABLE SCAN |t1 |100000 |61860 | +|3 | TABLE SCAN |t_temp|100000 |66272 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + equal_conds([t1.a = t_temp.a]), other_conds(nil) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 3 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +delete from t_temp where not exists (select null from t1 where t1.a = t_temp.a order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN delete /*+no_rewrite*/from t_temp where not exists (select null from t1 where t1.a = t_temp.a order by t_temp.a); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------ +|0 |DELETE | |50000 |7036988616| +|1 | SUBPLAN FILTER| |50000 |7036938616| +|2 | TABLE SCAN |t_temp|100000 |66272 | +|3 | TABLE SCAN |t1 |990 |70232 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_([t_temp.a]), onetime_exprs_(nil), init_plan_idxs_(nil) + 2 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + 3 - output([NULL]), filter([t1.a = ?]), + access([t1.a]), partitions(p0) + +delete /*+no_rewrite*/from t_temp where not exists (select null from t1 where t1.a = t_temp.a order by t_temp.a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; + +EXPLAIN select a, b from (select a, b from t1 order by a) group by a, b limit 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |LIMIT | |1 |102705| +|1 | HASH GROUP BY| |1 |102705| +|2 | TABLE SCAN |t1 |100000 |64066 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b]), filter(nil), limit(1), offset(nil) + 1 - output([t1.a], [t1.b]), filter(nil), + group([t1.a], [t1.b]), agg_func(nil) + 2 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + +select a, b from (select a, b from t1 order by a) group by a, b limit 1; ++------+------+ +| a | b | ++------+------+ ++------+------+ +EXPLAIN select /*+no_rewrite*/ a, b from (select a, b from t1 order by a) group by a, b limit 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |LIMIT | |1 |326996| +|1 | HASH GROUP BY| |1 |326996| +|2 | SUBPLAN SCAN| |100000 |288357| +|3 | SORT | |100000 |274554| +|4 | TABLE SCAN|t1 |100000 |64066 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b]), filter(nil), limit(1), offset(nil) + 1 - output([.a], [.b]), filter(nil), + group([.a], [.b]), agg_func(nil) + 2 - output([.a], [.b]), filter(nil), + access([.a], [.b]) + 3 - output([t1.a], [t1.b]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + +select /*+no_rewrite*/ a, b from (select a, b from t1 order by a) group by a, b limit 1; ++------+------+ +| a | b | ++------+------+ ++------+------+ + +EXPLAIN select a, b from (select a, b from t1 order by a, (select a from t3)) group by a, b; +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |HASH GROUP BY | |10001 |199326| +|1 | SUBPLAN SCAN | |100000 |153530| +|2 | SUBPLAN FILTER| |100000 |139728| +|3 | TABLE SCAN |t1 |100000 |64066 | +|4 | TABLE SCAN |t3 |100000 |61860 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b]), filter(nil), + group([.a], [.b]), agg_func(nil) + 1 - output([.a], [.b]), filter(nil), + access([.a], [.b]) + 2 - output([t1.a], [t1.b]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + 4 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select a, b from (select a, b from t1 order by a, (select a from t3)) group by a, b; ++------+------+ +| a | b | ++------+------+ ++------+------+ +EXPLAIN select /*+no_rewrite*/ a, b from (select a, b from t1 order by a, (select a from t3)) group by a, b; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |HASH GROUP BY | |10001 |409814| +|1 | SUBPLAN SCAN | |100000 |364018| +|2 | SORT | |100000 |350216| +|3 | SUBPLAN FILTER| |100000 |139728| +|4 | TABLE SCAN |t1 |100000 |64066 | +|5 | TABLE SCAN |t3 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b]), filter(nil), + group([.a], [.b]), agg_func(nil) + 1 - output([.a], [.b]), filter(nil), + access([.a], [.b]) + 2 - output([t1.a], [t1.b]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 4 - output([t1.a], [t1.b]), filter(nil), + access([t1.a], [t1.b]), partitions(p0) + 5 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select /*+no_rewrite*/ a, b from (select a, b from t1 order by a, (select a from t3)) group by a, b; ++------+------+ +| a | b | ++------+------+ ++------+------+ +EXPLAIN insert into t_temp select * from (select * from t1 order by a, (select a from t3)) group by a, b; +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------------- +|0 |INSERT | |10001 |204292| +|1 | SUBPLAN SCAN |VIEW1|10001 |202912| +|2 | HASH GROUP BY | |10001 |201531| +|3 | SUBPLAN SCAN | |100000 |155736| +|4 | SUBPLAN FILTER| |100000 |141933| +|5 | TABLE SCAN |t1 |100000 |66272 | +|6 | TABLE SCAN |t3 |100000 |61860 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([.a], [.b], [.c]), filter(nil), + group([.a], [.b]), agg_func(nil) + 3 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 6 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +insert into t_temp select * from (select * from t1 order by a, (select a from t3)) group by a, b; +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a, (select a from t3)) group by a, b; +Query Plan +============================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +---------------------------------------------- +|0 |INSERT | |10001 |204292| +|1 | SUBPLAN SCAN |VIEW1|10001 |202912| +|2 | HASH GROUP BY | |10001 |201531| +|3 | SUBPLAN SCAN | |100000 |155736| +|4 | SUBPLAN FILTER| |100000 |141933| +|5 | TABLE SCAN |t1 |100000 |66272 | +|6 | TABLE SCAN |t3 |100000 |61860 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([.a], [.b], [.c]), filter(nil), + group([.a], [.b]), agg_func(nil) + 3 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 6 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a, (select a from t3)) group by a, b; +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a, (select a from t3)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |UPDATE | |99000 |517698| +|1 | HASH RIGHT SEMI JOIN| |99000 |418698| +|2 | SUBPLAN SCAN |VIEW1 |100000 |151324| +|3 | SUBPLAN FILTER | |100000 |137522| +|4 | TABLE SCAN |t1 |100000 |61860 | +|5 | TABLE SCAN |t3 |100000 |61860 | +|6 | TABLE SCAN |t_temp|100000 |66272 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), + update([t_temp.b=column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c], [column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]), filter(nil), + equal_conds([t_temp.b = VIEW1.a]), other_conds(nil) + 2 - output([VIEW1.a]), filter(nil), + access([VIEW1.a]) + 3 - output([t1.a]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 5 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + 6 - output([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), filter(nil), + access([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), partitions(p0) + +update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a, (select a from t3)); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN update /*+NO_REWRITE*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a, (select a from t3)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |UPDATE | |50000 |1983308375| +|1 | SUBPLAN FILTER | |50000 |1983258375| +|2 | TABLE SCAN |t_temp|100000 |66272 | +|3 | SORT | |100000 |328590 | +|4 | SUBPLAN FILTER| |100000 |137522 | +|5 | TABLE SCAN |t1 |100000 |61860 | +|6 | TABLE SCAN |t3 |100000 |61860 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), + update([t_temp.b=column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c], [column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]), filter([t_temp.b = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), filter(nil), + access([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), partitions(p0) + 3 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 6 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +update /*+NO_REWRITE*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a, (select a from t3)); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN delete from t_temp where t_temp.b in (select a from t1 order by a, (select a from t3)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |DELETE | |99000 |517698| +|1 | HASH RIGHT SEMI JOIN| |99000 |418698| +|2 | SUBPLAN SCAN |VIEW1 |100000 |151324| +|3 | SUBPLAN FILTER | |100000 |137522| +|4 | TABLE SCAN |t1 |100000 |61860 | +|5 | TABLE SCAN |t3 |100000 |61860 | +|6 | TABLE SCAN |t_temp|100000 |66272 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + equal_conds([t_temp.b = VIEW1.a]), other_conds(nil) + 2 - output([VIEW1.a]), filter(nil), + access([VIEW1.a]) + 3 - output([t1.a]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 5 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + 6 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +delete from t_temp where t_temp.b in (select a from t1 order by a, (select a from t3)); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN delete /*+NO_REWRITE*/from t_temp where t_temp.b in (select a from t1 order by a, (select a from t3)); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |DELETE | |50000 |1983308375| +|1 | SUBPLAN FILTER | |50000 |1983258375| +|2 | TABLE SCAN |t_temp|100000 |66272 | +|3 | SORT | |100000 |328590 | +|4 | SUBPLAN FILTER| |100000 |137522 | +|5 | TABLE SCAN |t1 |100000 |61860 | +|6 | TABLE SCAN |t3 |100000 |61860 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter([t_temp.b = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + 3 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 5 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 6 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +delete /*+NO_REWRITE*/from t_temp where t_temp.b in (select a from t1 order by a, (select a from t3)); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; + +EXPLAIN select sum(a) from (select a from t1 order by a); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SCALAR GROUP BY| |1 |80961| +|1 | TABLE SCAN |t1 |100000 |61860| +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.a)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.a)]) + 1 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select sum(a) from (select a from t1 order by a); ++--------+ +| sum(a) | ++--------+ +| NULL | ++--------+ +EXPLAIN select /*+no_rewrite*/sum(a) from (select a from t1 order by a); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SCALAR GROUP BY| |1 |285832| +|1 | SUBPLAN SCAN | |100000 |266731| +|2 | SORT | |100000 |252929| +|3 | TABLE SCAN |t1 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.a)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.a)]) + 1 - output([.a]), filter(nil), + access([.a]) + 2 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select /*+no_rewrite*/sum(a) from (select a from t1 order by a); ++--------+ +| sum(a) | ++--------+ +| NULL | ++--------+ + +EXPLAIN select sum(a) from (select a from t1 order by a) limit 1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |LIMIT | |1 |80961| +|1 | SCALAR GROUP BY| |1 |80961| +|2 | TABLE SCAN |t1 |100000 |61860| +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(t1.a)]), filter(nil), limit(1), offset(nil) + 1 - output([T_FUN_SUM(t1.a)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(t1.a)]) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select sum(a) from (select a from t1 order by a) limit 1; ++--------+ +| sum(a) | ++--------+ +| NULL | ++--------+ +EXPLAIN select /*+no_rewrite*/sum(a) from (select a from t1 order by a) limit 1; +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |LIMIT | |1 |285832| +|1 | SCALAR GROUP BY| |1 |285832| +|2 | SUBPLAN SCAN | |100000 |266731| +|3 | SORT | |100000 |252929| +|4 | TABLE SCAN |t1 |100000 |61860 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.a)]), filter(nil), limit(1), offset(nil) + 1 - output([T_FUN_SUM(.a)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.a)]) + 2 - output([.a]), filter(nil), + access([.a]) + 3 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select /*+no_rewrite*/sum(a) from (select a from t1 order by a) limit 1; ++--------+ +| sum(a) | ++--------+ +| NULL | ++--------+ + +EXPLAIN select sum(a) from (select a from t1 order by a, (select a from t3)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |SCALAR GROUP BY | |1 |170425| +|1 | SUBPLAN SCAN | |100000 |151324| +|2 | SUBPLAN FILTER| |100000 |137522| +|3 | TABLE SCAN |t1 |100000 |61860 | +|4 | TABLE SCAN |t3 |100000 |61860 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.a)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.a)]) + 1 - output([.a]), filter(nil), + access([.a]) + 2 - output([t1.a]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 4 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select sum(a) from (select a from t1 order by a, (select a from t3)); ++--------+ +| sum(a) | ++--------+ +| NULL | ++--------+ +EXPLAIN select /*+no_rewrite*/sum(a) from (select a from t1 order by a, (select a from t3)); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |SCALAR GROUP BY | |1 |361494| +|1 | SUBPLAN SCAN | |100000 |342393| +|2 | SORT | |100000 |328590| +|3 | SUBPLAN FILTER| |100000 |137522| +|4 | TABLE SCAN |t1 |100000 |61860 | +|5 | TABLE SCAN |t3 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_SUM(.a)]), filter(nil), + group(nil), agg_func([T_FUN_SUM(.a)]) + 1 - output([.a]), filter(nil), + access([.a]) + 2 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 5 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select /*+no_rewrite*/sum(a) from (select a from t1 order by a, (select a from t3)); ++--------+ +| sum(a) | ++--------+ +| NULL | ++--------+ + +EXPLAIN select distinct * from (select * from t1 order by a); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |HASH DISTINCT| |100000 |182295| +|1 | TABLE SCAN |t1 |100000 |66272 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), + distinct([t1.a], [t1.b], [t1.c]) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select distinct * from (select * from t1 order by a); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/distinct * from (select * from t1 order by a); +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |HASH DISTINCT| |100000 |426006| +|1 | SUBPLAN SCAN| |100000 |309982| +|2 | SORT | |100000 |296180| +|3 | TABLE SCAN|t1 |100000 |66272 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), + distinct([.a], [.b], [.c]) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/distinct * from (select * from t1 order by a); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +EXPLAIN select distinct * from (select * from t1 order by a) limit 1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------- +|0 |LIMIT | |1 |38 | +|1 | HASH DISTINCT| |1 |38 | +|2 | TABLE SCAN |t1 |1 |36 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + distinct([t1.a], [t1.b], [t1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select distinct * from (select * from t1 order by a) limit 1; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/distinct * from (select * from t1 order by a) limit 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |LIMIT | |1 |296181| +|1 | HASH DISTINCT| |1 |296181| +|2 | SUBPLAN SCAN| |1 |296180| +|3 | SORT | |1 |296180| +|4 | TABLE SCAN|t1 |100000 |66272 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), limit(1), offset(nil) + 1 - output([.a], [.b], [.c]), filter(nil), + distinct([.a], [.b], [.c]) + 2 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/distinct * from (select * from t1 order by a) limit 1; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +EXPLAIN select distinct * from (select * from t1 order by a, (select a from t3)); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |SUBPLAN FILTER| |100000 |257957| +|1 | HASH DISTINCT| |100000 |182295| +|2 | TABLE SCAN |t1 |100000 |66272 | +|3 | TABLE SCAN |t3 |100000 |61860 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + distinct([t1.a], [t1.b], [t1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 3 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select distinct * from (select * from t1 order by a, (select a from t3)); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/distinct * from (select * from t1 order by a, (select a from t3)); +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |HASH DISTINCT | |100000 |501667| +|1 | SUBPLAN SCAN | |100000 |385644| +|2 | SORT | |100000 |371842| +|3 | SUBPLAN FILTER| |100000 |141933| +|4 | TABLE SCAN |t1 |100000 |66272 | +|5 | TABLE SCAN |t3 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), + distinct([.a], [.b], [.c]) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 5 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select /*+no_rewrite*/distinct * from (select * from t1 order by a, (select a from t3)); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +EXPLAIN select * from (select * from t1 order by a) order by b; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------- +|0 |SORT | |100000 |296180| +|1 | TABLE SCAN|t1 |100000 |66272 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.b, ASC]) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from (select * from t1 order by a) order by b; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a) order by b; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |SORT | |100000 |539891| +|1 | SUBPLAN SCAN| |100000 |309982| +|2 | SORT | |100000 |296180| +|3 | TABLE SCAN|t1 |100000 |66272 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), sort_keys([.b, ASC]) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a) order by b; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +EXPLAIN select * from (select * from t1 order by a) order by b limit 1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |1 |107637| +|1 | TOP-N SORT | |1 |107637| +|2 | TABLE SCAN|t1 |100000 |66272 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.b, ASC]), topn(1) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from (select * from t1 order by a) order by b limit 1; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a) order by b limit 1; +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |LIMIT | |1 |351348| +|1 | TOP-N SORT | |1 |351348| +|2 | SUBPLAN SCAN| |100000 |309982| +|3 | SORT | |100000 |296180| +|4 | TABLE SCAN|t1 |100000 |66272 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), limit(1), offset(nil) + 1 - output([.a], [.b], [.c]), filter(nil), sort_keys([.b, ASC]), topn(1) + 2 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a) order by b limit 1; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +EXPLAIN select * from (select * from t1 order by a, (select a from t3)) order by b; +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------- +|0 |SORT | |100000 |296180| +|1 | TABLE SCAN|t1 |100000 |66272 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.b, ASC]) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from (select * from t1 order by a, (select a from t3)) order by b; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)) order by b; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |SORT | |100000 |615552| +|1 | SUBPLAN SCAN | |100000 |385644| +|2 | SORT | |100000 |371842| +|3 | SUBPLAN FILTER| |100000 |141933| +|4 | TABLE SCAN |t1 |100000 |66272 | +|5 | TABLE SCAN |t3 |100000 |61860 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), sort_keys([.b, ASC]) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 5 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)) order by b; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +##test basic view stmt ==> can't remove order by +EXPLAIN select * from (select * from t1 order by a); +Query Plan +====================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------- +|0 |SORT | |100000 |296180| +|1 | TABLE SCAN|t1 |100000 |66272 | +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from (select * from t1 order by a); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a); +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |SUBPLAN SCAN| |100000 |309982| +|1 | SORT | |100000 |296180| +|2 | TABLE SCAN|t1 |100000 |66272 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN insert into t_temp select * from (select * from t1 order by a); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------- +|0 |INSERT | |100000 |323784| +|1 | SUBPLAN SCAN|VIEW1|100000 |309982| +|2 | SORT | |100000 |296180| +|3 | TABLE SCAN|t1 |100000 |66272 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert into t_temp select * from (select * from t1 order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a); +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------- +|0 |INSERT | |100000 |323784| +|1 | SUBPLAN SCAN|VIEW1|100000 |309982| +|2 | SORT | |100000 |296180| +|3 | TABLE SCAN|t1 |100000 |66272 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert /*+NO_REWRITE*/into t_temp select * from (select * from t1 order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |UPDATE | |99000 |428234| +|1 | HASH RIGHT SEMI JOIN| |99000 |329234| +|2 | TABLE SCAN |t1 |100000 |61860 | +|3 | TABLE SCAN |t_temp|100000 |66272 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), + update([t_temp.b=column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c], [column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]), filter(nil), + equal_conds([t_temp.b = t1.a]), other_conds(nil) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 3 - output([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), filter(nil), + access([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), partitions(p0) + +update t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN update /*+NO_REWRITE*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------ +|0 |UPDATE | |50000 |1983232714| +|1 | SUBPLAN FILTER| |50000 |1983182714| +|2 | TABLE SCAN |t_temp|100000 |66272 | +|3 | SORT | |100000 |252929 | +|4 | TABLE SCAN |t1 |100000 |61860 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]), + update([t_temp.b=column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c], [column_conv(INT,PS:(11,0),NULL,cast(t_temp.b + 100, INT(-1, 0)))]), filter([t_temp.b = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), filter(nil), + access([t_temp.b], [t_temp.__pk_increment], [t_temp.a], [t_temp.c]), partitions(p0) + 3 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +update /*+NO_REWRITE*/t_temp set t_temp.b = t_temp.b + 100 where t_temp.b in (select a from t1 order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN delete from t_temp where t_temp.b in (select a from t1 order by a); +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------- +|0 |DELETE | |99000 |428234| +|1 | HASH RIGHT SEMI JOIN| |99000 |329234| +|2 | TABLE SCAN |t1 |100000 |61860 | +|3 | TABLE SCAN |t_temp|100000 |66272 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + equal_conds([t_temp.b = t1.a]), other_conds(nil) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + 3 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +delete from t_temp where t_temp.b in (select a from t1 order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; +EXPLAIN delete /*+NO_REWRITE*/from t_temp where t_temp.b in (select a from t1 order by a); +Query Plan +================================================ +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------ +|0 |DELETE | |50000 |1983232714| +|1 | SUBPLAN FILTER| |50000 |1983182714| +|2 | TABLE SCAN |t_temp|100000 |66272 | +|3 | SORT | |100000 |252929 | +|4 | TABLE SCAN |t1 |100000 |61860 | +================================================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t_temp: ({t_temp: (t_temp.__pk_increment, t_temp.a, t_temp.b, t_temp.c)})}]) + 1 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter([t_temp.b = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 2 - output([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.__pk_increment], [t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + 3 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +delete /*+NO_REWRITE*/from t_temp where t_temp.b in (select a from t1 order by a); +EXPLAIN select * from t_temp; +Query Plan +====================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------- +|0 |TABLE SCAN|t_temp|100000 |66272| +====================================== + +Outputs & filters: +------------------------------------- + 0 - output([t_temp.a], [t_temp.b], [t_temp.c]), filter(nil), + access([t_temp.a], [t_temp.b], [t_temp.c]), partitions(p0) + +select * from t_temp; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +rollback; + +EXPLAIN select * from (select * from t1 order by a) limit 1; +Query Plan +======================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------- +|0 |LIMIT | |1 |107637| +|1 | TOP-N SORT | |1 |107637| +|2 | TABLE SCAN|t1 |100000 |66272 | +======================================= + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from (select * from t1 order by a) limit 1; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a) limit 1; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |LIMIT | |1 |296180| +|1 | SUBPLAN SCAN| |1 |296180| +|2 | TOP-N SORT | |1 |296180| +|3 | TABLE SCAN|t1 |100000 |66272 | +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), limit(1), offset(nil) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a) limit 1; ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +EXPLAIN select distinct * from (select * from t1 order by a limit 1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |HASH DISTINCT | |1 |107639| +|1 | SUBPLAN SCAN | |1 |107637| +|2 | LIMIT | |1 |107637| +|3 | TOP-N SORT | |1 |107637| +|4 | TABLE SCAN|t1 |100000 |66272 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), + distinct([.a], [.b], [.c]) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select distinct * from (select * from t1 order by a limit 1); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/distinct * from (select * from t1 order by a limit 1); +Query Plan +========================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------- +|0 |HASH DISTINCT | |1 |107639| +|1 | SUBPLAN SCAN | |1 |107637| +|2 | LIMIT | |1 |107637| +|3 | TOP-N SORT | |1 |107637| +|4 | TABLE SCAN|t1 |100000 |66272 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), + distinct([.a], [.b], [.c]) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/distinct * from (select * from t1 order by a limit 1); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +EXPLAIN select a from (select a from t1 order by a limit 1) group by a; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |MERGE GROUP BY| |1 |84850| +|1 | SUBPLAN SCAN | |1 |84850| +|2 | LIMIT | |1 |84850| +|3 | TOP-N SORT | |1 |84850| +|4 | TABLE SCAN|t1 |100000 |61860| +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a]), filter(nil), + group([.a]), agg_func(nil) + 1 - output([.a]), filter(nil), + access([.a]) + 2 - output([t1.a]), filter(nil), limit(1), offset(nil) + 3 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select a from (select a from t1 order by a limit 1) group by a; ++------+ +| a | ++------+ ++------+ +EXPLAIN select /*+no_rewrite*/a from (select a from t1 order by a limit 1) group by a; +Query Plan +======================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +---------------------------------------- +|0 |MERGE GROUP BY| |1 |84850| +|1 | SUBPLAN SCAN | |1 |84850| +|2 | LIMIT | |1 |84850| +|3 | TOP-N SORT | |1 |84850| +|4 | TABLE SCAN|t1 |100000 |61860| +======================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a]), filter(nil), + group([.a]), agg_func(nil) + 1 - output([.a]), filter(nil), + access([.a]) + 2 - output([t1.a]), filter(nil), limit(1), offset(nil) + 3 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 4 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select /*+no_rewrite*/a from (select a from t1 order by a limit 1) group by a; ++------+ +| a | ++------+ ++------+ + +EXPLAIN select * from (select * from t1 order by a, (select a from t3)); +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SORT | |100000 |371842| +|1 | SUBPLAN FILTER| |100000 |141933| +|2 | TABLE SCAN |t1 |100000 |66272 | +|3 | TABLE SCAN |t3 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 3 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select * from (select * from t1 order by a, (select a from t3)); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)); +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |SUBPLAN SCAN | |100000 |385644| +|1 | SORT | |100000 |371842| +|2 | SUBPLAN FILTER| |100000 |141933| +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | TABLE SCAN |t3 |100000 |61860 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)); ++------+------+------+ +| a | b | c | ++------+------+------+ ++------+------+------+ + +##test join view stmt ==> remove stmt +EXPLAIN select * from (select * from t1 order by a), t2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |10000000000|7285474711| +|1 | TABLE SCAN |t2 |100000 |66272 | +|2 | MATERIAL | |100000 |121398 | +|3 | TABLE SCAN |t1 |100000 |66272 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from (select * from t1 order by a), t2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a), t2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |10000000000|7285718422| +|1 | SUBPLAN SCAN | |100000 |309982 | +|2 | SORT | |100000 |296180 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | MATERIAL | |100000 |121398 | +|5 | TABLE SCAN |t2 |100000 |66272 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([t2.a], [t2.b], [t2.c]), filter(nil) + 5 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a), t2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN insert into t_temp_join (select * from (select * from t1 order by a), t2); +Query Plan +=============================================================== +|ID|OPERATOR |NAME |EST. ROWS |COST | +--------------------------------------------------------------- +|0 |INSERT | |10000000000|10045913433| +|1 | SUBPLAN SCAN |VIEW1|10000000000|8665694072 | +|2 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7285474711 | +|3 | TABLE SCAN |t2 |100000 |66272 | +|4 | MATERIAL | |100000 |121398 | +|5 | TABLE SCAN |t1 |100000 |66272 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c)]), filter(nil), + columns([{t_temp_join: ({t_temp_join: (t_temp_join.__pk_increment, t_temp_join.a, t_temp_join.b, t_temp_join.c, t_temp_join.d, t_temp_join.e, t_temp_join.f)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.a], [VIEW1.b], [VIEW1.c]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.c], [VIEW1.a], [VIEW1.b], [VIEW1.c]) + 2 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 3 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil) + 5 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +insert into t_temp_join (select * from (select * from t1 order by a), t2); +EXPLAIN insert /*+*/ + +select * from (select * from t1 order by a, (select a from t3)), t2; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'select * from (select * from t1 order by a, (select a from t3)), t2' at line 3 +insert /*+*/ + +select * from (select * from t1 order by a, (select a from t3)), t2; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'select * from (select * from t1 order by a, (select a from t3)), t2' at line 3 +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)), t2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |10000000000|7285794083| +|1 | SUBPLAN SCAN | |100000 |385644 | +|2 | SORT | |100000 |371842 | +|3 | SUBPLAN FILTER | |100000 |141933 | +|4 | TABLE SCAN |t1 |100000 |66272 | +|5 | TABLE SCAN |t3 |100000 |61860 | +|6 | MATERIAL | |100000 |121398 | +|7 | TABLE SCAN |t2 |100000 |66272 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 5 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + 6 - output([t2.a], [t2.b], [t2.c]), filter(nil) + 7 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a, (select a from t3)), t2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +EXPLAIN select * from (select * from t1 order by a) v1, (select * from t2 order by a) v2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |10000000000|7285474711| +|1 | TABLE SCAN |t1 |100000 |66272 | +|2 | MATERIAL | |100000 |121398 | +|3 | TABLE SCAN |t2 |100000 |66272 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 2 - output([t2.a], [t2.b], [t2.c]), filter(nil) + 3 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select * from (select * from t1 order by a) v1, (select * from t2 order by a) v2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a) v1, (select * from t2 order by a) v2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |10000000000|7285962132| +|1 | SUBPLAN SCAN |v1 |100000 |309982 | +|2 | SORT | |100000 |296180 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | MATERIAL | |100000 |365108 | +|5 | SUBPLAN SCAN |v2 |100000 |309982 | +|6 | SORT | |100000 |296180 | +|7 | TABLE SCAN |t2 |100000 |66272 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([v1.a], [v1.b], [v1.c], [v2.a], [v2.b], [v2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([v1.a], [v1.b], [v1.c]), filter(nil), + access([v1.a], [v1.b], [v1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([v2.a], [v2.b], [v2.c]), filter(nil) + 5 - output([v2.a], [v2.b], [v2.c]), filter(nil), + access([v2.a], [v2.b], [v2.c]) + 6 - output([t2.a], [t2.b], [t2.c]), filter(nil), sort_keys([t2.a, ASC]) + 7 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a) v1, (select * from t2 order by a) v2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +EXPLAIN select * from (select * from t1 order by a) v left join t2 on v.a = t2.a; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |HASH OUTER JOIN| |98010000 |58439627| +|1 | TABLE SCAN |t1 |100000 |66272 | +|2 | TABLE SCAN |t2 |100000 |66272 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 2 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select * from (select * from t1 order by a) v left join t2 on v.a = t2.a; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a) v left join t2 on v.a = t2.a; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |HASH OUTER JOIN| |98010000 |58683338| +|1 | SUBPLAN SCAN |v |100000 |309982 | +|2 | SORT | |100000 |296180 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | TABLE SCAN |t2 |100000 |66272 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([v.a], [v.b], [v.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([v.a = t2.a]), other_conds(nil) + 1 - output([v.a], [v.b], [v.c]), filter(nil), + access([v.a], [v.b], [v.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a) v left join t2 on v.a = t2.a; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +EXPLAIN select * from (select * from t1 order by a, (select a from t3)) v left join t2 on v.a = t2.a; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |HASH OUTER JOIN | |98010000 |58529091| +|1 | SUBPLAN SCAN |v |100000 |155736 | +|2 | SUBPLAN FILTER| |100000 |141933 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | TABLE SCAN |t3 |100000 |61860 | +|5 | TABLE SCAN |t2 |100000 |66272 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([v.a], [v.b], [v.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([v.a = t2.a]), other_conds(nil) + 1 - output([v.a], [v.b], [v.c]), filter(nil), + access([v.a], [v.b], [v.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + 5 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select * from (select * from t1 order by a, (select a from t3)) v left join t2 on v.a = t2.a; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a) v left join t2 on v.a = t2.a; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |HASH OUTER JOIN| |98010000 |58683338| +|1 | SUBPLAN SCAN |v |100000 |309982 | +|2 | SORT | |100000 |296180 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | TABLE SCAN |t2 |100000 |66272 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([v.a], [v.b], [v.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([v.a = t2.a]), other_conds(nil) + 1 - output([v.a], [v.b], [v.c]), filter(nil), + access([v.a], [v.b], [v.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a) v left join t2 on v.a = t2.a; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +EXPLAIN select * from (select * from t1 order by a) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; +Query Plan +============================================ +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------- +|0 |HASH OUTER JOIN| |98010000 |58439627| +|1 | TABLE SCAN |t1 |100000 |66272 | +|2 | TABLE SCAN |t2 |100000 |66272 | +============================================ + +Outputs & filters: +------------------------------------- + 0 - output([t1.a], [t1.b], [t1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([t1.a = t2.a]), other_conds(nil) + 1 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 2 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select * from (select * from t1 order by a) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST | +--------------------------------------------- +|0 |MERGE OUTER JOIN| |98010000 |58775514| +|1 | SUBPLAN SCAN |v1 |100000 |309982 | +|2 | SORT | |100000 |296180 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | SUBPLAN SCAN |v2 |100000 |309982 | +|5 | SORT | |100000 |296180 | +|6 | TABLE SCAN |t2 |100000 |66272 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([v1.a], [v1.b], [v1.c], [v2.a], [v2.b], [v2.c]), filter(nil), + equal_conds([v1.a = v2.a]), other_conds(nil) + 1 - output([v1.a], [v1.b], [v1.c]), filter(nil), + access([v1.a], [v1.b], [v1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([v2.a], [v2.b], [v2.c]), filter(nil), + access([v2.a], [v2.b], [v2.c]) + 5 - output([t2.a], [t2.b], [t2.c]), filter(nil), sort_keys([t2.a, ASC]) + 6 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +EXPLAIN select * from (select * from t1 order by a limit 1) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |HASH OUTER JOIN| |990 |207323| +|1 | SUBPLAN SCAN |v1 |1 |107637| +|2 | LIMIT | |1 |107637| +|3 | TOP-N SORT | |1 |107637| +|4 | TABLE SCAN |t1 |100000 |66272 | +|5 | TABLE SCAN |t2 |100000 |66272 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([v1.a], [v1.b], [v1.c], [t2.a], [t2.b], [t2.c]), filter(nil), + equal_conds([v1.a = t2.a]), other_conds(nil) + 1 - output([v1.a], [v1.b], [v1.c]), filter(nil), + access([v1.a], [v1.b], [v1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 5 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select * from (select * from t1 order by a limit 1) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a limit 1) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; +Query Plan +=========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------- +|0 |MERGE OUTER JOIN| |990 |432009| +|1 | SUBPLAN SCAN |v1 |1 |107637| +|2 | LIMIT | |1 |107637| +|3 | TOP-N SORT | |1 |107637| +|4 | TABLE SCAN |t1 |100000 |66272 | +|5 | SUBPLAN SCAN |v2 |100000 |309982| +|6 | SORT | |100000 |296180| +|7 | TABLE SCAN |t2 |100000 |66272 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output([v1.a], [v1.b], [v1.c], [v2.a], [v2.b], [v2.c]), filter(nil), + equal_conds([v1.a = v2.a]), other_conds(nil) + 1 - output([v1.a], [v1.b], [v1.c]), filter(nil), + access([v1.a], [v1.b], [v1.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 5 - output([v2.a], [v2.b], [v2.c]), filter(nil), + access([v2.a], [v2.b], [v2.c]) + 6 - output([t2.a], [t2.b], [t2.c]), filter(nil), sort_keys([t2.a, ASC]) + 7 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a limit 1) v1 left join (select * from t2 order by a) v2 on v1.a = v2.a; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +##test join view stmt ==> can't remove stmt +EXPLAIN select * from (select * from t1 order by (select a from t3)), t2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |10000000000|7285564175| +|1 | SUBPLAN SCAN | |100000 |155736 | +|2 | SUBPLAN FILTER | |100000 |141933 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | TABLE SCAN |t3 |100000 |61860 | +|5 | MATERIAL | |100000 |121398 | +|6 | TABLE SCAN |t2 |100000 |66272 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + 5 - output([t2.a], [t2.b], [t2.c]), filter(nil) + 6 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select * from (select * from t1 order by (select a from t3)), t2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by (select a from t3)), t2; +Query Plan +=========================================================== +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |10000000000|7285564175| +|1 | SUBPLAN SCAN | |100000 |155736 | +|2 | SUBPLAN FILTER | |100000 |141933 | +|3 | TABLE SCAN |t1 |100000 |66272 | +|4 | TABLE SCAN |t3 |100000 |61860 | +|5 | MATERIAL | |100000 |121398 | +|6 | TABLE SCAN |t2 |100000 |66272 | +=========================================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 2 - output([t1.a], [t1.b], [t1.c]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 3 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + 4 - output([t3.a]), filter(nil), + access([t3.a]), partitions(p0) + 5 - output([t2.a], [t2.b], [t2.c]), filter(nil) + 6 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by (select a from t3)), t2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +EXPLAIN select * from (select * from t1 order by a limit 1), t2; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |100000 |246762| +|1 | TABLE SCAN |t2 |100000 |66272 | +|2 | MATERIAL | |1 |107638| +|3 | SUBPLAN SCAN | |1 |107637| +|4 | LIMIT | |1 |107637| +|5 | TOP-N SORT | |1 |107637| +|6 | TABLE SCAN |t1 |100000 |66272 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + 2 - output([.a], [.b], [.c]), filter(nil) + 3 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 5 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 6 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select * from (select * from t1 order by a limit 1), t2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ +EXPLAIN select /*+no_rewrite*/* from (select * from t1 order by a limit 1), t2; +Query Plan +===================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +----------------------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| |100000 |246762| +|1 | TABLE SCAN |t2 |100000 |66272 | +|2 | MATERIAL | |1 |107638| +|3 | SUBPLAN SCAN | |1 |107637| +|4 | LIMIT | |1 |107637| +|5 | TOP-N SORT | |1 |107637| +|6 | TABLE SCAN |t1 |100000 |66272 | +===================================================== + +Outputs & filters: +------------------------------------- + 0 - output([.a], [.b], [.c], [t2.a], [t2.b], [t2.c]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([t2.a], [t2.b], [t2.c]), filter(nil), + access([t2.a], [t2.b], [t2.c]), partitions(p0) + 2 - output([.a], [.b], [.c]), filter(nil) + 3 - output([.a], [.b], [.c]), filter(nil), + access([.a], [.b], [.c]) + 4 - output([t1.a], [t1.b], [t1.c]), filter(nil), limit(1), offset(nil) + 5 - output([t1.a], [t1.b], [t1.c]), filter(nil), sort_keys([t1.a, ASC]), topn(1) + 6 - output([t1.a], [t1.b], [t1.c]), filter(nil), + access([t1.a], [t1.b], [t1.c]), partitions(p0) + +select /*+no_rewrite*/* from (select * from t1 order by a limit 1), t2; ++------+------+------+------+------+------+ +| a | b | c | a | b | c | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +drop table if exists t1, t2, t3, t4; +create table t1 (pk int primary key, c1 int, c2 int); +create table t2 (pk int primary key, c1 int, c2 int); +create table t3 (pk int primary key, c1 int, c2 int); +create table t4 (pk int primary key, c1 int, c2 int); + +insert/**/ into t3 values (1, 1, 1); + +EXPLAIN select * from t3 where not exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); +Query Plan +=============================================================== +|ID|OPERATOR |NAME |EST. ROWS |COST | +--------------------------------------------------------------- +|0 |HASH ANTI JOIN | |1000 |11739554317| +|1 | TABLE SCAN |t3 |100000 |64066 | +|2 | SUBPLAN SCAN |VIEW1|10000000000|8456752484 | +|3 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7076533123 | +|4 | TABLE SCAN |t1 |100000 |59654 | +|5 | MATERIAL | |100000 |80235 | +|6 | TABLE SCAN |t2 |100000 |61860 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t3.pk], [t3.c1], [t3.c2]), filter(nil), + equal_conds([VIEW1.t2.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.pk], [t3.c1]), filter(nil), + access([t3.c2], [t3.pk], [t3.c1]), partitions(p0) + 2 - output([VIEW1.t2.c2]), filter(nil), startup_filter([0]), + access([VIEW1.t2.c2]) + 3 - output([t2.c2]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([1]), filter(nil), + access([t1.pk]), partitions(p0) + 5 - output([t2.c2]), filter(nil) + 6 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +select * from t3 where not exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); ++----+------+------+ +| pk | c1 | c2 | ++----+------+------+ +| 1 | 1 | 1 | ++----+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t3 where not exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); +Query Plan +================================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------------- +|0 |SUBPLAN FILTER | |50000 |2.087386e+14 | +|1 | TABLE SCAN |t3 |100000 |64066 | +|2 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7076530917 | +|3 | TABLE SCAN |t1 |100000 |59654 | +|4 | MATERIAL | |100000 |78030 | +|5 | TABLE SCAN |t2 |100000 |59654 | +================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t3.pk], [t3.c1], [t3.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t3.c2], [t3.pk], [t3.c1]), filter(nil), + access([t3.c2], [t3.pk], [t3.c1]), partitions(p0) + 2 - output([1]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 3 - output([1]), filter(nil), + access([t1.pk]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access([t2.pk]), partitions(p0) + +select /*+no_rewrite*/ * from t3 where not exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); ++----+------+------+ +| pk | c1 | c2 | ++----+------+------+ +| 1 | 1 | 1 | ++----+------+------+ + +EXPLAIN select * from t3 where exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); +Query Plan +=============================================================== +|ID|OPERATOR |NAME |EST. ROWS |COST | +--------------------------------------------------------------- +|0 |HASH SEMI JOIN | |99000 |11739554317| +|1 | TABLE SCAN |t3 |100000 |64066 | +|2 | SUBPLAN SCAN |VIEW1|10000000000|8456752484 | +|3 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7076533123 | +|4 | TABLE SCAN |t1 |100000 |59654 | +|5 | MATERIAL | |100000 |80235 | +|6 | TABLE SCAN |t2 |100000 |61860 | +=============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([t3.pk], [t3.c1], [t3.c2]), filter(nil), + equal_conds([VIEW1.t2.c2 = t3.c2]), other_conds(nil) + 1 - output([t3.c2], [t3.pk], [t3.c1]), filter(nil), + access([t3.c2], [t3.pk], [t3.c1]), partitions(p0) + 2 - output([VIEW1.t2.c2]), filter(nil), startup_filter([0]), + access([VIEW1.t2.c2]) + 3 - output([t2.c2]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([1]), filter(nil), + access([t1.pk]), partitions(p0) + 5 - output([t2.c2]), filter(nil) + 6 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + +select * from t3 where exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); ++----+------+------+ +| pk | c1 | c2 | ++----+------+------+ ++----+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t3 where exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); +Query Plan +================================================================= +|ID|OPERATOR |NAME|EST. ROWS |COST | +----------------------------------------------------------------- +|0 |SUBPLAN FILTER | |50000 |2.087386e+14 | +|1 | TABLE SCAN |t3 |100000 |64066 | +|2 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7076530917 | +|3 | TABLE SCAN |t1 |100000 |59654 | +|4 | MATERIAL | |100000 |78030 | +|5 | TABLE SCAN |t2 |100000 |59654 | +================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t3.pk], [t3.c1], [t3.c2]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t3.c2], [t3.pk], [t3.c1]), filter(nil), + access([t3.c2], [t3.pk], [t3.c1]), partitions(p0) + 2 - output([1]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 3 - output([1]), filter(nil), + access([t1.pk]), partitions(p0) + 4 - output([1]), filter(nil) + 5 - output([1]), filter(nil), + access([t2.pk]), partitions(p0) + +select /*+no_rewrite*/ * from t3 where exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t3.c2); ++----+------+------+ +| pk | c1 | c2 | ++----+------+------+ ++----+------+------+ + +EXPLAIN select * from t3 where not exists (select 1 from t4 where t3.c2 = t4.c2 and exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t4.c2)); +Query Plan +================================================================= +|ID|OPERATOR |NAME |EST. ROWS |COST | +----------------------------------------------------------------- +|0 |HASH RIGHT ANTI JOIN | |1000 |11739793097| +|1 | SUBPLAN SCAN |VIEW2|99000 |11739529025| +|2 | HASH SEMI JOIN | |99000 |11739515361| +|3 | TABLE SCAN |t4 |100000 |61860 | +|4 | SUBPLAN SCAN |VIEW1|10000000000|8456752484 | +|5 | NESTED-LOOP JOIN CARTESIAN| |10000000000|7076533123 | +|6 | TABLE SCAN |t1 |100000 |59654 | +|7 | MATERIAL | |100000 |80235 | +|8 | TABLE SCAN |t2 |100000 |61860 | +|9 | TABLE SCAN |t3 |100000 |64066 | +================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([t3.pk], [t3.c1], [t3.c2]), filter(nil), + equal_conds([t3.c2 = VIEW2.t4.c2]), other_conds(nil) + 1 - output([VIEW2.t4.c2]), filter(nil), + access([VIEW2.t4.c2]) + 2 - output([t4.c2]), filter(nil), + equal_conds([VIEW1.t2.c2 = t4.c2]), other_conds(nil) + 3 - output([t4.c2]), filter(nil), + access([t4.c2]), partitions(p0) + 4 - output([VIEW1.t2.c2]), filter(nil), startup_filter([0]), + access([VIEW1.t2.c2]) + 5 - output([t2.c2]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter(nil), + access([t1.pk]), partitions(p0) + 7 - output([t2.c2]), filter(nil) + 8 - output([t2.c2]), filter(nil), + access([t2.c2]), partitions(p0) + 9 - output([t3.c2], [t3.pk], [t3.c1]), filter(nil), + access([t3.c2], [t3.pk], [t3.c1]), partitions(p0) + +select * from t3 where not exists (select 1 from t4 where t3.c2 = t4.c2 and exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t4.c2)); ++----+------+------+ +| pk | c1 | c2 | ++----+------+------+ +| 1 | 1 | 1 | ++----+------+------+ +EXPLAIN select /*+no_rewrite*/ * from t3 where not exists (select 1 from t4 where t3.c2 = t4.c2 and exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t4.c2)); +Query Plan +============================================================================ +|ID|OPERATOR |NAME|EST. ROWS |COST | +---------------------------------------------------------------------------- +|0 |SUBPLAN FILTER | |50000 |2.191851e+19 | +|1 | TABLE SCAN |t3 |100000 |64066 | +|2 | NESTED-LOOP JOIN CARTESIAN | |1.000000e+15 |7.076464e+14 | +|3 | NESTED-LOOP JOIN CARTESIAN| |10000000000 |7076530917 | +|4 | TABLE SCAN |t4 |100000 |59654 | +|5 | MATERIAL | |100000 |78030 | +|6 | TABLE SCAN |t1 |100000 |59654 | +|7 | MATERIAL | |100000 |78030 | +|8 | TABLE SCAN |t2 |100000 |59654 | +============================================================================ + +Outputs & filters: +------------------------------------- + 0 - output([t3.pk], [t3.c1], [t3.c2]), filter([(T_OP_NOT_EXISTS, subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([t3.c2], [t3.pk], [t3.c1]), filter(nil), + access([t3.c2], [t3.pk], [t3.c1]), partitions(p0) + 2 - output([1]), filter(nil), startup_filter([0]), + conds(nil), nl_params_(nil) + 3 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 4 - output([1]), filter(nil), + access([t4.pk]), partitions(p0) + 5 - output([1]), filter(nil) + 6 - output([1]), filter(nil), + access([t1.pk]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access([t2.pk]), partitions(p0) + +select /*+no_rewrite*/ * from t3 where not exists (select 1 from t4 where t3.c2 = t4.c2 and exists (select 1 from t1 left join t2 on t1.c1 = t2.c1 where t2.pk is null and t2.c2 = t4.c2)); ++----+------+------+ +| pk | c1 | c2 | ++----+------+------+ +| 1 | 1 | 1 | ++----+------+------+ + +drop table t1,t2,t3,t_temp; + +DROP TABLE IF EXISTS `d`, `cc`; + +CREATE TABLE `d` ( + `col_varchar_10` varchar(10) DEFAULT NULL, + `col_varchar` varchar(1) DEFAULT NULL, + `col_varchar_20_key` varchar(20) DEFAULT NULL, + `col_varchar_20` varchar(20) DEFAULT NULL, + `col_varchar_10_key` varchar(10) DEFAULT NULL, + `col_int` int(11) DEFAULT NULL, + `col_varchar_key` varchar(1) DEFAULT NULL, + `col_int_key` int(11) DEFAULT NULL, + `pk` int(11) NOT NULL, + PRIMARY KEY (`pk`), + KEY `idx7` (`pk`, `col_varchar_20_key`) BLOCK_SIZE 16384 GLOBAL, + KEY `idx5` (`pk`, `col_varchar_10_key`) BLOCK_SIZE 16384 GLOBAL, + KEY `idx3` (`pk`, `col_varchar_key`) BLOCK_SIZE 16384 GLOBAL, + KEY `idx1` (`pk`, `col_int_key`) BLOCK_SIZE 16384 GLOBAL +) ; + +CREATE TABLE `cc` ( + `col_varchar_key` varchar(1) DEFAULT NULL, + `col_int` int(11) DEFAULT NULL, + `col_varchar_20` varchar(20) DEFAULT NULL, + `col_int_key` int(11) DEFAULT NULL, + `col_varchar_20_key` varchar(20) DEFAULT NULL, + `col_varchar` varchar(1) DEFAULT NULL, + `col_varchar_10_key` varchar(10) DEFAULT NULL, + `pk` int(11) NOT NULL, + `col_varchar_10` varchar(10) DEFAULT NULL, + PRIMARY KEY (`pk`), + KEY `idx3` (`pk`, `col_varchar_key`) BLOCK_SIZE 16384 GLOBAL, + KEY `idx1` (`pk`, `col_int_key`) BLOCK_SIZE 16384 GLOBAL, + KEY `idx7` (`pk`, `col_varchar_20_key`) BLOCK_SIZE 16384 GLOBAL, + KEY `idx5` (`pk`, `col_varchar_10_key`) BLOCK_SIZE 16384 GLOBAL +) ; + +EXPLAIN SELECT DISTINCT MIN(DISTINCT table1 . `col_varchar_10`) AS field1, + table1 . col_varchar_10_key AS field2, + table2 . `col_int_key` AS field3, + table1 . `col_varchar_key` AS field4, + table2 . col_varchar_20_key AS field5, + MIN(table1 . `col_varchar_10`) AS field6, + table1 . col_varchar_20_key AS field7, + table1 . col_varchar_10_key AS field8 +FROM (CC AS table1 + RIGHT OUTER JOIN CC AS table2 ON (table2 . `pk` = table1 . `col_int`)) +WHERE ( + (SELECT MAX(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 + FROM (CC AS SUBQUERY1_t1 + INNER JOIN CC AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk` + AND SUBQUERY1_t2 . `col_varchar_10_key` >= + (SELECT MAX(CHILD_SUBQUERY1_t1 . `col_varchar_20`) AS CHILD_SUBQUERY1_field1 + FROM (CC AS CHILD_SUBQUERY1_t1 + INNER JOIN D AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `pk` = CHILD_SUBQUERY1_t1 . `col_int`)))))) IS NULL) + OR table1 . `col_varchar_key` <= 'n' +GROUP BY field2, + field3, + field4, + field5, + field7, + field8 +ORDER BY 1, + field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8; +Query Plan +======================================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------------------------------------- +|0 |SORT | |10000 |1124593| +|1 | HASH GROUP BY | |10000 |1036142| +|2 | NESTED-LOOP JOIN | |10000 |1022847| +|3 | SUBPLAN SCAN |VIEW3 |1 |595414 | +|4 | SCALAR GROUP BY | |1 |595414 | +|5 | HASH JOIN | |33000 |589111 | +|6 | NESTED-LOOP JOIN | |33334 |451493 | +|7 | SUBPLAN SCAN |VIEW2 |1 |309810 | +|8 | SCALAR GROUP BY| |1 |309810 | +|9 | HASH JOIN | |99000 |290899 | +|10| TABLE SCAN |CHILD_SUBQUERY1_t2(idx7)|100000 |25731 | +|11| TABLE SCAN |CHILD_SUBQUERY1_t1 |100000 |64066 | +|12| TABLE SCAN |SUBQUERY1_t2 |100000 |64066 | +|13| TABLE SCAN |SUBQUERY1_t1(idx3) |100000 |25731 | +|14| HASH OUTER JOIN | |100000 |400165 | +|15| TABLE SCAN |table2 |100000 |64066 | +|16| TABLE SCAN |table1 |100000 |70683 | +======================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(table1.col_varchar_10)], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [T_FUN_MIN(table1.col_varchar_10)], [table1.col_varchar_20_key], [table1.col_varchar_10_key]), filter(nil), sort_keys([T_FUN_MIN(table1.col_varchar_10), ASC], [table1.col_varchar_10_key, ASC], [table2.col_int_key, ASC], [table1.col_varchar_key, ASC], [table2.col_varchar_20_key, ASC], [table1.col_varchar_20_key, ASC]) + 1 - output([T_FUN_MIN(table1.col_varchar_10)], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [table1.col_varchar_20_key]), filter(nil), + group([table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [table1.col_varchar_20_key]), agg_func([T_FUN_MIN(table1.col_varchar_10)]) + 2 - output([table1.col_varchar_10], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [table1.col_varchar_20_key]), filter(nil), + conds([(T_OP_IS, VIEW3.SUBQUERY1_field1, NULL, 0) OR table1.col_varchar_key <= 'n']), nl_params_(nil) + 3 - output([VIEW3.SUBQUERY1_field1]), filter(nil), + access([VIEW3.SUBQUERY1_field1]) + 4 - output([T_FUN_MAX(SUBQUERY1_t1.pk)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(SUBQUERY1_t1.pk)]) + 5 - output([SUBQUERY1_t1.pk]), filter(nil), + equal_conds([SUBQUERY1_t2.col_int = SUBQUERY1_t1.pk]), other_conds(nil) + 6 - output([SUBQUERY1_t2.col_int]), filter(nil), + conds([SUBQUERY1_t2.col_varchar_10_key >= VIEW2.CHILD_SUBQUERY1_field1]), nl_params_(nil) + 7 - output([VIEW2.CHILD_SUBQUERY1_field1]), filter(nil), + access([VIEW2.CHILD_SUBQUERY1_field1]) + 8 - output([T_FUN_MAX(CHILD_SUBQUERY1_t1.col_varchar_20)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(CHILD_SUBQUERY1_t1.col_varchar_20)]) + 9 - output([CHILD_SUBQUERY1_t1.col_varchar_20]), filter(nil), + equal_conds([CHILD_SUBQUERY1_t2.pk = CHILD_SUBQUERY1_t1.col_int]), other_conds(nil) + 10 - output([CHILD_SUBQUERY1_t2.pk]), filter(nil), + access([CHILD_SUBQUERY1_t2.pk]), partitions(p0) + 11 - output([CHILD_SUBQUERY1_t1.col_int], [CHILD_SUBQUERY1_t1.col_varchar_20]), filter(nil), + access([CHILD_SUBQUERY1_t1.col_int], [CHILD_SUBQUERY1_t1.col_varchar_20]), partitions(p0) + 12 - output([SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_varchar_10_key]), filter(nil), + access([SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_varchar_10_key]), partitions(p0) + 13 - output([SUBQUERY1_t1.pk]), filter(nil), + access([SUBQUERY1_t1.pk]), partitions(p0) + 14 - output([table1.col_varchar_10], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [table1.col_varchar_20_key]), filter(nil), + equal_conds([table2.pk = table1.col_int]), other_conds(nil) + 15 - output([table2.pk], [table2.col_int_key], [table2.col_varchar_20_key]), filter(nil), + access([table2.pk], [table2.col_int_key], [table2.col_varchar_20_key]), partitions(p0) + 16 - output([table1.col_int], [table1.col_varchar_key], [table1.col_varchar_10], [table1.col_varchar_10_key], [table1.col_varchar_20_key]), filter(nil), + access([table1.col_int], [table1.col_varchar_key], [table1.col_varchar_10], [table1.col_varchar_10_key], [table1.col_varchar_20_key]), partitions(p0) + +SELECT DISTINCT MIN(DISTINCT table1 . `col_varchar_10`) AS field1, + table1 . col_varchar_10_key AS field2, + table2 . `col_int_key` AS field3, + table1 . `col_varchar_key` AS field4, + table2 . col_varchar_20_key AS field5, + MIN(table1 . `col_varchar_10`) AS field6, + table1 . col_varchar_20_key AS field7, + table1 . col_varchar_10_key AS field8 +FROM (CC AS table1 + RIGHT OUTER JOIN CC AS table2 ON (table2 . `pk` = table1 . `col_int`)) +WHERE ( + (SELECT MAX(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 + FROM (CC AS SUBQUERY1_t1 + INNER JOIN CC AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk` + AND SUBQUERY1_t2 . `col_varchar_10_key` >= + (SELECT MAX(CHILD_SUBQUERY1_t1 . `col_varchar_20`) AS CHILD_SUBQUERY1_field1 + FROM (CC AS CHILD_SUBQUERY1_t1 + INNER JOIN D AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `pk` = CHILD_SUBQUERY1_t1 . `col_int`)))))) IS NULL) + OR table1 . `col_varchar_key` <= 'n' +GROUP BY field2, + field3, + field4, + field5, + field7, + field8 +ORDER BY 1, + field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8; ++--------+--------+--------+--------+--------+--------+--------+--------+ +| field1 | field2 | field3 | field4 | field5 | field6 | field7 | field8 | ++--------+--------+--------+--------+--------+--------+--------+--------+ +| NULL | NULL | NULL | NULL | g | NULL | NULL | NULL | +| NULL | NULL | 0 | NULL | e | NULL | NULL | NULL | +| NULL | NULL | 0 | NULL | j | NULL | NULL | NULL | +| NULL | NULL | 0 | NULL | s | NULL | NULL | NULL | +| NULL | NULL | 1 | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | 1 | NULL | a | NULL | NULL | NULL | +| NULL | NULL | 1 | NULL | f | NULL | NULL | NULL | +| NULL | NULL | 1 | NULL | n | NULL | NULL | NULL | +| NULL | NULL | 2 | NULL | r | NULL | NULL | NULL | +| NULL | NULL | 2 | NULL | s | NULL | NULL | NULL | +| NULL | NULL | 2 | k | NULL | NULL | v | NULL | +| NULL | NULL | 3 | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | 4 | NULL | m | NULL | NULL | NULL | +| NULL | NULL | 4 | NULL | o | NULL | NULL | NULL | +| NULL | NULL | 4 | NULL | x | NULL | NULL | NULL | +| NULL | NULL | 5 | NULL | m | NULL | NULL | NULL | +| NULL | NULL | 5 | NULL | v | NULL | NULL | NULL | +| NULL | NULL | 6 | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | 7 | NULL | j | NULL | NULL | NULL | +| NULL | NULL | 8 | NULL | s | NULL | NULL | NULL | +| NULL | NULL | 9 | NULL | c | NULL | NULL | NULL | +| NULL | NULL | 9 | NULL | h | NULL | NULL | NULL | +| NULL | k | 2 | m | NULL | NULL | NULL | k | +| NULL | p | 6 | h | NULL | NULL | c | p | +| NULL | t | NULL | j | d | NULL | x | t | +| a | n | NULL | NULL | d | a | r | n | +| b | b | NULL | NULL | NULL | b | m | b | +| o | NULL | 8 | t | b | o | h | NULL | +| o | c | 5 | n | q | o | m | c | +| o | j | 6 | g | NULL | o | s | j | +| p | i | 3 | f | NULL | p | g | i | +| q | g | NULL | z | d | q | n | g | +| q | r | 5 | d | q | q | NULL | r | +| s | NULL | 6 | f | NULL | s | f | NULL | +| x | i | 5 | m | q | x | q | i | +| x | i | 8 | j | b | x | a | i | +| y | i | 8 | d | b | y | s | i | +| z | h | 5 | k | q | z | b | h | ++--------+--------+--------+--------+--------+--------+--------+--------+ + +EXPLAIN SELECT /*+no_rewrite*/ DISTINCT MIN(DISTINCT table1 . `col_varchar_10`) AS field1, + table1 . col_varchar_10_key AS field2, + table2 . `col_int_key` AS field3, + table1 . `col_varchar_key` AS field4, + table2 . col_varchar_20_key AS field5, + MIN(table1 . `col_varchar_10`) AS field6, + table1 . col_varchar_20_key AS field7, + table1 . col_varchar_10_key AS field8 +FROM (CC AS table1 + RIGHT OUTER JOIN CC AS table2 ON (table2 . `pk` = table1 . `col_int`)) +WHERE ( + (SELECT MAX(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 + FROM (CC AS SUBQUERY1_t1 + INNER JOIN CC AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk` + AND SUBQUERY1_t2 . `col_varchar_10_key` >= + (SELECT MAX(CHILD_SUBQUERY1_t1 . `col_varchar_20`) AS CHILD_SUBQUERY1_field1 + FROM (CC AS CHILD_SUBQUERY1_t1 + INNER JOIN D AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `pk` = CHILD_SUBQUERY1_t1 . `col_int`)))))) IS NULL) + OR table1 . `col_varchar_key` <= 'n' +GROUP BY field2, + field3, + field4, + field5, + field7, + field8 +ORDER BY 1, + field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8; +Query Plan +======================================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------------------------------------- +|0 |SORT | |55001 |2120494| +|1 | MERGE GROUP BY | |55001 |1580708| +|2 | SORT | |55001 |1539659| +|3 | SUBPLAN FILTER | |55001 |1003170| +|4 | HASH OUTER JOIN | |55001 |400165 | +|5 | TABLE SCAN |table2 |100000 |64066 | +|6 | TABLE SCAN |table1 |100000 |70683 | +|7 | SCALAR GROUP BY | |1 |595414 | +|8 | HASH JOIN | |33000 |589111 | +|9 | NESTED-LOOP JOIN | |33334 |451493 | +|10| SUBPLAN SCAN |VIEW1 |1 |309810 | +|11| SCALAR GROUP BY| |1 |309810 | +|12| HASH JOIN | |99000 |290899 | +|13| TABLE SCAN |CHILD_SUBQUERY1_t2(idx7)|100000 |25731 | +|14| TABLE SCAN |CHILD_SUBQUERY1_t1 |100000 |64066 | +|15| TABLE SCAN |SUBQUERY1_t2 |100000 |64066 | +|16| TABLE SCAN |SUBQUERY1_t1(idx3) |100000 |25731 | +======================================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(distinct table1.col_varchar_10)], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [T_FUN_MIN(table1.col_varchar_10)], [table1.col_varchar_20_key], [table1.col_varchar_10_key]), filter(nil), sort_keys([T_FUN_MIN(distinct table1.col_varchar_10), ASC], [table1.col_varchar_10_key, ASC], [table2.col_int_key, ASC], [table1.col_varchar_key, ASC], [table2.col_varchar_20_key, ASC], [T_FUN_MIN(table1.col_varchar_10), ASC], [table1.col_varchar_20_key, ASC]) + 1 - output([T_FUN_MIN(distinct table1.col_varchar_10)], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [T_FUN_MIN(table1.col_varchar_10)], [table1.col_varchar_20_key]), filter(nil), + group([table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [table1.col_varchar_20_key], [table1.col_varchar_10_key]), agg_func([T_FUN_MIN(distinct table1.col_varchar_10)], [T_FUN_MIN(table1.col_varchar_10)]) + 2 - output([table1.col_varchar_10], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [table1.col_varchar_20_key]), filter(nil), sort_keys([table1.col_varchar_10_key, ASC], [table2.col_int_key, ASC], [table1.col_varchar_key, ASC], [table2.col_varchar_20_key, ASC], [table1.col_varchar_20_key, ASC], [table1.col_varchar_10_key, ASC]) + 3 - output([table1.col_varchar_10], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [table1.col_varchar_20_key]), filter(nil), + exec_params_(nil), onetime_exprs_([(T_OP_IS, subquery(1), NULL, 0)]), init_plan_idxs_(nil) + 4 - output([table1.col_varchar_10], [table1.col_varchar_10_key], [table2.col_int_key], [table1.col_varchar_key], [table2.col_varchar_20_key], [table1.col_varchar_20_key]), filter([? OR table1.col_varchar_key <= 'n']), + equal_conds([table2.pk = table1.col_int]), other_conds(nil) + 5 - output([table2.pk], [table2.col_int_key], [table2.col_varchar_20_key]), filter(nil), + access([table2.pk], [table2.col_int_key], [table2.col_varchar_20_key]), partitions(p0) + 6 - output([table1.col_int], [table1.col_varchar_key], [table1.col_varchar_10], [table1.col_varchar_10_key], [table1.col_varchar_20_key]), filter(nil), + access([table1.col_int], [table1.col_varchar_key], [table1.col_varchar_10], [table1.col_varchar_10_key], [table1.col_varchar_20_key]), partitions(p0) + 7 - output([T_FUN_MAX(SUBQUERY1_t1.pk)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(SUBQUERY1_t1.pk)]) + 8 - output([SUBQUERY1_t1.pk]), filter(nil), + equal_conds([SUBQUERY1_t2.col_int = SUBQUERY1_t1.pk]), other_conds(nil) + 9 - output([SUBQUERY1_t2.col_int]), filter(nil), + conds([SUBQUERY1_t2.col_varchar_10_key >= VIEW1.CHILD_SUBQUERY1_field1]), nl_params_(nil) + 10 - output([VIEW1.CHILD_SUBQUERY1_field1]), filter(nil), + access([VIEW1.CHILD_SUBQUERY1_field1]) + 11 - output([T_FUN_MAX(CHILD_SUBQUERY1_t1.col_varchar_20)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(CHILD_SUBQUERY1_t1.col_varchar_20)]) + 12 - output([CHILD_SUBQUERY1_t1.col_varchar_20]), filter(nil), + equal_conds([CHILD_SUBQUERY1_t2.pk = CHILD_SUBQUERY1_t1.col_int]), other_conds(nil) + 13 - output([CHILD_SUBQUERY1_t2.pk]), filter(nil), + access([CHILD_SUBQUERY1_t2.pk]), partitions(p0) + 14 - output([CHILD_SUBQUERY1_t1.col_int], [CHILD_SUBQUERY1_t1.col_varchar_20]), filter(nil), + access([CHILD_SUBQUERY1_t1.col_int], [CHILD_SUBQUERY1_t1.col_varchar_20]), partitions(p0) + 15 - output([SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_varchar_10_key]), filter(nil), + access([SUBQUERY1_t2.col_int], [SUBQUERY1_t2.col_varchar_10_key]), partitions(p0) + 16 - output([SUBQUERY1_t1.pk]), filter(nil), + access([SUBQUERY1_t1.pk]), partitions(p0) + +SELECT /*+no_rewrite*/ DISTINCT MIN(DISTINCT table1 . `col_varchar_10`) AS field1, + table1 . col_varchar_10_key AS field2, + table2 . `col_int_key` AS field3, + table1 . `col_varchar_key` AS field4, + table2 . col_varchar_20_key AS field5, + MIN(table1 . `col_varchar_10`) AS field6, + table1 . col_varchar_20_key AS field7, + table1 . col_varchar_10_key AS field8 +FROM (CC AS table1 + RIGHT OUTER JOIN CC AS table2 ON (table2 . `pk` = table1 . `col_int`)) +WHERE ( + (SELECT MAX(SUBQUERY1_t1 . `pk`) AS SUBQUERY1_field1 + FROM (CC AS SUBQUERY1_t1 + INNER JOIN CC AS SUBQUERY1_t2 ON (SUBQUERY1_t2 . `col_int` = SUBQUERY1_t1 . `pk` + AND SUBQUERY1_t2 . `col_varchar_10_key` >= + (SELECT MAX(CHILD_SUBQUERY1_t1 . `col_varchar_20`) AS CHILD_SUBQUERY1_field1 + FROM (CC AS CHILD_SUBQUERY1_t1 + INNER JOIN D AS CHILD_SUBQUERY1_t2 ON (CHILD_SUBQUERY1_t2 . `pk` = CHILD_SUBQUERY1_t1 . `col_int`)))))) IS NULL) + OR table1 . `col_varchar_key` <= 'n' +GROUP BY field2, + field3, + field4, + field5, + field7, + field8 +ORDER BY 1, + field1, + field2, + field3, + field4, + field5, + field6, + field7, + field8; ++--------+--------+--------+--------+--------+--------+--------+--------+ +| field1 | field2 | field3 | field4 | field5 | field6 | field7 | field8 | ++--------+--------+--------+--------+--------+--------+--------+--------+ +| NULL | NULL | NULL | NULL | g | NULL | NULL | NULL | +| NULL | NULL | 0 | NULL | e | NULL | NULL | NULL | +| NULL | NULL | 0 | NULL | j | NULL | NULL | NULL | +| NULL | NULL | 0 | NULL | s | NULL | NULL | NULL | +| NULL | NULL | 1 | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | 1 | NULL | a | NULL | NULL | NULL | +| NULL | NULL | 1 | NULL | f | NULL | NULL | NULL | +| NULL | NULL | 1 | NULL | n | NULL | NULL | NULL | +| NULL | NULL | 2 | NULL | r | NULL | NULL | NULL | +| NULL | NULL | 2 | NULL | s | NULL | NULL | NULL | +| NULL | NULL | 2 | k | NULL | NULL | v | NULL | +| NULL | NULL | 3 | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | 4 | NULL | m | NULL | NULL | NULL | +| NULL | NULL | 4 | NULL | o | NULL | NULL | NULL | +| NULL | NULL | 4 | NULL | x | NULL | NULL | NULL | +| NULL | NULL | 5 | NULL | m | NULL | NULL | NULL | +| NULL | NULL | 5 | NULL | v | NULL | NULL | NULL | +| NULL | NULL | 6 | NULL | NULL | NULL | NULL | NULL | +| NULL | NULL | 7 | NULL | j | NULL | NULL | NULL | +| NULL | NULL | 8 | NULL | s | NULL | NULL | NULL | +| NULL | NULL | 9 | NULL | c | NULL | NULL | NULL | +| NULL | NULL | 9 | NULL | h | NULL | NULL | NULL | +| NULL | k | 2 | m | NULL | NULL | NULL | k | +| NULL | p | 6 | h | NULL | NULL | c | p | +| NULL | t | NULL | j | d | NULL | x | t | +| a | n | NULL | NULL | d | a | r | n | +| b | b | NULL | NULL | NULL | b | m | b | +| o | NULL | 8 | t | b | o | h | NULL | +| o | c | 5 | n | q | o | m | c | +| o | j | 6 | g | NULL | o | s | j | +| p | i | 3 | f | NULL | p | g | i | +| q | g | NULL | z | d | q | n | g | +| q | r | 5 | d | q | q | NULL | r | +| s | NULL | 6 | f | NULL | s | f | NULL | +| x | i | 5 | m | q | x | q | i | +| x | i | 8 | j | b | x | a | i | +| y | i | 8 | d | b | y | s | i | +| z | h | 5 | k | q | z | b | h | ++--------+--------+--------+--------+--------+--------+--------+--------+ + +##简化case +EXPLAIN SELECT MIN(DISTINCT col_varchar_10), MIN(col_varchar_10) FROM CC WHERE (SELECT /*+unnest*/ MAX(pk) FROM CC) IS NULL; +Query Plan +============================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +--------------------------------------------- +|0 |SCALAR GROUP BY | |1 |103136| +|1 | SUBPLAN SCAN |VIEW1|0 |103136| +|2 | WINDOW FUNCTION| |100000 |80961 | +|3 | TABLE SCAN |cc |100000 |61860 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(VIEW1.cc.col_varchar_10)], [T_FUN_MIN(VIEW1.cc.col_varchar_10)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(VIEW1.cc.col_varchar_10)]) + 1 - output([VIEW1.cc.col_varchar_10]), filter([(T_OP_IS, VIEW1.MAX(pk), NULL, 0)]), + access([VIEW1.MAX(pk)], [VIEW1.cc.col_varchar_10]) + 2 - output([T_FUN_MAX(cc.pk)], [cc.col_varchar_10]), filter(nil), + win_expr(T_FUN_MAX(cc.pk)), partition_by(nil), order_by(nil), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(UNBOUNDED FOLLOWING) + 3 - output([cc.pk], [cc.col_varchar_10]), filter(nil), + access([cc.pk], [cc.col_varchar_10]), partitions(p0) + +SELECT MIN(DISTINCT col_varchar_10), MIN(col_varchar_10) FROM CC WHERE (SELECT /*+unnest*/ MAX(pk) FROM CC) IS NULL; ++------------------------------+---------------------+ +| MIN(DISTINCT col_varchar_10) | MIN(col_varchar_10) | ++------------------------------+---------------------+ +| NULL | NULL | ++------------------------------+---------------------+ +EXPLAIN SELECT /*+no_rewrite*/ MIN(DISTINCT col_varchar_10), MIN(col_varchar_10) FROM CC WHERE (SELECT /*+unnest*/ MAX(pk) FROM CC) IS NULL; +Query Plan +======================================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------- +|0 |SCALAR GROUP BY | |1 |87899| +|1 | SUBPLAN FILTER | |50000 |75698| +|2 | TABLE SCAN |cc |100000 |61860| +|3 | SCALAR GROUP BY| |1 |37 | +|4 | SUBPLAN SCAN |VIEW1 |1 |37 | +|5 | TABLE SCAN |cc(idx3,Reverse)|1 |36 | +======================================================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MIN(distinct cc.col_varchar_10)], [T_FUN_MIN(cc.col_varchar_10)]), filter(nil), + group(nil), agg_func([T_FUN_MIN(distinct cc.col_varchar_10)], [T_FUN_MIN(cc.col_varchar_10)]) + 1 - output([cc.col_varchar_10]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_IS, subquery(1), NULL, 0)]), init_plan_idxs_(nil) + 2 - output([cc.col_varchar_10]), filter(nil), + access([cc.col_varchar_10]), partitions(p0) + 3 - output([T_FUN_MAX(VIEW1.pk)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(VIEW1.pk)]) + 4 - output([VIEW1.pk]), filter(nil), + access([VIEW1.pk]) + 5 - output([cc.pk]), filter(nil), + access([cc.pk]), partitions(p0), + limit(1), offset(nil) + +SELECT /*+no_rewrite*/ MIN(DISTINCT col_varchar_10), MIN(col_varchar_10) FROM CC WHERE (SELECT /*+unnest*/ MAX(pk) FROM CC) IS NULL; ++------------------------------+---------------------+ +| MIN(DISTINCT col_varchar_10) | MIN(col_varchar_10) | ++------------------------------+---------------------+ +| NULL | NULL | ++------------------------------+---------------------+ + +drop table `d`, `cc`; + +##test remove win func after remove distinct in win func +drop table if exists t1; +create table t1(a int, b int); + +EXPLAIN select max(distinct a) over(order by a), max(a) over(order by a) from t1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |WINDOW FUNCTION| |100000 |272030| +|1 | SORT | |100000 |252929| +|2 | TABLE SCAN |t1 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(t1.a)], [T_FUN_MAX(t1.a)]), filter(nil), + win_expr(T_FUN_MAX(t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + 1 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select max(distinct a) over(order by a), max(a) over(order by a) from t1; ++----------------------------------+-------------------------+ +| max(distinct a) over(order by a) | max(a) over(order by a) | ++----------------------------------+-------------------------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----------------------------------+-------------------------+ +EXPLAIN select /*+no_rewrite*/max(distinct a) over(order by a), max(a) over(order by a) from t1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |WINDOW FUNCTION| |100000 |272030| +|1 | SORT | |100000 |252929| +|2 | TABLE SCAN |t1 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(distinct t1.a)], [T_FUN_MAX(t1.a)]), filter(nil), + win_expr(T_FUN_MAX(distinct t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + win_expr(T_FUN_MAX(t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + 1 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select /*+no_rewrite*/max(distinct a) over(order by a), max(a) over(order by a) from t1; ++----------------------------------+-------------------------+ +| max(distinct a) over(order by a) | max(a) over(order by a) | ++----------------------------------+-------------------------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 4 | 4 | ++----------------------------------+-------------------------+ + +EXPLAIN select max(distinct a) over(order by a), max(a) over(order by a), min(a) over(order by a) , min(distinct a) over(order by a) from t1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |WINDOW FUNCTION| |100000 |272030| +|1 | SORT | |100000 |252929| +|2 | TABLE SCAN |t1 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(t1.a)], [T_FUN_MAX(t1.a)], [T_FUN_MIN(t1.a)], [T_FUN_MIN(t1.a)]), filter(nil), + win_expr(T_FUN_MAX(t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + win_expr(T_FUN_MIN(t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + 1 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select max(distinct a) over(order by a), max(a) over(order by a), min(a) over(order by a) , min(distinct a) over(order by a) from t1; ++----------------------------------+-------------------------+-------------------------+----------------------------------+ +| max(distinct a) over(order by a) | max(a) over(order by a) | min(a) over(order by a) | min(distinct a) over(order by a) | ++----------------------------------+-------------------------+-------------------------+----------------------------------+ +| 1 | 1 | 1 | 1 | +| 2 | 2 | 1 | 1 | +| 3 | 3 | 1 | 1 | +| 4 | 4 | 1 | 1 | ++----------------------------------+-------------------------+-------------------------+----------------------------------+ +EXPLAIN select /*+no_rewrite*/max(distinct a) over(order by a), max(a) over(order by a), min(a) over(order by a), min(distinct a) over(order by a) from t1; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |WINDOW FUNCTION| |100000 |272030| +|1 | SORT | |100000 |252929| +|2 | TABLE SCAN |t1 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_MAX(distinct t1.a)], [T_FUN_MAX(t1.a)], [T_FUN_MIN(t1.a)], [T_FUN_MIN(distinct t1.a)]), filter(nil), + win_expr(T_FUN_MAX(distinct t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + win_expr(T_FUN_MAX(t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + win_expr(T_FUN_MIN(t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + win_expr(T_FUN_MIN(distinct t1.a)), partition_by(nil), order_by([t1.a, ASC]), window_type(RANGE), upper(UNBOUNDED PRECEDING), lower(CURRENT ROW) + 1 - output([t1.a]), filter(nil), sort_keys([t1.a, ASC]) + 2 - output([t1.a]), filter(nil), + access([t1.a]), partitions(p0) + +select /*+no_rewrite*/max(distinct a) over(order by a), max(a) over(order by a), min(a) over(order by a), min(distinct a) over(order by a) from t1; ++----------------------------------+-------------------------+-------------------------+----------------------------------+ +| max(distinct a) over(order by a) | max(a) over(order by a) | min(a) over(order by a) | min(distinct a) over(order by a) | ++----------------------------------+-------------------------+-------------------------+----------------------------------+ +| 1 | 1 | 1 | 1 | +| 2 | 2 | 1 | 1 | +| 3 | 3 | 1 | 1 | +| 4 | 4 | 1 | 1 | ++----------------------------------+-------------------------+-------------------------+----------------------------------+ + +drop table if exists t1, t2; +create table t1(a int, b int); +create table t2(a int, b int); + +EXPLAIN insert into t1 select * from t2 order by a; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------- +|0 |INSERT | |100000 |302159| +|1 | SUBPLAN SCAN|VIEW1|100000 |288357| +|2 | SORT | |100000 |274554| +|3 | TABLE SCAN|t2 |100000 |64066 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b]), filter(nil), + access([VIEW1.a], [VIEW1.b]) + 2 - output([t2.a], [t2.b]), filter(nil), sort_keys([t2.a, ASC]) + 3 - output([t2.a], [t2.b]), filter(nil), + access([t2.a], [t2.b]), partitions(p0) + +insert into t1 select * from t2 order by a; +select/**/ * from t1; ++------+------+ +| a | b | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | ++------+------+ +EXPLAIN insert into t1 select * from t2 where a > 1 order by a, b; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------- +|0 |INSERT | |10000 |101950| +|1 | SUBPLAN SCAN|VIEW1|10000 |100570| +|2 | SORT | |10000 |99190 | +|3 | TABLE SCAN|t2 |10000 |80811 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b]), filter(nil), + access([VIEW1.a], [VIEW1.b]) + 2 - output([t2.a], [t2.b]), filter(nil), sort_keys([t2.a, ASC], [t2.b, ASC]) + 3 - output([t2.a], [t2.b]), filter([t2.a > 1]), + access([t2.a], [t2.b]), partitions(p0) + +insert into t1 select * from t2 where a > 1 order by a, b; +select/**/ * from t1; ++------+------+ +| a | b | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 2 | 2 | +| 3 | 3 | ++------+------+ +EXPLAIN insert into t1 select * from t2 where a in (select a from t2 order by a) order by a; +Query Plan +========================================= +|ID|OPERATOR |NAME |EST. ROWS|COST | +----------------------------------------- +|0 |INSERT | |99000 |308030| +|1 | SUBPLAN SCAN|VIEW1|99000 |294366| +|2 | SORT | |99000 |280702| +|3 | TABLE SCAN|t2 |99000 |72438 | +========================================= + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.a, t1.b)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b]), filter(nil), + access([VIEW1.a], [VIEW1.b]) + 2 - output([t2.a], [t2.b]), filter(nil), sort_keys([t2.a, ASC]) + 3 - output([t2.a], [t2.b]), filter([(T_OP_IS_NOT, t2.a, NULL, 0)]), + access([t2.a], [t2.b]), partitions(p0) + +insert into t1 select * from t2 where a in (select a from t2 order by a) order by a; +select/**/ * from t1; ++------+------+ +| a | b | ++------+------+ +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | +| 2 | 2 | +| 3 | 3 | +| 1 | 1 | +| 2 | 2 | +| 3 | 3 | ++------+------+ + + +************************消除冗余case when********** + +drop table if exists t1; +create table t1 (c1 int, c2 int); +EXPLAIN select * from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 2 THEN t1.c2 = 3 ELSE t1.c2 = 5 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ +EXPLAIN select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 2 THEN CASE WHEN t1.c1 > 2 THEN t1.c2 = 3 ELSE t1.c2 = 4 END ELSE t1.c2 = 5 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ + +EXPLAIN select * from t1 where case when t1.c1 > 1 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 1 THEN CASE WHEN t1.c1 > 2 THEN t1.c2 = 3 ELSE t1.c2 = 4 END WHEN t1.c1 > 2 THEN t1.c2 = 3 ELSE t1.c2 = 5 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where case when t1.c1 > 1 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ +EXPLAIN select /*+no_rewrite*/* from t1 where case when t1.c1 > 1 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 1 THEN CASE WHEN t1.c1 > 2 THEN t1.c2 = 3 ELSE t1.c2 = 4 END WHEN t1.c1 > 2 THEN CASE WHEN t1.c1 > 2 THEN t1.c2 = 3 ELSE t1.c2 = 4 END ELSE t1.c2 = 5 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 where case when t1.c1 > 1 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ + +EXPLAIN select * from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 1 + then (case when t1.c1 > 1 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end) + else t1.c2 = 6 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 2 THEN CASE WHEN t1.c1 > 1 THEN t1.c2 = 3 ELSE t1.c2 = 5 END ELSE t1.c2 = 6 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 1 + then (case when t1.c1 > 1 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end) + else t1.c2 = 6 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ +EXPLAIN select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 1 + then (case when t1.c1 > 1 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end) + else t1.c2 = 6 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 2 THEN CASE WHEN t1.c1 > 1 THEN CASE WHEN t1.c1 > 1 THEN t1.c2 = 3 ELSE t1.c2 = 4 END ELSE t1.c2 = 5 END ELSE t1.c2 = 6 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 1 + then (case when t1.c1 > 1 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end) + else t1.c2 = 6 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ +EXPLAIN select * from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end) + else t1.c2 = 6 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 2 THEN t1.c2 = 3 ELSE t1.c2 = 6 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end) + else t1.c2 = 6 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ +EXPLAIN select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end) + else t1.c2 = 6 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 2 THEN CASE WHEN t1.c1 > 2 THEN CASE WHEN t1.c1 > 2 THEN t1.c2 = 3 ELSE t1.c2 = 4 END ELSE t1.c2 = 5 END ELSE t1.c2 = 6 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 2 + then (case when t1.c1 > 2 then t1.c2 = 3 else t1.c2 = 4 end) + else t1.c2 = 5 end) + else t1.c2 = 6 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ +EXPLAIN select * from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 1 + then t1.c2 = 3 + when t1.c1 > 2 + then t1.c2 = 4 + else t1.c2 = 5 end) + else t1.c2 = 6 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 2 THEN CASE WHEN t1.c1 > 1 THEN t1.c2 = 3 WHEN t1.c1 > 2 THEN t1.c2 = 4 ELSE t1.c2 = 5 END ELSE t1.c2 = 6 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select * from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 1 + then t1.c2 = 3 + when t1.c1 > 2 + then t1.c2 = 4 + else t1.c2 = 5 end) + else t1.c2 = 6 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ +EXPLAIN select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 1 + then t1.c2 = 3 + when t1.c1 > 2 + then t1.c2 = 4 + else t1.c2 = 5 end) + else t1.c2 = 6 end; +Query Plan +==================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------ +|0 |TABLE SCAN|t1 |50000 |72438| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2]), filter([CASE WHEN t1.c1 > 2 THEN CASE WHEN t1.c1 > 1 THEN t1.c2 = 3 WHEN t1.c1 > 2 THEN t1.c2 = 4 ELSE t1.c2 = 5 END ELSE t1.c2 = 6 END]), + access([t1.c1], [t1.c2]), partitions(p0) + +select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 + then (case when t1.c1 > 1 + then t1.c2 = 3 + when t1.c1 > 2 + then t1.c2 = 4 + else t1.c2 = 5 end) + else t1.c2 = 6 end; ++------+------+ +| c1 | c2 | ++------+------+ +| 3 | 3 | ++------+------+ + +EXPLAIN select 1 +from (select 40 as c0 + from mysql.time_zone as ref_1 + limit 89) AS subq_0 +where exists ( + select 71 as c0 from mysql.time_zone_name as ref_3 right join mysql.time_zone as ref_4 + on (exists (select subq_0.c0 as c0 from mysql.time_zone_transition ) or subq_0.c0 is not null) +); +Query Plan +=========================================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +------------------------------------------------------------------------------------------- +|0 |SUBPLAN FILTER | |45 |8172376| +|1 | SUBPLAN SCAN |subq_0 |89 |100 | +|2 | TABLE SCAN |__all_tenant_time_zone |89 |88 | +|3 | LIMIT | |1 |91824 | +|4 | NESTED-LOOP OUTER JOIN CARTESIAN| |1 |91823 | +|5 | SUBPLAN SCAN |VIEW3 |1 |36 | +|6 | TABLE SCAN |__all_tenant_time_zone |1 |36 | +|7 | MATERIAL | |50000 |91787 | +|8 | SUBPLAN SCAN |VIEW2 |50000 |82599 | +|9 | SUBPLAN FILTER | |50000 |75698 | +|10| TABLE SCAN |__all_tenant_time_zone_name |100000 |61860 | +|11| TABLE SCAN |__all_tenant_time_zone_transition|1 |36 | +=========================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter([(T_OP_EXISTS, subquery(1))]), + exec_params_([(T_OP_IS_NOT, subq_0.c0, NULL, 0)]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([subq_0.c0]), filter(nil), + access([subq_0.c0]) + 2 - output([40]), filter(nil), + access([__all_tenant_time_zone.tenant_id]), partitions(p0), + limit(89), offset(nil) + 3 - output([71]), filter(nil), limit(1), offset(nil) + 4 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 5 - output([1]), filter(nil), + access(nil) + 6 - output([1]), filter(nil), + access([__all_tenant_time_zone.tenant_id]), partitions(p0), + limit(1), offset(nil) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access(nil) + 9 - output([1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1)) OR ?]), init_plan_idxs_(nil) + 10 - output([1]), filter(nil), + access([__all_tenant_time_zone_name.tenant_id]), partitions(p0) + 11 - output([1]), filter(nil), + access([__all_tenant_time_zone_transition.tenant_id]), partitions(p0), + limit(1), offset(nil) + +select 1 +from (select 40 as c0 + from mysql.time_zone as ref_1 + limit 89) AS subq_0 +where exists ( + select 71 as c0 from mysql.time_zone_name as ref_3 right join mysql.time_zone as ref_4 + on (exists (select subq_0.c0 as c0 from mysql.time_zone_transition ) or subq_0.c0 is not null) +); ++---+ +| 1 | ++---+ ++---+ + +EXPLAIN select subq_1.c10 as c5 +from (select case when ( exists (select ref_2.c2 as c0, + ref_2.c1 as c1 + from mysql.time_zone_transition_type as ref_6) + ) then 60 end as c10, + ref_2.c1 as c12 + from t1 as ref_2) as subq_1 +where exists (select subq_1.c10 as c0 + from mysql.time_zone_name as ref_16 + inner join t2 as ref_17 + on (subq_1.c12 is not null) ); +Query Plan +================================================================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST | +-------------------------------------------------------------------------------------------------- +|0 |SUBPLAN FILTER | |99000 |13598362241| +|1 | NESTED-LOOP SEMI JOIN CARTESIAN| |99000 |5889461661 | +|2 | TABLE SCAN |ref_2 |99000 |72438 | +|3 | MATERIAL | |300000 |370721 | +|4 | SUBPLAN SCAN |VIEW1 |300000 |315595 | +|5 | NESTED-LOOP JOIN CARTESIAN | |300000 |274189 | +|6 | TABLE SCAN |__all_tenant_time_zone_name |100000 |61860 | +|7 | MATERIAL | |3 |37 | +|8 | TABLE SCAN |ref_17 |3 |37 | +|9 | TABLE SCAN |__all_tenant_time_zone_transition_type|100000 |64066 | +================================================================================================== + +Outputs & filters: +------------------------------------- + 0 - output([CASE WHEN (T_OP_EXISTS, subquery(1)) THEN 60 ELSE NULL END]), filter(nil), + exec_params_([ref_2.c2], [ref_2.c1]), onetime_exprs_(nil), init_plan_idxs_(nil) + 1 - output([ref_2.c2], [ref_2.c1]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([ref_2.c2], [ref_2.c1]), filter([(T_OP_IS_NOT, ref_2.c1, NULL, 0)]), + access([ref_2.c2], [ref_2.c1]), partitions(p0) + 3 - output([1]), filter(nil) + 4 - output([1]), filter(nil), + access(nil) + 5 - output([1]), filter(nil), + conds(nil), nl_params_(nil) + 6 - output([1]), filter(nil), + access([__all_tenant_time_zone_name.tenant_id]), partitions(p0) + 7 - output([1]), filter(nil) + 8 - output([1]), filter(nil), + access([ref_17.__pk_increment]), partitions(p0) + 9 - output([?], [?]), filter(nil), + access([__all_tenant_time_zone_transition_type.tenant_id]), partitions(p0) + +select subq_1.c10 as c5 +from (select case when ( exists (select ref_2.c2 as c0, + ref_2.c1 as c1 + from mysql.time_zone_transition_type as ref_6) + ) then 60 end as c10, + ref_2.c1 as c12 + from t1 as ref_2) as subq_1 +where exists (select subq_1.c10 as c0 + from mysql.time_zone_name as ref_16 + inner join t2 as ref_17 + on (subq_1.c12 is not null) ); ++------+ +| c5 | ++------+ ++------+ + +drop table if exists t1; +drop table if exists t2; +## bug: https://work.aone.alibaba-inc.com/issue/39934374 +explain_protocol: 0 +drop table if exists t1; +create table t1(c1 int); +insert into t1 values(1); +explain_protocol: 2 +EXPLAIN select (SELECT SUM(c1) FROM t1 GROUP BY c1 WITH ROLLUP) from dual; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SUBPLAN FILTER | |1 |280403| +|1 | EXPRESSION | |1 |1 | +|2 | MERGE GROUP BY| |101 |280402| +|3 | SORT | |100000 |252929| +|4 | TABLE SCAN |t1 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), rollup([t1.c1]), agg_func([T_FUN_SUM(t1.c1)]) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select (SELECT SUM(c1) FROM t1 GROUP BY c1 WITH ROLLUP) from dual; +ERROR 21000: Subquery returns more than 1 row +EXPLAIN select /*+no_rewrie*/(SELECT SUM(c1) FROM t1 GROUP BY c1 WITH ROLLUP) from dual; +Query Plan +========================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +------------------------------------------ +|0 |SUBPLAN FILTER | |1 |280403| +|1 | EXPRESSION | |1 |1 | +|2 | MERGE GROUP BY| |101 |280402| +|3 | SORT | |100000 |252929| +|4 | TABLE SCAN |t1 |100000 |61860 | +========================================== + +Outputs & filters: +------------------------------------- + 0 - output([?]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([1]), filter(nil) + values({1}) + 2 - output([T_FUN_SUM(t1.c1)]), filter(nil), + group(nil), rollup([t1.c1]), agg_func([T_FUN_SUM(t1.c1)]) + 3 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +select /*+no_rewrie*/(SELECT SUM(c1) FROM t1 GROUP BY c1 WITH ROLLUP) from dual; +ERROR 21000: Subquery returns more than 1 row +explain_protocol: 0 +drop table if exists t1; + +USE DB_SIMPLIFY; +drop database DB_SIMPLIFY; +alter system set _enable_record_rollback_trans_log=true; +ERROR 42000: System config unknown +set autocommit = 1; diff --git a/test/mysql_test/test_suite/transformer/t/transformer_add_limit_for_union.test b/tools/deploy/mysql_test/test_suite/transformer/t/transformer_add_limit_for_union.test similarity index 94% rename from test/mysql_test/test_suite/transformer/t/transformer_add_limit_for_union.test rename to tools/deploy/mysql_test/test_suite/transformer/t/transformer_add_limit_for_union.test index 82875d55f..11144c89d 100644 --- a/test/mysql_test/test_suite/transformer/t/transformer_add_limit_for_union.test +++ b/tools/deploy/mysql_test/test_suite/transformer/t/transformer_add_limit_for_union.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: zhanyue.zzy +# owner group: SQL1 +# tags: optimizer +# description: if LIMIT appears in UNION ALL stmt, add the same LIMIT to inner stmt; # use ob_enable_transformation to contrast with no transform version result --disable_warnings diff --git a/test/mysql_test/test_suite/transformer/t/transformer_outer_join_simplification.test b/tools/deploy/mysql_test/test_suite/transformer/t/transformer_outer_join_simplification.test similarity index 99% rename from test/mysql_test/test_suite/transformer/t/transformer_outer_join_simplification.test rename to tools/deploy/mysql_test/test_suite/transformer/t/transformer_outer_join_simplification.test index 1b0dabfdd..879e6215f 100644 --- a/test/mysql_test/test_suite/transformer/t/transformer_outer_join_simplification.test +++ b/tools/deploy/mysql_test/test_suite/transformer/t/transformer_outer_join_simplification.test @@ -2,6 +2,10 @@ set @@session.explicit_defaults_for_timestamp=off; set foreign_key_checks=1; --enable_query_log +#owner: zhenling.zzg +#owner group: sql1 +# tags: optimizer +#description: transform模块测试,对比transform以后的结果与非transform的结果,验证transform正确性 #alter system set _enable_record_rollback_trans_log=false; @@ -68,8 +72,8 @@ sleep 3; --enable_query_log # schema END - - +--explain_protocol 2 +--result_format 4 set autocommit=0; @@ -3244,6 +3248,7 @@ rollback; set autocommit=1; +# bug: https://work.aone.alibaba-inc.com/issue/21423384 --disable_warnings drop table if exists t1, t2, t3, t4, t5, t6; drop table t1_temp, t2_temp, t3_temp, t4_temp, t5_temp, t6_temp, t7_temp, t8_temp, t9_temp, t10_temp, t11_temp, t12_temp, t13_temp, t14_temp, t15_temp; @@ -3281,6 +3286,7 @@ set autocommit=0; select * from t1 right join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; select /*+NO_REWRITE*/ * from t1 right join t2 on t1.c1 = t2.c1 join t3 on t2.c1 = t3.c1; +# bug: https://work.aone.alibaba-inc.com/issue/21426141 ## t1 is the right table for outer join, ## subquery unnest will add a invalid-null-reject condition: t3.c2 = t1.c2 select * from t2 left join t1 on t1.c1 = t2.c1 where not exists (select 1 from t3 where t3.c2 = t1.c2); diff --git a/test/mysql_test/test_suite/transformer/t/transformer_predicate_deduce.test b/tools/deploy/mysql_test/test_suite/transformer/t/transformer_predicate_deduce.test similarity index 99% rename from test/mysql_test/test_suite/transformer/t/transformer_predicate_deduce.test rename to tools/deploy/mysql_test/test_suite/transformer/t/transformer_predicate_deduce.test index 2164a8aa3..3652f40ca 100644 --- a/test/mysql_test/test_suite/transformer/t/transformer_predicate_deduce.test +++ b/tools/deploy/mysql_test/test_suite/transformer/t/transformer_predicate_deduce.test @@ -1,11 +1,14 @@ +#owner: link.zt +#owner group: sql1 +# tags: optimizer --disable_info --disable_metadata --disable_abort_on_error - - +--result_format 4 +--explain_protocol 2 --disable_warnings DROP DATABASE IF EXISTS DB_PREDICATE_DEDUCE; diff --git a/test/mysql_test/test_suite/transformer/t/transformer_simplify.test b/tools/deploy/mysql_test/test_suite/transformer/t/transformer_simplify.test similarity index 98% rename from test/mysql_test/test_suite/transformer/t/transformer_simplify.test rename to tools/deploy/mysql_test/test_suite/transformer/t/transformer_simplify.test index e510ef180..3a97590b3 100644 --- a/test/mysql_test/test_suite/transformer/t/transformer_simplify.test +++ b/tools/deploy/mysql_test/test_suite/transformer/t/transformer_simplify.test @@ -1,11 +1,15 @@ +#owner: link.zt +#owner group: sql1 +# tags: optimizer +#info: 该文件用于测试ObTransformSimplify中select/delete/update均能进行改写的改写规则 --disable_info --disable_metadata --disable_abort_on_error - - +--result_format 4 +--explain_protocol 2 --disable_warnings DROP DATABASE IF EXISTS DB_SIMPLIFY; @@ -696,6 +700,10 @@ select (select sum(c1) from t1) from dual; select /*+no_rewrite*/ (select sum(c1) from t1) from dual; select (select c1 from t1 limit 1) from dual; select /*+no_rewrite*/ (select c1 from t1 limit 1) from dual; +select (select c1 from t1 limit 0) from dual; +select /*+no_rewrite*/ (select c1 from t1 limit 0) from dual; +select (select 'x' from dual where 1>2) from dual; +select /*+no_rewrite*/ (select 'x' from dual where 1>2) from dual; --error 1242 select (select sum(c1) over() from t1) from dual; # in from caluse @@ -2053,7 +2061,6 @@ select/**/ * from t1; insert into t1 select * from t2 where a in (select a from t2 order by a) order by a; select/**/ * from t1; -drop table t1, t2; --echo --echo ************************消除冗余case when********** @@ -2124,10 +2131,47 @@ select /*+no_rewrite*/* from t1 where case when t1.c1 > 2 else t1.c2 = 5 end) else t1.c2 = 6 end; +#bug fix +select 1 +from (select 40 as c0 + from mysql.time_zone as ref_1 + limit 89) AS subq_0 +where exists ( + select 71 as c0 from mysql.time_zone_name as ref_3 right join mysql.time_zone as ref_4 + on (exists (select subq_0.c0 as c0 from mysql.time_zone_transition ) or subq_0.c0 is not null) +); + +select subq_1.c10 as c5 +from (select case when ( exists (select ref_2.c2 as c0, + ref_2.c1 as c1 + from mysql.time_zone_transition_type as ref_6) + ) then 60 end as c10, + ref_2.c1 as c12 + from t1 as ref_2) as subq_1 +where exists (select subq_1.c10 as c0 + from mysql.time_zone_name as ref_16 + inner join t2 as ref_17 + on (subq_1.c12 is not null) ); + + --disable_warnings drop table if exists t1; +drop table if exists t2; --enable_warnings +## bug: https://work.aone.alibaba-inc.com/issue/39934374 +--disable_warnings +--explain_protocol 0 +drop table if exists t1; +--enable_warnings +create table t1(c1 int); +insert into t1 values(1); +--explain_protocol 2 +select (SELECT SUM(c1) FROM t1 GROUP BY c1 WITH ROLLUP) from dual; +select /*+no_rewrie*/(SELECT SUM(c1) FROM t1 GROUP BY c1 WITH ROLLUP) from dual; +--explain_protocol 0 +drop table if exists t1; + USE DB_SIMPLIFY; drop database DB_SIMPLIFY; alter system set _enable_record_rollback_trans_log=true; diff --git a/test/mysql_test/test_suite/trx/r/mysql/pg_trans.result b/tools/deploy/mysql_test/test_suite/trx/r/mysql/pg_trans.result similarity index 96% rename from test/mysql_test/test_suite/trx/r/mysql/pg_trans.result rename to tools/deploy/mysql_test/test_suite/trx/r/mysql/pg_trans.result index be8895037..f78b16da8 100644 --- a/test/mysql_test/test_suite/trx/r/mysql/pg_trans.result +++ b/tools/deploy/mysql_test/test_suite/trx/r/mysql/pg_trans.result @@ -1,7 +1,3 @@ -connect obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connect conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys; -connection conn1; use test; drop table if exists pg_trans_test; create tablegroup tg1 binding true; @@ -230,4 +226,3 @@ drop tablegroup tg2; drop tablegroup tg3; drop tablegroup tg4; drop tablegroup tg5; -connection obsys; diff --git a/test/mysql_test/test_suite/trx/r/mysql/serializable_constrains.result b/tools/deploy/mysql_test/test_suite/trx/r/mysql/serializable_constrains.result similarity index 89% rename from test/mysql_test/test_suite/trx/r/mysql/serializable_constrains.result rename to tools/deploy/mysql_test/test_suite/trx/r/mysql/serializable_constrains.result index 65ac9c17b..48661ed2c 100644 --- a/test/mysql_test/test_suite/trx/r/mysql/serializable_constrains.result +++ b/tools/deploy/mysql_test/test_suite/trx/r/mysql/serializable_constrains.result @@ -2,15 +2,10 @@ drop database if exists xm_test; drop database if exists xm_test_db1; create database xm_test; use xm_test; -connect conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,xm_test,$OBMYSQL_PORT; -connect conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,xm_test,$OBMYSQL_PORT; -connection conn1; set tx_isolation = 'SERIALIZABLE'; set autocommit = 1; -connection conn2; set tx_isolation = 'SERIALIZABLE'; set autocommit = 1; -connection conn1; create table xm_test_t1 (c1 int primary key, c2 int); create table xm_test_t2 (c1 int primary key, c2 int); insert into xm_test_t1 values(1,1); @@ -22,14 +17,12 @@ c1 c2 1 1 2 1 insert into xm_test_t1 values (3, 1); -connection conn2; insert into xm_test_t1 values (4, 1); select * from xm_test_t1; c1 c2 1 1 2 1 4 1 -connection conn1; select * from xm_test_t1; c1 c2 1 1 @@ -51,14 +44,12 @@ insert into xm_test_t1 values (5, 1); show databases like 'xm_%'; Database (xm_%) xm_test -connection conn2; create database xm_test_db1; show databases like 'xm_%'; Database (xm_%) xm_test xm_test_db1 insert into xm_test_t1 values (6, 1); -connection conn1; show databases like 'xm_%'; Database (xm_%) xm_test @@ -70,7 +61,6 @@ c1 c2 4 1 5 1 commit; -connection conn1; create table t_global_index (pk int primary key) partition by hash(pk) partitions 10; insert into t_global_index values (1), (2), (3); create index index1 on t_global_index (pk) global; @@ -78,8 +68,6 @@ show index from t_global_index; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible t_global_index 0 PRIMARY 1 pk A NULL NULL NULL BTREE available YES t_global_index 1 index1 1 pk A NULL NULL NULL BTREE available YES -connection conn1; -connection conn1; begin; insert into xm_test_t1 values (7, 1); select * from xm_test_t1; @@ -94,7 +82,6 @@ c1 c2 select table_name from oceanbase.__all_table_v2 as t, oceanbase.__all_database as d where d.database_name='xm_test' and d.database_id = t.database_id and (t.table_name='xm_test_t1' or t.table_name='xm_test_t4'); table_name xm_test_t1 -connection conn2; create table xm_test_t4 (pk int primary key); insert into xm_test_t1 values (8, 1); select * from xm_test_t1; @@ -106,7 +93,6 @@ c1 c2 5 1 6 1 8 1 -connection conn1; select table_name from oceanbase.__all_table_v2 as t, oceanbase.__all_database as d where d.database_name='xm_test' and d.database_id = t.database_id and (t.table_name='xm_test_t1' or t.table_name='xm_test_t4'); table_name xm_test_t1 @@ -123,7 +109,6 @@ c1 c2 6 1 7 1 commit; -connection conn1; begin; insert into xm_test_t1 values (9, 1); select * from xm_test_t1; @@ -143,7 +128,6 @@ xm_test_t1 xm_test_t2 t_global_index xm_test_t4 -connection conn2; create table xm_test_t5 (pk int primary key); insert into xm_test_t1 values (10, 1); select * from xm_test_t1; @@ -157,7 +141,6 @@ c1 c2 7 1 8 1 10 1 -connection conn1; select t.table_name from oceanbase.gv$table as t where t.database_name='xm_test' and t.table_type=3; table_name xm_test_t1 diff --git a/test/mysql_test/test_suite/trx/r/mysql/trans_consistency_type.result b/tools/deploy/mysql_test/test_suite/trx/r/mysql/trans_consistency_type.result similarity index 96% rename from test/mysql_test/test_suite/trx/r/mysql/trans_consistency_type.result rename to tools/deploy/mysql_test/test_suite/trx/r/mysql/trans_consistency_type.result index 37db01fd9..6b31a6b74 100644 --- a/test/mysql_test/test_suite/trx/r/mysql/trans_consistency_type.result +++ b/tools/deploy/mysql_test/test_suite/trx/r/mysql/trans_consistency_type.result @@ -1,5 +1,3 @@ -connect conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection conn1; drop table if exists t1; drop table if exists t2; create table t1 (c1 int primary key, c2 int); diff --git a/test/mysql_test/test_suite/trx/r/mysql/ts_source.result b/tools/deploy/mysql_test/test_suite/trx/r/mysql/ts_source.result similarity index 64% rename from test/mysql_test/test_suite/trx/r/mysql/ts_source.result rename to tools/deploy/mysql_test/test_suite/trx/r/mysql/ts_source.result index e3c564399..0aeb15c11 100644 --- a/test/mysql_test/test_suite/trx/r/mysql/ts_source.result +++ b/tools/deploy/mysql_test/test_suite/trx/r/mysql/ts_source.result @@ -1,5 +1,3 @@ -connect obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys; show global variables like 'ob_timestamp_service'; Variable_name Value ob_timestamp_service LTS @@ -8,14 +6,9 @@ ERROR 42000: Variable 'ob_timestamp_service' can't be set to the value of 'GTS' show global variables like 'ob_timestamp_service'; Variable_name Value ob_timestamp_service LTS -disconnect obsys; -connect obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT; -connection obsys; show global variables like 'ob_timestamp_service'; Variable_name Value ob_timestamp_service LTS -connect obcommon,$OBMYSQL_MS0,root@ts_source_tenant1,,*NO-ONE*,$OBMYSQL_PORT; -connection obcommon; show global variables like 'ob_timestamp_service'; Variable_name Value ob_timestamp_service GTS @@ -23,9 +16,6 @@ set global ob_timestamp_service='LTS'; show global variables like 'ob_timestamp_service'; Variable_name Value ob_timestamp_service LTS -disconnect obcommon; -connect obcommon,$OBMYSQL_MS0,root@ts_source_tenant1,,*NO-ONE*,$OBMYSQL_PORT; -connection obcommon; show global variables like 'ob_timestamp_service'; Variable_name Value ob_timestamp_service LTS @@ -33,9 +23,6 @@ set global ob_timestamp_service='GTS'; show global variables like 'ob_timestamp_service'; Variable_name Value ob_timestamp_service GTS -disconnect obcommon; -connect obcommon,$OBMYSQL_MS0,root@ts_source_tenant1,,*NO-ONE*,$OBMYSQL_PORT; -connection obcommon; show global variables like 'ob_timestamp_service'; Variable_name Value ob_timestamp_service GTS diff --git a/test/mysql_test/test_suite/trx/t/pg_trans.test b/tools/deploy/mysql_test/test_suite/trx/t/pg_trans.test similarity index 97% rename from test/mysql_test/test_suite/trx/t/pg_trans.test rename to tools/deploy/mysql_test/test_suite/trx/t/pg_trans.test index a1125a2a8..916118a73 100644 --- a/test/mysql_test/test_suite/trx/t/pg_trans.test +++ b/tools/deploy/mysql_test/test_suite/trx/t/pg_trans.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner : shanyan.g +#owner group : transaction +#description : 测试partition group相关的case connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT); @@ -9,6 +12,7 @@ connection obsys; ##修改配置 --disable_abort_on_error +## case:检查表结构 connection conn1; use test; --disable_warnings diff --git a/test/mysql_test/test_suite/trx/t/serializable_constrains.test b/tools/deploy/mysql_test/test_suite/trx/t/serializable_constrains.test similarity index 90% rename from test/mysql_test/test_suite/trx/t/serializable_constrains.test rename to tools/deploy/mysql_test/test_suite/trx/t/serializable_constrains.test index 984f394b6..162e68951 100644 --- a/test/mysql_test/test_suite/trx/t/serializable_constrains.test +++ b/tools/deploy/mysql_test/test_suite/trx/t/serializable_constrains.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: wanhong.wwh +#owner group: transaction +#description: 测试可串行化隔离级别在各种语句类型场景下的表现,及其限制 # # 原则: # 1. 无论是何种表类型,可串行化隔离级别统一采用事务级别快照 @@ -37,6 +40,7 @@ insert into xm_test_t1 values(1,1); insert into xm_test_t1 values(2,1); insert into xm_test_t2 values(2,1); +########### case 1: 用户表强一致性读 begin; select * from xm_test_t1; insert into xm_test_t1 values (3, 1); @@ -49,11 +53,13 @@ connection conn1; select * from xm_test_t1; commit; +########### case 2: 用户表弱一致性读,期望报错,不支持 begin; --error 1235 select /*+read_consistency(weak) */ * from xm_test_t1; commit; +########### case 3: 事务中执行SHOW语句 # SHOW语句的内部实现实际上是在查询内部表,采用的是用户SESSION # 大部分的SHOW语句查询的都是虚拟表,直接采用内存中的schema结构,这种情况下,SHOW语句与隔离级别无关,始终看到最新的数据; # 对于show database like语句,实际查询的是__all_database,采用用户SESSION,受用户事务隔离级别影响。 @@ -74,6 +80,7 @@ show databases like 'xm_%'; select * from xm_test_t1; commit; +########### case 4: 建索引语句 # 无论事务隔离级别是否是可串行化,都支持建索引 # 内部实现上,建索引语句采用内部SESSION事务,采用RC隔离级别 connection conn1; @@ -84,6 +91,7 @@ create index index1 on t_global_index (pk) global; show index from t_global_index; connection conn1; +########### case 5: 用户发起的内部表语句 # 要求始终读取一致的schema数据 connection conn1; begin; @@ -104,6 +112,7 @@ select /*+read_consistency(weak) */ table_name from oceanbase.__all_table_v2 as select * from xm_test_t1; commit; +########### case 6: 内部发起的内部表语句,采用独立的内部SESSION,与现有事务没有关系,采用READ-COMMITTED隔离级别 # gv$table表实现上查询的是__all_virtual_table,__all_virtual_table实现上采用内部SESSION查询__all_table_v2 # 期望每次读取都读到最新的数据 connection conn1; diff --git a/test/mysql_test/test_suite/trx/t/trans_consistency_type.test b/tools/deploy/mysql_test/test_suite/trx/t/trans_consistency_type.test similarity index 87% rename from test/mysql_test/test_suite/trx/t/trans_consistency_type.test rename to tools/deploy/mysql_test/test_suite/trx/t/trans_consistency_type.test index 80182184f..8170c668a 100644 --- a/test/mysql_test/test_suite/trx/t/trans_consistency_type.test +++ b/tools/deploy/mysql_test/test_suite/trx/t/trans_consistency_type.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: shanyan.g +#owner group: transaction +#description: 测试备机读语句的合法性 connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT); connection conn1; @@ -25,16 +28,20 @@ select * from t2; #保证备机上版本号是更新过的 sleep 2; +# case 1: 单partition备机读操作 set autocommit=1; select /*+read_consistency(weak)+*/ * from t1; select /*+read_consistency(weak)+*/ * from t1 where c1 = 1; select /*+read_consistency(weak)+*/ * from t2; select /*+read_consistency(weak)+*/ * from t2 where c1 = 2; +# case 2: ac=1的单partition self join事务 select /*+read_consistency(weak)+*/ * from t1 as l join t1 as r where l.c1 = r.c1; +# case 3: ac=1的多partition事务; select /*+read_consistency(weak)+*/ * from t1 join t2 where t1.c1 = t2.c1; +# case 4: ac = 0的多partition事务 set autocommit=0; select /*+read_consistency(weak)+*/ * from t1 as l join t1 as r where l.c1 = r.c1; select /*+read_consistency(weak)+*/ * from t1 join t2 where t1.c1 = t2.c1; @@ -43,6 +50,7 @@ select /*+read_consistency(weak)+*/* from t2; commit; ##下面开始测试备机读异常的情况 +#case 5: 强一致操作中混入弱一致性查询 begin; insert into t1 values(3, 1); insert into t2 values(3, 1); @@ -54,6 +62,7 @@ commit; #插入数据成功了,sleep一下,以便weak读的结果一致 sleep 2; +#case 6: 弱一致操作中混入强一致性操作 begin; select /*+read_consistency(weak)+*/* from t1; select /*+read_consistency(weak)+*/* from t2; @@ -67,6 +76,7 @@ insert into t2 values(4, 1); select * from t2; commit; +#case 7:select for update操作1 begin; #目前sql是忽略这个hint的,当成强一致性读来操作; select /*+read_consistency(weak)+*/* from t1 for update; @@ -81,6 +91,7 @@ commit; #插入数据成功了,sleep一下,以便weak读的结果一致 sleep 2; +#case 8:select for update操作2 begin; #第一条语句是弱一致性查询,该事务就应该是弱一致性的; select /*+read_consistency(weak)+*/* from t2; @@ -95,6 +106,7 @@ insert into t2 values(6, 1); select * from t2; commit; +#case 9:其他场景 begin; #事务是强一致性的,下面的语句全部按照强一致性操作 select /*+read_consistency(strong)*/* from t1; diff --git a/test/mysql_test/test_suite/trx/t/ts_source.test b/tools/deploy/mysql_test/test_suite/trx/t/ts_source.test similarity index 95% rename from test/mysql_test/test_suite/trx/t/ts_source.test rename to tools/deploy/mysql_test/test_suite/trx/t/ts_source.test index f61e026ea..19f70f5bf 100644 --- a/test/mysql_test/test_suite/trx/t/ts_source.test +++ b/tools/deploy/mysql_test/test_suite/trx/t/ts_source.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#owner: gjw228474 +#owner group: transaction +#description: 测试系统租户下gts防御 # # 原则: # 1. 系统租户的时钟源为LTS diff --git a/test/mysql_test/test_suite/type_date/r/mysql/add_timestamp_column.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/add_timestamp_column.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/add_timestamp_column.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/add_timestamp_column.result diff --git a/test/mysql_test/test_suite/type_date/r/mysql/datetime_java.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/datetime_java.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/datetime_java.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/datetime_java.result diff --git a/test/mysql_test/test_suite/type_date/r/mysql/daylight_saving_time.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/daylight_saving_time.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/daylight_saving_time.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/daylight_saving_time.result diff --git a/test/mysql_test/test_suite/type_date/r/mysql/expr_date_add_sub.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/expr_date_add_sub.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/expr_date_add_sub.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/expr_date_add_sub.result diff --git a/test/mysql_test/test_suite/type_date/r/mysql/test_select_usec_to_time.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/test_select_usec_to_time.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/test_select_usec_to_time.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/test_select_usec_to_time.result diff --git a/test/mysql_test/test_suite/type_date/r/mysql/timefuncnull.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/timefuncnull.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/timefuncnull.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/timefuncnull.result diff --git a/test/mysql_test/test_suite/type_date/r/mysql/type_create_time.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/type_create_time.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/type_create_time.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/type_create_time.result diff --git a/test/mysql_test/test_suite/type_date/r/mysql/type_modify_time.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/type_modify_time.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/type_modify_time.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/type_modify_time.result diff --git a/test/mysql_test/test_suite/type_date/r/mysql/updaterowkeymoditime.result b/tools/deploy/mysql_test/test_suite/type_date/r/mysql/updaterowkeymoditime.result similarity index 100% rename from test/mysql_test/test_suite/type_date/r/mysql/updaterowkeymoditime.result rename to tools/deploy/mysql_test/test_suite/type_date/r/mysql/updaterowkeymoditime.result diff --git a/test/mysql_test/test_suite/type_date/t/add_timestamp_column.test b/tools/deploy/mysql_test/test_suite/type_date/t/add_timestamp_column.test similarity index 85% rename from test/mysql_test/test_suite/type_date/t/add_timestamp_column.test rename to tools/deploy/mysql_test/test_suite/type_date/t/add_timestamp_column.test index 6222cc743..b5cb84515 100644 --- a/test/mysql_test/test_suite/type_date/t/add_timestamp_column.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/add_timestamp_column.test @@ -1,8 +1,12 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: dachuan.sdc +# owner group: SQL1 +##tags: ddl, datatype # description: # +#bug:http://k3.alibaba-inc.com/issue/6218603?stat=1.5.10&toPage=1&projectId=50518 --disable_warnings drop table if exists stu; --enable_warnings diff --git a/test/mysql_test/test_suite/type_date/t/datetime_java.test b/tools/deploy/mysql_test/test_suite/type_date/t/datetime_java.test similarity index 97% rename from test/mysql_test/test_suite/type_date/t/datetime_java.test rename to tools/deploy/mysql_test/test_suite/type_date/t/datetime_java.test index 7eb6a80a2..cb98a841d 100644 --- a/test/mysql_test/test_suite/type_date/t/datetime_java.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/datetime_java.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: dachuan.sdc +# owner group: SQL1 +# tags: datatype # Test of datetime functions for java mode --disable_abort_on_error diff --git a/test/mysql_test/test_suite/type_date/t/daylight_saving_time.test b/tools/deploy/mysql_test/test_suite/type_date/t/daylight_saving_time.test similarity index 91% rename from test/mysql_test/test_suite/type_date/t/daylight_saving_time.test rename to tools/deploy/mysql_test/test_suite/type_date/t/daylight_saving_time.test index 49bae0013..04a8abfed 100644 --- a/test/mysql_test/test_suite/type_date/t/daylight_saving_time.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/daylight_saving_time.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: dachuan.sdc +# owner group: SQL1 +# tags: datatype # Test of day light saving functions --disable_warnings diff --git a/test/mysql_test/test_suite/type_date/t/expr_date_add_sub.test b/tools/deploy/mysql_test/test_suite/type_date/t/expr_date_add_sub.test similarity index 97% rename from test/mysql_test/test_suite/type_date/t/expr_date_add_sub.test rename to tools/deploy/mysql_test/test_suite/type_date/t/expr_date_add_sub.test index 1d4e8ecd3..724a39665 100644 --- a/test/mysql_test/test_suite/type_date/t/expr_date_add_sub.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/expr_date_add_sub.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +#### owner: dachuan.sdc +#### owner group: sql3 +#### description: 测试date_add和date_sub +# tags: datatype select date_add('2012-2-29', interval '-12.34' second); select date_add('2012-2-29', interval 1 year); diff --git a/test/mysql_test/test_suite/type_date/t/test_select_usec_to_time.test b/tools/deploy/mysql_test/test_suite/type_date/t/test_select_usec_to_time.test similarity index 96% rename from test/mysql_test/test_suite/type_date/t/test_select_usec_to_time.test rename to tools/deploy/mysql_test/test_suite/type_date/t/test_select_usec_to_time.test index 3beb7c2cf..b1c012725 100644 --- a/test/mysql_test/test_suite/type_date/t/test_select_usec_to_time.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/test_select_usec_to_time.test @@ -1,6 +1,9 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: dachuan.sdc +# owner group: SQL1 +# tags: datatype --disable_warnings drop table if exists test; --enable_warnings diff --git a/test/mysql_test/test_suite/type_date/t/timefuncnull.test b/tools/deploy/mysql_test/test_suite/type_date/t/timefuncnull.test similarity index 94% rename from test/mysql_test/test_suite/type_date/t/timefuncnull.test rename to tools/deploy/mysql_test/test_suite/type_date/t/timefuncnull.test index a90b02c0c..58d934b80 100644 --- a/test/mysql_test/test_suite/type_date/t/timefuncnull.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/timefuncnull.test @@ -1,7 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: dachuan.sdc +# owner group: SQL1 # Test of date adjust functions +# tags: datatype --disable_warnings drop table if exists t1; diff --git a/test/mysql_test/test_suite/type_date/t/type_create_time.test b/tools/deploy/mysql_test/test_suite/type_date/t/type_create_time.test similarity index 92% rename from test/mysql_test/test_suite/type_date/t/type_create_time.test rename to tools/deploy/mysql_test/test_suite/type_date/t/type_create_time.test index 01b621eab..9ba0258dc 100644 --- a/test/mysql_test/test_suite/type_date/t/type_create_time.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/type_create_time.test @@ -1,7 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: dachuan.sdc +# owner group: SQL1 # Test of create time functions +# tags: datatype --disable_warnings drop table if exists t1; diff --git a/test/mysql_test/test_suite/type_date/t/type_modify_time.test b/tools/deploy/mysql_test/test_suite/type_date/t/type_modify_time.test similarity index 94% rename from test/mysql_test/test_suite/type_date/t/type_modify_time.test rename to tools/deploy/mysql_test/test_suite/type_date/t/type_modify_time.test index b310ca4af..45aa8e1c7 100644 --- a/test/mysql_test/test_suite/type_date/t/type_modify_time.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/type_modify_time.test @@ -1,6 +1,8 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: dachuan.sdc +# owner group: SQL1 # Test of modify time functions --disable_warnings diff --git a/test/mysql_test/test_suite/type_date/t/updaterowkeymoditime.test b/tools/deploy/mysql_test/test_suite/type_date/t/updaterowkeymoditime.test similarity index 92% rename from test/mysql_test/test_suite/type_date/t/updaterowkeymoditime.test rename to tools/deploy/mysql_test/test_suite/type_date/t/updaterowkeymoditime.test index 5a9fbfc9f..a80befca3 100644 --- a/test/mysql_test/test_suite/type_date/t/updaterowkeymoditime.test +++ b/tools/deploy/mysql_test/test_suite/type_date/t/updaterowkeymoditime.test @@ -1,6 +1,10 @@ --disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log +# owner: dachuan.sdc +# owner group: SQL1 +# description: 更新带有datetime/timestamp列的表 +# tags: datatype --disable_warnings drop table if exists test124,test123,test122,test121,test120; diff --git a/test/mysql_test/test_suite/version/r/mysql/version.result b/tools/deploy/mysql_test/test_suite/version/r/mysql/version.result similarity index 63% rename from test/mysql_test/test_suite/version/r/mysql/version.result rename to tools/deploy/mysql_test/test_suite/version/r/mysql/version.result index 31b42a39d..a64f1dc3a 100644 --- a/test/mysql_test/test_suite/version/r/mysql/version.result +++ b/tools/deploy/mysql_test/test_suite/version/r/mysql/version.result @@ -1,6 +1,6 @@ select version(); version() -3.1.3-OceanBase CE +3.1.4-OceanBase CE show variables like 'version'; Variable_name Value -version 3.1.3-OceanBase CE +version 3.1.4-OceanBase CE diff --git a/test/mysql_test/test_suite/version/t/version.test b/tools/deploy/mysql_test/test_suite/version/t/version.test similarity index 100% rename from test/mysql_test/test_suite/version/t/version.test rename to tools/deploy/mysql_test/test_suite/version/t/version.test diff --git a/test/mysql_test/test_suite/window_function/r/mysql/farm.result b/tools/deploy/mysql_test/test_suite/window_function/r/mysql/farm.result similarity index 100% rename from test/mysql_test/test_suite/window_function/r/mysql/farm.result rename to tools/deploy/mysql_test/test_suite/window_function/r/mysql/farm.result diff --git a/test/mysql_test/test_suite/window_function/t/farm.test b/tools/deploy/mysql_test/test_suite/window_function/t/farm.test similarity index 99% rename from test/mysql_test/test_suite/window_function/t/farm.test rename to tools/deploy/mysql_test/test_suite/window_function/t/farm.test index cbe490eaa..01b795baf 100644 --- a/test/mysql_test/test_suite/window_function/t/farm.test +++ b/tools/deploy/mysql_test/test_suite/window_function/t/farm.test @@ -1,3 +1,5 @@ +#owner: jiangxiu.wt +#owner group: sql1 #description: --disable_warnings @@ -5,7 +7,7 @@ drop database if exists farm; create database farm; use farm; --disable_warnings - +#--result_format 1 # # ========================begin: schema && data(from tpcds)========================= diff --git a/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/basic_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/basic_mysql.result new file mode 100644 index 000000000..805ec4e73 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/basic_mysql.result @@ -0,0 +1,2613 @@ +result_format: 4 +drop database if exists cte_st; +create database cte_st; +use cte_st; + +create table t1(c1 int, c2 int, c3 int); +insert into t1 values(1, 2, 3); +insert into t1 values(4, 5, 6); +insert into t1 values(7, 8, 9); +insert into t1 values(10, 11, 12); +insert into t1 values(13, 14, 15); +insert into t1 values(16, 17, 18); +insert into t1 values(19, 20, 21); + +create table t2(c21 int, c22 int, c23 int); +insert into t2 values(1, 2, 3); +insert into t2 values(4, 5, 6); +insert into t2 values(7, 8, 9); +insert into t2 values(10, 11, 12); +insert into t2 values(13, 14, 15); +insert into t2 values(16, 17, 18); +insert into t2 values(19, 20, 21); + +create table t3(c1 int primary key, c2 int) partition by hash(c1) partitions 2; +insert into t3 values(1, 2); +insert into t3 values(4, 5); +insert into t3 values(7, 8); +insert into t3 values(10, 11); +insert into t3 values(13, 14); +insert into t3 values(16, 17); + +create table t4(c1 int primary key, c2 int); +CREATE INDEX i1 ON t4(c2); +insert into t4 values(11, 2); +insert into t4 values(14, 5); +insert into t4 values(17, 8); +insert into t4 values(110, 11); +insert into t4 values(113, 14); +insert into t4 values(116, 17); + +create table t5(c1 int primary key, c2 int, c3 int) partition by hash(c1) partitions 6; +insert into t5 values(1, 2, 3); +insert into t5 values(4, 5, 6); +insert into t5 values(7, 8, 9); +insert into t5 values(10, 11, 12); +insert into t5 values(13, 14, 15); +insert into t5 values(16, 17, 18); + +create table emp (id int, name varchar(20), leaderid int); +insert into emp values(1, 'A', '0'); +insert into emp values(2, 'AA', '1'); +insert into emp values(3, 'AB', '1'); +insert into emp values(4, 'ABA', '3'); +insert into emp values(5, 'AAA', '2'); +insert into emp values(6, 'ABB', '3'); +insert into emp values(7, 'AAA', '5'); +insert into emp values(8, 'AAA', '7'); +insert into emp values(9, 'AAAA', '5'); +insert into emp values(10, 'AAAB', '5'); +insert into emp values(11, 'AAAC', '5'); +insert into emp values(12, 'AAAA', '5'); + +############################## +## section one cte定义 +## PART 1 定义表名的限制 +## PART 2 单个的定义 +## PART 3 多个定义 +## PART 4 subquery的变化 +## section two cte的使用 +## PART 1 cte出现在normal型查询语句中 +## PART 2 cte出现在set型查询语句中 +## PART 3 主查询中含有inline cte +## PART 4 歧义语法 +## PART 5 出现方式 +## PART 6 定义列的使用 +## section three cte能够出现的句式 +## PART 1 select for update +## PART 2 insert into +## PART 3 update select +## PART 4 select when +## PART 5 delete from +############################## +############################## +## section one +## PART 1 定义表名的限制 +############################## +## PART 1.1 表名,列名不能是保留关键字,可以是分保留关键字 +WITH explain as (select 1 from dual) select * from explain; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'explain as (select 1 from dual) select * from explain' at line 1 + +WITH cte(explain) as (select 1 from dual) select * from cte; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'explain) as (select 1 from dual) select * from cte' at line 1 + +with cte(name) as (select 1 from dual) select * from cte; ++------+ +| name | ++------+ +| 1 | ++------+ + +## PART 1.2 允许与已有的表重名 +explain basic WITH t4 as (select 1 from dual) select * from t4; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |EXPRESSION| | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter(nil) + values({1}) + +WITH t4 as (select 1 from dual) select * from t4; ++---+ +| 1 | ++---+ +| 1 | ++---+ + +############################## +## PART 2 单个的定义 +############################## +## PART 2.1 定义列名重复 +with cte(a,a) as (select 1,1 from dual) select * from cte; +ERROR HY000: duplicate name found in column alias list for WITH clause + +## PART 2.2.1 定义列数量与查询产生列一致或不一致 +explain basic with cte(a,b) as (select 1,1 from dual) select * from cte; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |EXPRESSION| | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([1], [1]), filter(nil) + values({1, 1}) + +with cte(a,b) as (select 1,1 from dual) select * from cte; ++---+---+ +| a | b | ++---+---+ +| 1 | 1 | ++---+---+ + +with cte(a,b) as (select 1 from dual) select * from cte; +ERROR HY000: number of WITH clause column names does not match number of elements in select list + +with cte(a,b,c) as (select 1, 2, 3, 4 from dual) select * from cte; +ERROR HY000: number of WITH clause column names does not match number of elements in select list + +## PART 2.2.2 不使用定义列使用原来的列 +with cte(a,b) as (select c1,c2 from t1) select c1 from cte; +ERROR 42S22: Unknown column 'c1' in 'field list' + +############################## +## PART 3 多个的定义 +############################## +## PART 3.1 前面的定义引用后面的,后面的引用前面的 +WITH + cte1 (a, b) AS (SELECT c, d FROM cte2), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +SELECT b, d FROM cte1 JOIN cte2 +on cte1.a = cte2.c; +ERROR 42S02: Table 'cte_st.cte2' doesn't exist + +explain basic with + cte1 AS (select c1 from t1), + cte2 AS (select c1 from cte1) +select * from cte1; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + + +with + cte1 AS (select c1 from t1), + cte2 AS (select c1 from cte1) +select * from cte1; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +## PART 3.2.1 直接嵌套定义,MySQL支持这样的直接嵌套 +with + cte1 AS ( + with cte2 AS (select c1 from t1) + select c1 from cte2 + ) +select c1 from cte1; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +with + cte1 (cte1col) AS ( + with cte2 (cte2col) AS (select c1 from t1) + select cte2col from cte2 + ) +select cte1col from cte1; ++---------+ +| cte1col | ++---------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++---------+ + +with + cte1 (cte1col) AS ( + with cte2 (cte2col1, cte2col2) AS (select c1, c2 from t1) + select cte2col2 from cte2 + ) +select cte1col from cte1; ++---------+ +| cte1col | ++---------+ +| 2 | +| 5 | +| 8 | +| 11 | +| 14 | +| 17 | +| 20 | ++---------+ + +## PART 3.2.2 在子查询中进行嵌套 +with cte(a) as (select * from (with cteb(a) as (select 1 from dual) select * from cteb) bac) select * from cte; ++---+ +| a | ++---+ +| 1 | ++---+ + +############################## +## PART 4 subquery的变化 +############################## +## PART 4.1.0 subquery的变化 +## 带有聚合 +explain basic with cte as (select count(*) from t1) select * from cte; +Query Plan +========================= +|ID|OPERATOR |NAME| +------------------------- +|0 |SCALAR GROUP BY| | +|1 | TABLE SCAN |t1 | +========================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 1 - output([1]), filter(nil), + access([t1.__pk_increment]), partitions(p0) + + +with cte as (select count(*) from t1) select * from cte; ++----------+ +| count(*) | ++----------+ +| 7 | ++----------+ + +## 带有where +explain basic with + cte1 AS ( select c1 as col1 from t1 where c1 > 1) +select col1 from cte1; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([t1.c1 > 1]), + access([t1.c1]), partitions(p0) + + +with + cte1 AS ( select c1 as col1 from t1 where c1 > 1) +select col1 from cte1; ++------+ +| col1 | ++------+ +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +explain basic with + cte1 AS ( select * from t1 where c1+'1'<=3) +select c1 from cte1; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([cast(t1.c1, DOUBLE(-1, -1)) + ? <= ?]), + access([t1.c1]), partitions(p0) + + +with + cte1 AS ( select * from t1 where c1+'1'<=3) +select c1 from cte1; ++------+ +| c1 | ++------+ +| 1 | ++------+ + +## 带有group +explain basic with + cte1 AS ( select 1 as c1, 2 as c2 from t1 group by c1) +select c1 from cte1; +Query Plan +======================== +|ID|OPERATOR |NAME| +------------------------ +|0 |MERGE GROUP BY| | +|1 | SORT | | +|2 | TABLE SCAN |t1 | +======================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter(nil), + group([t1.c1]), agg_func(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +Warnings: +Warning 1052 Column 'c1' in group statement is ambiguous +Warning 1052 Column 'c1' in group statement is ambiguous +with + cte1 AS ( select 1 as c1, 2 as c2 from t1 group by c1) +select c1 from cte1; ++----+ +| c1 | ++----+ +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | ++----+ +Warnings: +Warning 1052 Column 'c1' in group statement is ambiguous +Warning 1052 Column 'c1' in group statement is ambiguous + +## 带有having +explain basic with + cte1 AS ( select c1, c2 from t1 where t1.c1 > 2) +select c1 from cte1; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([t1.c1 > 2]), + access([t1.c1]), partitions(p0) + +with + cte1 AS ( select c1, c2 from t1 where t1.c1 > 2) +select c1 from cte1; ++------+ +| c1 | ++------+ +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +## 带有order +explain basic with + cte1 AS ( select c1, c2 + 1 as c3 from t1 order by c2) +select c1 from cte1; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |SORT | | +|1 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +with + cte1 AS ( select c1, c2 + 1 as c3 from t1 order by c2) +select c1 from cte1; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +explain basic with + cte2 AS (select * from t1 left join t2 on t1.c1=t2.c21 order by t1.c1) +select c1 from cte2; +Query Plan +========================== +|ID|OPERATOR |NAME| +-------------------------- +|0 |MERGE OUTER JOIN| | +|1 | SORT | | +|2 | TABLE SCAN |t1 | +|3 | SORT | | +|4 | TABLE SCAN |t2 | +========================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c21]), other_conds(nil) + 1 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c21]), filter(nil), sort_keys([t2.c21, ASC]) + 4 - output([t2.c21]), filter(nil), + access([t2.c21]), partitions(p0) + +with + cte2 AS (select * from t1 left join t2 on t1.c1=t2.c21 order by t1.c1) +select c1 from cte2; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +## PART 4.1.1 normal型+hint +## index +## use_nl/use_merge/leading +## hint在cte定义里面 +explain basic with + cte0 AS (select /*+ use_nl(t1 t2) */ * from t2, t1 where t1.c1 = t2.c21) +select * from cte0; +Query Plan +========================== +|ID|OPERATOR |NAME| +-------------------------- +|0 |NESTED-LOOP JOIN| | +|1 | TABLE SCAN |t2 | +|2 | MATERIAL | | +|3 | TABLE SCAN |t1 | +========================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c21], [t2.c22], [t2.c23], [t1.c1], [t1.c2], [t1.c3]), filter(nil), + conds([t1.c1 = t2.c21]), nl_params_(nil) + 1 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), + access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil) + 3 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + + +with + cte0 AS (select /*+ use_nl(t1 t2) */ * from t2, t1 where t1.c1 = t2.c21) +select * from cte0; ++------+------+------+------+------+------+ +| c21 | c22 | c23 | c1 | c2 | c3 | ++------+------+------+------+------+------+ +| 1 | 2 | 3 | 1 | 2 | 3 | +| 4 | 5 | 6 | 4 | 5 | 6 | +| 7 | 8 | 9 | 7 | 8 | 9 | +| 10 | 11 | 12 | 10 | 11 | 12 | +| 13 | 14 | 15 | 13 | 14 | 15 | +| 16 | 17 | 18 | 16 | 17 | 18 | +| 19 | 20 | 21 | 19 | 20 | 21 | ++------+------+------+------+------+------+ + +## hint对cte定义表进行使用,对比与MySQL的一致 +explain basic with cte0 AS (select * from t2) select /*+ leading(t2 cte0) use_nl(cte0)*/ * from cte0, t1 where cte0.c21 = t1.c1; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |HASH JOIN | | +|1 | TABLE SCAN|t2 | +|2 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c21], [t2.c22], [t2.c23], [t1.c1], [t1.c2], [t1.c3]), filter(nil), + equal_conds([t2.c21 = t1.c1]), other_conds(nil) + 1 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), + access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + + +with cte0 AS (select * from t2) select /*+ leading(t2 cte0) use_nl(cte0)*/ * from cte0, t1 where cte0.c21 = t1.c1; ++------+------+------+------+------+------+ +| c21 | c22 | c23 | c1 | c2 | c3 | ++------+------+------+------+------+------+ +| 1 | 2 | 3 | 1 | 2 | 3 | +| 4 | 5 | 6 | 4 | 5 | 6 | +| 7 | 8 | 9 | 7 | 8 | 9 | +| 10 | 11 | 12 | 10 | 11 | 12 | +| 13 | 14 | 15 | 13 | 14 | 15 | +| 16 | 17 | 18 | 16 | 17 | 18 | +| 19 | 20 | 21 | 19 | 20 | 21 | ++------+------+------+------+------+------+ + +## PART 4.1.2 里面是一个set operator +explain basic WITH cte AS +( + SELECT 1 AS col1, 2 AS col2 from dual + UNION ALL + SELECT 3, 4 from dual +) +SELECT col1, col2 FROM cte; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |UNION ALL | | +|1 | EXPRESSION| | +|2 | EXPRESSION| | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([1], [2]), filter(nil) + values({1, 2}) + 2 - output([3], [4]), filter(nil) + values({3, 4}) + + +WITH cte AS +( + SELECT 1 AS col1, 2 AS col2 from dual + UNION ALL + SELECT 3, 4 from dual +) +SELECT col1, col2 FROM cte; ++------+------+ +| col1 | col2 | ++------+------+ +| 1 | 2 | +| 3 | 4 | ++------+------+ + +explain basic WITH cte AS +( + select c1, c2 from t1 + UNION all + select c21, c22 from t2 +) +select c1, c2 from cte; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |UNION ALL | | +|1 | TABLE SCAN|t1 | +|2 | TABLE SCAN|t2 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])], [UNION([2])]), filter(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c21], [t2.c22]), filter(nil), + access([t2.c21], [t2.c22]), partitions(p0) + + +WITH cte AS +( + select c1, c2 from t1 + UNION all + select c21, c22 from t2 +) +select c1, c2 from cte; ++------+------+ +| c1 | c2 | ++------+------+ +| 1 | 2 | +| 4 | 5 | +| 7 | 8 | +| 10 | 11 | +| 13 | 14 | +| 16 | 17 | +| 19 | 20 | +| 1 | 2 | +| 4 | 5 | +| 7 | 8 | +| 10 | 11 | +| 13 | 14 | +| 16 | 17 | +| 19 | 20 | ++------+------+ + +## PART 4.1.3 里面是一个where exist(semi join),顺便测试在cte里面as一个列,在外面使用 +explain basic WITH cte AS +( + select 1 as col from t1 where c1 in (select c1 from t1 where exists( (select 1 from dual) union (select 1 from dual))) +) +select * from cte, t1 where t1.c1 = cte.col; +Query Plan +===================================== +|ID|OPERATOR |NAME | +------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| | +|1 | HASH RIGHT SEMI JOIN | | +|2 | SUBPLAN SCAN |VIEW1| +|3 | SUBPLAN FILTER | | +|4 | TABLE SCAN |t1 | +|5 | LIMIT | | +|6 | MERGE UNION DISTINCT | | +|7 | LIMIT | | +|8 | EXPRESSION | | +|9 | LIMIT | | +|10| EXPRESSION | | +|11| TABLE SCAN |t1 | +|12| MATERIAL | | +|13| TABLE SCAN |t1 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([1], [t1.c1], [t1.c2], [t1.c3]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([1]), filter(nil), + equal_conds([t1.c1 = VIEW1.c1]), other_conds(nil) + 2 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 3 - output([t1.c1]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([UNION([1])]), filter(nil), limit(1), offset(nil) + 6 - output([UNION([1])]), filter(nil) + 7 - output([1]), filter(nil), limit(1), offset(nil) + 8 - output([1]), filter(nil) + values({1}) + 9 - output([1]), filter(nil), limit(1), offset(nil) + 10 - output([1]), filter(nil) + values({1}) + 11 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 12 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil) + 13 - output([t1.c1], [t1.c2], [t1.c3]), filter([t1.c1 = 1]), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + + +WITH cte AS +( + select 1 as col from t1 where c1 in (select c1 from t1 where exists( (select 1 from dual) union (select 1 from dual))) +) +select * from cte, t1 where t1.c1 = cte.col; ++-----+------+------+------+ +| col | c1 | c2 | c3 | ++-----+------+------+------+ +| 1 | 1 | 2 | 3 | +| 1 | 1 | 2 | 3 | +| 1 | 1 | 2 | 3 | +| 1 | 1 | 2 | 3 | +| 1 | 1 | 2 | 3 | +| 1 | 1 | 2 | 3 | +| 1 | 1 | 2 | 3 | ++-----+------+------+------+ + +## PART 4.2 有针对某一个分区的操作 +explain basic with cte0 as (select * from t3 partition(p0)) select cte0.c1 from cte0; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t3 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p0) + + +with cte0 as (select * from t3 partition(p0)) select cte0.c1 from cte0; ++----+ +| c1 | ++----+ +| 4 | +| 10 | +| 16 | ++----+ + +explain basic with cte as (select * from t5 partition(p0)) select * from cte; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t5 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t5.c1], [t5.c2], [t5.c3]), filter(nil), + access([t5.c1], [t5.c2], [t5.c3]), partitions(p0) + + +with cte as (select * from t5 partition(p0)) select * from cte; ++----+------+------+ +| c1 | c2 | c3 | ++----+------+------+ ++----+------+------+ + +############################## +## section two +## PART 1 cte出现在normal型查询语句中 +############################## +## PART 1.1 最基本用法(单表) +## 不定义别名列列表的时候最简单的使用方法 +explain basic WITH + cte1 AS (select * from t1) +select c1, c2, c3 from cte1; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + + +WITH + cte1 AS (select * from t1) +select c1, c2, c3 from cte1; ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ +| 1 | 2 | 3 | +| 4 | 5 | 6 | +| 7 | 8 | 9 | +| 10 | 11 | 12 | +| 13 | 14 | 15 | +| 16 | 17 | 18 | +| 19 | 20 | 21 | ++------+------+------+ + +## subquery里面取了别名列,看看主句中能否继续使用 +explain basic with + cte1 AS ( select c1 + 1 as col1 from t1) +select col1 from cte1; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 + 1]), filter(nil), + access([t1.c1]), partitions(p0) + +with + cte1 AS ( select c1 + 1 as col1 from t1) +select col1 from cte1; ++------+ +| col1 | ++------+ +| 2 | +| 5 | +| 8 | +| 11 | +| 14 | +| 17 | +| 20 | ++------+ + +explain basic with + cte1 AS ( select c1 + 1 as col1 from t1) +select * from cte1; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 + 1]), filter(nil), + access([t1.c1]), partitions(p0) + +with + cte1 AS ( select c1 + 1 as col1 from t1) +select * from cte1; ++------+ +| col1 | ++------+ +| 2 | +| 5 | +| 8 | +| 11 | +| 14 | +| 17 | +| 20 | ++------+ + +explain basic with + cte1 AS ( select c1 + 1 as col1 from t1) +select col1+3 from cte1; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1 + 1 + 3]), filter(nil), + access([t1.c1]), partitions(p0) + +with + cte1 AS ( select c1 + 1 as col1 from t1) +select col1+3 from cte1; ++--------+ +| col1+3 | ++--------+ +| 5 | +| 8 | +| 11 | +| 14 | +| 17 | +| 20 | +| 23 | ++--------+ + +## 这种cte的列其实可能没法用了 +explain basic with + cte AS (select 1 from t1) +select * from cte; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter(nil), + access([t1.__pk_increment]), partitions(p0) + +with + cte AS (select 1 from t1) +select * from cte; ++---+ +| 1 | ++---+ +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | +| 1 | ++---+ + +## 主句含有order +explain basic WITH cte2 AS (select c1 from t1) +select c1 from cte2 order by c1; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |SORT | | +|1 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +WITH cte2 AS (select c1 from t1) +select c1 from cte2 order by c1; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +## 对主句中的cte取别名后看看能否继续使用 +explain basic WITH cte2 AS (select c1 from t1) +select z1.c1 from cte2 z1, t2 where z1.c1 in (1,4,7,11) and z1.c1 = t2.c21; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |HASH JOIN | | +|1 | TABLE SCAN|t2 | +|2 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c21]), other_conds(nil) + 1 - output([t2.c21]), filter([t2.c21 IN (1, 4, 7, 11)]), + access([t2.c21]), partitions(p0) + 2 - output([t1.c1]), filter([t1.c1 IN (1, 4, 7, 11)]), + access([t1.c1]), partitions(p0) + +WITH cte2 AS (select c1 from t1) +select z1.c1 from cte2 z1, t2 where z1.c1 in (1,4,7,11) and z1.c1 = t2.c21; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | ++------+ + +## 重命名的列出现在where条件中 +explain basic WITH + cte1 AS (SELECT c1 as abc, c2 FROM t1) +select abc from cte1, t2 where abc in (1,4,7) and cte1.abc = t2.c21; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |HASH JOIN | | +|1 | TABLE SCAN|t2 | +|2 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t2.c21]), other_conds(nil) + 1 - output([t2.c21]), filter([t2.c21 IN (1, 4, 7)]), + access([t2.c21]), partitions(p0) + 2 - output([t1.c1]), filter([t1.c1 IN (1, 4, 7)]), + access([t1.c1]), partitions(p0) + +WITH + cte1 AS (SELECT c1 as abc, c2 FROM t1) +select abc from cte1, t2 where abc in (1,4,7) and cte1.abc = t2.c21; ++------+ +| abc | ++------+ +| 1 | +| 4 | +| 7 | ++------+ + +## 重命名的列出现在order+where中 +explain basic WITH + cte1 (name1, name2) AS (select c1, c2 from t1) +select name1 from cte1 where name1 in (1,4,11) order by name2; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |SORT | | +|1 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), sort_keys([t1.c2, ASC]) + 1 - output([t1.c1], [t1.c2]), filter([t1.c1 IN (1, 4, 11)]), + access([t1.c1], [t1.c2]), partitions(p0) + +WITH + cte1 (name1, name2) AS (select c1, c2 from t1) +select name1 from cte1 where name1 in (1,4,11) order by name2; ++-------+ +| name1 | ++-------+ +| 1 | +| 4 | ++-------+ + +## 在field list中写了inline,里面使用了cte +explain basic with cte as (select * from t1) select (select count(*) from cte) from t2; +Query Plan +===================================== +|ID|OPERATOR |NAME | +------------------------------------- +|0 |NESTED-LOOP JOIN CARTESIAN| | +|1 | SUBPLAN SCAN |VIEW1| +|2 | SCALAR GROUP BY | | +|3 | TABLE SCAN |t1 | +|4 | TABLE SCAN |t2 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([VIEW1.count(*)]), filter(nil), + conds(nil), nl_params_(nil) + 1 - output([VIEW1.count(*)]), filter(nil), + access([VIEW1.count(*)]) + 2 - output([T_FUN_COUNT(*)]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 3 - output([1]), filter(nil), + access([t1.__pk_increment]), partitions(p0) + 4 - output([1]), filter(nil), + access([t2.__pk_increment]), partitions(p0) + +with cte as (select * from t1) select (select count(*) from cte) from t2; ++----------------------------+ +| (select count(*) from cte) | ++----------------------------+ +| 7 | +| 7 | +| 7 | +| 7 | +| 7 | +| 7 | +| 7 | ++----------------------------+ + +## 在cte在外面使用的时候先被取了别名再使用 +explain basic with cte AS (select c1 from t1) +select cte.c1 from cte z1, cte where z1.c1 = cte.c1; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |HASH JOIN | | +|1 | TABLE SCAN|t1 | +|2 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c1 = t1.c1]), other_conds(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +with cte AS (select c1 from t1) +select cte.c1 from cte z1, cte where z1.c1 = cte.c1; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +explain basic with cte AS (select c1 from t1) +select /*+no_rewrite()*/ cte.c1 from cte z1, cte where z1.c1 = cte.c1; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |HASH JOIN | | +|1 | SUBPLAN SCAN|cte | +|2 | TABLE SCAN |t1 | +|3 | SUBPLAN SCAN|cte | +|4 | TABLE SCAN |t1 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([cte.c1]), filter(nil), + equal_conds([z1.c1 = cte.c1]), other_conds(nil) + 1 - output([z1.c1]), filter(nil), + access([z1.c1]) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([cte.c1]), filter(nil), + access([cte.c1]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +with cte AS (select c1 from t1) +select /*+no_rewrite()*/ cte.c1 from cte z1, cte where z1.c1 = cte.c1; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +## join+having not+order by +explain basic with + cte1 AS( select * from t1) +select * from cte1 left join t2 on cte1.c1=t2.c21 where t2.c21 != cte1.c1 order by cte1.c1; +Query Plan +====================== +|ID|OPERATOR |NAME| +---------------------- +|0 |MERGE JOIN | | +|1 | SORT | | +|2 | TABLE SCAN|t1 | +|3 | SORT | | +|4 | TABLE SCAN|t2 | +====================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c21], [t2.c22], [t2.c23]), filter(nil), + equal_conds([t1.c1 = t2.c21]), other_conds([t2.c21 != t1.c1]) + 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + 3 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), sort_keys([t2.c21, ASC]) + 4 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), + access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) + +with + cte1 AS( select * from t1) +select * from cte1 left join t2 on cte1.c1=t2.c21 where t2.c21 != cte1.c1 order by cte1.c1; ++------+------+------+------+------+------+ +| c1 | c2 | c3 | c21 | c22 | c23 | ++------+------+------+------+------+------+ ++------+------+------+------+------+------+ + +## 对cte使用partition命令 +explain basic WITH cte2 AS (select * from t3) +select * from cte2 partition(p0); +Query Plan +===================================== +|ID|OPERATOR |NAME | +------------------------------------- +|0 |PX COORDINATOR | | +|1 | EXCHANGE OUT DISTR |:EX10000| +|2 | PX PARTITION ITERATOR| | +|3 | TABLE SCAN |t3 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t3.c1], [t3.c2]), filter(nil) + 1 - output([t3.c1], [t3.c2]), filter(nil), dop=1 + 2 - output([t3.c1], [t3.c2]), filter(nil) + 3 - output([t3.c1], [t3.c2]), filter(nil), + access([t3.c1], [t3.c2]), partitions(p[0-1]) + +WITH cte2 AS (select * from t3) +select * from cte2 partition(p0); ++----+------+ +| c1 | c2 | ++----+------+ +| 4 | 5 | +| 10 | 11 | +| 16 | 17 | +| 1 | 2 | +| 7 | 8 | +| 13 | 14 | ++----+------+ + +## PART 1.2 最基本用法(多表) +explain basic WITH + cte1 AS (SELECT c1, c2 FROM t1), + cte2 AS (SELECT c21, c22 FROM t2) +select c21 from cte2; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t2 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c21]), filter(nil), + access([t2.c21]), partitions(p0) + +WITH + cte1 AS (SELECT c1, c2 FROM t1), + cte2 AS (SELECT c21, c22 FROM t2) +select c21 from cte2; ++------+ +| c21 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +explain basic WITH + cte1 (c1)AS(select c1 from t1), + cte2 AS (select * from t1) +select c1, c2, c3 from cte2; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +WITH + cte1 (c1)AS(select c1 from t1), + cte2 AS (select * from t1) +select c1, c2, c3 from cte2; ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ +| 1 | 2 | 3 | +| 4 | 5 | 6 | +| 7 | 8 | 9 | +| 10 | 11 | 12 | +| 13 | 14 | 15 | +| 16 | 17 | 18 | +| 19 | 20 | 21 | ++------+------+------+ + +explain basic WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +SELECT b, d FROM cte1 JOIN cte2 +on cte1.a = cte2.c; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |HASH JOIN | | +|1 | TABLE SCAN|t1 | +|2 | TABLE SCAN|t2 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t2.c22]), filter(nil), + equal_conds([t1.c1 = t2.c21]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t2.c21], [t2.c22]), filter(nil), + access([t2.c21], [t2.c22]), partitions(p0) + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +SELECT b, d FROM cte1 JOIN cte2 +on cte1.a = cte2.c; ++------+------+ +| b | d | ++------+------+ +| 2 | 2 | +| 5 | 5 | +| 8 | 8 | +| 11 | 11 | +| 14 | 14 | +| 17 | 17 | +| 20 | 20 | ++------+------+ + +## join+order +explain basic WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select * from cte1 left join cte2 on cte1.a=cte2.c order by cte1.a; +Query Plan +========================== +|ID|OPERATOR |NAME| +-------------------------- +|0 |MERGE OUTER JOIN| | +|1 | SORT | | +|2 | TABLE SCAN |t1 | +|3 | SORT | | +|4 | TABLE SCAN |t2 | +========================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c21], [t2.c22]), filter(nil), + equal_conds([t1.c1 = t2.c21]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c21], [t2.c22]), filter(nil), sort_keys([t2.c21, ASC]) + 4 - output([t2.c21], [t2.c22]), filter(nil), + access([t2.c21], [t2.c22]), partitions(p0) + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select * from cte1 left join cte2 on cte1.a=cte2.c order by cte1.a; ++------+------+------+------+ +| a | b | c | d | ++------+------+------+------+ +| 1 | 2 | 1 | 2 | +| 4 | 5 | 4 | 5 | +| 7 | 8 | 7 | 8 | +| 10 | 11 | 10 | 11 | +| 13 | 14 | 13 | 14 | +| 16 | 17 | 16 | 17 | +| 19 | 20 | 19 | 20 | ++------+------+------+------+ + +## 子查询+join +explain basic WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select t11.c11 as c111 from (select c1 as c11, c2 from t1) t11 join cte2 on t11.c2=cte2.c; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |HASH JOIN | | +|1 | TABLE SCAN|t2 | +|2 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + equal_conds([t1.c2 = t2.c21]), other_conds(nil) + 1 - output([t2.c21]), filter(nil), + access([t2.c21]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select t11.c11 as c111 from (select c1 as c11, c2 from t1) t11 join cte2 on t11.c2=cte2.c; ++------+ +| c111 | ++------+ ++------+ + +## 第二个cte的定义引用了第一个cte,主句中两个表做join +explain basic WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT a, b FROM cte1) +SELECT b, d FROM cte1 JOIN cte2 +on cte1.a = cte2.c; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |HASH JOIN | | +|1 | TABLE SCAN|t1 | +|2 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c2], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t1.c1]), other_conds(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +SELECT b, d FROM cte1 JOIN cte2 +on cte1.a = cte2.c; ++------+------+ +| b | d | ++------+------+ +| 2 | 2 | +| 5 | 5 | +| 8 | 8 | +| 11 | 11 | +| 14 | 14 | +| 17 | 17 | +| 20 | 20 | ++------+------+ + +## 第三cte引用第二个,第二个又引用第一个。结果与MySQL一致。 +explain basic WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT a+1, b-1 FROM cte1), + cte3 (e, f) AS (SELECT c*2, d*3 FROM cte2) +SELECT a, b, e, f FROM cte1 JOIN cte3 +on cte1.a < cte3.e; +Query Plan +========================== +|ID|OPERATOR |NAME| +-------------------------- +|0 |NESTED-LOOP JOIN| | +|1 | TABLE SCAN |t1 | +|2 | MATERIAL | | +|3 | TABLE SCAN |t1 | +========================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c1 + 1 * 2], [t1.c2 - 1 * 3]), filter(nil), + conds([t1.c1 < t1.c1 + 1 * 2]), nl_params_(nil) + 1 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 2 - output([t1.c1], [t1.c2]), filter(nil) + 3 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT a+1, b-1 FROM cte1), + cte3 (e, f) AS (SELECT c*2, d*3 FROM cte2) +SELECT a, b, e, f FROM cte1 JOIN cte3 +on cte1.a < cte3.e; ++------+------+------+------+ +| a | b | e | f | ++------+------+------+------+ +| 1 | 2 | 4 | 3 | +| 1 | 2 | 10 | 12 | +| 1 | 2 | 16 | 21 | +| 1 | 2 | 22 | 30 | +| 1 | 2 | 28 | 39 | +| 1 | 2 | 34 | 48 | +| 1 | 2 | 40 | 57 | +| 4 | 5 | 10 | 12 | +| 4 | 5 | 16 | 21 | +| 4 | 5 | 22 | 30 | +| 4 | 5 | 28 | 39 | +| 4 | 5 | 34 | 48 | +| 4 | 5 | 40 | 57 | +| 7 | 8 | 10 | 12 | +| 7 | 8 | 16 | 21 | +| 7 | 8 | 22 | 30 | +| 7 | 8 | 28 | 39 | +| 7 | 8 | 34 | 48 | +| 7 | 8 | 40 | 57 | +| 10 | 11 | 16 | 21 | +| 10 | 11 | 22 | 30 | +| 10 | 11 | 28 | 39 | +| 10 | 11 | 34 | 48 | +| 10 | 11 | 40 | 57 | +| 13 | 14 | 16 | 21 | +| 13 | 14 | 22 | 30 | +| 13 | 14 | 28 | 39 | +| 13 | 14 | 34 | 48 | +| 13 | 14 | 40 | 57 | +| 16 | 17 | 22 | 30 | +| 16 | 17 | 28 | 39 | +| 16 | 17 | 34 | 48 | +| 16 | 17 | 40 | 57 | +| 19 | 20 | 22 | 30 | +| 19 | 20 | 28 | 39 | +| 19 | 20 | 34 | 48 | +| 19 | 20 | 40 | 57 | ++------+------+------+------+ + +## 一个cte是对某个特定分区,一个加了hint,主查询做join +with + cte0 AS ( + select * from t3 partition(p0) + ), + cte1 AS ( + select /*+ index(t4 i1) */ * from t4 where c2 > 0 + ) +select cte0.c1, cte1.c1 from cte0, cte1 where cte0.c1 = cte1.c1; ++----+----+ +| c1 | c1 | ++----+----+ ++----+----+ + +## cte出现在主查询in子句中,还有exists子句中 +explain basic WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); +Query Plan +=================================== +|ID|OPERATOR |NAME | +----------------------------------- +|0 |HASH RIGHT SEMI JOIN | | +|1 | SUBPLAN SCAN |VIEW1| +|2 | SUBPLAN FILTER | | +|3 | TABLE SCAN |t2 | +|4 | LIMIT | | +|5 | MERGE UNION DISTINCT| | +|6 | SORT | | +|7 | LIMIT | | +|8 | HASH DISTINCT | | +|9 | TABLE SCAN |t1 | +|10| SORT | | +|11| LIMIT | | +|12| HASH DISTINCT | | +|13| TABLE SCAN |t1 | +|14| TABLE SCAN |t1 | +=================================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter(nil), + equal_conds([t1.c1 = VIEW1.d]), other_conds(nil) + 1 - output([VIEW1.d]), filter(nil), + access([VIEW1.d]) + 2 - output([t2.c22]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 3 - output([t2.c22]), filter(nil), + access([t2.c22]), partitions(p0) + 4 - output([UNION([1])]), filter(nil), limit(1), offset(nil) + 5 - output([UNION([1])]), filter(nil) + 6 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 7 - output([t1.c2]), filter(nil), limit(1), offset(nil) + 8 - output([t1.c2]), filter(nil), + distinct([t1.c2]) + 9 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 10 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 11 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 12 - output([t1.c1]), filter(nil), + distinct([t1.c1]) + 13 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 14 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); ++---+ +| 1 | ++---+ ++---+ + +## 在上面的基础上加入no rewrite hint +explain basic WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select /*+no_rewrite()*/ 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); +Query Plan +================================= +|ID|OPERATOR |NAME| +--------------------------------- +|0 |SUBPLAN FILTER | | +|1 | SUBPLAN SCAN |cte1| +|2 | TABLE SCAN |t1 | +|3 | SUBPLAN FILTER | | +|4 | TABLE SCAN |t2 | +|5 | LIMIT | | +|6 | MERGE UNION DISTINCT| | +|7 | SORT | | +|8 | LIMIT | | +|9 | HASH DISTINCT | | +|10| TABLE SCAN |t1 | +|11| SORT | | +|12| LIMIT | | +|13| HASH DISTINCT | | +|14| TABLE SCAN |t1 | +================================= + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter([cte1.a = ANY(subquery(1))]), + exec_params_(nil), onetime_exprs_(nil), init_plan_idxs_([1]) + 1 - output([cte1.a]), filter(nil), + access([cte1.a]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c22]), filter([?]), + exec_params_(nil), onetime_exprs_([(T_OP_EXISTS, subquery(1))]), init_plan_idxs_(nil) + 4 - output([t2.c22]), filter(nil), + access([t2.c22]), partitions(p0) + 5 - output([UNION([1])]), filter(nil), limit(1), offset(nil) + 6 - output([UNION([1])]), filter(nil) + 7 - output([t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 8 - output([t1.c2]), filter(nil), limit(1), offset(nil) + 9 - output([t1.c2]), filter(nil), + distinct([t1.c2]) + 10 - output([t1.c2]), filter(nil), + access([t1.c2]), partitions(p0) + 11 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 12 - output([t1.c1]), filter(nil), limit(1), offset(nil) + 13 - output([t1.c1]), filter(nil), + distinct([t1.c1]) + 14 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select /*+no_rewrite()*/ 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); ++---+ +| 1 | ++---+ ++---+ + +## 主查询是left join+having not+order +explain basic WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select * from cte1 left join cte2 on cte1.a=cte2.c where cte1.b != cte2.d order by cte1.a; +Query Plan +====================== +|ID|OPERATOR |NAME| +---------------------- +|0 |MERGE JOIN | | +|1 | SORT | | +|2 | TABLE SCAN|t1 | +|3 | SORT | | +|4 | TABLE SCAN|t2 | +====================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t2.c21], [t2.c22]), filter(nil), + equal_conds([t1.c1 = t2.c21]), other_conds([t1.c2 != t2.c22]) + 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + 3 - output([t2.c21], [t2.c22]), filter(nil), sort_keys([t2.c21, ASC]) + 4 - output([t2.c21], [t2.c22]), filter(nil), + access([t2.c21], [t2.c22]), partitions(p0) + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select * from cte1 left join cte2 on cte1.a=cte2.c where cte1.b != cte2.d order by cte1.a; ++------+------+------+------+ +| a | b | c | d | ++------+------+------+------+ ++------+------+------+------+ + +############################## +## PART 2 cte出现在set型查询语句中 +############################## +explain basic WITH cte2 AS (select c1 from t1) +select c1 from cte2 +UNION all +select c21 from t2; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |UNION ALL | | +|1 | TABLE SCAN|t1 | +|2 | TABLE SCAN|t2 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil) + 1 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 2 - output([t2.c21]), filter(nil), + access([t2.c21]), partitions(p0) + +WITH cte2 AS (select c1 from t1) +select c1 from cte2 +UNION all +select c21 from t2; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +explain basic WITH cte2 AS (select c1 from t1) +select /*+no_rewrite()*/ c1 from cte2 +UNION all +select c21 from t2; +Query Plan +======================= +|ID|OPERATOR |NAME| +----------------------- +|0 |UNION ALL | | +|1 | SUBPLAN SCAN|cte2| +|2 | TABLE SCAN |t1 | +|3 | TABLE SCAN |t2 | +======================= + +Outputs & filters: +------------------------------------- + 0 - output([UNION([1])]), filter(nil) + 1 - output([cte2.c1]), filter(nil), + access([cte2.c1]) + 2 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 3 - output([t2.c21]), filter(nil), + access([t2.c21]), partitions(p0) + +WITH cte2 AS (select c1 from t1) +select /*+no_rewrite()*/ c1 from cte2 +UNION all +select c21 from t2; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +explain basic WITH cte2 AS (select c1 from t1) +select * from t1 intersect (select * from t2); +Query Plan +================================= +|ID|OPERATOR |NAME| +--------------------------------- +|0 |HASH INTERSECT DISTINCT| | +|1 | TABLE SCAN |t1 | +|2 | TABLE SCAN |t2 | +================================= + +Outputs & filters: +------------------------------------- + 0 - output([INTERSECT([1])], [INTERSECT([2])], [INTERSECT([3])]), filter(nil) + 1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + 2 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), + access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) + +WITH cte2 AS (select c1 from t1) +select * from t1 intersect (select * from t2); ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ +| 1 | 2 | 3 | +| 4 | 5 | 6 | +| 7 | 8 | 9 | +| 10 | 11 | 12 | +| 13 | 14 | 15 | +| 16 | 17 | 18 | +| 19 | 20 | 21 | ++------+------+------+ + +############################## +## PART 3 主查询中含有inline cte +############################## +## PART 3.1 inline cte与外层同名/不同名 +with cte(a) as (select 1 from dual) select * from (with cteb(a) as (select 1 from dual) select * from cteb) abc; ++---+ +| a | ++---+ +| 1 | ++---+ + +## 同名,这里应该是查询t1 +explain basic with cte as (select c21 from t2) +select * from (with cte as (select c1 from t1) select * from cte) t; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + +with cte as (select c21 from t2) +select * from (with cte as (select c1 from t1) select * from cte) t; ++------+ +| c1 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +## 不同名,这里应该是查询t2 +explain basic with cte as (select c21 from t2) +select * from (with cte1 as (select c1 from t1) select * from cte) t; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t2 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c21]), filter(nil), + access([t2.c21]), partitions(p0) + +with cte as (select c21 from t2) +select * from (with cte1 as (select c1 from t1) select * from cte) t; ++------+ +| c21 | ++------+ +| 1 | +| 4 | +| 7 | +| 10 | +| 13 | +| 16 | +| 19 | ++------+ + +## 三层,这里应该是查询t3 +explain basic with cte as (select c21 from t2) +select * from (with cte as (select c1 from t1) select * from (with cte as (select c1 from t3) select * from cte) cte) t; +Query Plan +===================================== +|ID|OPERATOR |NAME | +------------------------------------- +|0 |PX COORDINATOR | | +|1 | EXCHANGE OUT DISTR |:EX10000| +|2 | PX PARTITION ITERATOR| | +|3 | TABLE SCAN |t3 | +===================================== + +Outputs & filters: +------------------------------------- + 0 - output([t3.c1]), filter(nil) + 1 - output([t3.c1]), filter(nil), dop=1 + 2 - output([t3.c1]), filter(nil) + 3 - output([t3.c1]), filter(nil), + access([t3.c1]), partitions(p[0-1]) + +with cte as (select c21 from t2) +select * from (with cte as (select c1 from t1) select * from (with cte as (select c1 from t3) select * from cte) cte) t; ++----+ +| c1 | ++----+ +| 4 | +| 10 | +| 16 | +| 1 | +| 7 | +| 13 | ++----+ + +## PART 3.2 inline cte引用外层cte +explain basic with cte as (select 1 from dual) select * from (with cte1 as (select * from cte) select * from cte1); +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |EXPRESSION| | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([1]), filter(nil) + values({1}) + +with cte as (select 1 from dual) select * from (with cte1 as (select * from cte) select * from cte1); ++---+ +| 1 | ++---+ +| 1 | ++---+ + +explain basic WITH cte_outer AS (select * from t2) + select t1.*, t4.* from t1 +left join +( select c21,c22 from cte_outer) t4 +on +t4.c21=t1.c1; +Query Plan +=============================== +|ID|OPERATOR |NAME| +------------------------------- +|0 |HASH RIGHT OUTER JOIN| | +|1 | TABLE SCAN |t2 | +|2 | TABLE SCAN |t1 | +=============================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3], [t2.c21], [t2.c22]), filter(nil), + equal_conds([t2.c21 = t1.c1]), other_conds(nil) + 1 - output([t2.c21], [t2.c22]), filter(nil), + access([t2.c21], [t2.c22]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +WITH cte_outer AS (select * from t2) + select t1.*, t4.* from t1 +left join +( select c21,c22 from cte_outer) t4 +on +t4.c21=t1.c1; ++------+------+------+------+------+ +| c1 | c2 | c3 | c21 | c22 | ++------+------+------+------+------+ +| 1 | 2 | 3 | 1 | 2 | +| 4 | 5 | 6 | 4 | 5 | +| 7 | 8 | 9 | 7 | 8 | +| 10 | 11 | 12 | 10 | 11 | +| 13 | 14 | 15 | 13 | 14 | +| 16 | 17 | 18 | 16 | 17 | +| 19 | 20 | 21 | 19 | 20 | ++------+------+------+------+------+ + +explain basic WITH cte_outer AS (select * from t2) +select t3.*, t4.* from +( WITH cte_inner AS (select c1 from t1) select c1 from cte_inner where cte_inner.c1 > 1000) t3 + left join +( WITH cte_inner(a, b) AS (select c1,c2 from t1) select c21,c22 from cte_outer where cte_outer.c21 > 1000) t4 +on t4.c21=t3.c1 +order by t4.c22; +Query Plan +========================== +|ID|OPERATOR |NAME| +-------------------------- +|0 |SORT | | +|1 | HASH OUTER JOIN| | +|2 | TABLE SCAN |t1 | +|3 | TABLE SCAN |t2 | +========================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t2.c21], [t2.c22]), filter(nil), sort_keys([t2.c22, ASC]) + 1 - output([t1.c1], [t2.c21], [t2.c22]), filter(nil), + equal_conds([t2.c21 = t1.c1]), other_conds(nil) + 2 - output([t1.c1]), filter([t1.c1 > 1000]), + access([t1.c1]), partitions(p0) + 3 - output([t2.c21], [t2.c22]), filter([t2.c21 > 1000]), + access([t2.c21], [t2.c22]), partitions(p0) + +WITH cte_outer AS (select * from t2) +select t3.*, t4.* from +( WITH cte_inner AS (select c1 from t1) select c1 from cte_inner where cte_inner.c1 > 1000) t3 + left join +( WITH cte_inner(a, b) AS (select c1,c2 from t1) select c21,c22 from cte_outer where cte_outer.c21 > 1000) t4 +on t4.c21=t3.c1 +order by t4.c22; ++------+------+------+ +| c1 | c21 | c22 | ++------+------+------+ ++------+------+------+ + +## PART 3.3 inline cte中定义表名与已有表名重名,这里应该是查询了t1才对 +explain basic select * from (WITH t2 AS (select c1 from t1) select c1 from t2 where t2.c1 > 1000) t; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([t1.c1 > 1000]), + access([t1.c1]), partitions(p0) + +select * from (WITH t2 AS (select c1 from t1) select c1 from t2 where t2.c1 > 1000) t; ++------+ +| c1 | ++------+ ++------+ + +## PART 3.4 inline cte出现在field list +explain basic select ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000), t2.* from t2; +Query Plan +======================== +|ID|OPERATOR |NAME| +------------------------ +|0 |SUBPLAN FILTER| | +|1 | TABLE SCAN |t2 | +|2 | TABLE SCAN |t1 | +======================== + +Outputs & filters: +------------------------------------- + 0 - output([?], [t2.c21], [t2.c22], [t2.c23]), filter(nil), + exec_params_(nil), onetime_exprs_([subquery(1)]), init_plan_idxs_(nil) + 1 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), + access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) + 2 - output([t1.c1]), filter([t1.c1 > 1000]), + access([t1.c1]), partitions(p0) + +select ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000), t2.* from t2; ++---------------------------------------------------------------------------+------+------+------+ +| ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) | c21 | c22 | c23 | ++---------------------------------------------------------------------------+------+------+------+ +| NULL | 1 | 2 | 3 | +| NULL | 4 | 5 | 6 | +| NULL | 7 | 8 | 9 | +| NULL | 10 | 11 | 12 | +| NULL | 13 | 14 | 15 | +| NULL | 16 | 17 | 18 | +| NULL | 19 | 20 | 21 | ++---------------------------------------------------------------------------+------+------+------+ + +## PART 3.5 inline cte之后看看列能否正常使用 +explain basic select t3.* from ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 where t3.c1 > 0; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1]), filter([t1.c1 > 0], [t1.c1 > 1000]), + access([t1.c1]), partitions(p0) + +select t3.* from ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 where t3.c1 > 0; ++------+ +| c1 | ++------+ ++------+ + +explain basic select t3.*, t4.* from +(WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 + left join +(WITH cte(a, b) AS (select c1,c2 from t1) select a,b from cte where cte.a > 1000) t4 +on t4.a=t3.c1 +order by t4.b; +Query Plan +========================== +|ID|OPERATOR |NAME| +-------------------------- +|0 |SORT | | +|1 | HASH OUTER JOIN| | +|2 | TABLE SCAN |t1 | +|3 | TABLE SCAN |t1 | +========================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c2, ASC]) + 1 - output([t1.c1], [t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t1.c1]), other_conds(nil) + 2 - output([t1.c1]), filter([t1.c1 > 1000]), + access([t1.c1]), partitions(p0) + 3 - output([t1.c1], [t1.c2]), filter([t1.c1 > 1000]), + access([t1.c1], [t1.c2]), partitions(p0) + +select t3.*, t4.* from +(WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 + left join +(WITH cte(a, b) AS (select c1,c2 from t1) select a,b from cte where cte.a > 1000) t4 +on t4.a=t3.c1 +order by t4.b; ++------+------+------+ +| c1 | a | b | ++------+------+------+ ++------+------+------+ + +## PART 3.6 inline cte别名后与外部cte做join +explain basic with cte as (select * from t1) select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; +Query Plan +===================== +|ID|OPERATOR |NAME| +--------------------- +|0 |HASH JOIN | | +|1 | TABLE SCAN|t2 | +|2 | TABLE SCAN|t1 | +===================== + +Outputs & filters: +------------------------------------- + 0 - output([t2.c21], [t2.c22], [t2.c23], [t1.c1], [t1.c2], [t1.c3]), filter(nil), + equal_conds([t2.c21 = t1.c1]), other_conds(nil) + 1 - output([t2.c21], [t2.c22], [t2.c23]), filter(nil), + access([t2.c21], [t2.c22], [t2.c23]), partitions(p0) + 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +with cte as (select * from t1) select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; ++------+------+------+------+------+------+ +| c21 | c22 | c23 | c1 | c2 | c3 | ++------+------+------+------+------+------+ +| 1 | 2 | 3 | 1 | 2 | 3 | +| 4 | 5 | 6 | 4 | 5 | 6 | +| 7 | 8 | 9 | 7 | 8 | 9 | +| 10 | 11 | 12 | 10 | 11 | 12 | +| 13 | 14 | 15 | 13 | 14 | 15 | +| 16 | 17 | 18 | 16 | 17 | 18 | +| 19 | 20 | 21 | 19 | 20 | 21 | ++------+------+------+------+------+------+ + +select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; +ERROR 42S02: Table 'cte_st.cte' doesn't exist + +#result is correct, last cte is point to t2 +with cte as (select * from t1) select (with cte(col1, col2, col3) as(select * from t2) select count(*) from cte) from t1; ++----------------------------------------------------------------------------+ +| (with cte(col1, col2, col3) as(select * from t2) select count(*) from cte) | ++----------------------------------------------------------------------------+ +| 7 | +| 7 | +| 7 | +| 7 | +| 7 | +| 7 | +| 7 | ++----------------------------------------------------------------------------+ + +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select t11.c11 as c111 from (with cte3 as(select * from t3) select c1 as c11, c2 from cte1) cte1 join cte2 on t11.c2=cte2.c; +ERROR 42S22: Unknown column 'c1' in 'field list' + +#result is correct +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select * from (with cte3 as(select * from t3) select c1 as c11, c2 from cte3) cte1 join cte2 on cte1.c11=cte2.c; ++-----+------+------+------+ +| c11 | c2 | c | d | ++-----+------+------+------+ +| 1 | 2 | 1 | 2 | +| 4 | 5 | 4 | 5 | +| 7 | 8 | 7 | 8 | +| 10 | 11 | 10 | 11 | +| 13 | 14 | 13 | 14 | +| 16 | 17 | 16 | 17 | ++-----+------+------+------+ + +#result is correct +WITH + cte1 (a, b) AS (SELECT c1, c2 FROM t1), + cte2 (c, d) AS (SELECT c21, c22 FROM t2) +select * from (with cte2 as(select * from t3) select c1 as c11, c2 from cte2) cte1 join cte2 on cte1.c11=cte2.c; ++-----+------+------+------+ +| c11 | c2 | c | d | ++-----+------+------+------+ +| 1 | 2 | 1 | 2 | +| 4 | 5 | 4 | 5 | +| 7 | 8 | 7 | 8 | +| 10 | 11 | 10 | 11 | +| 13 | 14 | 13 | 14 | +| 16 | 17 | 16 | 17 | ++-----+------+------+------+ + +############################## +## PART 4 歧义语法 +############################## +## 歧义语法 +## with里面的column和select里面的column重名的情况测试 +## mysql5.6中alias name不能出现在where子句中,但是可以出现在group by、having、order by子句中 +## 如果普通列和alias name重复,那么在group by、having子句中优先使用基础列,并汇报WARNNING +## order by子句中,优先使用alias name +## 这里需要参考mysql8.0中实际使用结果,考虑with clause中定义表中列与基础列重名时的表现 +## PART 4.1 cte使用时一列被别名为另外一个同名列并在where clause中使用 +with + cte1 (c22, c21) AS (select c1, c2 from t1) +select c22 as c21, c21 from cte1 where c21 = 12; ++------+------+ +| c21 | c21 | ++------+------+ ++------+------+ + +## cte使用时一列被别名为另外一个同名列并在order_by_clause中使用 +with + cte1 (c22, c21) AS (select c1, c2 from t1) +select c22 as c21, c21 from cte1 order by c21; +ERROR 23000: Column 'c21' in order clause is ambiguous + +## cte使用时一列被别名为另外一个同名列并在having clause中使用 +with + cte1 (c22, c21) AS (select c1, c2 from t1) +select c22 as c21, c21 from cte1 having c21 > 0; +ERROR 23000: Column 'c21' in having clause is ambiguous + +## cte使用时一列被别名为另外一个同名列并在group_by_clause中使用 +with + cte1 (c22, c21) AS (select c1, c2 from t1) +select c22 as c21, c21 from cte1 group by c21; +ERROR 23000: Column 'c21' in group statement is ambiguous +with + cte1 (c22, c21) AS (select * from t1) +select c22 as c21, c21 from cte1 group by c21; +ERROR HY000: number of WITH clause column names does not match number of elements in select list + +## cte的列名已经无法在被使用了,这种用法比较特殊 +explain basic with cte as (select count(*) as k from t1) select * from cte where k = 1; +Query Plan +========================= +|ID|OPERATOR |NAME| +------------------------- +|0 |SCALAR GROUP BY| | +|1 | TABLE SCAN |t1 | +========================= + +Outputs & filters: +------------------------------------- + 0 - output([T_FUN_COUNT(*)]), filter([T_FUN_COUNT(*) = 1]), + group(nil), agg_func([T_FUN_COUNT(*)]) + 1 - output([1]), filter(nil), + access([t1.__pk_increment]), partitions(p0) + +with cte as (select count(*) as k from t1) select * from cte where k = 1; ++------+ +| k | ++------+ ++------+ + +############################## +## section three +## PART 1 select for update +############################## +explain basic WITH + cte0 AS ( select * from t1) +select * from cte0 for update; +Query Plan +==================== +|ID|OPERATOR |NAME| +-------------------- +|0 |TABLE SCAN|t1 | +==================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +WITH + cte0 AS ( select * from t1) +select * from cte0 for update; ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ +| 1 | 2 | 3 | +| 4 | 5 | 6 | +| 7 | 8 | 9 | +| 10 | 11 | 12 | +| 13 | 14 | 15 | +| 16 | 17 | 18 | +| 19 | 20 | 21 | ++------+------+------+ + +############################## +## PART 2 insert into +############################## +explain basic insert into t1 with cte as (select * from t1) SELECT * FROM cte; +Query Plan +======================== +|ID|OPERATOR |NAME | +------------------------ +|0 |INSERT | | +|1 | SUBPLAN SCAN|VIEW1| +|2 | TABLE SCAN |t1 | +======================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.c1)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c2)], [column_conv(INT,PS:(11,0),NULL,VIEW1.c3)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]), partitions(p0) + 1 - output([VIEW1.c1], [VIEW1.c2], [VIEW1.c3]), filter(nil), + access([VIEW1.c1], [VIEW1.c2], [VIEW1.c3]) + 2 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +insert into t1 with cte as (select * from t1) SELECT * FROM cte; + +explain basic insert into t1 with cte (a,b,c) as (select c21,c22,c23 from t2) select a,b,a from cte; +Query Plan +======================== +|ID|OPERATOR |NAME | +------------------------ +|0 |INSERT | | +|1 | SUBPLAN SCAN|VIEW1| +|2 | TABLE SCAN |t2 | +======================== + +Outputs & filters: +------------------------------------- + 0 - output([column_conv(BIGINT UNSIGNED,PS:(-1,-1),NOT NULL,nextval(1))], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)], [column_conv(INT,PS:(11,0),NULL,VIEW1.b)], [column_conv(INT,PS:(11,0),NULL,VIEW1.a)]), filter(nil), + columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]), partitions(p0) + 1 - output([VIEW1.a], [VIEW1.b], [VIEW1.a]), filter(nil), + access([VIEW1.a], [VIEW1.b], [VIEW1.a]) + 2 - output([t2.c21], [t2.c22], [t2.c21]), filter(nil), + access([t2.c21], [t2.c22]), partitions(p0) + +insert into t1 with cte (a,b,c) as (select c21,c22,c23 from t2) select a,b,a from cte; +select * from t1; ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ +| 1 | 2 | 3 | +| 4 | 5 | 6 | +| 7 | 8 | 9 | +| 10 | 11 | 12 | +| 13 | 14 | 15 | +| 16 | 17 | 18 | +| 19 | 20 | 21 | +| 1 | 2 | 3 | +| 4 | 5 | 6 | +| 7 | 8 | 9 | +| 10 | 11 | 12 | +| 13 | 14 | 15 | +| 16 | 17 | 18 | +| 19 | 20 | 21 | +| 1 | 2 | 1 | +| 4 | 5 | 4 | +| 7 | 8 | 7 | +| 10 | 11 | 10 | +| 13 | 14 | 13 | +| 16 | 17 | 16 | +| 19 | 20 | 19 | ++------+------+------+ + +############################## +## PART 3 update select +############################## +explain basic update t1 set c1=(with cte as (select count(*)+99 from t2 where c21=1) select * from cte) where c2 = 2; +Query Plan +=========================================== +|ID|OPERATOR |NAME| +------------------------------------------- +|0 |UPDATE | | +|1 | NESTED-LOOP OUTER JOIN CARTESIAN| | +|2 | TABLE SCAN |t1 | +|3 | MATERIAL | | +|4 | SUBPLAN SCAN |cte | +|5 | SCALAR GROUP BY | | +|6 | TABLE SCAN |t2 | +=========================================== + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]), + update([t1.c1=column_conv(INT,PS:(11,0),NULL,cast(cte.count(*)+99, INT(-1, 0)))]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3], [column_conv(INT,PS:(11,0),NULL,cast(cte.count(*)+99, INT(-1, 0)))]), filter(nil), + conds(nil), nl_params_(nil) + 2 - output([t1.c1], [t1.__pk_increment], [t1.c2], [t1.c3]), filter([t1.c2 = 2]), + access([t1.c1], [t1.__pk_increment], [t1.c2], [t1.c3]), partitions(p0) + 3 - output([cte.count(*)+99]), filter(nil) + 4 - output([cte.count(*)+99]), filter(nil), + access([cte.count(*)+99]) + 5 - output([T_FUN_COUNT(*) + 99]), filter(nil), + group(nil), agg_func([T_FUN_COUNT(*)]) + 6 - output([1]), filter([t2.c21 = 1]), + access([t2.c21]), partitions(p0) + +update t1 set c1=(with cte as (select count(*)+99 from t2 where c21=1) select * from cte) where c2 = 2; +select * from t1; ++------+------+------+ +| c1 | c2 | c3 | ++------+------+------+ +| 100 | 2 | 3 | +| 4 | 5 | 6 | +| 7 | 8 | 9 | +| 10 | 11 | 12 | +| 13 | 14 | 15 | +| 16 | 17 | 18 | +| 19 | 20 | 21 | +| 100 | 2 | 3 | +| 4 | 5 | 6 | +| 7 | 8 | 9 | +| 10 | 11 | 12 | +| 13 | 14 | 15 | +| 16 | 17 | 18 | +| 19 | 20 | 21 | +| 100 | 2 | 1 | +| 4 | 5 | 4 | +| 7 | 8 | 7 | +| 10 | 11 | 10 | +| 13 | 14 | 13 | +| 16 | 17 | 16 | +| 19 | 20 | 19 | ++------+------+------+ + +############################## +## PART 4 select when +############################## +explain basic with cte as (select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from t1 group by c1 order by c1) select * from cte; +Query Plan +======================== +|ID|OPERATOR |NAME| +------------------------ +|0 |MERGE GROUP BY| | +|1 | SORT | | +|2 | TABLE SCAN |t1 | +======================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_MAX(t1.c2)], [CASE WHEN T_FUN_MAX(t1.c2) = 4 THEN 4 WHEN T_FUN_MAX(t1.c2) = 43 THEN 43 ELSE 1 END]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +with cte as (select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from t1 group by c1 order by c1) select * from cte; ++------+---------+-------------------------------------------------------+ +| c1 | max(c2) | CASE max(c2) when 4 then 4 when 43 then 43 else 1 end | ++------+---------+-------------------------------------------------------+ +| 4 | 5 | 1 | +| 7 | 8 | 1 | +| 10 | 11 | 1 | +| 13 | 14 | 1 | +| 16 | 17 | 1 | +| 19 | 20 | 1 | +| 100 | 2 | 1 | ++------+---------+-------------------------------------------------------+ + +explain basic with cte(c1, c2) as (select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c21) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; +Query Plan +======================== +|ID|OPERATOR |NAME| +------------------------ +|0 |MERGE GROUP BY| | +|1 | SORT | | +|2 | HASH JOIN | | +|3 | TABLE SCAN |t2 | +|4 | TABLE SCAN |t1 | +======================== + +Outputs & filters: +------------------------------------- + 0 - output([t1.c1], [T_FUN_MAX(t1.c2)], [CASE WHEN T_FUN_MAX(t1.c2) = 4 THEN 4 WHEN T_FUN_MAX(t1.c2) = 43 THEN 43 ELSE 1 END]), filter(nil), + group([t1.c1]), agg_func([T_FUN_MAX(t1.c2)]) + 1 - output([t1.c1], [t1.c2]), filter(nil), sort_keys([t1.c1, ASC]) + 2 - output([t1.c1], [t1.c2]), filter(nil), + equal_conds([t1.c1 = t2.c21]), other_conds(nil) + 3 - output([t2.c21]), filter(nil), + access([t2.c21]), partitions(p0) + 4 - output([t1.c1], [t1.c2]), filter(nil), + access([t1.c1], [t1.c2]), partitions(p0) + +with cte(c1, c2) as (select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c21) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; ++------+---------+-------------------------------------------------------+ +| c1 | max(c2) | CASE max(c2) when 4 then 4 when 43 then 43 else 1 end | ++------+---------+-------------------------------------------------------+ +| 4 | 5 | 1 | +| 7 | 8 | 1 | +| 10 | 11 | 1 | +| 13 | 14 | 1 | +| 16 | 17 | 1 | +| 19 | 20 | 1 | ++------+---------+-------------------------------------------------------+ + +############################## +## PART 5 delete from +############################## +explain basic delete from t1 where c1 = ( with cte as (select max( c1 ) from ( select * from t1 )) select * from cte); +Query Plan +============================ +|ID|OPERATOR |NAME| +---------------------------- +|0 |DELETE | | +|1 | NESTED-LOOP JOIN | | +|2 | SUBPLAN SCAN |cte | +|3 | SCALAR GROUP BY| | +|4 | TABLE SCAN |t1 | +|5 | TABLE SCAN |t1 | +============================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), + conds([t1.c1 = cte.max( c1 )]), nl_params_(nil) + 2 - output([cte.max( c1 )]), filter(nil), + access([cte.max( c1 )]) + 3 - output([T_FUN_MAX(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(t1.c1)]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +delete from t1 where c1 = ( with cte as (select max( c1 ) from ( select * from t1 )) select * from cte); + +explain basic delete from t1 where c1 = ( with cte (a) as (select max( c1 ) from t1 ) select * from cte); +Query Plan +============================ +|ID|OPERATOR |NAME| +---------------------------- +|0 |DELETE | | +|1 | NESTED-LOOP JOIN | | +|2 | SUBPLAN SCAN |cte | +|3 | SCALAR GROUP BY| | +|4 | TABLE SCAN |t1 | +|5 | TABLE SCAN |t1 | +============================ + +Outputs & filters: +------------------------------------- + 0 - output(nil), filter(nil), table_columns([{t1: ({t1: (t1.__pk_increment, t1.c1, t1.c2, t1.c3)})}]) + 1 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), + conds([t1.c1 = cte.a]), nl_params_(nil) + 2 - output([cte.a]), filter(nil), + access([cte.a]) + 3 - output([T_FUN_MAX(t1.c1)]), filter(nil), + group(nil), agg_func([T_FUN_MAX(t1.c1)]) + 4 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 5 - output([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), filter(nil), + access([t1.__pk_increment], [t1.c1], [t1.c2], [t1.c3]), partitions(p0) + +delete from t1 where c1 = ( with cte (a) as (select max( c1 ) from t1 ) select * from cte); + +############################## +## other +############################## +with cte as (select * from t1) select 1 from dual; ++---+ +| 1 | ++---+ +| 1 | ++---+ + +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/cte_errno_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_errno_mysql.result similarity index 56% rename from test/mysql_test/test_suite/with_clause/r/mysql/cte_errno_mysql.result rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_errno_mysql.result index 15cf91b10..bf3b0261f 100644 --- a/test/mysql_test/test_suite/with_clause/r/mysql/cte_errno_mysql.result +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_errno_mysql.result @@ -1,14 +1,18 @@ +drop database if exists cte_st; +create database cte_st; +use cte_st; +result_format: 4 with cte(a,b) as (select 1 from dual) select * from cte; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list +ERROR HY000: number of WITH clause column names does not match number of elements in select list with cte(a,b) as (with cte2(a,b) as (select 1,1 from dual) select a,b from cte) select * from cte; -ERROR 5742 (HY000): recursive WITH clause must use a UNION ALL operation +ERROR 42S02: Table doesn't exist with cte(a,a) as (select 1 from dual) select * from cte; -ERROR 5751 (HY000): duplicate name found in column alias list for WITH clause +ERROR HY000: duplicate name found in column alias list for WITH clause with cte as (select 1,1 from dual union all select a+1,b+1 from cte where cte.a < 10) select * from cte; -ERROR 1054 (42S22): Unknown column 'cte.a' in 'where clause' +ERROR 42S02: Table doesn't exist # MySQL不支持search depth关键字 with cte(a,b,c) as @@ -17,11 +21,11 @@ select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where cte.c < 10 ) search depth first by d set pcol select * from cte; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'search depth first by d set pcol select * from cte' at line 6 +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'search depth first by d set pcol select * from cte' at line 6 # MySQL不支持cycle关键字 with cte(n, x) as (select /*+ materialize */ 1,2 from dual) cycle n,n set iscyc to 'aaaaay' default 'n' select * from cte; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'cycle n,n set iscyc to 'aaaaay' default 'n' select * from cte' at line 1 +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'cycle n,n set iscyc to 'aaaaay' default 'n' select * from cte' at line 1 with cte(a,b,c) as ( @@ -29,7 +33,7 @@ select 1,2,3 from dual union select a+1,b+1,c+1 from cte, cte b where cte.c < 10 and b.c = cte.c ) select * from cte; -ERROR 5742 (HY000): recursive WITH clause must use a UNION ALL operation +ERROR 42S02: Table doesn't exist with cte(a,b,c) as ( @@ -39,34 +43,38 @@ select 1,2,3 from dual union all select a+1,b+1,c+1 from cte, cte b where cte.c < 10 and b.c = cte.c ) select * from cte; -ERROR 5762 (HY000): recursive query name referenced more than once in recursive branch of recursive WITH clause element +ERROR 42S02: Table doesn't exist with t1 as (select c1 from t1) select * from t1; -ERROR 5741 (HY000): recursive WITH clause must have column alias list +ERROR 42S02: Table doesn't exist ## success with cte1(a,b) as (select 'a','b' from dual), cte2 as (select * from cte1 where b > 'c'), cte3 as (select * from cte2 where a > 1 union select * from cte2 where a > 1) select * from cte3; -Empty set ++---+---+ +| a | b | ++---+---+ ++---+---+ with cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list +ERROR 42S02: Table doesn't exist with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; -ERROR 5743 (HY000): UNION ALL operation in recursive WITH clause must have only two branches +ERROR 42S02: Table doesn't exist with cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; -ERROR 5758 (HY000): unsupported operation in recursive branch of recursive WITH clause +ERROR 42S02: Table doesn't exist with cte(n) AS ( select 1 from dual UNION ALL select (select 1 from dual) from cte where cte.n < 2) select * from cte; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query +ERROR 42S02: Table doesn't exist +create table t1(c1 int, c2 int, c3 int); with cte (c1, c2, c3) as ( select * from ( select c1, c2, c3 from t1 union select c1, c2, c3 from t1) where c1 = 1 union all select * from t1 join cte c on t1.c1 = c.c1 where c.c1 < 10 ) select * from cte; -ERROR 1222 (21000): The used SELECT statements have a different number of columns +ERROR 42S02: Table doesn't exist with cte(n) AS ( select 1 from cte) select * from cte; -ERROR 5742 (HY000): recursive WITH clause must use a UNION ALL operation +ERROR 42S02: Table doesn't exist with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 order by n ) select * from cte; -ERROR 1054 (42S22): Unknown column 'n' in 'order clause' - +ERROR 42S02: Table doesn't exist +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/cte_mysql_official.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_mysql_official.result similarity index 97% rename from test/mysql_test/test_suite/with_clause/r/mysql/cte_mysql_official.result rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_mysql_official.result index 14664125c..4a4419334 100644 --- a/test/mysql_test/test_suite/with_clause/r/mysql/cte_mysql_official.result +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_mysql_official.result @@ -1,3 +1,7 @@ +drop database if exists cte_st; +create database cte_st; +use cte_st; +result_format: 4 WITH RECURSIVE cte (n) AS ( SELECT 1 @@ -167,7 +171,6 @@ ORDER BY dates.date; ################################################################################################ ### PART 1 SQL syntax ################################################################################################ - WITH cte1(txt) AS (SELECT "This "), cte2(txt) AS (SELECT CONCAT(cte1.txt,"is a ") FROM cte1), cte3(txt) AS (SELECT "nice query" UNION @@ -250,7 +253,7 @@ SELECT * FROM numbers; | 6 | +------+ -DELETE FROM numbers +DELETE FROM numbers WHERE numbers.n > ( WITH RECURSIVE my_cte(n) AS @@ -363,8 +366,6 @@ SELECT * FROM category ORDER BY category_id; | 10 | 2 WAY RADIOS | 6 | +-------------+----------------------+--------+ -#Retrieving a Full Tree - WITH RECURSIVE cte AS ( # seed SELECT @@ -437,8 +438,6 @@ SELECT * FROM cte ORDER BY path; | 9 | CD PLAYERS | 1,6,9 | +-------------+----------------------+---------+ -#Finding all the leaf nodes - SELECT category_id, name FROM category WHERE category_id NOT IN # IDs of all parents: @@ -454,8 +453,6 @@ WHERE category_id NOT IN | 10 | 2 WAY RADIOS | +-------------+--------------+ -#Retrieving a Single Path - WITH RECURSIVE cte AS ( SELECT name, parent FROM category WHERE name='FLASH' @@ -490,8 +487,6 @@ SELECT * FROM cte ORDER BY depth; | FLASH | 7 | 0 | +----------------------+--------+-------+ -#Finding the Depth of the Nodes - WITH RECURSIVE cte AS ( SELECT category_id, CAST(name AS CHAR(200)) AS name, @@ -522,8 +517,6 @@ SELECT * FROM cte ORDER BY path; | 9 | CD PLAYERS | 1,6,9 | 2 | +-------------+-----------------------+---------+-------+ -#Depth of a sub-tree - WITH RECURSIVE cte AS ( SELECT category_id, name, @@ -549,15 +542,13 @@ SELECT * FROM cte ORDER BY path; | 9 | CD PLAYERS | 6,9 | 1 | +-------------+----------------------+-------+-------+ -#Find the immediate subordinates of a node - WITH RECURSIVE cte AS ( SELECT category_id, name, 0 as depth FROM category WHERE name='PORTABLE ELECTRONICS' UNION ALL SELECT c.category_id, c.name, cte.depth+1 - FROM category c JOIN cte + FROM category c JOIN cte ON cte.category_id=c.parent WHERE cte.depth=0 ) @@ -571,8 +562,6 @@ SELECT * FROM cte; | 7 | MP3 PLAYERS | 1 | +-------------+----------------------+-------+ -#Aggregate functions in a nested set - CREATE TABLE product( category_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, @@ -583,7 +572,6 @@ INSERT INTO product VALUES(1,'ELECTRONICS',NULL),(2,'TELEVISIONS',1),(3,'TUBE',2 (4,'LCD',2),(5,'PLASMA',2),(6,'PORTABLE ELECTRONICS',1),(7,'MP3 PLAYERS',6),(8,'FLASH',7), (9,'CD PLAYERS',6),(10,'2 WAY RADIOS',6); - WITH RECURSIVE cte AS ( SELECT c.category_id, c.name AS cat_name, c.parent, p.name AS prod_name @@ -609,13 +597,9 @@ GROUP BY cat_name; | 2 WAY RADIOS | 1 | +----------------------+-------------+ - ################################################################################################ ### PART 4 depth-first or breadth-first traversal, transitive closure, cycle avoidance ################################################################################################ - -#Depth-first or breadth-first - CREATE TABLE tree (person CHAR(20), parent CHAR(20)); INSERT INTO tree VALUES ('Robert I', NULL), @@ -700,8 +684,6 @@ SELECT * FROM descendants ORDER BY path; | Robert III | Thurimbert,Robert II,Robert III | +-------------+---------------------------------+ -#Computing transitive closures with simple cycle avoidance - CREATE TABLE rockets (origin CHAR(20), destination CHAR(20), trip_time INT); INSERT INTO rockets VALUES @@ -713,7 +695,7 @@ WITH RECURSIVE all_destinations AS ( SELECT destination AS planet FROM rockets -WHERE origin='Earth' +WHERE origin='Earth' UNION ALL SELECT r.destination FROM rockets r, all_destinations d @@ -734,23 +716,21 @@ WITH RECURSIVE all_destinations AS ( SELECT destination AS planet FROM rockets -WHERE origin='Earth' +WHERE origin='Earth' UNION ALL SELECT r.destination FROM rockets r, all_destinations d WHERE r.origin=d.planet ) SELECT * FROM all_destinations; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query - -#More complex cycle avoidance +ERROR HY000: cycle detected while executing recursive WITH query WITH RECURSIVE all_destinations AS ( SELECT destination AS planet, trip_time AS total_time, CAST(destination AS CHAR(500)) AS path FROM rockets -WHERE origin='Earth' +WHERE origin='Earth' UNION ALL SELECT r.destination, d.total_time+r.trip_time, CONCAT(d.path, ',', r.destination) @@ -759,7 +739,6 @@ WHERE r.origin=d.planet AND FIND_IN_SET(r.destination, d.path)=0 ) SELECT * FROM all_destinations; - +---------+------------+---------------------------+ | planet | total_time | path | +---------+------------+---------------------------+ @@ -774,7 +753,7 @@ WITH RECURSIVE all_destinations AS SELECT destination AS planet, trip_time AS total_time, CAST(destination AS CHAR(500)) AS path, 0 AS is_cycle FROM rockets -WHERE origin='Earth' +WHERE origin='Earth' UNION ALL SELECT r.destination, d.total_time+r.trip_time, CONCAT(d.path, ',', r.destination), @@ -794,3 +773,4 @@ SELECT * FROM all_destinations; | Mars | 20 | Mars,Jupiter,Saturn,Earth,Mars | 1 | +---------+------------+--------------------------------+----------+ +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/cte_without_explain_2_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_without_explain_2_mysql.result similarity index 87% rename from test/mysql_test/test_suite/with_clause/r/mysql/cte_without_explain_2_mysql.result rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_without_explain_2_mysql.result index e1196774a..7d7749716 100644 --- a/test/mysql_test/test_suite/with_clause/r/mysql/cte_without_explain_2_mysql.result +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_without_explain_2_mysql.result @@ -1,4 +1,12 @@ -drop table EMP; +# owner group: sql2 +# tags: optimizer +result_format: 4 +drop table if exists EMP; +drop table if exists emp1; +drop database if exists cte_st; +create database cte_st; +use cte_st; + create table EMP ( EMPno number, ENAME VARCHAR(30), @@ -25,7 +33,6 @@ INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-12-03' INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-12-03','%Y-%m-%d'), 3000, NULL, 20) ; INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-01-23','%Y-%m-%d'), 1300,NULL, 10) ; -drop table emp1; CREATE TABLE emp1 ( empno VARCHAR(4000) NOT NULL, ename VARCHAR(14), @@ -68,13 +75,11 @@ INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01' INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); -result_format: 4 ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: Nested Loop Join +## - recursive with RECURSIVE Query: Nested Loop Join ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -90,27 +95,26 @@ FROM rw; | ename | empno | mgr | +--------+-------+------+ | KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | | JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | | SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | | ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | +--------+-------+------+ ## ======================================================================= ## Test Case 2: -## - recursive WITH Query: SORT MERGE Join +## - recursive with RECURSIVE Query: SORT MERGE Join ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -126,27 +130,26 @@ FROM rw; | ename | empno | mgr | +--------+-------+------+ | KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | | JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | | SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | | ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | +--------+-------+------+ ## ======================================================================= ## Test Case 3: -## - recursive WITH Query: Hash Join +## - recursive with RECURSIVE Query: Hash Join ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -179,10 +182,9 @@ FROM rw; ## ======================================================================= ## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch +## - recursive with RECURSIVE Query: Join in Initialisation Branch ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM emp e, emp d @@ -197,72 +199,71 @@ FROM rw; +--------+-------+------+ | ename | empno | mgr | +--------+-------+------+ -| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | | ALLEN | 7499 | 7698 | -| WARD | 7521 | 7698 | -| WARD | 7521 | 7698 | -| JONES | 7566 | 7839 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | +| ALLEN | 7499 | 7698 | +| ALLEN | 7499 | 7698 | +| BLAKE | 7698 | 7839 | | BLAKE | 7698 | 7839 | | CLARK | 7782 | 7839 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | +| CLARK | 7782 | 7839 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| JAMES | 7900 | 7698 | +| JAMES | 7900 | 7698 | +| JAMES | 7900 | 7698 | +| JONES | 7566 | 7839 | +| JONES | 7566 | 7839 | | KING | 7839 | NULL | -| TURNER | 7844 | 7698 | -| ADAMS | 7876 | 7788 | -| JAMES | 7900 | 7698 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | | MILLER | 7934 | 7782 | -| WARD | 7521 | 7698 | -| SMITH | 7369 | 7902 | -| SMITH | 7369 | 7902 | -| JONES | 7566 | 7839 | -| BLAKE | 7698 | 7839 | -| CLARK | 7782 | 7839 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | | MILLER | 7934 | 7782 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | -| WARD | 7521 | 7698 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| TURNER | 7844 | 7698 | -| JAMES | 7900 | 7698 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| FORD | 7902 | 7566 | -| SCOTT | 7788 | 7566 | -| SCOTT | 7788 | 7566 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | | MILLER | 7934 | 7782 | -| SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | | SMITH | 7369 | 7902 | | SMITH | 7369 | 7902 | | SMITH | 7369 | 7902 | -| ADAMS | 7876 | 7788 | -| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| TURNER | 7844 | 7698 | +| TURNER | 7844 | 7698 | +| TURNER | 7844 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +--------+-------+------+ ## ======================================================================= ## Test Case 6: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on build side and fits in memory ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -295,11 +296,10 @@ FROM rw; ## ======================================================================= ## Test Case 7: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on probe side and fits in memory ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -333,11 +333,10 @@ FROM rw; ## ======================================================================= ## 测试8-15都是在测试join的顺序或者hint的顺序 ## Test Case 8: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp >< emp1 ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -367,11 +366,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 9: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< pump >< emp1 ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -401,11 +399,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 10: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< emp1 >< pump ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -435,11 +432,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 11: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< emp >< pump ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -469,11 +465,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 12: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -489,28 +484,27 @@ FROM rw; | ename | empno | mgr | +--------+-------+------+ | KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | | JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | | SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | | ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | +--------+-------+------+ ## ======================================================================= ## Test Case 13: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< pump ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -543,11 +537,10 @@ FROM rw; ## ======================================================================= ## Test Case 14: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< pump >< emp ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -577,11 +570,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 15: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp1 >< emp ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -611,10 +603,9 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter +## - recursive with RECURSIVE Query: Join Skew handling. No local filter ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -647,10 +638,9 @@ FROM rw; ## ======================================================================= ## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -693,7 +683,7 @@ CREATE TABLE tenk1 ( string4 VARCHAR(50) ); -WITH q1(x,y) AS (SELECT 1,2 FROM DUAL) +with RECURSIVE q1(x,y) AS (SELECT 1,2 FROM DUAL) SELECT * FROM q1, q1 q2; +---+---+---+---+ | x | y | x | y | @@ -702,7 +692,7 @@ SELECT * FROM q1, q1 q2; +---+---+---+---+ SELECT count(*) FROM ( - WITH q1(x) AS (SELECT 1 FROM dual) + with RECURSIVE q1(x) AS (SELECT 1 FROM dual) SELECT * FROM q1 UNION SELECT * FROM q1 @@ -728,7 +718,7 @@ INSERT INTO department VALUES (5, 0, 'E'); INSERT INTO department VALUES (6, 4, 'F'); INSERT INTO department VALUES (7, 5, 'G'); -WITH subdepartment(lev, id, parent_department, name) AS +with RECURSIVE subdepartment(lev, id, parent_department, name) AS ( SELECT 1, a.* FROM department a WHERE name = 'A' UNION ALL @@ -745,7 +735,7 @@ SELECT * FROM subdepartment ORDER BY name; | 4 | 6 | 4 | F | +------+----+-------------------+------+ -WITH subdepartment(lev, id, parent_department, name) AS +with RECURSIVE subdepartment(lev, id, parent_department, name) AS ( SELECT 1, a.* FROM department a WHERE name = 'A' UNION ALL @@ -761,7 +751,7 @@ SELECT * FROM subdepartment WHERE lev >= 2 ORDER BY name; | 4 | 6 | 4 | F | +------+----+-------------------+------+ -WITH subdepartment AS +with RECURSIVE subdepartment AS ( SELECT * FROM department WHERE name = 'A' ) @@ -773,12 +763,12 @@ SELECT * FROM subdepartment ORDER BY name; +----+-------------------+------+ SELECT count(*) FROM ( - WITH t(n) AS ( + with RECURSIVE t(n) AS ( SELECT 1 FROM DUAL UNION ALL SELECT n + 1 FROM t WHERE n < 500 ) SELECT * FROM t) t WHERE n < ( SELECT count(*) FROM ( - WITH t(n) AS ( + with RECURSIVE t(n) AS ( SELECT 1 FROM DUAL UNION ALL SELECT n + 1 FROM t WHERE n < 100 ) SELECT * FROM t WHERE n < 50000 @@ -789,7 +779,7 @@ SELECT count(*) FROM ( | 98 | +----------+ -WITH q1(x,y) AS ( +with RECURSIVE q1(x,y) AS ( SELECT hundred, sum(ten) FROM tenk1 GROUP BY hundred ) SELECT count(*) FROM q1 WHERE y > (SELECT sum(y)/100 FROM q1 qsub); @@ -799,7 +789,7 @@ SELECT count(*) FROM q1 WHERE y > (SELECT sum(y)/100 FROM q1 qsub); | 0 | +----------+ -WITH t(i,j) AS ( +with RECURSIVE t(i,j) AS ( select 1, 1 from dual UNION ALL SELECT t2.i, t.j+1 FROM (SELECT 2 AS i FROM DUAL UNION ALL SELECT 3 AS i FROM DUAL) t2 JOIN t ON (t2.i = t.i+1)) @@ -827,7 +817,7 @@ insert into graph values insert into graph values (5, 1, 'arc 5 -> 1'); -WITH +with RECURSIVE y (id) AS (select 1 from dual), x (id) AS (SELECT * FROM y UNION ALL SELECT id+1 FROM x WHERE id < 5) SELECT * FROM x; @@ -841,7 +831,7 @@ SELECT * FROM x; | 5 | +------+ -WITH +with RECURSIVE x(id) AS (select 1 from dual UNION ALL SELECT id+1 FROM x WHERE id < 5), y(id) AS @@ -862,7 +852,7 @@ WITH | 7 | NULL | +------+------+ -WITH +with RECURSIVE x(id) AS (select 1 from dual UNION ALL SELECT id+1 FROM x WHERE id < 5), y(id) AS @@ -879,7 +869,7 @@ WITH | 6 | NULL | +------+------+ -WITH +with RECURSIVE x(id) AS (SELECT 1 FROM DUAL UNION ALL SELECT id+1 FROM x WHERE id < 3 ), y(id) AS @@ -888,46 +878,6 @@ WITH (SELECT * FROM x UNION ALL SELECT id+1 FROM z WHERE id < 10) SELECT * FROM z; +------+ -| ID | -+------+ -| 1 | -| 2 | -| 2 | -| 3 | -| 3 | -| 3 | -| 4 | -| 4 | -| 4 | -| 5 | -| 5 | -| 5 | -| 6 | -| 6 | -| 6 | -| 7 | -| 7 | -| 7 | -| 8 | -| 8 | -| 8 | -| 9 | -| 9 | -| 9 | -| 10 | -| 10 | -| 10 | -+------+ - -WITH - x(id) AS - (SELECT 1 FROM DUAL UNION ALL SELECT id+1 FROM x WHERE id < 3 ), - y(id) AS - (SELECT * FROM x UNION ALL SELECT * FROM x), - z(id) AS - (SELECT * FROM y UNION ALL SELECT id+1 FROM z WHERE id < 10) - SELECT * FROM z; -+------+ | id | +------+ | 1 | @@ -959,6 +909,73 @@ WITH | 10 | +------+ +with RECURSIVE + x(id) AS + (SELECT 1 FROM DUAL UNION ALL SELECT id+1 FROM x WHERE id < 3 ), + y(id) AS + (SELECT * FROM x UNION ALL SELECT * FROM x), + z(id) AS + (SELECT * FROM y UNION ALL SELECT id+1 FROM z WHERE id < 10) + SELECT * FROM z; ++------+ +| id | ++------+ +| 1 | +| 2 | +| 3 | +| 1 | +| 2 | +| 3 | +| 2 | +| 3 | +| 4 | +| 2 | +| 3 | +| 4 | +| 3 | +| 4 | +| 5 | +| 3 | +| 4 | +| 5 | +| 4 | +| 5 | +| 6 | +| 4 | +| 5 | +| 6 | +| 5 | +| 6 | +| 7 | +| 5 | +| 6 | +| 7 | +| 6 | +| 7 | +| 8 | +| 6 | +| 7 | +| 8 | +| 7 | +| 8 | +| 9 | +| 7 | +| 8 | +| 9 | +| 8 | +| 9 | +| 10 | +| 8 | +| 9 | +| 10 | +| 9 | +| 10 | +| 9 | +| 10 | +| 10 | +| 10 | ++------+ + CREATE TABLE y (a INTEGER); insert into y values(1); insert into y values(2); @@ -971,7 +988,7 @@ insert into y values(8); insert into y values(9); insert into y values(10); -WITH x(n) AS (SELECT a FROM y WHERE a = 1 +with RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM x LEFT JOIN y ON x.n = y.a WHERE n < 10) SELECT * FROM x; @@ -990,7 +1007,7 @@ SELECT * FROM x; | 10 | +------+ -WITH x(n) AS (SELECT a FROM y WHERE a = 1 +with RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM y RIGHT JOIN x ON x.n = y.a WHERE n < 10) SELECT * FROM x; @@ -1009,15 +1026,15 @@ SELECT * FROM x; | 10 | +------+ -WITH x(n) AS (SELECT 1 from dual UNION ALL SELECT count(*) FROM x) +with RECURSIVE x(n) AS (SELECT 1 from dual UNION ALL SELECT count(*) FROM x) SELECT * FROM x; -ERROR 5758 (HY000): unsupported operation in recursive branch of recursive WITH clause +ERROR HY000: unsupported operation in recursive branch of recursive WITH clause -WITH x(n) AS (SELECT 1 from dual UNION ALL SELECT sum(n) FROM x) +with RECURSIVE x(n) AS (SELECT 1 from dual UNION ALL SELECT sum(n) FROM x) SELECT * FROM x; -ERROR 5758 (HY000): unsupported operation in recursive branch of recursive WITH clause +ERROR HY000: unsupported operation in recursive branch of recursive WITH clause -WITH x(n) AS (SELECT 1 from dual UNION ALL SELECT n+1 FROM x where n < 10 ORDER BY 1 ) SELECT * FROM x; +with RECURSIVE x(n) AS (SELECT 1 from dual UNION ALL SELECT n+1 FROM x where n < 10 ORDER BY 1 ) SELECT * FROM x; +------+ | n | +------+ @@ -1032,7 +1049,7 @@ WITH x(n) AS (SELECT 1 from dual UNION ALL SELECT n+1 FROM x where n < 10 ORDER | 9 | | 10 | +------+ -WITH x(n) AS (SELECT 1 FROM DUAL UNION ALL SELECT n+1 FROM x where n < 10 FOR UPDATE) +with RECURSIVE x(n) AS (SELECT 1 FROM DUAL UNION ALL SELECT n+1 FROM x where n < 10 FOR UPDATE) SELECT * FROM x; +------+ | n | @@ -1050,21 +1067,25 @@ WITH x(n) AS (SELECT 1 FROM DUAL UNION ALL SELECT n+1 FROM x where n < 10 FOR UP +------+ CREATE TABLE x (n integer); -with cte(foo) as ( select 42 from dual) select * from ((select foo from cte)) q; +with RECURSIVE cte(foo) as ( select 42 from dual) select * from ((select foo from cte)) q; +-----+ | foo | +-----+ | 42 | +-----+ -select ( with cte(foo) as ( select 1 from dual ) +select ( with RECURSIVE cte(foo) as ( select 1 from dual ) select (select foo from cte) from dual) from tenk1; -Empty set ++------------------------------------------------------------------------------------------------------+ +| ( with RECURSIVE cte(foo) as ( select 1 from dual ) + select (select foo from cte) from dual) | ++------------------------------------------------------------------------------------------------------+ ++------------------------------------------------------------------------------------------------------+ -WITH outermost(x) AS ( +with RECURSIVE outermost(x) AS ( SELECT 1 FROM DUAL - UNION (WITH innermost as (SELECT 2 FROM DUAL) + UNION (with RECURSIVE innermost as (SELECT 2 FROM DUAL) SELECT * FROM innermost UNION SELECT 3 FROM DUAL) ) @@ -1077,11 +1098,13 @@ SELECT * FROM outermost ORDER BY 1; | 3 | +------+ -WITH outermost(x) AS ( +with RECURSIVE outermost(x) AS ( SELECT 1 FROM DUAL - UNION (WITH innermost as (SELECT 2 FROM DUAL) + UNION (with RECURSIVE innermost as (SELECT 2 FROM DUAL) SELECT * FROM outermost # fail UNION SELECT * FROM innermost) ) SELECT * FROM outermost ORDER BY 1; -ERROR 5741 (HY000): recursive WITH clause must have column alias list +ERROR HY000: recursive WITH clause must have column alias list + +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/cte_without_explain_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_without_explain_mysql.result similarity index 78% rename from test/mysql_test/test_suite/with_clause/r/mysql/cte_without_explain_mysql.result rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_without_explain_mysql.result index 3244c9b28..215940383 100644 --- a/test/mysql_test/test_suite/with_clause/r/mysql/cte_without_explain_mysql.result +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/cte_without_explain_mysql.result @@ -1,19 +1,21 @@ +# owner group: sql2 +# tags: optimizer +result_format: 4 +drop database if exists cte_st; +create database cte_st; +use cte_st; + create table t1(a int, b int, c int); insert into t1 values(null,null,null),(2,3,4); # two query names # duplicate query names -WITH qn AS (SELECT a FROM t1), qn as (select b from t1) +with RECURSIVE qn AS (SELECT a FROM t1), qn as (select b from t1) SELECT 1 FROM qn; -+---+ -| 1 | -+---+ -| 1 | -| 1 | -+---+ +ERROR 42000: Not unique table/alias: 'qn' # multiple refs -WITH qn AS (SELECT b as a FROM t1) +with RECURSIVE qn AS (SELECT b as a FROM t1) SELECT qn.a, qn2.a FROM qn, qn qn2; +------+------+ | a | a | @@ -24,7 +26,7 @@ SELECT qn.a, qn2.a FROM qn, qn qn2; | 3 | 3 | +------+------+ -WITH qn AS (SELECT b as a FROM t1), +with RECURSIVE qn AS (SELECT b as a FROM t1), qn2 AS (SELECT c FROM t1 WHERE a IS NULL or a>0) SELECT qn.a, qn2.c FROM qn, qn2; +------+------+ @@ -37,7 +39,7 @@ SELECT qn.a, qn2.c FROM qn, qn2; +------+------+ # qn2 ref qn: -WITH qn AS (SELECT 10*a as a FROM t1), +with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a FROM qn) SELECT * from qn2; +------+ @@ -47,8 +49,7 @@ SELECT * from qn2; | 60 | +------+ - -WITH qn AS (SELECT a FROM t1), qn2 AS (SELECT a FROM qn) +with RECURSIVE qn AS (SELECT a FROM t1), qn2 AS (SELECT a FROM qn) SELECT * from qn2; +------+ | a | @@ -57,8 +58,7 @@ SELECT * from qn2; | 2 | +------+ - -WITH qn AS (SELECT b as a FROM t1), +with RECURSIVE qn AS (SELECT b as a FROM t1), qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0) SELECT qn.a, qn2.a FROM qn, qn2; +------+------+ @@ -70,17 +70,16 @@ SELECT qn.a, qn2.a FROM qn, qn2; | 3 | 3 | +------+------+ -# forward ref (should error) -WITH qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0), +with RECURSIVE qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0), qn AS (SELECT b as a FROM t1) SELECT qn2.a FROM qn2; -ERROR 1146 (42S02): Table 'test.qn' does not exist +ERROR 42S02: Table 'cte_st.qn' doesn't exist # This is valid; it is to test moving boundaries. # When we resolve qn3, resolving qn1 moves the right bound to # qn0, but the bound is properly restored so that we can later # resolve qn2. -with qn0 as (select 1 from dual), qn1 as (select * from qn0), qn2 as (select 1 from dual), qn3 as (select 1 from qn1, qn2) select 1 from qn3; +with RECURSIVE qn0 as (select 1 from dual), qn1 as (select * from qn0), qn2 as (select 1 from dual), qn3 as (select 1 from qn1, qn2) select 1 from qn3; +---+ | 1 | +---+ @@ -88,33 +87,32 @@ with qn0 as (select 1 from dual), qn1 as (select * from qn0), qn2 as (select 1 f +---+ # No ref -with qn as (select 1 from dual) select 2 from dual; +with RECURSIVE qn as (select 1 from dual) select 2 from dual; +---+ | 2 | +---+ | 2 | +---+ -# circular ref -WITH qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0), +with RECURSIVE qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0), qn AS (SELECT b as a FROM qn2) SELECT qn.a FROM qn; -ERROR 1146 (42S02): Table 'test.qn' does not exist +ERROR 42S02: Table 'cte_st.qn' doesn't exist # recursive -WITH qn AS (SELECT a FROM qn) +with recursive qn AS (SELECT a FROM qn) SELECT qn.a FROM qn; -ERROR 5741 (HY000): recursive WITH clause must have column alias list +ERROR HY000: recursive WITH clause must use a UNION ALL operation -WITH qn1 AS (SELECT a FROM qn3), +with RECURSIVE qn1 AS (SELECT a FROM qn3), qn2 AS (SELECT a FROM qn1), qn3 AS (SELECT a FROM t1), qn4 AS (SELECT a FROM qn2) SELECT a FROM qn4; -ERROR 1146 (42S02): Table 'test.qn3' does not exist +ERROR 42S02: Table 'cte_st.qn3' doesn't exist # ref from subq -with qn as (select * from t1) select (select max(a) from qn) from dual; +with RECURSIVE qn as (select * from t1) select (select max(a) from qn) from dual; +-------------------------+ | (select max(a) from qn) | +-------------------------+ @@ -122,14 +120,21 @@ with qn as (select * from t1) select (select max(a) from qn) from dual; +-------------------------+ # QN defined in subq -SELECT (WITH qn AS (SELECT 10*a as a FROM t1), +SELECT (with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a AS b FROM qn) - SELECT * from qn2 where rownum <= 1) + SELECT * from qn2 limit 1) FROM t1; -NULL ++-------------------------------------------------------------------------------------------------------------------------------+ +| (with RECURSIVE qn AS (SELECT 10*a as a FROM t1), + qn2 AS (SELECT 3*a AS b FROM qn) + SELECT * from qn2 limit 1) | ++-------------------------------------------------------------------------------------------------------------------------------+ +| NULL | +| NULL | ++-------------------------------------------------------------------------------------------------------------------------------+ SELECT * -FROM (WITH qn AS (SELECT 10*a as a FROM t1), +FROM (with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a AS b FROM qn) SELECT * from qn2) dt; +------+ @@ -139,12 +144,11 @@ FROM (WITH qn AS (SELECT 10*a as a FROM t1), | 60 | +------+ -# WITH in WITH +# with RECURSIVE in with RECURSIVE # outer ref to a table, placed in a QN in a subq (later) - # QN defined in view CREATE VIEW v AS -WITH qn AS (SELECT 10*a as a FROM t1), +with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a AS b FROM qn) SELECT * from qn2; SELECT * FROM v; @@ -157,13 +161,15 @@ SELECT * FROM v; DROP VIEW v; # CREATE INSERT SELECT -drop table t2; CREATE TABLE t2 (c1 int); SELECT * FROM t2; -Empty set ++------+ +| c1 | ++------+ ++------+ INSERT INTO t2 -WITH qn AS (SELECT 10*a as a FROM t1), +with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a AS b FROM qn) SELECT * from qn2; SELECT * FROM t2; @@ -175,7 +181,6 @@ SELECT * FROM t2; +------+ DROP TABLE t2; - # when QN, when table. create table qn (a varchar(50)); @@ -188,14 +193,14 @@ select * from qn; | base | +------+ -with qn as (select 'with' from dual) select * from qn; -+------+ -| with | -+------+ -| with | -+------+ +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn; ++----------------+ +| with RECURSIVE | ++----------------+ +| with RECURSIVE | ++----------------+ -# In a non-recursive WITH, the scope of the QN doesnot extend to its +# In a non-recursive with RECURSIVE, the scope of the QN doesnot extend to its # subquery, so "qn" inside AS() is the base table. # View doesnot look out to external QNs create view v as select * from qn; @@ -207,14 +212,14 @@ select * from v; | base | +------+ -with qn as (select 'with' from dual) select * from v; +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from v; +------+ | a | +------+ | base | +------+ -with qn as (select * from v) select * from qn; +with RECURSIVE qn as (select * from v) select * from qn; +------+ | a | +------+ @@ -222,13 +227,13 @@ with qn as (select * from v) select * from qn; +------+ # Even if the base table is temporarily dropped -with qn as (select 'with' from dual) select * from v; +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from v; +------+ | a | +------+ | base | +------+ -with qn as (select * from v) select * from qn; +with RECURSIVE qn as (select * from v) select * from qn; +------+ | a | +------+ @@ -239,7 +244,7 @@ with qn as (select * from v) select * from qn; drop view v; # DT shadows QN: -with qn as (select 'with' from dual) select * from (select 'dt' from dual) qn; +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from (select 'dt' from dual) qn; +----+ | dt | +----+ @@ -247,83 +252,83 @@ with qn as (select 'with' from dual) select * from (select 'dt' from dual) qn; +----+ # QN of subq shadows outer QN -WITH qn AS (select 'outer' as a from dual) -SELECT (WITH qn AS (SELECT 'inner' as a from dual) SELECT a from qn), +with RECURSIVE qn AS (select 'outer' as a from dual) +SELECT (with RECURSIVE qn AS (SELECT 'inner' as a from dual) SELECT a from qn), qn.a FROM qn; -+---------------------------------------------------------------+-------+ -| (WITH qn AS (SELECT 'inner' as a from dual) SELECT a from qn) | a | -+---------------------------------------------------------------+-------+ -| inner | outer | -+---------------------------------------------------------------+-------+ ++-------------------------------------------------------------------------+-------+ +| (with RECURSIVE qn AS (SELECT 'inner' as a from dual) SELECT a from qn) | a | ++-------------------------------------------------------------------------+-------+ +| inner | outer | ++-------------------------------------------------------------------------+-------+ -# Qualified name is not allowed after WITH: -with test.qn as (select 'with') select * from test.qn; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '.qn as (select 'with') select * from test.qn' at line 1 +# Qualified name is not allowed after with RECURSIVE: +with RECURSIVE cte_st.qn as (select 'with RECURSIVE') select * from cte_st.qn; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '.qn as (select 'with RECURSIVE') select * from cte_st.qn' at line 1 # OTOH, db. prefix in FROM doesnot resolve to QN, which is good -with qn as (select 'with' from dual) select * from qn; -+------+ -| with | -+------+ -| with | -+------+ -with qn as (select 'with' as a from dual) select a from qn; -+------+ -| a | -+------+ -| with | -+------+ -with qn as (select 'with' as a from dual) select qn.a from qn; -+------+ -| a | -+------+ -| with | -+------+ +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn; ++----------------+ +| with RECURSIVE | ++----------------+ +| with RECURSIVE | ++----------------+ +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select a from qn; ++----------------+ +| a | ++----------------+ +| with RECURSIVE | ++----------------+ +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select qn.a from qn; ++----------------+ +| a | ++----------------+ +| with RECURSIVE | ++----------------+ -with qn as (select 'with' from dual) select * from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from cte_st.qn; +------+ | a | +------+ | base | +------+ -with qn as (select 'with' as a from dual) select a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select a from cte_st.qn; +------+ | a | +------+ | base | +------+ -with qn as (select 'with' as a from dual) select qn.a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select qn.a from cte_st.qn; +------+ | a | +------+ | base | +------+ -with qn as (select 'with' as a from dual) select test.qn.a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select cte_st.qn.a from cte_st.qn; +------+ | a | +------+ | base | +------+ -with qn as (select 'with' as a from dual) select a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select a from cte_st.qn; +------+ | a | +------+ | base | +------+ -with qn as (select 'with' as a from dual) select qn.a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select qn.a from cte_st.qn; +------+ | a | +------+ | base | +------+ -with qn as (select 'with' as a from dual) select test.qn.a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select cte_st.qn.a from cte_st.qn; +------+ | a | +------+ @@ -332,15 +337,15 @@ with qn as (select 'with' as a from dual) select test.qn.a from test.qn; drop table qn; -with qn as (select 'with' as a from dual) select a from test.qn; -ERROR 1146 (42S02): Table 'test.qn' does not exist -with qn as (select 'with' as a from dual) select qn.a from test.qn; -ERROR 1146 (42S02): Table 'test.qn' does not exist -with qn as (select 'with' as a from dual) select test.qn.a from test.qn; -ERROR 1146 (42S02): Table 'test.qn' does not exist +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select a from cte_st.qn; +ERROR 42S02: Table 'cte_st.qn' doesn't exist +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select qn.a from cte_st.qn; +ERROR 42S02: Table 'cte_st.qn' doesn't exist +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select cte_st.qn.a from cte_st.qn; +ERROR 42S02: Table 'cte_st.qn' doesn't exist # Unions -WITH qn AS (SELECT b as a FROM t1 UNION all SELECT b+5 FROM t1), +with RECURSIVE qn AS (SELECT b as a FROM t1 UNION all SELECT b+5 FROM t1), qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0) SELECT qn.a FROM qn UNION SELECT qn2.a FROM qn2 WHERE qn2.a>3; @@ -352,22 +357,22 @@ UNION SELECT qn2.a FROM qn2 WHERE qn2.a>3; | 8 | +------+ -# No double WITH -with qn as (select 'with' as a from dual) -with qn2 as (select 'with' as a from dual) -select a from test.qn; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'with qn2 as (select 'with' as a from dual) -select a from test.qn' at line 2 +# No double with RECURSIVE +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) +with RECURSIVE qn2 as (select 'with RECURSIVE' as a from dual) +select a from cte_st.qn; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'with RECURSIVE qn2 as (select 'with RECURSIVE' as a from dual) +select a from cte' at line 2 -# with comma -with qn as (select 'with' as a from dual), -with qn2 as (select 'with' as a from dual) -select a from test.qn; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'with qn2 as (select 'with' as a from dual) -select a from test.qn' at line 2 +# with RECURSIVE comma +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual), +with RECURSIVE qn2 as (select 'with RECURSIVE' as a from dual) +select a from cte_st.qn; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'with RECURSIVE qn2 as (select 'with RECURSIVE' as a from dual) +select a from cte' at line 2 # ORDER BY removed unless there is LIMIT or single table (check "Using filesort") -with qn as (select a from t1 order by 1) +with RECURSIVE qn as (select a from t1 order by 1) select a from qn; +------+ | a | @@ -376,7 +381,7 @@ select a from qn; | 2 | +------+ -with qn as (select a from t1 order by 1) +with RECURSIVE qn as (select a from t1 order by 1) select qn.a from qn, t1 t2; +------+ | a | @@ -387,9 +392,8 @@ select qn.a from qn, t1 t2; | 2 | +------+ - # Merge hint -with qn as (select a from t1), +with RECURSIVE qn as (select a from t1), qn2 as (select b from t1) select /*+ merge(qn) no_merge(qn2) */ qn.a,qn2.b from qn, qn2; +------+------+ @@ -401,7 +405,7 @@ select /*+ merge(qn) no_merge(qn2) */ qn.a,qn2.b from qn, qn2; | 2 | 3 | +------+------+ -with qn as (select a from t1) +with RECURSIVE qn as (select a from t1) select /*+ merge(qn) no_merge(qn2) */ qn2.a from qn, qn qn2; +------+ | a | @@ -413,7 +417,7 @@ select /*+ merge(qn) no_merge(qn2) */ qn2.a from qn, qn qn2; +------+ # FD detection -with qn as (select a, b from t1) +with RECURSIVE qn as (select a, b from t1) select b from qn group by a; +------+ | b | @@ -422,11 +426,14 @@ select b from qn group by a; | 3 | +------+ -with qn as (select a, b from t1 where a=b) +with RECURSIVE qn as (select a, b from t1 where a=b) select b from qn group by a; -Empty set ++------+ +| b | ++------+ ++------+ -with qn as (select a, sum(b) as s from t1 group by a) +with RECURSIVE qn as (select a, sum(b) as s from t1 group by a) select s from qn group by a; +------+ | s | @@ -436,9 +443,8 @@ select s from qn group by a; +------+ # CTEs work if used in SET -# CTE works with semijoin - -with cte as (select * from t1 t2) +# CTE works with RECURSIVE semijoin +with RECURSIVE cte as (select * from t1 t2) select * from t1 where t1.a in (select a+0 from cte); +------+------+------+ | a | b | c | @@ -448,13 +454,13 @@ select * from t1 where t1.a in (select a+0 from cte); # Column names # empty list -with qn () as (select 1) select * from qn, qn qn1; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ') as (select 1) select * from qn, qn qn1' at line 1 +with RECURSIVE qn () as (select 1) select * from qn, qn qn1; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ') as (select 1) select * from qn, qn qn1' at line 1 # Materialization -with qn (foo, bar) as (select 1 from dual) select * from qn, qn qn1; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list +with RECURSIVE qn (foo, bar) as (select 1 from dual) select * from qn, qn qn1; +ERROR HY000: number of WITH clause column names does not match number of elements in select list -with qn (foo, bar) as (select 1 as col, 2 as coll from dual union all +with RECURSIVE qn (foo, bar) as (select 1 as col, 2 as coll from dual union all select a,b from t1) select qn1.bar from qn qn1; +------+ | bar | @@ -464,11 +470,10 @@ with qn (foo, bar) as (select 1 as col, 2 as coll from dual union all | 3 | +------+ - # Merge -with qn (foo, bar) as (select 1 from t1) select * from qn, qn qn1; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list -with qn (foo, bar) as (select 1, 2 from t1) select * from qn, qn qn1; +with RECURSIVE qn (foo, bar) as (select 1 from t1) select * from qn, qn qn1; +ERROR HY000: number of WITH clause column names does not match number of elements in select list +with RECURSIVE qn (foo, bar) as (select 1, 2 from t1) select * from qn, qn qn1; +-----+-----+-----+-----+ | foo | bar | foo | bar | +-----+-----+-----+-----+ @@ -478,7 +483,7 @@ with qn (foo, bar) as (select 1, 2 from t1) select * from qn, qn qn1; | 1 | 2 | 1 | 2 | +-----+-----+-----+-----+ -with qn (foo, bar) as (select 1 as col, 2 as coll from t1) select * from qn, qn qn1; +with RECURSIVE qn (foo, bar) as (select 1 as col, 2 as coll from t1) select * from qn, qn qn1; +-----+-----+-----+-----+ | foo | bar | foo | bar | +-----+-----+-----+-----+ @@ -488,7 +493,7 @@ with qn (foo, bar) as (select 1 as col, 2 as coll from t1) select * from qn, qn | 1 | 2 | 1 | 2 | +-----+-----+-----+-----+ -with qn (foo, bar) as (select a, b from t1) select qn1.bar,foo from qn qn1; +with RECURSIVE qn (foo, bar) as (select a, b from t1) select qn1.bar,foo from qn qn1; +------+------+ | bar | foo | +------+------+ @@ -497,38 +502,33 @@ with qn (foo, bar) as (select a, b from t1) select qn1.bar,foo from qn qn1; +------+------+ # Disambiguates same-name expressions -with qn as (select 1,1 from dual) select * from qn; -ERROR 1060 (42S21): Duplicate column name '1' -with qn (foo, bar) as (select 1,1 from dual) select * from qn; +with RECURSIVE qn as (select 1,1 from dual) select * from qn; +ERROR 42S21: Duplicate column name '1' +with RECURSIVE qn (foo, bar) as (select 1,1 from dual) select * from qn; +-----+-----+ | foo | bar | +-----+-----+ | 1 | 1 | +-----+-----+ - -with qn as (select 1,1 from t1) select * from qn; -ERROR 1060 (42S21): Duplicate column name '1' -with qn (foo, bar) as (select 1,1 from t1) select * from qn; +with RECURSIVE qn as (select 1,1 from t1) select * from qn; +ERROR 42S21: Duplicate column name '1' +with RECURSIVE qn (foo, bar) as (select 1,1 from t1) select * from qn; +-----+-----+ | foo | bar | +-----+-----+ | 1 | 1 | | 1 | 1 | +-----+-----+ - -with qn (foo, foo) as (select 1,2 from dual) select * from qn; -ERROR 5751 (HY000): duplicate name found in column alias list for WITH clause +with RECURSIVE qn (foo, foo) as (select 1,2 from dual) select * from qn; +ERROR HY000: duplicate name found in column alias list for WITH clause # Derived tables support this too # Column names for QN/DT are printed create view v1 as - with qn (foo, bar) as (select 1,1 from dual) select * from qn; + with RECURSIVE qn (foo, bar) as (select 1,1 from dual) select * from qn; show create view v1; -+------+-----------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ -| View | Create View |acter_set_client | collation_connection | -+------+-----------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ -| v1 | CREATE VIEW `v1` AS WITH `qn`(foo, bar) as (select 1 AS `foo`,1 AS `bar`) select `qn`.`foo` AS `foo`,`qn`.`bar` AS `bar` from qn | utf8mb4 | utf8mb4_general_ci | -+------+-----------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ +View Create View character_set_client collation_connection +v1 CREATE VIEW `v1` AS WITH RECURSIVE`qn`(foo, bar) as (select 1 AS `foo`,1 AS `bar`) select `qn`.`foo` AS `foo`,`qn`.`bar` AS `bar` from qn utf8mb4 utf8mb4_general_ci select * from v1; +-----+-----+ @@ -538,13 +538,10 @@ select * from v1; +-----+-----+ drop view v1; create view v1 as - with qn (foo, bar) as (select 1,1 from t1) select * from qn; + with RECURSIVE qn (foo, bar) as (select 1,1 from t1) select * from qn; show create view v1; -+------+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ -| View | Create View |acter_set_client | collation_connection | -+------+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ -| v1 | CREATE VIEW `v1` AS WITH `qn`(foo, bar) as (select 1 AS `foo`,1 AS `bar` from `test`.`t1`) select `qn`.`foo` AS `foo`,`qn`.`bar` AS `bar` from qn | utf8mb4 | utf8mb4_general_ci | -+------+----------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ +View Create View character_set_client collation_connection +v1 CREATE VIEW `v1` AS WITH RECURSIVE`qn`(foo, bar) as (select 1 AS `foo`,1 AS `bar` from `cte_st`.`t1`) select `qn`.`foo` AS `foo`,`qn`.`bar` AS `bar` from qn utf8mb4 utf8mb4_general_ci select * from v1; +-----+-----+ | foo | bar | @@ -553,21 +550,21 @@ select * from v1; | 1 | 1 | +-----+-----+ drop view v1; -# printing with back-quoting is necessary, when using a +# printing with RECURSIVE back-quoting is necessary, when using a # reserved word as column name. drop table t1; # Prove that a materialized QN is shared among all references: create table t1(a int); insert into t1 values(1),(2),(3),(4); -with qn as (select 123 as col from dual) +with RECURSIVE qn as (select 123 as col from dual) select * from qn; +-----+ | col | +-----+ | 123 | +-----+ -with qn as (select 123 as col from dual) +with RECURSIVE qn as (select 123 as col from dual) select * from qn, qn qn1; +-----+-----+ | col | col | @@ -585,39 +582,32 @@ drop view qn; drop table t1; -# Printing of WITH to DD for view +# Printing of with RECURSIVE to DD for view create view v as -select (with qn as (select 'with' from dual) select * from qn) scal_subq +select (with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn) scal_subq from dual; show create view v; -+------+---------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ -| View | Create View |acter_set_client | collation_connection | -+------+---------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ -| v | CREATE VIEW `v` AS select (WITH `qn` as (select 'with' AS `with`) select `qn`.`with` from qn) AS `scal_subq` | utf8mb4 | utf8mb4_general_ci | -+------+---------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ +View Create View character_set_client collation_connection +v CREATE VIEW `v` AS select (WITH RECURSIVE`qn` as (select 'with RECURSIVE' AS `with RECURSIVE`) select `qn`.`with RECURSIVE` from qn) AS `scal_subq` utf8mb4 utf8mb4_general_ci select * from v; -+-----------+ -| scal_subq | -+-----------+ -| with | -+-----------+ ++----------------+ +| scal_subq | ++----------------+ +| with RECURSIVE | ++----------------+ drop view v; -create view v as select * from (with qn as (select 'with' from dual) select * from qn) dt; +create view v as select * from (with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn) dt; show create view v; -+------+----------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ -| View | Create View |acter_set_client | collation_connection | -+------+----------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ -| v | CREATE VIEW `v` AS select `dt`.`with` AS `with` from (WITH `qn` as (select 'with' AS `with`) select `qn`.`with` AS `with` from qn) dt | utf8mb4 | utf8mb4_general_ci | -+------+----------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+ +View Create View character_set_client collation_connection +v CREATE VIEW `v` AS select `dt`.`with RECURSIVE` AS `with RECURSIVE` from (WITH RECURSIVE`qn` as (select 'with RECURSIVE' AS `with RECURSIVE`) select `qn`.`with RECURSIVE` AS `with RECURSIVE` from qn) dt utf8mb4 utf8mb4_general_ci select * from v; -+------+ -| with | -+------+ -| with | -+------+ ++----------------+ +| with RECURSIVE | ++----------------+ +| with RECURSIVE | ++----------------+ drop view v; - # Automatic index creation if materialized create table t1 (a int); @@ -634,7 +624,7 @@ insert into t1(a) values (0); # One merged, one materialized: index creation on the second # should of course ignore the first -with q as (select * from t1) +with RECURSIVE q as (select * from t1) select /*+ merge(q) no_merge(q1) */ * from q, q q1 where q.a=1 and q1.a=2; +------+------+ | a | a | @@ -644,16 +634,13 @@ select /*+ merge(q) no_merge(q1) */ * from q, q q1 where q.a=1 and q1.a=2; drop table t1; -# Must not create more than 64 indexes. -drop table t; - # Choice between two auto_key: create table t1(a int, b int); insert into t1 values (null, 6); insert into t1 values (null, 10); # Test the covering key; note that MEMORY doesnot use a # covering key (always reads the "data file"). But InnoDB does. -with t2 as +with RECURSIVE t2 as (select * from t1) SELECT /*+ no_merge(t2) */ * FROM t2 WHERE (a = a OR b <= 6) AND (a IS NULL); @@ -668,7 +655,7 @@ drop table t1; # shouldnot cause ER_VIEW_RECURSIVE # QN inside view create view v1 as -with qn as (select 1 as col from dual) select * from qn; +with RECURSIVE qn as (select 1 as col from dual) select * from qn; select * from v1; +-----+ | col | @@ -680,7 +667,7 @@ create table t1(a int, b int); # Alas merge hints are ignored in views (filed Bug#23017428) create view v1 as -with qn as (select a from t1), +with RECURSIVE qn as (select a from t1), qn2 as (select b from t1) select /*+ merge(qn) no_merge(qn2) */ qn.a,qn2.b from qn, qn2; drop view v1; @@ -697,8 +684,8 @@ insert into sales_days values ('2015-02-10', 100); insert into sales_days values ('2015-03-02', 10); insert into sales_days values ('2015-03-18', 1); -with - -- first CTE: one row per month, with amount sold on all days of month +with RECURSIVE + -- first CTE: one row per month, with RECURSIVE amount sold on all days of month sales_by_month(month,total) as (select substr(date_format(day_of_sale,'%Y-%m-%d'), 6,2), sum(amount) from sales_days where substr(date_format(day_of_sale,'%Y-%m-%d'), 1, 4)='2015' @@ -724,11 +711,11 @@ drop table sales_days; # Special parser command not allowed to users. parse_cte ( select 1 ) ; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'parse_cte ( select 1 )' at line 1 +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'parse_cte ( select 1 )' at line 1 # the workaround works if the temp table life is necessary # only for a single statement: -with qn as (select 1 from dual) select * from qn, qn qn1; +with RECURSIVE qn as (select 1 from dual) select * from qn, qn qn1; +---+---+ | 1 | 1 | +---+---+ @@ -751,20 +738,32 @@ drop table t1; drop table t2; set autocommit=default; - # Syntax which wasnot accepted create table t1 (i int); -with cte as (select * from t1) (select * from cte); -Empty set -with cte as (select * from t1) (select * from cte) ORDER BY i; -Empty set +with RECURSIVE cte as (select * from t1) (select * from cte); ++------+ +| i | ++------+ ++------+ -with cte as (select * from t1) (select * from cte UNION select * from cte); -Empty set -with cte as (select * from t1) (select * from cte UNION select * from cte) ORDER BY i; -Empty set +with RECURSIVE cte as (select * from t1) (select * from cte) ORDER BY i; ++------+ +| i | ++------+ ++------+ + +with RECURSIVE cte as (select * from t1) (select * from cte UNION select * from cte); ++------+ +| i | ++------+ ++------+ + +with RECURSIVE cte as (select * from t1) (select * from cte UNION select * from cte) ORDER BY i; ++------+ +| i | ++------+ ++------+ -drop table EMP; create table EMP ( EMPno number, ENAME varchar(30), @@ -791,13 +790,13 @@ create table t_emp ( create table DEPT( DEPTNO number(2), - DNAME(45), + DNAME char(45), LOC VARCHAR(39) ) ; create table t_dept( DEPTNO number(2), - DNAME(45), + DNAME char(45), LOC VARCHAR(39), primary key (DEPTNO) ) ; @@ -846,7 +845,6 @@ insert into SALGRADE values(3, 1401, 2000) ; insert into SALGRADE values(4, 2001, 3000) ; insert into SALGRADE values(5, 3001, 9999) ; -result_format: 4 ########- ########- select count(*) @@ -858,7 +856,7 @@ where emp1.empno in ( salgrade.grade * 4 = dept.deptno) and emp2.empno > dept.deptno + 7700 ) and - emp1.mgr = emp2.mgr and + emp1.mgr = emp2.mgr and emp3.mgr = emp1.mgr; +----------+ | count(*) | @@ -866,7 +864,7 @@ where emp1.empno in ( | 4 | +----------+ -with wc_dept as +with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from dept ), wc_emp as ( select /*+ MATERIALIZE */ * from emp ), @@ -881,7 +879,7 @@ where emp1.empno in ( salgrade.grade * 4 = dept.deptno) and emp2.empno > dept.deptno + 7700 ) and - emp1.mgr = emp2.mgr and + emp1.mgr = emp2.mgr and emp3.mgr = emp1.mgr; +----------+ | count(*) | @@ -889,7 +887,7 @@ where emp1.empno in ( | 4 | +----------+ -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE */ count(*) from emp emp1, emp emp2, emp emp3 where emp1.empno in ( @@ -899,10 +897,10 @@ with wc1 as salgrade.grade * 4 = dept.deptno) and emp2.empno > dept.deptno + 7700 ) and - emp1.mgr = emp2.mgr and + emp1.mgr = emp2.mgr and emp3.mgr = emp1.mgr ), - wc2 as + wc2 as ( select /*+ INLINE NO_MERGE */ * from wc1 ) select wc1.* from wc1 @@ -934,7 +932,7 @@ order by 1, 2, 3; | SALES | CHICAGO | 9400.00 | +-------+---------+---------+ -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ) select dept.dname, dept.loc, v.sum_sal from dept, @@ -952,7 +950,7 @@ order by 1, 2, 3; | SALES | CHICAGO | 9400.00 | +-------+---------+---------+ -with wc1 as +with RECURSIVE wc1 as ( select dept.dname, dept.loc, v.sum_sal from dept, ( select sum(sal) sum_sal, deptno @@ -962,7 +960,7 @@ with wc1 as where v.deptno = dept.deptno and dept.deptno * 2 = 30 * 2 ), - wc2 as + wc2 as ( select /*+ INLINE */ * from wc1 ) select wc1.* from wc1 @@ -979,7 +977,7 @@ order by 1, 2, 3; #########- #########- select /*+ push_pred(emp_v) */ emp_v.ename -from +from ( select /*+ no_merge */ ename, deptno - 20 deptno from emp e union select concat(ename, 'test'), deptno + 30 @@ -1002,12 +1000,12 @@ order by 1; | WARD | +------------+ -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), wc_dept as ( select /*+ MATERIALIZE */ * from dept ) select /*+ push_pred(emp_v) */ emp_v.ename -from +from ( select /*+ no_merge */ ename, deptno - 20 deptno from wc_emp e union select concat(ename, 'test'), deptno + 30 @@ -1030,9 +1028,9 @@ order by 1; | WARD | +------------+ -with wc1 as +with RECURSIVE wc1 as ( select /*+ push_pred(emp_v) */ emp_v.ename - from + from ( select /*+ no_merge */ ename, deptno - 20 deptno from emp e union all select concat(ename, 'test'), deptno + 30 @@ -1041,7 +1039,7 @@ with wc1 as dept where emp_v.deptno = dept.deptno ), - wc2 as + wc2 as ( select /*+ INLINE */ * from wc1 ) select wc1.* from wc1 @@ -1063,7 +1061,6 @@ order by 1; | WARD | +------------+ - ######### ######### select /*+ PLACE_GROUP_BY((emp)) */ dept.deptno, dept.dname, dept.loc, @@ -1080,9 +1077,9 @@ order by 1, 2, 3; | 30 | SALES | CHICAGO | 9400.00 | +--------+------------+----------+----------+ -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), -wc_dept as +wc_dept as ( select /*+ MATERIALIZE */ * from dept) select /*+ PLACE_GROUP_BY((emp)) */ dept.deptno, dept.dname, dept.loc, sum(emp.sal) vw1_col @@ -1098,15 +1095,15 @@ order by 1, 2, 3; | 30 | SALES | CHICAGO | 9400.00 | +--------+------------+----------+----------+ -with wc1 as - ( select /*+ MATERIALIZE PLACE_GROUP_BY((emp)) */ dept.deptno, dept.dname, +with RECURSIVE wc1 as + ( select /*+ MATERIALIZE PLACE_GROUP_BY((emp)) */ dept.deptno, dept.dname, dept.loc, sum(emp.sal) vw1_col from emp, dept where emp.deptno = dept.deptno group by dept.dname, dept.deptno, dept.loc order by dept.deptno, dept.dname, dept.loc ), - wc2 as + wc2 as ( select /*+ INLINE NO_MERGE */ * from wc1 ) select wc1.* from wc1 @@ -1125,13 +1122,13 @@ order by 1, 2, 3; ################- ################- select /*+ FACTORIZE_JOIN(#set$1) */ e.empno -from emp e, dept d +from emp e, dept d where e.deptno = d.deptno and d.deptno > 20 and e.ename = 'WARD' -union all -select e.empno -from emp e, dept d +union all +select e.empno +from emp e, dept d where e.deptno = d.deptno and d.deptno > 30 and e.ename = 'WARD'; @@ -1141,20 +1138,20 @@ where e.deptno = d.deptno and | 7521 | +-------+ -with wc1 as - ( select /*+ MATERIALIZE FACTORIZE_JOIN(#set$1) */ e.empno - from emp e, dept d +with RECURSIVE wc1 as + ( select /*+ MATERIALIZE FACTORIZE_JOIN(#set$1) */ e.empno + from emp e, dept d where e.deptno = d.deptno and d.deptno > 20 and e.ename = 'WARD' - union all - select e.empno - from emp e, dept d + union all + select e.empno + from emp e, dept d where e.deptno = d.deptno and d.deptno > 30 and e.ename = 'WARD' ), - wc2 as + wc2 as ( select /*+ INLINE NO_MERGE */ * from wc1 ) select wc1.* from wc1 @@ -1169,9 +1166,9 @@ from wc2; ################# ################# -insert into t_emp with cte as (select * from emp) SELECT * FROM cte; -insert into t_dept with cte as (select * from dept) SELECT * FROM cte; -insert into t_bonus with cte as (select * from bonus) SELECT * FROM cte; +insert into t_emp with RECURSIVE cte as (select * from emp) SELECT * FROM cte; +insert into t_dept with RECURSIVE cte as (select * from dept) SELECT * FROM cte; +insert into t_bonus with RECURSIVE cte as (select * from bonus) SELECT * FROM cte; insert into t_bonus values ('SMITH', 'text', 1, 2); insert into t_bonus values ('ALLEN', 'text', 1, 2); @@ -1192,7 +1189,7 @@ commit; create index t_emp_idx1 on t_emp (deptno); create index t_emp_idx2 on t_emp (ename); -select /*+ STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, +select /*+ STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, dept.dname, bonus.job from t_emp emp, t_dept dept, t_bonus bonus where emp.deptno = dept.deptno and @@ -1207,12 +1204,12 @@ order by 2, 3, 1; | 9400.00 | SALES | text | +----------+------------+------+ -with - wc_dept as +with RECURSIVE + wc_dept as ( select /*+ MATERIALIZE */ * from t_dept ), wc_bonus as ( select /*+ MATERIALIZE */ * from t_bonus ) -select /*+ STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, +select /*+ STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, dept.dname, bonus.job from t_emp emp, wc_dept dept, wc_bonus bonus where emp.deptno = dept.deptno and @@ -1227,15 +1224,15 @@ order by 2, 3, 1; | 9400.00 | SALES | text | +----------+------------+------+ -with - wc_dept as +with RECURSIVE + wc_dept as ( select /*+ MATERIALIZE */ * from t_dept ), wc_bonus as ( select /*+ MATERIALIZE */ * from t_bonus ) select * from - ( select /*+ NO_MERGE STAR_TRANSFORMATION NO_PLACE_GROUP_BY FACT(emp) */ - sum(emp.sal) sum_sal, + ( select /*+ NO_MERGE STAR_TRANSFORMATION NO_PLACE_GROUP_BY FACT(emp) */ + sum(emp.sal) sum_sal, dept.dname, bonus.job from t_emp emp, wc_dept dept, wc_bonus bonus where emp.deptno = dept.deptno and @@ -1251,15 +1248,15 @@ order by 2, 3, 1; | 9400.00 | SALES | text | +----------+------------+------+ -select /*+ STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, +select /*+ STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, dept.dname, bonus.job -from +from t_emp emp, - ( with wc_dept as + ( with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from t_dept ) - select * from wc_dept + select * from wc_dept ) dept, - ( with wc_bonus as + ( with RECURSIVE wc_bonus as ( select /*+ MATERIALIZE */ * from t_bonus ) select * from wc_bonus ) bonus @@ -1275,8 +1272,8 @@ order by 2, 3, 1; | 9400.00 | SALES | text | +----------+------------+------+ -with wc1 as - ( select /*+ MATERIALIZE STAR_TRANSFORMATION FACT(emp) */ +with RECURSIVE wc1 as + ( select /*+ MATERIALIZE STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, dept.dname, bonus.job from t_emp emp, t_dept dept, t_bonus bonus @@ -1284,7 +1281,7 @@ with wc1 as emp.ename = bonus.ename group by dept.dname, bonus.job ), - wc2 as + wc2 as ( select /*+ INLINE NO_MERGE */ * from wc1 ) select wc1.* from wc1 @@ -1313,7 +1310,7 @@ drop table t_bonus; create table t_dept ( deptno int, dname VARCHAR(14), loc varchar(13) ) partition by range (deptno) -( partition p1 values less than (25), +( partition p1 values less than (25), partition p2 values less than (MAXVALUE) ); create index t_dept_idx1 on t_dept(dname) local; @@ -1336,11 +1333,11 @@ order by 1, 2; | 40 | OPERATIONS | +--------+------------+ -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE EXPAND_TABLE(dept) */ deptno, dname from t_dept dept ), - wc2 as + wc2 as ( select /*+ INLINE NO_MERGE */ * from wc1 ) select wc1.* from wc1 @@ -1357,7 +1354,6 @@ order by 1, 2; | 40 | OPERATIONS | +--------+------------+ - ########- ########- select /*+ PLACE_DISTINCT(dept) */ distinct emp.empno @@ -1372,9 +1368,9 @@ order by 1; | 7499 | +-------+ -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), -wc_dept as +wc_dept as ( select /*+ MATERIALIZE */ * from dept) select /*+ PLACE_DISTINCT(dept) */ distinct emp.empno from wc_emp emp, wc_dept dept @@ -1388,13 +1384,13 @@ order by 1; | 7499 | +-------+ -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE PLACE_DISTINCT(dept) */ distinct emp.empno from emp, dept where emp.deptno = dept.deptno and emp.empno < 7500 ), - wc2 as + wc2 as ( select /*+ INLINE */ * from wc1 ) select wc1.* from wc1 @@ -1415,9 +1411,9 @@ order by 1; ###############################- ################### ################### -with with_vw as +with RECURSIVE with_vw as ( select /*+ MATERIALIZE */ * from - ( select /*+ FACTORIZE_JOIN(emp) */ + ( select /*+ FACTORIZE_JOIN(emp) */ emp.ename, emp.deptno, bonus.sal from emp emp, bonus bonus where emp.ename = bonus.ename and @@ -1433,16 +1429,19 @@ with with_vw as select /*+ EXPAND_TABLE(dept) */ dept.deptno, dept.dname from t_dept dept, with_vw v -where +where v.deptno = dept.deptno order by 1, 2; -Empty set ++--------+-------+ +| deptno | dname | ++--------+-------+ ++--------+-------+ drop table t_dept; ##################### ##################### -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), wc_dept as ( select /*+ MATERIALIZE */ * from dept ) @@ -1476,12 +1475,12 @@ order by 1, 2; +--------+------------+ select e.ename, d.dname -from - ( with wc_emp as - ( select /*+ MATERIALIZE */ * from emp ) +from + ( with RECURSIVE wc_emp as + ( select /*+ MATERIALIZE */ * from emp ) select * from wc_emp - ) e FULL OUTER JOIN - ( with wc_dept as + ) e FULL OUTER JOIN + ( with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from dept ) select * from wc_dept ) d ON (e.empno = d.deptno) @@ -1513,12 +1512,12 @@ order by 1, 2; ##########################- ##########################- ##########################- -with wc_bonus as +with RECURSIVE wc_bonus as ( select /*+ MATERIALIZE */ * from bonus ) select d.dname, e.ename from dept d, emp e where d.deptno = e.deptno and - e.job not in + e.job not in ( select job from wc_bonus b ) and @@ -1544,17 +1543,17 @@ order by 1, 2; +------------+--------+ select d.dname, e.ename -from - ( with wc_dept as +from + ( with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from dept ) select * from wc_dept ) d, emp e where d.deptno = e.deptno and - e.job not in + e.job not in ( select job - from - ( with wc_bonus as + from + ( with RECURSIVE wc_bonus as ( select /*+ MATERIALIZE */ * from bonus ) select * from wc_bonus ) b @@ -1603,14 +1602,14 @@ order by 1, 2; | SALES | 2850.00 | +----------+----------+ -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), wc_dept as ( select /*+ MATERIALIZE */ * from dept ) select V.dname, V.subq_col -from - ( select /*+ merge */ - ( select max(e.sal) +from + ( select /*+ merge */ + ( select max(e.sal) from wc_emp e where e.deptno = d.deptno) subq_col, d.dname dname @@ -1626,20 +1625,17 @@ order by 1, 2; | SALES | 2850.00 | +----------+----------+ - -drop table emp,t1,t2,t3,t4; +drop table emp; +drop table t1; create table emp (id int, name varchar(20), leaderid int); create table dsemp (id int, name varchar(20), leaderid int) partition by hash (id) partitions 3; create table t1(c1 int, c2 int, c3 int); create table t2 (c1 int, c2 int, c3 int); create table t44 (c1 int, c2 int, c3 int); create table insert_t (c1 int, c2 int, c3 int); -create table t3(c1 int primary key, c2 int, c3 varchar(32)) partition by hash (c1) partitions 3; -create table troot(c1 int primary key, c2 int, c3 int unique); create table t4(id int, value char(10), parent_id int); -create table z(zc int); -WITH t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) select * from t4; +with RECURSIVE t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) select * from t4; +------+ | a | +------+ @@ -1653,9 +1649,9 @@ WITH t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) s | 8 | | 9 | +------+ -with cte(a,a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -ERROR 5751 (HY000): duplicate name found in column alias list for WITH clause -with cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +with RECURSIVE cte(a,a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +ERROR HY000: duplicate name found in column alias list for WITH clause +with RECURSIVE cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +------+------+ | a | b | +------+------+ @@ -1669,26 +1665,28 @@ with cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where | 8 | 8 | | 9 | 9 | +------+------+ -with cte(a,b,c) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list -with cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +ERROR HY000: number of WITH clause column names does not match number of elements in select list +with RECURSIVE cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +ERROR HY000: number of WITH clause column names does not match number of elements in select list +with RECURSIVE cte(a,b,c) as ( - select c1,c2,c3 from t1 where t1.c1 < 20 - union all + select c1,c2,c3 from t1 where t1.c1 < 20 + union all select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 ) select c1,c2,c3 from cte; -ERROR 1054 (42S22): Unknown column 'c1' in 'field list' +ERROR 42S22: Unknown column 'c1' in 'field list' - -with cte as (select * from t1) , - cte_recursive (n) as (select 1 from dual union all select n+1 from cte_recursive where n < 23) +with RECURSIVE cte as (select * from t1) , + cte_recursive (n) as (select 1 from dual union all select n+1 from cte_recursive where n < 23) select (select count(*) from cte_recursive) from t1; -Empty set ++--------------------------------------+ +| (select count(*) from cte_recursive) | ++--------------------------------------+ ++--------------------------------------+ -with cte(n) as (select c1 from t1) , - cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) +with RECURSIVE cte(n) as (select c1 from t1) , + cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) select * from cte_recursive; +------+ | n | @@ -1696,13 +1694,15 @@ select * from cte_recursive; | 1 | +------+ -with cte(n) as (select c1 from t1) , - cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) +with RECURSIVE cte(n) as (select c1 from t1) , + cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte_recursive) from t1; -Empty set ++--------------------------------------+ +| (select count(*) from cte_recursive) | ++--------------------------------------+ ++--------------------------------------+ - -WITH +with RECURSIVE cte1 (a, b) AS ( SELECT c, d FROM cte2 @@ -1713,30 +1713,32 @@ SELECT 1,2 from dual union all select c+1, d+1 from cte2 where c < 10 ) SELECT b, d FROM cte1 JOIN cte2 on cte1.a = cte2.c; -ERROR 1146 (42S02): Table 'test.cte2' does not exist +ERROR 42S02: Table 'cte_st.cte2' doesn't exist - -with - cte1 AS ( - with cte2 AS (select c1, c2 from t1 union all select c+1, d+1 from cte2 where c < 100) +with RECURSIVE + cte1 AS ( + with RECURSIVE cte2 AS (select c1, c2 from t1 union all select c+1, d+1 from cte2 where c < 100) select c1 from cte2 ) select c1 from cte1; -ERROR 1054 (42S22): Unknown column 'c' in 'where clause' -with cte(a,b) as (select * from (with cteb(a, b) as (select c1, c2 from t1 union all select c+1, d+1 from cteb where c < 100) select * from cteb) bac) select * from cte; -ERROR 1054 (42S22): Unknown column 'c' in 'where clause' -with cteb(a,b) as +ERROR 42S22: Unknown column 'c' in 'where clause' +with RECURSIVE cte(a,b) as (select * from (with RECURSIVE cteb(a, b) as (select c1, c2 from t1 union all select c+1, d+1 from cteb where c < 100) select * from cteb) bac) select * from cte; +ERROR 42S22: Unknown column 'c' in 'where clause' +with RECURSIVE cteb(a,b) as ( select c1, c2 from t1 union all select a+1, b+1 from cteb where a < 100 ), -cte(c,d) as +cte(c,d) as ( select * from cteb bac ) select * from cte; -Empty set ++------+------+ +| c | d | ++------+------+ ++------+------+ -with cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (select 1 from dual union all select * from cte) select * from cte_1; +with RECURSIVE cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (select 1 from dual union all select * from cte) select * from cte_1; +------+ | b | +------+ @@ -1744,19 +1746,19 @@ with cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (s | 1 | | 2 | +------+ -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; -ERROR 5743 (HY000): UNION ALL operation in recursive WITH clause must have only two branches -with cte(n) AS ( select 1 from cte) select * from cte; -ERROR 5742 (HY000): recursive WITH clause must use a UNION ALL operation +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; +ERROR HY000: UNION ALL operation in recursive WITH clause must have only two branches +with RECURSIVE cte(n) AS ( select 1 from cte) select * from cte; +ERROR HY000: recursive WITH clause must use a UNION ALL operation set @@ob_query_timeout=1000000; -with cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; -ERROR 5758 (HY000): unsupported operation in recursive branch of recursive WITH clause +with RECURSIVE cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; +ERROR HY000: unsupported operation in recursive branch of recursive WITH clause set @@ob_query_timeout=10000000; -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 union all select n+1 from cte where n < 2) select * from cte; -ERROR 5743 (HY000): UNION ALL operation in recursive WITH clause must have only two branches -with cte(n) as (select 1 from dual union all select c1 from t1 union all (with cte(n) as (select c1 from t1) select * from cte)) select * from cte; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query -with cte(n) as (select '1' from dual union all select n+1 from cte where n < 100) select * from cte; +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 union all select n+1 from cte where n < 2) select * from cte; +ERROR HY000: UNION ALL operation in recursive WITH clause must have only two branches +with RECURSIVE cte(n) as (select 1 from dual union all select c1 from t1 union all (with RECURSIVE cte(n) as (select c1 from t1) select * from cte)) select * from cte; +ERROR HY000: cycle detected while executing recursive WITH query +with RECURSIVE cte(n) as (select '1' from dual union all select n+1 from cte where n < 100) select * from cte; +------+ | n | +------+ @@ -1862,75 +1864,99 @@ with cte(n) as (select '1' from dual union all select n+1 from cte where n < 100 | 100 | +------+ -with cte(n) as (select n from (select 1 from dual union all select n+1 from cte) tmp) select * from cte; -ERROR 5744 (HY000): recursive WITH clause must reference itself directly in one of the UNION ALL branches +with RECURSIVE cte(n) as (select n from (select 1 from dual union all select n+1 from cte) tmp) select * from cte; +ERROR HY000: recursive WITH clause must reference itself directly in one of the UNION ALL branches set @@ob_query_timeout=1000000; -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte right join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; -ERROR 5759 (HY000): unsupported join in recursive WITH query -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 left join cte on cte.n < 3 and t2.c1 < 22) select * from cte; -ERROR 5759 (HY000): unsupported join in recursive WITH query -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 full join cte on cte.n < 3 and t2.c1 < 22) select * from cte; -ERROR 5759 (HY000): unsupported join in recursive WITH query -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte full join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; -ERROR 5759 (HY000): unsupported join in recursive WITH query +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte right join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; +ERROR HY000: unsupported join in recursive WITH query +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 left join cte on cte.n < 3 and t2.c1 < 22) select * from cte; +ERROR HY000: unsupported join in recursive WITH query +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 full join cte on cte.n < 3 and t2.c1 < 22) select * from cte; +ERROR HY000: unsupported join in recursive WITH query +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte full join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; +ERROR HY000: unsupported join in recursive WITH query set @@ob_query_timeout=10000000; -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 order by n ) select * from cte; -ERROR 1054 (42S22): Unknown column 'n' in 'order clause' -with cte(a,b,c) as ( - select c1,c2,c3 from not_exist where not_exist.c1 < 20 - union all - select c1,c2,c3 from not_exist, cte where cte.a = not_exist.c1 and cte.c < 10 -) +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 order by n ) select * from cte; +ERROR 42S22: Unknown column 'n' in 'order clause' +with RECURSIVE cte(a,b,c) as ( + select c1,c2,c3 from not_exist where not_exist.c1 < 20 + union all + select c1,c2,c3 from not_exist, cte where cte.a = not_exist.c1 and cte.c < 10 +) select * from cte; -ERROR 1146 (42S02): Table 'test.not_exist' does not exist -with +ERROR 42S02: Table 'cte_st.not_exist' doesn't exist +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; -Empty set ++------+------+ +| c | d | ++------+------+ ++------+------+ -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where c1+'1' <= 3 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; -Empty set ++------+------+ +| c | d | ++------+------+ ++------+------+ -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 group by c1,c2 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; -Empty set ++------+------+ +| c | d | ++------+------+ ++------+------+ -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where t1.c1 > 5 union all select c+1, d+1 from cte2 where c < 30) select c,d from cte2; -Empty set ++------+------+ +| c | d | ++------+------+ ++------+------+ -with +with RECURSIVE cte2(c,d) AS (select c1, c2 + 1 as c3 from t1 order by c2 union all select c+1, d+1 from cte2 where c < 30) select c,d from cte2; -Empty set ++------+------+ +| c | d | ++------+------+ ++------+------+ -explain basic with +explain basic with RECURSIVE cte2(c,d) AS (select * from t1 left join t2 on t1.c1=t2.c1 order by t1.c1 union all select c+1, d+1 from cte2 where c < 30) select c1 from cte2; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list +ERROR HY000: number of WITH clause column names does not match number of elements in select list -with +with RECURSIVE cte2(c,d) AS (select t1.c1, t2.c2 from t1 left join t2 on t1.c1=t2.c1 order by t1.c1 union all select c+1, d+1 from cte2 where c < 30) select c from cte2; -Empty set ++------+ +| c | ++------+ ++------+ -with +with RECURSIVE cte(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte, t2 where t2.c1 = c and t2.c2 > some (select c1 from t44 t99 group by c1)) select * from cte; -Empty set ++------+------+ +| c | d | ++------+------+ ++------+------+ -with +with RECURSIVE cte(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte, t2 where t2.c1 = c and t2.c2 > some (select c1 from t44 t99 group by c1)) select * from cte; -Empty set ++------+------+ +| c | d | ++------+------+ ++------+------+ create table ex (c1 int, c2 int); -with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +with RECURSIVE ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +------+------+ | c1 | c2 | +------+------+ @@ -1941,7 +1967,7 @@ with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex wh | 5 | 5 | +------+------+ -with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +with RECURSIVE ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +------+------+ | c1 | c2 | +------+------+ @@ -1952,7 +1978,7 @@ with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex wh | 5 | 5 | +------+------+ -with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select n from cte; +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select n from cte; +------+ | n | +------+ @@ -1982,12 +2008,11 @@ with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) s +------+ - -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as ( - select c1,c2,c3 from t1 where t1.c1 < 20 - union all - select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10) + select c1,c2,c3 from t1 where t1.c1 < 20 + union all + select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10) select count(distinct cte.a), avg(distinct cte.b) from cte where cte.c < 10; +-----------------------+---------------------+ | count(distinct cte.a) | avg(distinct cte.b) | @@ -1995,8 +2020,7 @@ select count(distinct cte.a), avg(distinct cte.b) from cte where cte.c < 10; | 0 | NULL | +-----------------------+---------------------+ - -with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte) from cte; +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte) from cte; +----------------------------+ | (select count(*) from cte) | +----------------------------+ @@ -2025,13 +2049,10 @@ with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) s | 23 | +----------------------------+ - -drop table cte1; create table cte1 (a int, b int, c int); - set ob_query_timeout = 100000000; -with cte1(a,b,c) as +with RECURSIVE cte1(a,b,c) as ( select 1,1,1 from dual union all @@ -2388,8 +2409,7 @@ on cte1.a < cte3.c; | 1 | 1 | +------+------+ - -WITH fibonacci (n, fib_n, next_fib_n) AS +with RECURSIVE fibonacci (n, fib_n, next_fib_n) AS ( SELECT 1, 0, 1 from dual UNION ALL @@ -2412,11 +2432,11 @@ SELECT * FROM fibonacci; | 10 | 34 | 55 | +------+-------+------------+ -with cte as (select 18 d from dual), +with RECURSIVE cte as (select 18 d from dual), prod (lastnum, lastprod) as ( - select 1, 1 from dual - union all - select lastnum+1, (lastnum+1)*lastprod from prod, cte where lastnum < d) + select 1, 1 from dual + union all + select lastnum+1, (lastnum+1)*lastprod from prod, cte where lastnum < d) select * from prod, cte where lastnum = d; +---------+------------------+----+ | lastnum | lastprod | d | @@ -2424,8 +2444,7 @@ select * from prod, cte where lastnum = d; | 18 | 6402373705728000 | 18 | +---------+------------------+----+ - -insert into insert_t with cte(a,b,c) as (select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where a < 10) SELECT * FROM cte; +insert into insert_t with RECURSIVE cte(a,b,c) as (select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where a < 10) SELECT * FROM cte; select * from insert_t; +------+------+------+ | c1 | c2 | c3 | @@ -2442,8 +2461,7 @@ select * from insert_t; | 10 | 11 | 12 | +------+------+------+ - -with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; +with RECURSIVE cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; +------+---------+-------------------------------------------------------+ | c1 | max(c2) | CASE max(c2) when 4 then 4 when 43 then 43 else 1 end | +------+---------+-------------------------------------------------------+ @@ -2498,9 +2516,9 @@ with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 | 49 | 49 | 1 | | 50 | 50 | 1 | +------+---------+-------------------------------------------------------+ -delete from t1 where c1 = ( with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1 from cte where c2 = 3); +delete from t1 where c1 = ( with RECURSIVE cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1 from cte where c2 = 3); -drop table emp,dept,emp1,emp2; +drop table emp,dept; create table EMP ( EMPno number, ENAME varchar(30), @@ -2596,13 +2614,12 @@ INSERT INTO emp2 values (4001, 'ADAMS', 'CLERK', 5001, str_to_date('1987-05-23', INSERT INTO emp2 values (5007, 'JAMES', 'CLERK', 6002, str_to_date('1981-12-03', '%Y-%m-%d'), 950, null, 30); INSERT INTO emp2 values (5002, 'FORD', 'ANALYST', 6001, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); -result_format: 4 + ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: no cycle clause used in query in acyclic data +## - recursive with RECURSIVE Query: no cycle clause used in query in acyclic data ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -2633,7 +2650,6 @@ FROM rw; | ADAMS | 7876 | 7788 | +--------+-------+------+ - drop table emp1; drop table emp2; @@ -2709,13 +2725,12 @@ INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23' ## ======================================================================= ## Test Case 2: -## - recursive WITH Query(Negative): cycle clause not used in query with +## - recursive with RECURSIVE Query(Negative): cycle clause not used in query with RECURSIVE ## cyclic data ## ======================================================================= /* add loop from scott back to king in emp */ update emp set mgr = 7788 where ename = 'KING'; - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -2727,8 +2742,7 @@ WITH rw (ename, mgr, empno) AS ) SELECT ename, empno, mgr FROM rw; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query - +ERROR HY000: cycle detected while executing recursive WITH query drop table emp1; @@ -2820,15 +2834,13 @@ INSERT INTO emp2 values (5002, 'FORD', 'ANALYST', 6001, str_to_date('1981-12-03' INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); - - ## ======================================================================= -## Test Case 3: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles e.mgr < e.empno +## Test Case 3: +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +## Pruning predicate added that results in no cycles e.mgr < e.empno ## ======================================================================= update emp2 set mgr = 5001 where ename = 'KING'; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -2838,7 +2850,7 @@ WITH rw (ename, mgr, empno) AS FROM rw r, emp2 e WHERE r.empno = e.mgr and e.mgr < e.empno ) -SELECT ename, empno, mgr +SELECT ename, empno, mgr FROM rw; +-------+-------+------+ | ename | empno | mgr | @@ -2847,12 +2859,11 @@ FROM rw; +-------+-------+------+ ## ======================================================================= -## Test Case 4: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles e.mgr > e.empno +## Test Case 4: +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +## Pruning predicate added that results in no cycles e.mgr > e.empno ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -2884,12 +2895,11 @@ FROM rw; +--------+-------+------+ ## ======================================================================= -## Test Case 5: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles r.empno < e.empno +## Test Case 5: +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +## Pruning predicate added that results in no cycles r.empno < e.empno ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -2899,7 +2909,7 @@ WITH rw (ename, mgr, empno) AS FROM rw r, emp2 e WHERE r.empno = e.mgr and r.empno < e.empno ) -SELECT ename, empno, mgr +SELECT ename, empno, mgr FROM rw; +-------+-------+------+ | ename | empno | mgr | @@ -2908,12 +2918,11 @@ FROM rw; +-------+-------+------+ ## ======================================================================= -## Test Case 6: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles r.empno > e.empno +## Test Case 6: +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +## Pruning predicate added that results in no cycles r.empno > e.empno ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -2944,6 +2953,4 @@ FROM rw; | ADAMS | 4001 | 5001 | +--------+-------+------+ - - - +drop database cte_st; diff --git a/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/dis_recursive_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/dis_recursive_mysql.result new file mode 100644 index 000000000..02d0d6f0e --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/dis_recursive_mysql.result @@ -0,0 +1,4590 @@ +drop database if exists cte_st; +create database cte_st; +use cte_st; +result_format: 4 +create table disemp ( + EMPno number, + ENAME varchar(30), + JOB varchar(30) , + MGR number(4), + HIREDATE date, + SAL number(7,2), + COMM number(7,2), + DEPTNO number(2) +); + +INSERT INTO disemp values (7369,'SMITH','CLERK',7902, str_to_date('1980-11-17','%Y-%m-%d'),800,NULL, 20) ; +INSERT INTO disemp VALUES (7499, 'ALLEN','SALESMAN',7698,str_to_date('1981-01-20','%Y-%m-%d'),1600,300,30) ; +INSERT INTO disemp VALUES (7521,'WARD','SALESMAN',7698, str_to_date('1981-01-22','%Y-%m-%d'),1250, 500, 30) ; +INSERT INTO disemp VALUES (7566,'JONES','MANAGER',7839, str_to_date('1981-04-02','%Y-%m-%d'), 2975, NULL, 20) ; +INSERT INTO disemp VALUES (7654,'MARTIN','SALESMAN', 7698, str_to_date('1981-09-28','%Y-%m-%d'), 1250, 1400, 30) ; +INSERT INTO disemp VALUES (7698, 'BLAKE','MANAGER', 7839, str_to_date('1981-03-01','%Y-%m-%d'), 2850, NULL, 30) ; +INSERT INTO disemp VALUES (7782, 'CLARK','MANAGER', 7839, str_to_date('1981-06-09','%Y-%m-%d'), 2450, NULL, 10) ; +insert into disemp values (7788,'SCOTT','ANALYST', 7566, str_to_date('1987-04-19','%Y-%m-%d'), 3000, null, 20) ; +INSERT INTO disemp VALUES (7839, 'KING','PRESIDENT', NULL, str_to_date('1981-11-17','%Y-%m-%d'), 5000, NULL, 10) ; +INSERT INTO disemp VALUES (7844, 'TURNER','SALESMAN', 7698, str_to_date('1981-09-08','%Y-%m-%d'), 1500, 0, 30) ; +INSERT INTO disemp VALUES(7876, 'ADAMS','CLERK', 7788, str_to_date('1987-05-23','%Y-%m-%d'), 1100, NULL, 20) ; +INSERT INTO disemp VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-11-03','%Y-%m-%d'), 950, NULL, 30) ; +INSERT INTO disemp VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-11-03','%Y-%m-%d'), 3000, NULL, 20) ; +INSERT INTO disemp VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-01-23','%Y-%m-%d'), 1300,NULL, 10) ; + +create table EMP ( + EMPno number, + ENAME varchar(30), + JOB varchar(30), + MGR number(4), + HIREDATE date, + SAL number(7,2), + COMM number(7,2), + DEPTNO number(2) +); + +insert into EMP values (7369,'SMITH','CLERK',7902, str_to_date('1980-12-17','%Y-%m-%d'),800,NULL, 20) ; +INSERT INTO EMP VALUES (7499, 'ALLEN','SALESMAN',7698,str_to_date('1981-02-20','%Y-%m-%d'),1600,300,30) ; +INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698, str_to_date('1981-02-22','%Y-%m-%d'),1250, 500, 30) ; +INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839, str_to_date('1981-08-02','%Y-%m-%d'), 2975, NULL, 20) ; +INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN', 7698, str_to_date('1981-09-28','%Y-%m-%d'), 1250, 1400, 30) ; +INSERT INTO EMP VALUES (7698, 'BLAKE','MANAGER', 7839, str_to_date('1981-05-01','%Y-%m-%d'), 2850, NULL, 30) ; +INSERT INTO EMP VALUES (7782, 'CLARK','MANAGER', 7839, str_to_date('1981-06-09','%Y-%m-%d'), 2450, NULL, 10) ; +insert into EMP values (7788,'SCOTT','ANALYST', 7566, str_to_date('1987-08-19','%Y-%m-%d'), 3000, null, 20) ; +INSERT INTO EMP VALUES (7839, 'KING','PRESIDENT', NULL, str_to_date('1981-11-17','%Y-%m-%d'), 5000, NULL, 10) ; +INSERT INTO EMP VALUES (7844, 'TURNER','SALESMAN', 7698, str_to_date('1981-09-08','%Y-%m-%d'), 1500, 0, 30) ; +INSERT INTO EMP VALUES(7876, 'ADAMS','CLERK', 7788, str_to_date('1987-05-23','%Y-%m-%d'), 1100, NULL, 20) ; +INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-12-03','%Y-%m-%d'), 950, NULL, 30) ; +INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-12-03','%Y-%m-%d'), 3000, NULL, 20) ; +INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-06-23','%Y-%m-%d'), 1300,NULL, 10) ; + +CREATE TABLE emp1 ( + empno VARCHAR(4000) NOT NULL, + ename VARCHAR(14), + job VARCHAR(9), + mgr VARCHAR(4000), + hiredate DATE, + sal NUMBER(7,2), + comm NUMBER(7,2), + deptno NUMBER(2)); + +INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', '%Y-%m-%d'), 800, null, 20); +INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); +INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); +INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); +INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); +INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); +INSERT INTO emp1 values (7839, 'KING', 'PRESIDENT', null, str_to_date('1981-11-17', '%Y-%m-%d'), 5000, null, 10); +INSERT INTO emp1 values (7844, 'TURNER', 'SALESMAN', 7698, str_to_date('1981-09-08', '%Y-%m-%d'), 1500, 0, 30); +INSERT INTO emp1 values (7876, 'ADAMS', 'CLERK', 7788, str_to_date('1987-05-23', '%Y-%m-%d'), 1100, null, 20); +INSERT INTO emp1 values (7900, 'JAMES', 'CLERK', 7698, str_to_date('1981-12-03', '%Y-%m-%d'), 950, null, 30); +INSERT INTO emp1 values (7902, 'FORD', 'ANALYST', 7566, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); +INSERT INTO emp1 values (7934, 'MILLER', 'CLERK', 7782, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); +INSERT INTO emp1 values (8100, 'Eve', 'MANAGER', 7839, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01','%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); + +create table dsemp (id int, name varchar(20), leaderid int) partition by hash (id) partitions 3; +insert into dsemp values(1, 'A', '0'); +insert into dsemp values(2, 'AA', '1'); +insert into dsemp values(3, 'AB', '1'); +insert into dsemp values(4, 'ABA', '3'); +insert into dsemp values(5, 'AAA', '2'); +insert into dsemp values(6, 'ABB', '3'); +insert into dsemp values(7, 'AAA', '5'); +insert into dsemp values(8, 'AAA', '7'); +insert into dsemp values(9, 'AAAA', '5'); +insert into dsemp values(10, 'AAAB', '5'); +insert into dsemp values(11, 'AAAC', '5'); +insert into dsemp values(12, 'AAAA', '5'); + +create table dsemp1 (id int, name varchar(20), leaderid int) partition by hash (leaderid) partitions 3; +insert into dsemp1 values(1, 'A', '0'); +insert into dsemp1 values(2, 'AA', '1'); +insert into dsemp1 values(3, 'AB', '1'); +insert into dsemp1 values(4, 'ABA', '3'); +insert into dsemp1 values(5, 'AAA', '2'); +insert into dsemp1 values(6, 'ABB', '3'); +insert into dsemp1 values(7, 'AAA', '5'); +insert into dsemp1 values(8, 'AAA', '7'); +insert into dsemp1 values(9, 'AAAA', '5'); +insert into dsemp1 values(10, 'AAAB', '5'); +insert into dsemp1 values(11, 'AAAC', '5'); +insert into dsemp1 values(12, 'AAAA', '5'); + +result_format: 4 + +############################## +## section 1 聚合一张表是分布式表(disemp) +## section 2 聚合的两表是分布式表(disemp,emp1) +## section 3 聚合的两表在join条件上可能形成wise join(disemp,emp1) +## section 4 额外添加recursive member变化 +############################## + +############################## +## section 1 聚合一张表是分布式表(disemp) +############################## +## ======================================================================= +## Test Case 1: +## - recursive with RECURSIVE Query: Nested Loop Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |1281| +|1 | RECURSIVE UNION ALL| |29 |1277| +|2 | TABLE SCAN |e |1 |46 | +|3 | NESTED-LOOP JOIN | |28 |1218| +|4 | TABLE SCAN |r |1 |1 | +|5 | MATERIAL | |14 |54 | +|6 | TABLE SCAN |e |14 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + conds([r.empno = e.MGR]), nl_params_(nil) + 4 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + 5 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil) + 6 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 2: +## - recursive with RECURSIVE Query: SORT MERGE Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |189 | +|1 | RECURSIVE UNION ALL| |29 |185 | +|2 | TABLE SCAN |e |1 |46 | +|3 | MERGE JOIN | |28 |127 | +|4 | SORT | |14 |68 | +|5 | TABLE SCAN |e |14 |39 | +|6 | SORT | |1 |11 | +|7 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), sort_keys([e.MGR, ASC]) + 5 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 6 - output([r.empno]), filter(nil), sort_keys([r.empno, ASC]) + 7 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 3: +## - recursive with RECURSIVE Query: Hash Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 4: +## - recursive with RECURSIVE Query: Join in Initialisation Branch +## 与oracle的结果顺序不一样 +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno + FROM disemp e, disemp d + WHERE e.sal = d. sal + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e, disemp d + WHERE r.empno = e.mgr and e.sal = d.sal +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |42 |413 | +|1 | RECURSIVE UNION ALL| |42 |407 | +|2 | NESTED-LOOP JOIN | |14 |159 | +|3 | TABLE SCAN |e |14 |40 | +|4 | MATERIAL | |14 |41 | +|5 | TABLE SCAN |d |14 |39 | +|6 | HASH JOIN | |28 |230 | +|7 | HASH JOIN | |14 |108 | +|8 | TABLE SCAN |d |14 |39 | +|9 | TABLE SCAN |e |14 |40 | +|10| TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + conds([e.SAL = d.SAL]), nl_params_(nil) + 3 - output([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + access([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 4 - output([d.SAL]), filter(nil) + 5 - output([d.SAL]), filter(nil), + access([d.SAL]), partitions(p0) + 6 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 7 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.SAL = d.SAL]), other_conds(nil) + 8 - output([d.SAL]), filter(nil), + access([d.SAL]), partitions(p0) + 9 - output([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), partitions(p0) + 10 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno + FROM disemp e, disemp d + WHERE e.sal = d. sal + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e, disemp d + WHERE r.empno = e.mgr and e.sal = d.sal +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ALLEN | 7499 | 7698 | +| ALLEN | 7499 | 7698 | +| ALLEN | 7499 | 7698 | +| BLAKE | 7698 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| CLARK | 7782 | 7839 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| JAMES | 7900 | 7698 | +| JAMES | 7900 | 7698 | +| JAMES | 7900 | 7698 | +| JONES | 7566 | 7839 | +| JONES | 7566 | 7839 | +| KING | 7839 | NULL | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MILLER | 7934 | 7782 | +| MILLER | 7934 | 7782 | +| MILLER | 7934 | 7782 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| TURNER | 7844 | 7698 | +| TURNER | 7844 | 7698 | +| TURNER | 7844 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 6: +## - recursive with RECURSIVE Query: Hash Join without using hints +## Static input on build side and fits in memory +## 与oracle顺序不一致 +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.MGR = r.empno]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 7: +## - recursive with RECURSIVE Query: Hash Join without using hints +## Static input on probe side and fits in memory +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## 测试8-15都是在测试join的顺序或者hint的顺序 +## Test Case 8: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< disemp >< emp1 +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, disemp e, emp1 n + WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |2340| +|1 | SUBPLAN SCAN |rw |1 |2339| +|2 | RECURSIVE UNION ALL| |1 |2339| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |2199| +|9 | HASH JOIN | |10 |2056| +|10| TABLE SCAN |r |1 |1 | +|11| TABLE SCAN |e |5 |42 | +|12| TABLE SCAN |n |17 |39 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 9 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL]), filter(nil), + equal_conds([r.mgr = e.EMPno]), other_conds(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 12 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, disemp e, emp1 n + WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 9: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< pump >< emp1 +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, rw r, emp1 n + WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |409 | +|1 | SUBPLAN SCAN |rw |1 |408 | +|2 | RECURSIVE UNION ALL| |1 |408 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |268 | +|9 | HASH JOIN | |10 |126 | +|10| TABLE SCAN |e |5 |42 | +|11| TABLE SCAN |r |1 |1 | +|12| TABLE SCAN |n |17 |39 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 9 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 11 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 12 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, rw r, emp1 n + WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 10: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< emp1 >< pump +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, emp1 n, rw r + WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |308 | +|1 | SUBPLAN SCAN |rw |1 |307 | +|2 | RECURSIVE UNION ALL| |1 |307 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |167 | +|9 | HASH JOIN | |1 |93 | +|10| TABLE SCAN |e |5 |42 | +|11| TABLE SCAN |n |17 |39 | +|12| TABLE SCAN |r |1 |1 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, emp1 n, rw r + WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 11: +## - recursive with RECURSIVE Query: Join Order tests +## emp1 >< disemp >< pump +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |363 | +|1 | SUBPLAN SCAN |rw |1 |362 | +|2 | RECURSIVE UNION ALL| |1 |362 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |222 | +|9 | HASH JOIN | |1 |148 | +|10| TABLE SCAN |n |17 |39 | +|11| TABLE SCAN |e |5 |42 | +|12| TABLE SCAN |r |1 |1 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) + 10 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + 11 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 12: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< disemp +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |2132| +|1 | RECURSIVE UNION ALL| |29 |2128| +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |2070| +|4 | TABLE SCAN |r |1 |1 | +|5 | TABLE SCAN |e |14 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + 5 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 13: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< pump +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.MGR = r.empno]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 14: +## - recursive with RECURSIVE Query: Join Order tests +## emp1 >< pump >< disemp +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, rw r, disemp e + WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------------------- +|0 |SORT | |1 |47529| +|1 | SUBPLAN SCAN |rw |1 |47529| +|2 | RECURSIVE UNION ALL | |1 |47528| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |47388| +|9 | NESTED-LOOP JOIN CARTESIAN| |3383 |3014 | +|10| TABLE SCAN |r |1 |1 | +|11| MATERIAL | |17 |89 | +|12| TABLE SCAN |n |17 |39 | +|13| TABLE SCAN |e |5 |42 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR], [r.mgr = e.EMPno]), other_conds(nil) + 9 - output([r.empno], [r.iters], [r.sal], [r.mgr], [cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([n.empno]), filter(nil) + 12 - output([n.empno]), filter(nil), + access([n.empno]), partitions(p0) + 13 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, rw r, disemp e + WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 15: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< emp1 >< disemp +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, emp1 n, disemp e + WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------------------- +|0 |SORT | |1 |47529| +|1 | SUBPLAN SCAN |rw |1 |47529| +|2 | RECURSIVE UNION ALL | |1 |47528| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |47388| +|9 | NESTED-LOOP JOIN CARTESIAN| |3383 |3014 | +|10| TABLE SCAN |r |1 |1 | +|11| MATERIAL | |17 |89 | +|12| TABLE SCAN |n |17 |39 | +|13| TABLE SCAN |e |5 |42 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([r.mgr = e.EMPno], [cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) + 9 - output([r.empno], [r.iters], [r.sal], [r.mgr], [cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([n.empno]), filter(nil) + 12 - output([n.empno]), filter(nil), + access([n.empno]), partitions(p0) + 13 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, emp1 n, disemp e + WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 16: +## - recursive with RECURSIVE Query: Join Skew handling. No local filter +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 17: +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr and e.empno < e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |11 |180 | +|1 | RECURSIVE UNION ALL| |11 |179 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |10 |129 | +|4 | TABLE SCAN |e |5 |42 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.EMPno], [e.ENAME]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.ENAME]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr and e.empno < e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | ++--------+-------+------+ + +############################## +## section 2 聚合的两表是分布式表(disemp,emp1) +############################## +## +## emp1 也进行分布式化 +drop table emp1; +CREATE TABLE emp1 ( + empno VARCHAR(4000) NOT NULL, + ename VARCHAR(14), + job VARCHAR(9), + mgr VARCHAR(4000), + hiredate DATE, + sal NUMBER(7,2), + comm NUMBER(7,2), + deptno NUMBER(2) +); + +INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', '%Y-%m-%d'), 800, null, 20); +INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); +INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); +INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); +INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); +INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); +INSERT INTO emp1 values (7839, 'KING', 'PRESIDENT', null, str_to_date('1981-11-17', '%Y-%m-%d'), 5000, null, 10); +INSERT INTO emp1 values (7844, 'TURNER', 'SALESMAN', 7698, str_to_date('1981-09-08', '%Y-%m-%d'), 1500, 0, 30); +INSERT INTO emp1 values (7876, 'ADAMS', 'CLERK', 7788, str_to_date('1987-05-23', '%Y-%m-%d'), 1100, null, 20); +INSERT INTO emp1 values (7900, 'JAMES', 'CLERK', 7698, str_to_date('1981-12-03', '%Y-%m-%d'), 950, null, 30); +INSERT INTO emp1 values (7902, 'FORD', 'ANALYST', 7566, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); +INSERT INTO emp1 values (7934, 'MILLER', 'CLERK', 7782, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); +INSERT INTO emp1 values (8100, 'Eve', 'MANAGER', 7839, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01','%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); + +## ======================================================================= +## Test Case 1: +## - recursive with RECURSIVE Query: Nested Loop Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |1281| +|1 | RECURSIVE UNION ALL| |29 |1277| +|2 | TABLE SCAN |e |1 |46 | +|3 | NESTED-LOOP JOIN | |28 |1218| +|4 | TABLE SCAN |r |1 |1 | +|5 | MATERIAL | |14 |54 | +|6 | TABLE SCAN |e |14 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + conds([r.empno = e.MGR]), nl_params_(nil) + 4 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + 5 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil) + 6 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 2: +## - recursive with RECURSIVE Query: SORT MERGE Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |189 | +|1 | RECURSIVE UNION ALL| |29 |185 | +|2 | TABLE SCAN |e |1 |46 | +|3 | MERGE JOIN | |28 |127 | +|4 | SORT | |14 |68 | +|5 | TABLE SCAN |e |14 |39 | +|6 | SORT | |1 |11 | +|7 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), sort_keys([e.MGR, ASC]) + 5 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 6 - output([r.empno]), filter(nil), sort_keys([r.empno, ASC]) + 7 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 3: +## - recursive with RECURSIVE Query: Hash Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 4: +## - recursive with RECURSIVE Query: Join in Initialisation Branch +## 与oracle的结果顺序不一样 +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno + FROM disemp e, disemp d + WHERE e.sal = d. sal + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e, disemp d + WHERE r.empno = e.mgr and e.sal = d.sal +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |42 |413 | +|1 | RECURSIVE UNION ALL| |42 |407 | +|2 | NESTED-LOOP JOIN | |14 |159 | +|3 | TABLE SCAN |e |14 |40 | +|4 | MATERIAL | |14 |41 | +|5 | TABLE SCAN |d |14 |39 | +|6 | HASH JOIN | |28 |230 | +|7 | HASH JOIN | |14 |108 | +|8 | TABLE SCAN |d |14 |39 | +|9 | TABLE SCAN |e |14 |40 | +|10| TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + conds([e.SAL = d.SAL]), nl_params_(nil) + 3 - output([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + access([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 4 - output([d.SAL]), filter(nil) + 5 - output([d.SAL]), filter(nil), + access([d.SAL]), partitions(p0) + 6 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 7 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.SAL = d.SAL]), other_conds(nil) + 8 - output([d.SAL]), filter(nil), + access([d.SAL]), partitions(p0) + 9 - output([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), partitions(p0) + 10 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno + FROM disemp e, disemp d + WHERE e.sal = d. sal + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e, disemp d + WHERE r.empno = e.mgr and e.sal = d.sal +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ALLEN | 7499 | 7698 | +| ALLEN | 7499 | 7698 | +| ALLEN | 7499 | 7698 | +| BLAKE | 7698 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| CLARK | 7782 | 7839 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| JAMES | 7900 | 7698 | +| JAMES | 7900 | 7698 | +| JAMES | 7900 | 7698 | +| JONES | 7566 | 7839 | +| JONES | 7566 | 7839 | +| KING | 7839 | NULL | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MILLER | 7934 | 7782 | +| MILLER | 7934 | 7782 | +| MILLER | 7934 | 7782 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| TURNER | 7844 | 7698 | +| TURNER | 7844 | 7698 | +| TURNER | 7844 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 6: +## - recursive with RECURSIVE Query: Hash Join without using hints +## Static input on build side and fits in memory +## 与oracle顺序不一致 +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.MGR = r.empno]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 7: +## - recursive with RECURSIVE Query: Hash Join without using hints +## Static input on probe side and fits in memory +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## 测试8-15都是在测试join的顺序或者hint的顺序 +## Test Case 8: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< disemp >< emp1 +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, disemp e, emp1 n + WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |2340| +|1 | SUBPLAN SCAN |rw |1 |2339| +|2 | RECURSIVE UNION ALL| |1 |2339| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |2199| +|9 | HASH JOIN | |10 |2056| +|10| TABLE SCAN |r |1 |1 | +|11| TABLE SCAN |e |5 |42 | +|12| TABLE SCAN |n |17 |39 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 9 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL]), filter(nil), + equal_conds([r.mgr = e.EMPno]), other_conds(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 12 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, disemp e, emp1 n + WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 9: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< pump >< emp1 +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, rw r, emp1 n + WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |409 | +|1 | SUBPLAN SCAN |rw |1 |408 | +|2 | RECURSIVE UNION ALL| |1 |408 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |268 | +|9 | HASH JOIN | |10 |126 | +|10| TABLE SCAN |e |5 |42 | +|11| TABLE SCAN |r |1 |1 | +|12| TABLE SCAN |n |17 |39 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 9 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 11 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 12 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, rw r, emp1 n + WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 10: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< emp1 >< pump +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, emp1 n, rw r + WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |308 | +|1 | SUBPLAN SCAN |rw |1 |307 | +|2 | RECURSIVE UNION ALL| |1 |307 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |167 | +|9 | HASH JOIN | |1 |93 | +|10| TABLE SCAN |e |5 |42 | +|11| TABLE SCAN |n |17 |39 | +|12| TABLE SCAN |r |1 |1 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, emp1 n, rw r + WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 11: +## - recursive with RECURSIVE Query: Join Order tests +## emp1 >< disemp >< pump +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |363 | +|1 | SUBPLAN SCAN |rw |1 |362 | +|2 | RECURSIVE UNION ALL| |1 |362 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |222 | +|9 | HASH JOIN | |1 |148 | +|10| TABLE SCAN |n |17 |39 | +|11| TABLE SCAN |e |5 |42 | +|12| TABLE SCAN |r |1 |1 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) + 10 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + 11 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + + +##oracle ok +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 12: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< disemp +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |2132| +|1 | RECURSIVE UNION ALL| |29 |2128| +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |2070| +|4 | TABLE SCAN |r |1 |1 | +|5 | TABLE SCAN |e |14 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + 5 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 13: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< pump +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.MGR = r.empno]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT /*+log_level(DEBUG)*/ ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 14: +## - recursive with RECURSIVE Query: Join Order tests +## emp1 >< pump >< disemp +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, rw r, disemp e + WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------------------- +|0 |SORT | |1 |47529| +|1 | SUBPLAN SCAN |rw |1 |47529| +|2 | RECURSIVE UNION ALL | |1 |47528| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |47388| +|9 | NESTED-LOOP JOIN CARTESIAN| |3383 |3014 | +|10| TABLE SCAN |r |1 |1 | +|11| MATERIAL | |17 |89 | +|12| TABLE SCAN |n |17 |39 | +|13| TABLE SCAN |e |5 |42 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR], [r.mgr = e.EMPno]), other_conds(nil) + 9 - output([r.empno], [r.iters], [r.sal], [r.mgr], [cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([n.empno]), filter(nil) + 12 - output([n.empno]), filter(nil), + access([n.empno]), partitions(p0) + 13 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, rw r, disemp e + WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 15: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< emp1 >< disemp +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, emp1 n, disemp e + WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------------------- +|0 |SORT | |1 |47529| +|1 | SUBPLAN SCAN |rw |1 |47529| +|2 | RECURSIVE UNION ALL | |1 |47528| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |47388| +|9 | NESTED-LOOP JOIN CARTESIAN| |3383 |3014 | +|10| TABLE SCAN |r |1 |1 | +|11| MATERIAL | |17 |89 | +|12| TABLE SCAN |n |17 |39 | +|13| TABLE SCAN |e |5 |42 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([r.mgr = e.EMPno], [cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) + 9 - output([r.empno], [r.iters], [r.sal], [r.mgr], [cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([n.empno]), filter(nil) + 12 - output([n.empno]), filter(nil), + access([n.empno]), partitions(p0) + 13 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, emp1 n, disemp e + WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 16: +## - recursive with RECURSIVE Query: Join Skew handling. No local filter +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 17: +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr and e.empno < e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |11 |180 | +|1 | RECURSIVE UNION ALL| |11 |179 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |10 |129 | +|4 | TABLE SCAN |e |5 |42 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.EMPno], [e.ENAME]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.ENAME]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr and e.empno < e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | ++--------+-------+------+ + +############################## +## section 3 聚合的两表在join条件上可能形成wise join(disemp,emp1) +############################## +## +## emp1 也进行分布式化 +drop table emp1; +CREATE TABLE emp1 ( + empno VARCHAR(4000) NOT NULL, + ename VARCHAR(14), + job VARCHAR(9), + mgr VARCHAR(4000), + hiredate DATE, + sal NUMBER(7,2), + comm NUMBER(7,2), + deptno NUMBER(2) +); + +INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', '%Y-%m-%d'), 800, null, 20); +INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); +INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); +INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); +INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); +INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); +INSERT INTO emp1 values (7839, 'KING', 'PRESIDENT', null, str_to_date('1981-11-17', '%Y-%m-%d'), 5000, null, 10); +INSERT INTO emp1 values (7844, 'TURNER', 'SALESMAN', 7698, str_to_date('1981-09-08', '%Y-%m-%d'), 1500, 0, 30); +INSERT INTO emp1 values (7876, 'ADAMS', 'CLERK', 7788, str_to_date('1987-05-23', '%Y-%m-%d'), 1100, null, 20); +INSERT INTO emp1 values (7900, 'JAMES', 'CLERK', 7698, str_to_date('1981-12-03', '%Y-%m-%d'), 950, null, 30); +INSERT INTO emp1 values (7902, 'FORD', 'ANALYST', 7566, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); +INSERT INTO emp1 values (7934, 'MILLER', 'CLERK', 7782, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); +INSERT INTO emp1 values (8100, 'Eve', 'MANAGER', 7839, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01','%Y-%m-%d'), 2850, null, 30); +INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); + +## ======================================================================= +## Test Case 1: +## - recursive with RECURSIVE Query: Nested Loop Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |1281| +|1 | RECURSIVE UNION ALL| |29 |1277| +|2 | TABLE SCAN |e |1 |46 | +|3 | NESTED-LOOP JOIN | |28 |1218| +|4 | TABLE SCAN |r |1 |1 | +|5 | MATERIAL | |14 |54 | +|6 | TABLE SCAN |e |14 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + conds([r.empno = e.MGR]), nl_params_(nil) + 4 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + 5 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil) + 6 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_NL(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 2: +## - recursive with RECURSIVE Query: SORT MERGE Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |189 | +|1 | RECURSIVE UNION ALL| |29 |185 | +|2 | TABLE SCAN |e |1 |46 | +|3 | MERGE JOIN | |28 |127 | +|4 | SORT | |14 |68 | +|5 | TABLE SCAN |e |14 |39 | +|6 | SORT | |1 |11 | +|7 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), sort_keys([e.MGR, ASC]) + 5 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 6 - output([r.empno]), filter(nil), sort_keys([r.empno, ASC]) + 7 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_MERGE(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 3: +## - recursive with RECURSIVE Query: Hash Join +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT /*+log_level(DEBUG)*/ ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 4: +## - recursive with RECURSIVE Query: Join in Initialisation Branch +## 与oracle的结果顺序不一样 +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno + FROM disemp e, disemp d + WHERE e.sal = d. sal + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e, disemp d + WHERE r.empno = e.mgr and e.sal = d.sal +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |42 |413 | +|1 | RECURSIVE UNION ALL| |42 |407 | +|2 | NESTED-LOOP JOIN | |14 |159 | +|3 | TABLE SCAN |e |14 |40 | +|4 | MATERIAL | |14 |41 | +|5 | TABLE SCAN |d |14 |39 | +|6 | HASH JOIN | |28 |230 | +|7 | HASH JOIN | |14 |108 | +|8 | TABLE SCAN |d |14 |39 | +|9 | TABLE SCAN |e |14 |40 | +|10| TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + conds([e.SAL = d.SAL]), nl_params_(nil) + 3 - output([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + access([e.SAL], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 4 - output([d.SAL]), filter(nil) + 5 - output([d.SAL]), filter(nil), + access([d.SAL]), partitions(p0) + 6 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 7 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.SAL = d.SAL]), other_conds(nil) + 8 - output([d.SAL]), filter(nil), + access([d.SAL]), partitions(p0) + 9 - output([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.SAL], [e.ENAME], [e.EMPno]), partitions(p0) + 10 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno + FROM disemp e, disemp d + WHERE e.sal = d. sal + UNION ALL + SELECT /*+ USE_HASH(r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e, disemp d + WHERE r.empno = e.mgr and e.sal = d.sal +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ADAMS | 7876 | 7788 | +| ALLEN | 7499 | 7698 | +| ALLEN | 7499 | 7698 | +| ALLEN | 7499 | 7698 | +| BLAKE | 7698 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| CLARK | 7782 | 7839 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| FORD | 7902 | 7566 | +| JAMES | 7900 | 7698 | +| JAMES | 7900 | 7698 | +| JAMES | 7900 | 7698 | +| JONES | 7566 | 7839 | +| JONES | 7566 | 7839 | +| KING | 7839 | NULL | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MARTIN | 7654 | 7698 | +| MILLER | 7934 | 7782 | +| MILLER | 7934 | 7782 | +| MILLER | 7934 | 7782 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| SMITH | 7369 | 7902 | +| TURNER | 7844 | 7698 | +| TURNER | 7844 | 7698 | +| TURNER | 7844 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | +| WARD | 7521 | 7698 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 6: +## - recursive with RECURSIVE Query: Hash Join without using hints +## Static input on build side and fits in memory +## 与oracle顺序不一致 +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.MGR = r.empno]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 7: +## - recursive with RECURSIVE Query: Hash Join without using hints +## Static input on probe side and fits in memory +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## 测试8-15都是在测试join的顺序或者hint的顺序 +## Test Case 8: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< disemp >< emp1 +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, disemp e, emp1 n + WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |2340| +|1 | SUBPLAN SCAN |rw |1 |2339| +|2 | RECURSIVE UNION ALL| |1 |2339| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |2199| +|9 | HASH JOIN | |10 |2056| +|10| TABLE SCAN |r |1 |1 | +|11| TABLE SCAN |e |5 |42 | +|12| TABLE SCAN |n |17 |39 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 9 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL]), filter(nil), + equal_conds([r.mgr = e.EMPno]), other_conds(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 12 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, disemp e, emp1 n + WHERE r.mgr = e.empno and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 9: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< pump >< emp1 +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, rw r, emp1 n + WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |409 | +|1 | SUBPLAN SCAN |rw |1 |408 | +|2 | RECURSIVE UNION ALL| |1 |408 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |268 | +|9 | HASH JOIN | |10 |126 | +|10| TABLE SCAN |e |5 |42 | +|11| TABLE SCAN |r |1 |1 | +|12| TABLE SCAN |n |17 |39 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 9 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 10 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 11 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 12 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, rw r, emp1 n + WHERE e.empno = r.mgr and e.mgr = n.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 10: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< emp1 >< pump +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, emp1 n, rw r + WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |308 | +|1 | SUBPLAN SCAN |rw |1 |307 | +|2 | RECURSIVE UNION ALL| |1 |307 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |167 | +|9 | HASH JOIN | |1 |93 | +|10| TABLE SCAN |e |5 |42 | +|11| TABLE SCAN |n |17 |39 | +|12| TABLE SCAN |r |1 |1 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([e.MGR = cast(n.empno, DECIMAL(-1, -1))]), other_conds(nil) + 10 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM disemp e, emp1 n, rw r + WHERE e.mgr = n.empno and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 11: +## - recursive with RECURSIVE Query: Join Order tests +## emp1 >< disemp >< pump +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================== +|ID|OPERATOR |NAME|EST. ROWS|COST| +---------------------------------------------- +|0 |SORT | |1 |363 | +|1 | SUBPLAN SCAN |rw |1 |362 | +|2 | RECURSIVE UNION ALL| |1 |362 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |222 | +|9 | HASH JOIN | |1 |148 | +|10| TABLE SCAN |n |17 |39 | +|11| TABLE SCAN |e |5 |42 | +|12| TABLE SCAN |r |1 |1 | +============================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 9 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) + 10 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + 11 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + 12 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 12: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< disemp +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |2132| +|1 | RECURSIVE UNION ALL| |29 |2128| +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |2070| +|4 | TABLE SCAN |r |1 |1 | +|5 | TABLE SCAN |e |14 |39 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + 5 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| JONES | 7566 | 7839 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | +| SCOTT | 7788 | 7566 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | +| ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 13: +## - recursive with RECURSIVE Query: Join Order tests +## disemp >< pump +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([e.MGR = r.empno]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */ e.ename, e.mgr, e.empno + FROM disemp e, rw r + WHERE e.mgr = r.empno +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 14: +## - recursive with RECURSIVE Query: Join Order tests +## emp1 >< pump >< disemp +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, rw r, disemp e + WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------------------- +|0 |SORT | |1 |47529| +|1 | SUBPLAN SCAN |rw |1 |47529| +|2 | RECURSIVE UNION ALL | |1 |47528| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |47388| +|9 | NESTED-LOOP JOIN CARTESIAN| |3383 |3014 | +|10| TABLE SCAN |r |1 |1 | +|11| MATERIAL | |17 |89 | +|12| TABLE SCAN |n |17 |39 | +|13| TABLE SCAN |e |5 |42 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR], [r.mgr = e.EMPno]), other_conds(nil) + 9 - output([r.empno], [r.iters], [r.sal], [r.mgr], [cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([n.empno]), filter(nil) + 12 - output([n.empno]), filter(nil), + access([n.empno]), partitions(p0) + 13 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, rw r, disemp e + WHERE n.empno = e.mgr and r.mgr = e.empno and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 15: +## - recursive with RECURSIVE Query: Join Order tests +## pump >< emp1 >< disemp +## ======================================================================= +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, emp1 n, disemp e + WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +======================================================== +|ID|OPERATOR |NAME|EST. ROWS|COST | +-------------------------------------------------------- +|0 |SORT | |1 |47529| +|1 | SUBPLAN SCAN |rw |1 |47529| +|2 | RECURSIVE UNION ALL | |1 |47528| +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | HASH JOIN | |1 |47388| +|9 | NESTED-LOOP JOIN CARTESIAN| |3383 |3014 | +|10| TABLE SCAN |r |1 |1 | +|11| MATERIAL | |17 |89 | +|12| TABLE SCAN |n |17 |39 | +|13| TABLE SCAN |e |5 |42 | +======================================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + equal_conds([r.mgr = e.EMPno], [cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) + 9 - output([r.empno], [r.iters], [r.sal], [r.mgr], [cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + conds(nil), nl_params_(nil) + 10 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 11 - output([n.empno]), filter(nil) + 12 - output([n.empno]), filter(nil), + access([n.empno]), partitions(p0) + 13 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM rw r, emp1 n, disemp e + WHERE r.mgr = e.empno and n.empno = e.mgr and e.empno < e.mgr + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7499 | 7839 | 2 | 4450.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7521 | 7839 | 2 | 4100.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7654 | 7839 | 2 | 4100.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +## ======================================================================= +## Test Case 16: +## - recursive with RECURSIVE Query: Join Skew handling. No local filter +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |29 |219 | +|1 | RECURSIVE UNION ALL| |29 |215 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |28 |157 | +|4 | TABLE SCAN |e |14 |39 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.ENAME], [e.EMPno]), filter(nil), + access([e.MGR], [e.ENAME], [e.EMPno]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MILLER | 7934 | 7782 | +| JAMES | 7900 | 7698 | +| TURNER | 7844 | 7698 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | +| FORD | 7902 | 7566 | +| SCOTT | 7788 | 7566 | +| SMITH | 7369 | 7902 | +| ADAMS | 7876 | 7788 | ++--------+-------+------+ + +## ======================================================================= +## Test Case 17: +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter +## ======================================================================= +explain +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr and e.empno < e.mgr +) +SELECT ename, empno, mgr +FROM rw; +Query Plan +============================================= +|ID|OPERATOR |NAME|EST. ROWS|COST| +--------------------------------------------- +|0 |SUBPLAN SCAN |rw |11 |180 | +|1 | RECURSIVE UNION ALL| |11 |179 | +|2 | TABLE SCAN |e |1 |46 | +|3 | HASH JOIN | |10 |129 | +|4 | TABLE SCAN |e |5 |42 | +|5 | TABLE SCAN |r |1 |1 | +============================================= + +Outputs & filters: +------------------------------------- + 0 - output([rw.ename], [rw.empno], [rw.mgr]), filter(nil), + access([rw.ename], [rw.empno], [rw.mgr]) + 1 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 2 - output([e.ENAME], [e.MGR], [e.EMPno]), filter([e.JOB = 'PRESIDENT']), + access([e.JOB], [e.ENAME], [e.MGR], [e.EMPno]), partitions(p0) + 3 - output([e.ENAME], [e.MGR], [e.EMPno]), filter(nil), + equal_conds([r.empno = e.MGR]), other_conds(nil) + 4 - output([e.MGR], [e.EMPno], [e.ENAME]), filter([e.EMPno < e.MGR]), + access([e.MGR], [e.EMPno], [e.ENAME]), partitions(p0) + 5 - output([r.empno]), filter(nil), + access([r.empno]), partitions(nil) + + +with RECURSIVE rw (ename, mgr, empno) AS +( + SELECT ename, mgr, empno + FROM disemp e + WHERE job = 'PRESIDENT' + UNION ALL + SELECT /*+ PQ_SKEW (r) */ e.ename, e.mgr, e.empno + FROM rw r, disemp e + WHERE r.empno = e.mgr and e.empno < e.mgr +) +SELECT ename, empno, mgr +FROM rw; ++--------+-------+------+ +| ename | empno | mgr | ++--------+-------+------+ +| KING | 7839 | NULL | +| CLARK | 7782 | 7839 | +| BLAKE | 7698 | 7839 | +| JONES | 7566 | 7839 | +| MARTIN | 7654 | 7698 | +| WARD | 7521 | 7698 | +| ALLEN | 7499 | 7698 | ++--------+-------+------+ + +############################## +## section 4 额外添加recursive member变化 +############################## +create table t1(c1 int, c2 int, c3 int); +insert into t1 values(1, 2, 3); +insert into t1 values(4, 5, 6); +insert into t1 values(7, 8, 9); +insert into t1 values(10, 11, 12); +insert into t1 values(13, 14, 15); +insert into t1 values(16, 17, 18); +insert into t1 values(19, 20, 21); + +create table disemp1 ( + EMPno number, + ENAME varchar(30), + JOB varchar(30), + MGR number(4), + HIREDATE date, + SAL number(7,2), + COMM number(7,2), + DEPTNO number(2) +); + +INSERT INTO disemp1 values (7369,'SMITH','CLERK',7902, str_to_date('1980-11-17','%Y-%m-%d'),800,NULL, 20) ; +INSERT INTO disemp1 VALUES (7499, 'ALLEN','SALESMAN',7698,str_to_date('1981-01-20','%Y-%m-%d'),1600,300,30) ; +INSERT INTO disemp1 VALUES (7521,'WARD','SALESMAN',7698, str_to_date('1981-01-22','%Y-%m-%d'),1250, 500, 30) ; +INSERT INTO disemp1 VALUES (7566,'JONES','MANAGER',7839, str_to_date('1981-04-02','%Y-%m-%d'), 2975, NULL, 20) ; +INSERT INTO disemp1 VALUES (7654,'MARTIN','SALESMAN', 7698, str_to_date('1981-09-28','%Y-%m-%d'), 1250, 1400, 30) ; +INSERT INTO disemp1 VALUES (7698, 'BLAKE','MANAGER', 7839, str_to_date('1981-03-01','%Y-%m-%d'), 2850, NULL, 30) ; +INSERT INTO disemp1 VALUES (7782, 'CLARK','MANAGER', 7839, str_to_date('1981-06-09','%Y-%m-%d'), 2450, NULL, 10) ; +insert into disemp1 values (7788,'SCOTT','ANALYST', 7566, str_to_date('1987-04-19','%Y-%m-%d'), 3000, null, 20) ; +INSERT INTO disemp1 VALUES (7839, 'KING','PRESIDENT', NULL, str_to_date('1981-11-17','%Y-%m-%d'), 5000, NULL, 10) ; +INSERT INTO disemp1 VALUES (7844, 'TURNER','SALESMAN', 7698, str_to_date('1981-09-08','%Y-%m-%d'), 1500, 0, 30) ; +INSERT INTO disemp1 VALUES (7876, 'ADAMS','CLERK', 7788, str_to_date('1987-05-23','%Y-%m-%d'), 1100, NULL, 20) ; +INSERT INTO disemp1 VALUES (7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-11-03','%Y-%m-%d'), 950, NULL, 30) ; +INSERT INTO disemp1 VALUES (7902, 'FORD','ANALYST',7566, str_to_date('1981-11-03','%Y-%m-%d'), 3000, NULL, 20) ; +INSERT INTO disemp1 VALUES (7934,'MILLER','CLERK', 7782, str_to_date('1982-01-23','%Y-%m-%d'), 1300,NULL, 10) ; + +## 这个case 测试了subplan filter +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------- +|0 |SORT | |1 |404 | +|1 | SUBPLAN SCAN |rw |1 |404 | +|2 | RECURSIVE UNION ALL | |1 |404 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | NESTED-LOOP SEMI JOIN| |1 |265 | +|9 | HASH JOIN | |1 |218 | +|10| HASH JOIN | |1 |147 | +|11| TABLE SCAN |n |17 |39 | +|12| TABLE SCAN |e |1 |42 | +|13| TABLE SCAN |r |1 |1 | +|14| MATERIAL | |7 |47 | +|15| SUBPLAN SCAN |VIEW1|7 |45 | +|16| MERGE GROUP BY | |7 |44 | +|17| SORT | |7 |43 | +|18| TABLE SCAN |t1 |7 |38 | +================================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + conds([e.EMPno > VIEW1.c1]), nl_params_(nil) + 9 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 10 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) + 11 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + 12 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno = e.MGR]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + 13 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 14 - output([VIEW1.c1]), filter(nil) + 15 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 16 - output([cast(t1.c1, DECIMAL(11, 0))]), filter(nil), + group([t1.c1]), agg_func(nil) + 17 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 18 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +explain +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) and e.empno in (select e.empno from disemp1) + ) + SELECT * + FROM rw + ORDER BY 1, 3; +Query Plan +============================================================== +|ID|OPERATOR |NAME |EST. ROWS|COST| +-------------------------------------------------------------- +|0 |SORT | |1 |447 | +|1 | SUBPLAN SCAN |rw |1 |447 | +|2 | RECURSIVE UNION ALL | |1 |447 | +|3 | HASH JOIN | |1 |140 | +|4 | HASH JOIN | |1 |93 | +|5 | TABLE SCAN |e |5 |42 | +|6 | TABLE SCAN |n1 |17 |39 | +|7 | TABLE SCAN |n2 |17 |39 | +|8 | NESTED-LOOP SEMI JOIN CARTESIAN| |1 |307 | +|9 | NESTED-LOOP SEMI JOIN | |1 |267 | +|10| HASH JOIN | |1 |220 | +|11| HASH JOIN | |1 |149 | +|12| TABLE SCAN |n |17 |39 | +|13| TABLE SCAN |e |1 |44 | +|14| TABLE SCAN |r |1 |1 | +|15| MATERIAL | |7 |47 | +|16| SUBPLAN SCAN |VIEW1 |7 |45 | +|17| MERGE GROUP BY | |7 |44 | +|18| SORT | |7 |43 | +|19| TABLE SCAN |t1 |7 |38 | +|20| MATERIAL | |14 |41 | +|21| TABLE SCAN |disemp1|14 |38 | +============================================================== + +Outputs & filters: +------------------------------------- + 0 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), sort_keys([rw.empno, ASC], [rw.iters, ASC]) + 1 - output([rw.empno], [rw.mgr], [rw.iters], [rw.sal]), filter(nil), + access([rw.empno], [rw.mgr], [rw.iters], [rw.sal]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])], [UNION([4])]), filter(nil) + 3 - output([e.EMPno], [e.MGR], [1], [e.SAL]), filter(nil), + equal_conds([e.MGR = cast(n2.empno, DECIMAL(-1, -1))]), other_conds(nil) + 4 - output([e.EMPno], [e.MGR], [e.SAL]), filter(nil), + equal_conds([e.EMPno = cast(n1.empno, DECIMAL(-1, -1))]), other_conds(nil) + 5 - output([e.EMPno], [e.MGR], [e.SAL]), filter([e.EMPno < e.MGR]), + access([e.EMPno], [e.MGR], [e.SAL]), partitions(p0) + 6 - output([cast(n1.empno, DECIMAL(-1, -1))]), filter(nil), + access([n1.empno]), partitions(p0) + 7 - output([cast(n2.empno, DECIMAL(-1, -1))]), filter(nil), + access([n2.empno]), partitions(p0) + 8 - output([r.empno], [e.MGR], [r.iters + 1], [r.sal + e.SAL]), filter(nil), + conds(nil), nl_params_(nil) + 9 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL]), filter(nil), + conds([e.EMPno > VIEW1.c1]), nl_params_(nil) + 10 - output([r.empno], [e.MGR], [r.iters], [r.sal], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([e.EMPno = r.mgr]), other_conds(nil) + 11 - output([e.MGR], [e.SAL], [e.EMPno]), filter(nil), + equal_conds([cast(n.empno, DECIMAL(-1, -1)) = e.MGR]), other_conds(nil) + 12 - output([cast(n.empno, DECIMAL(-1, -1))]), filter(nil), + access([n.empno]), partitions(p0) + 13 - output([e.MGR], [e.EMPno], [e.SAL]), filter([e.EMPno = e.MGR], [e.EMPno = e.EMPno]), + access([e.MGR], [e.EMPno], [e.SAL]), partitions(p0) + 14 - output([r.mgr], [r.empno], [r.iters], [r.sal]), filter(nil), + access([r.mgr], [r.empno], [r.iters], [r.sal]), partitions(nil) + 15 - output([VIEW1.c1]), filter(nil) + 16 - output([VIEW1.c1]), filter(nil), + access([VIEW1.c1]) + 17 - output([cast(t1.c1, DECIMAL(11, 0))]), filter(nil), + group([t1.c1]), agg_func(nil) + 18 - output([t1.c1]), filter(nil), sort_keys([t1.c1, ASC]) + 19 - output([t1.c1]), filter(nil), + access([t1.c1]), partitions(p0) + 20 - output([1]), filter(nil) + 21 - output([1]), filter(nil), + access([disemp1.__pk_increment]), partitions(p0) + + +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) and e.empno in (select e.empno from disemp1) + ) + SELECT * + FROM rw + ORDER BY 1, 3; ++-------+------+-------+---------+ +| empno | mgr | iters | sal | ++-------+------+-------+---------+ +| 7369 | 7902 | 1 | 800.00 | +| 7499 | 7698 | 1 | 1600.00 | +| 7521 | 7698 | 1 | 1250.00 | +| 7566 | 7839 | 1 | 2975.00 | +| 7654 | 7698 | 1 | 1250.00 | +| 7698 | 7839 | 1 | 2850.00 | +| 7782 | 7839 | 1 | 2450.00 | ++-------+------+-------+---------+ + +drop database cte_st; diff --git a/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_bug_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_bug_mysql.result new file mode 100644 index 000000000..bd6844c06 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_bug_mysql.result @@ -0,0 +1,110 @@ +drop database if exists cte_st; +create database cte_st; +use cte_st; +## bugfix: https://work.aone.alibaba-inc.com/issue/37502128 +result_format: 4 +with cte1(c1, c2) as + (select 1, '0' from dual + union all select 2, '1' from dual + ), +cte2(c1, c2) as + (select '0', 1 from dual + union all select cte1.c2, cte1.c1 from cte2, cte1 where 10 = cte2.c1) +select * from cte2; +ERROR 42S02: Table doesn't exist + +WITH my_cte AS (SELECT 1 AS n UNION ALL SELECT 1+n FROM my_cte WHERE n<10 ) SELECT * FROM my_cte; +ERROR 42S02: Table doesn't exist + +WITH recursive my_cte AS (SELECT 1 AS n UNION ALL SELECT 1+n FROM my_cte WHERE n<10 ) SELECT * FROM my_cte; ++------+ +| n | ++------+ +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | +| 7 | +| 8 | +| 9 | +| 10 | ++------+ +WITH recursive my_cte AS (SELECT 1+n FROM my_cte WHERE n<10 UNION ALL SELECT 1 AS n) SELECT * FROM my_cte; +ERROR HY000: Recursive Common Table Expression should have one or more non-recursive query blocks followed by one or more recursive ones +WITH my_cte AS (SELECT 1+n FROM my_cte WHERE n<10 UNION ALL SELECT 1 AS n) SELECT * FROM my_cte; +ERROR 42S02: Table doesn't exist + + +##bugfix: https://work.aone.alibaba-inc.com/issue/37501730 +create table t1(deptno number, loc varchar(100)); +CREATE TABLE t2(EMPNO DECIMAL(4) UNIQUE,ENAME VARCHAR(10) NOT NULL,JOB VARCHAR(9),MGR DECIMAL(4),HIREDATE DATE,SAL DECIMAL(7,2),COMM DECIMAL(7,2),DEPTNO INT); +WITH +temp AS (SELECT e.deptno,e.loc FROM t1 e WHERE e.loc IN ('New York','ChiCaGo') ORDER BY e.deptno), +temp AS (SELECT p.deptno,p.job FROM t2 p WHERE p.job NOT IN ('CLERK','ANALYST') ORDER BY p.deptno) +SELECT e.deptno,e.loc,p.job FROM temp e,temp p WHERE e.deptno = p.deptno ORDER BY 1,2,3; +ERROR 42000: Not unique table/alias: 'temp' + +##bugfix: https://work.aone.alibaba-inc.com/issue/37715234 +CREATE TABLE employees ( + id INT PRIMARY KEY NOT NULL, + name VARCHAR(100) NOT NULL, + manager_id INT NULL, + INDEX (manager_id) +); +INSERT INTO employees VALUES(333, 'Yasmina', NULL); +INSERT INTO employees VALUES(198, 'John', 333); +INSERT INTO employees VALUES(692, 'Tarek', 333); +INSERT INTO employees VALUES(29, 'Pedro', 198); +INSERT INTO employees VALUES(4610, 'Sarah', 29); +INSERT INTO employees VALUES(72, 'Pierre', 29); +INSERT INTO employees VALUES(123, 'Adil', 692); + +## result not correct. https://aone.alibaba-inc.com/task/35657687 +WITH RECURSIVE employee_paths (id, name, path) AS +( + SELECT id, name, 1 + FROM employees + WHERE manager_id IS NULL + UNION ALL + SELECT e.id, e.name, CONCAT(ep.path, ',', e.id) + FROM employee_paths ep JOIN employees e + ON ep.id = e.manager_id +) +SELECT * FROM employee_paths ORDER BY name; ++------+---------+------+ +| id | name | path | ++------+---------+------+ +| 123 | Adil | 1 | +| 198 | John | 1 | +| 29 | Pedro | 1 | +| 72 | Pierre | 1 | +| 4610 | Sarah | 1 | +| 692 | Tarek | 1 | +| 333 | Yasmina | 1 | ++------+---------+------+ + +WITH RECURSIVE employee_paths (id, name, path) AS +( + SELECT id, name, CAST(id AS CHAR(200)) + FROM employees + WHERE manager_id IS NULL + UNION ALL + SELECT e.id, e.name, CONCAT(ep.path, ',', e.id) + FROM employee_paths AS ep JOIN employees AS e + ON ep.id = e.manager_id +) +SELECT * FROM employee_paths ORDER BY name; ++------+---------+-----------------+ +| id | name | path | ++------+---------+-----------------+ +| 123 | Adil | 333,692,123 | +| 198 | John | 333,198 | +| 29 | Pedro | 333,198,29 | +| 72 | Pierre | 333,198,29,72 | +| 4610 | Sarah | 333,198,29,4610 | +| 692 | Tarek | 333,692 | +| 333 | Yasmina | 333 | ++------+---------+-----------------+ +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_cycle_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_cycle_mysql.result similarity index 94% rename from test/mysql_test/test_suite/with_clause/r/mysql/recursive_cycle_mysql.result rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_cycle_mysql.result index 7b2eaa8b3..7caae8cac 100644 --- a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_cycle_mysql.result +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_cycle_mysql.result @@ -1,4 +1,7 @@ -drop table EMP,DEPT,emp1,emp2; +drop database if exists cte_st; +create database cte_st; +use cte_st; +result_format: 4 create table EMP ( EMPno number, ENAME varchar(30), @@ -12,7 +15,7 @@ create table EMP ( create table DEPT( DEPTNO number(2), - DNAME(45), + DNAME char(45), LOC varchar(39) ) ; @@ -51,12 +54,11 @@ INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-12-03' INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-12-03','%Y-%m-%d'), 3000, NULL, 20) ; INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-06-23','%Y-%m-%d'), 1300,NULL, 10) ; - INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', '%Y-%m-%d'), 800, null, 20); INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); @@ -91,7 +93,7 @@ INSERT INTO emp2 values (4002, 'SMITH', 'CLERK', 5002, str_to_date('1980-12-17', INSERT INTO emp2 values (5003, 'ALLEN', 'SALESMAN', 6002, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); INSERT INTO emp2 values (5004, 'WARD', 'SALESMAN', 6002, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); INSERT INTO emp2 values (6001, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp2 values (5005, 'MARTIN', 'SALESMAN', 6002, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp2 values (5005, 'MARTIN', 'SALESMAN', 6002, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); INSERT INTO emp2 values (6002, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); INSERT INTO emp2 values (6003, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); INSERT INTO emp2 values (5001, 'SCOTT', 'ANALYST', 6001, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); @@ -103,14 +105,12 @@ INSERT INTO emp2 values (5002, 'FORD', 'ANALYST', 6001, str_to_date('1981-12-03' INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); - ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: no cycle clause used in query in acyclic data +## - recursive with RECURSIVE Query: no cycle clause used in query in acyclic data ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -141,7 +141,6 @@ FROM rw; | ADAMS | 7876 | 7788 | +--------+-------+------+ - update emp set mgr = 7788 where ename = 'KING'; drop table emp1; @@ -171,7 +170,7 @@ INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); @@ -206,7 +205,7 @@ INSERT INTO emp2 values (4002, 'SMITH', 'CLERK', 5002, str_to_date('1980-12-17', INSERT INTO emp2 values (5003, 'ALLEN', 'SALESMAN', 6002, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); INSERT INTO emp2 values (5004, 'WARD', 'SALESMAN', 6002, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); INSERT INTO emp2 values (6001, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp2 values (5005, 'MARTIN', 'SALESMAN', 6002, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp2 values (5005, 'MARTIN', 'SALESMAN', 6002, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); INSERT INTO emp2 values (6002, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); INSERT INTO emp2 values (6003, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); INSERT INTO emp2 values (5001, 'SCOTT', 'ANALYST', 6001, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); @@ -217,18 +216,14 @@ INSERT INTO emp2 values (5007, 'JAMES', 'CLERK', 6002, str_to_date('1981-12-03', INSERT INTO emp2 values (5002, 'FORD', 'ANALYST', 6001, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); ---enable_warnings - ## ======================================================================= ## Test Case 2: -## - recursive WITH Query(Negative): cycle clause not used in query with +## - recursive with RECURSIVE Query(Negative): cycle clause not used in query with RECURSIVE ## cyclic data ## ======================================================================= - /* add loop from scott back to king in emp */ update emp set mgr = 7788 where ename = 'KING'; - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -240,8 +235,7 @@ WITH rw (ename, mgr, empno) AS ) SELECT ename, empno, mgr FROM rw; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query - +ERROR HY000: cycle detected while executing recursive WITH query drop table emp1; drop table emp2; @@ -270,7 +264,7 @@ INSERT INTO emp1 values (7369, 'SMITH', 'CLERK', 7902, str_to_date('1980-12-17', INSERT INTO emp1 values (7499, 'ALLEN', 'SALESMAN', 7698, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); INSERT INTO emp1 values (7521, 'WARD', 'SALESMAN', 7698, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); INSERT INTO emp1 values (7566, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp1 values (7654, 'MARTIN', 'SALESMAN', 7698, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); INSERT INTO emp1 values (7698, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); INSERT INTO emp1 values (7782, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); INSERT INTO emp1 values (7788, 'SCOTT', 'ANALYST', 7566, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); @@ -305,7 +299,7 @@ INSERT INTO emp2 values (4002, 'SMITH', 'CLERK', 5002, str_to_date('1980-12-17', INSERT INTO emp2 values (5003, 'ALLEN', 'SALESMAN', 6002, str_to_date('1981-02-20', '%Y-%m-%d'), 1600, 300, 30); INSERT INTO emp2 values (5004, 'WARD', 'SALESMAN', 6002, str_to_date('1981-02-22', '%Y-%m-%d'), 1250, 500, 30); INSERT INTO emp2 values (6001, 'JONES', 'MANAGER', 7839, str_to_date('1981-08-02', '%Y-%m-%d'), 2975, null, 20); -INSERT INTO emp2 values (5005, 'MARTIN', 'SALESMAN', 6002, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); +INSERT INTO emp2 values (5005, 'MARTIN', 'SALESMAN', 6002, str_to_date('1981-09-28', '%Y-%m-%d'), 1250, 1400, 30); INSERT INTO emp2 values (6002, 'BLAKE', 'MANAGER', 7839, str_to_date('1981-05-01', '%Y-%m-%d'), 2850, null, 30); INSERT INTO emp2 values (6003, 'CLARK', 'MANAGER', 7839, str_to_date('1981-06-09' , '%Y-%m-%d'), 2450, null, 10); INSERT INTO emp2 values (5001, 'SCOTT', 'ANALYST', 6001, str_to_date('1987-08-19', '%Y-%m-%d'), 3000, null, 20); @@ -316,17 +310,14 @@ INSERT INTO emp2 values (5007, 'JAMES', 'CLERK', 6002, str_to_date('1981-12-03', INSERT INTO emp2 values (5002, 'FORD', 'ANALYST', 6001, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); - update emp2 set mgr = 5001 where ename = 'KING'; - ## ======================================================================= -## Test Case 3: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles e.mgr < e.empno +## Test Case 3: +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +## Pruning predicate added that results in no cycles e.mgr < e.empno ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -336,7 +327,7 @@ WITH rw (ename, mgr, empno) AS FROM rw r, emp2 e WHERE r.empno = e.mgr and e.mgr < e.empno ) -SELECT ename, empno, mgr +SELECT ename, empno, mgr FROM rw; +-------+-------+------+ | ename | empno | mgr | @@ -345,12 +336,11 @@ FROM rw; +-------+-------+------+ ## ======================================================================= -## Test Case 4: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles e.mgr > e.empno +## Test Case 4: +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +## Pruning predicate added that results in no cycles e.mgr > e.empno ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -382,12 +372,11 @@ FROM rw; +--------+-------+------+ ## ======================================================================= -## Test Case 5: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles r.empno < e.empno +## Test Case 5: +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +## Pruning predicate added that results in no cycles r.empno < e.empno ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -397,7 +386,7 @@ WITH rw (ename, mgr, empno) AS FROM rw r, emp2 e WHERE r.empno = e.mgr and r.empno < e.empno ) -SELECT ename, empno, mgr +SELECT ename, empno, mgr FROM rw; +-------+-------+------+ | ename | empno | mgr | @@ -406,12 +395,11 @@ FROM rw; +-------+-------+------+ ## ======================================================================= -## Test Case 6: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles r.empno > e.empno +## Test Case 6: +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +## Pruning predicate added that results in no cycles r.empno > e.empno ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -442,6 +430,6 @@ FROM rw; | ADAMS | 4001 | 5001 | +--------+-------+------+ - +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_join_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_join_mysql.result similarity index 91% rename from test/mysql_test/test_suite/with_clause/r/mysql/recursive_join_mysql.result rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_join_mysql.result index 1c20d7c61..64018d297 100644 --- a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_join_mysql.result +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_join_mysql.result @@ -1,4 +1,7 @@ -drop table EMP; +drop database if exists cte_st; +create database cte_st; +use cte_st; +result_format: 4 create table EMP ( EMPno number, ENAME VARCHAR(30), @@ -25,7 +28,6 @@ INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-12-03' INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-12-03','%Y-%m-%d'), 3000, NULL, 20) ; INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-01-23','%Y-%m-%d'), 1300,NULL, 10) ; -drop table emp1; CREATE TABLE emp1 ( empno VARCHAR(4000) NOT NULL, ename VARCHAR(14), @@ -68,13 +70,11 @@ INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01' INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); -result_format: 4 ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: Nested Loop Join +## - recursive with RECURSIVE Query: Nested Loop Join ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -90,27 +90,26 @@ FROM rw; | ename | empno | mgr | +--------+-------+------+ | KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | | JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | | SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | | ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | +--------+-------+------+ ## ======================================================================= ## Test Case 2: -## - recursive WITH Query: SORT MERGE Join +## - recursive with RECURSIVE Query: SORT MERGE Join ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -126,27 +125,26 @@ FROM rw; | ename | empno | mgr | +--------+-------+------+ | KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | | JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | | SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | | ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | +--------+-------+------+ ## ======================================================================= ## Test Case 3: -## - recursive WITH Query: Hash Join +## - recursive with RECURSIVE Query: Hash Join ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -179,10 +177,9 @@ FROM rw; ## ======================================================================= ## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch +## - recursive with RECURSIVE Query: Join in Initialisation Branch ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM emp e, emp d @@ -258,11 +255,10 @@ FROM rw; ## ======================================================================= ## Test Case 6: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on build side and fits in memory ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -295,11 +291,10 @@ FROM rw; ## ======================================================================= ## Test Case 7: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on probe side and fits in memory ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -333,11 +328,10 @@ FROM rw; ## ======================================================================= ## 测试8-15都是在测试join的顺序或者hint的顺序 ## Test Case 8: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp >< emp1 ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -367,11 +361,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 9: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< pump >< emp1 ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -401,11 +394,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 10: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< emp1 >< pump ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -435,11 +427,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 11: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< emp >< pump ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -469,11 +460,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 12: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -489,28 +479,27 @@ FROM rw; | ename | empno | mgr | +--------+-------+------+ | KING | 7839 | NULL | -| CLARK | 7782 | 7839 | -| BLAKE | 7698 | 7839 | | JONES | 7566 | 7839 | -| MILLER | 7934 | 7782 | -| JAMES | 7900 | 7698 | -| TURNER | 7844 | 7698 | -| MARTIN | 7654 | 7698 | -| WARD | 7521 | 7698 | -| ALLEN | 7499 | 7698 | -| FORD | 7902 | 7566 | +| BLAKE | 7698 | 7839 | +| CLARK | 7782 | 7839 | | SCOTT | 7788 | 7566 | -| SMITH | 7369 | 7902 | +| FORD | 7902 | 7566 | +| ALLEN | 7499 | 7698 | +| WARD | 7521 | 7698 | +| MARTIN | 7654 | 7698 | +| TURNER | 7844 | 7698 | +| JAMES | 7900 | 7698 | +| MILLER | 7934 | 7782 | | ADAMS | 7876 | 7788 | +| SMITH | 7369 | 7902 | +--------+-------+------+ ## ======================================================================= ## Test Case 13: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< pump ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -543,11 +532,10 @@ FROM rw; ## ======================================================================= ## Test Case 14: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< pump >< emp ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -577,11 +565,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 15: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp1 >< emp ## ======================================================================= - -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -611,10 +598,9 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter +## - recursive with RECURSIVE Query: Join Skew handling. No local filter ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -647,10 +633,9 @@ FROM rw; ## ======================================================================= ## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter ## ======================================================================= - -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -672,4 +657,5 @@ FROM rw; | MARTIN | 7654 | 7698 | | WARD | 7521 | 7698 | | ALLEN | 7499 | 7698 | -+--------+-------+------+ \ No newline at end of file ++--------+-------+------+ +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_mysql.result similarity index 79% rename from test/mysql_test/test_suite/with_clause/r/mysql/recursive_mysql.result rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_mysql.result index c830704d9..feb359252 100644 --- a/test/mysql_test/test_suite/with_clause/r/mysql/recursive_mysql.result +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_mysql.result @@ -1,4 +1,7 @@ -drop table emp; +drop database if exists cte_st; +create database cte_st; +use cte_st; +result_format: 4 create table emp (id int, name varchar(20), leaderid int); insert into emp values(1, 'A', '0'); insert into emp values(2, 'AA', '1'); @@ -13,7 +16,6 @@ insert into emp values(10, 'AAAB', '5'); insert into emp values(11, 'AAAC', '5'); insert into emp values(12, 'AAAA', '5'); -drop table dsemp; create table dsemp (id int, name varchar(20), leaderid int) partition by hash (id) partitions 3; insert into dsemp values(1, 'A', '0'); insert into dsemp values(2, 'AA', '1'); @@ -28,7 +30,6 @@ insert into dsemp values(10, 'AAAB', '5'); insert into dsemp values(11, 'AAAC', '5'); insert into dsemp values(12, 'AAAA', '5'); -drop table t1; create table t1(c1 int, c2 int, c3 int); insert into t1 values(1, 2, 3); insert into t1 values(4, 5, 6); @@ -38,7 +39,6 @@ insert into t1 values(13, 14, 15); insert into t1 values(16, 17, 18); insert into t1 values(19, 20, 21); -drop table t2; create table t2 (c1 int, c2 int, c3 int); insert into t2 values(1,1,3); insert into t2 values(2,2,3); @@ -46,19 +46,15 @@ insert into t2 values(3,3,3); insert into t2 values(4,4,3); insert into t2 values(5,5,3); -drop table t44; create table t44 (c1 int, c2 int, c3 int); insert into t44 values(1,1,3); insert into t44 values(2,2,3); insert into t44 values(3,3,3); -drop table insert_t; create table insert_t (c1 int, c2 int, c3 int); -drop table t3; create table t3(c1 int primary key, c2 int, c3 varchar(32)) partition by hash (c1) partitions 3; -drop table troot; create table troot(c1 int primary key, c2 int, c3 int unique); insert into troot values(1, 0, -1); insert into troot values(2, 1, -2); @@ -74,7 +70,6 @@ insert into troot values(11, 10, -11); insert into troot values(12, 7, -12); insert into troot values(13, 4, -13); -drop table t4; create table t4(id int, value char(10), parent_id int); insert into t4 values(1, 'A', NULL); insert into t4 values(2, 'B', 1); @@ -85,7 +80,6 @@ insert into t4 values(6, 'F', 2); insert into t4 values(7, 'G', 4); insert into t4 values(8, 'H', 6); -drop table z; create table z(zc int); insert into z values(1); insert into z values(2); @@ -107,28 +101,25 @@ insert into z values(9); ## PART 0 cte结果正确性验证 ## PART 1 cte出现在normal型查询语句中 ## PART 2 cte出现在set型查询语句中 -## PART 3 伪列出现在各个位置中 -## PART 4 关于数学的复杂case +## PART 3 关于数学的复杂case ## section three cte能够出现的句式 ## PART 1 insert into ## PART 2 select when ## PART 3 delete from ############################## - ############################## ## section one ## PART 1 定义表名的限制 ############################## - ## PART 1.1 表名,列名不能是保留关键字,可以是分保留关键字 -WITH explain(a) as (select 1 from dual union all select a+1 from explain where a+1 < 10) select * from explain; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'explain(a) as (select 1 from dual union all select a+1 from explain where a+1 < ' at line 1 +with RECURSIVE explain(a) as (select 1 from dual union all select a+1 from explain where a+1 < 10) select * from explain; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'explain(a) as (select 1 from dual union all select a+1 from explain where a+1 < ' at line 1 -WITH cte(explain) as (select 1 from dual union all select explain+1 from cte where explain+1 < 10) select * from cte; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'explain) as (select 1 from dual union all select explain+1 from cte where explai' at line 1 +with RECURSIVE cte(explain) as (select 1 from dual union all select explain+1 from cte where explain+1 < 10) select * from cte; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'explain) as (select 1 from dual union all select explain+1 from cte where explai' at line 1 ## PART 1.2 允许与已有的表重名 -WITH t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) select * from t4; +with RECURSIVE t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) select * from t4; +------+ | a | +------+ @@ -146,15 +137,12 @@ WITH t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) s ############################## ## PART 2 单个的定义 ############################## - ## PART 2.1 定义列名重复 -## 32049. 00000 - "duplicate name found in column alias list for WITH clause" ---error 32049 -with cte(a,a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -ERROR 5751 (HY000): duplicate name found in column alias list for WITH clause +with RECURSIVE cte(a,a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +ERROR HY000: duplicate name found in column alias list for WITH clause ## PART 2.2.1 定义列数量与查询产生列一致或不一致 -with cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +with RECURSIVE cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +------+------+ | a | b | +------+------+ @@ -169,30 +157,26 @@ with cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where | 9 | 9 | +------+------+ -## 32038. 00000 - "number of WITH clause column names does not match number of elements in select list" -with cte(a,b,c) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list - -with cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -ERROR 5740 (HY000): number of WITH clause column names does not match number of elements in select list +with RECURSIVE cte(a,b,c) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +ERROR HY000: number of WITH clause column names does not match number of elements in select list +with RECURSIVE cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +ERROR HY000: number of WITH clause column names does not match number of elements in select list ## PART 2.2.2 不使用定义列使用原来的列 -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as ( - select c1,c2,c3 from t1 where t1.c1 < 20 - union all + select c1,c2,c3 from t1 where t1.c1 < 20 + union all select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 ) select c1,c2,c3 from cte; -ERROR 1054 (42S22): Unknown column 'c1' in 'field list' - +ERROR 42S22: Unknown column 'c1' in 'field list' ############################## ## PART 3 多个的定义 ############################## - ## 混合递归和非递归,前面的cte对后面的可见 -with cte as (select * from t1) , - cte_recursive (n) as (select 1 from dual union all select n+1 from cte_recursive where n < 23) +with RECURSIVE cte as (select * from t1) , + cte_recursive (n) as (select 1 from dual union all select n+1 from cte_recursive where n < 23) select (select count(*) from cte_recursive) from t1; +--------------------------------------+ | (select count(*) from cte_recursive) | @@ -206,8 +190,8 @@ select (select count(*) from cte_recursive) from t1; | 23 | +--------------------------------------+ -with cte(n) as (select c1 from t1) , - cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) +with RECURSIVE cte(n) as (select c1 from t1) , + cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) select * from cte_recursive; +------+ | n | @@ -222,8 +206,8 @@ select * from cte_recursive; | 20 | +------+ -with cte(n) as (select c1 from t1) , - cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) +with RECURSIVE cte(n) as (select c1 from t1) , + cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte_recursive) from t1; +--------------------------------------+ | (select count(*) from cte_recursive) | @@ -237,16 +221,15 @@ select (select count(*) from cte_recursive) from t1; | 8 | +--------------------------------------+ -## PART 3.1 前面的定义引用后面的,后面的引用前面的 -WITH - cte1 (a, b) AS (SELECT c, d FROM cte2), +## PART 3.1 +with RECURSIVE + cte1 (a, b) AS (SELECT c, d FROM cte2), cte2 (c, d) AS (SELECT c21, c22 FROM t2) SELECT b, d FROM cte1 JOIN cte2 on cte1.a = cte2.c; -ERROR 1146 (42S02): Table 'test.cte2' does not exist +ERROR 42S02: Table 'cte_st.cte2' doesn't exist - -with +with RECURSIVE cte1 AS (select c1 from t1), cte2 AS (select c1 from cte1) select * from cte1; @@ -263,9 +246,9 @@ select * from cte1; +------+ ## PART 3.2.1 直接嵌套定义,MySQL支持这样的直接嵌套 -with - cte1 AS ( - with cte2 AS (select c1 from t1) +with RECURSIVE + cte1 AS ( + with RECURSIVE cte2 AS (select c1 from t1) select c1 from cte2 ) select c1 from cte1; @@ -281,9 +264,9 @@ select c1 from cte1; | 19 | +------+ -with - cte1 (cte1col) AS ( - with cte2 (cte2col) AS (select c1 from t1) +with RECURSIVE + cte1 (cte1col) AS ( + with RECURSIVE cte2 (cte2col) AS (select c1 from t1) select cte2col from cte2 ) select cte1col from cte1; @@ -299,9 +282,9 @@ select cte1col from cte1; | 19 | +---------+ -with - cte1 (cte1col) AS ( - with cte2 (cte2col1, cte2col2) AS (select c1, c2 from t1) +with RECURSIVE + cte1 (cte1col) AS ( + with RECURSIVE cte2 (cte2col1, cte2col2) AS (select c1, c2 from t1) select cte2col2 from cte2 ) select cte1col from cte1; @@ -318,16 +301,14 @@ select cte1col from cte1; +---------+ ## PART 3.2.2 在子查询中进行嵌套 -## 32034. 00000 - "unsupported use of WITH clause" ---error 32034 -with cte(a,b) as (select * from (with cteb(a, b) as (select c1, c2 from t1 union all select c+1, d+1 from cteb where c < 100) select * from cteb) bac) select * from cte; -ERROR 1054 (42S22): Unknown column 'c' in 'where clause' +with RECURSIVE cte(a,b) as (select * from (with RECURSIVE cteb(a, b) as (select c1, c2 from t1 union all select c+1, d+1 from cteb where c < 100) select * from cteb) bac) select * from cte; +ERROR 42S22: Unknown column 'c' in 'where clause' -with cteb(a,b) as +with RECURSIVE cteb(a,b) as ( select c1, c2 from t1 union all select a+1, b+1 from cteb where a < 100 ), -cte(c,d) as +cte(c,d) as ( select * from cteb bac ) @@ -975,7 +956,7 @@ select * from cte; +------+------+ ## PART 3.2.3 测试能不能正确解析普通的union all -with cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (select 1 from dual union all select * from cte) select * from cte_1; +with RECURSIVE cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (select 1 from dual union all select * from cte) select * from cte_1; +------+ | b | +------+ @@ -987,56 +968,47 @@ with cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (s ############################## ## PART 4 subquery的变化 ############################## - ## PART 4.1.0 subquery的变化(限制) ## 递归的句式主要变化在左支可以很负责,右支作join的的表可以是子查询,这个子查询可以写的 ## 非常的复杂 ## 递归cte只能有两个入口 ---error 32041 -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; -ERROR 5743 (HY000): UNION ALL operation in recursive WITH clause must have only two branches +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; +ERROR HY000: UNION ALL operation in recursive WITH clause must have only two branches ## 递归必须包含union all ---error 32040 -with cte(n) AS ( select 1 from cte) select * from cte; -ERROR 5742 (HY000): recursive WITH clause must use a UNION ALL operation +with RECURSIVE cte(n) AS ( select 1 from cte) select * from cte; +ERROR HY000: recursive WITH clause must use a UNION ALL operation set @@ob_query_timeout=1000000; -##32486. 00000 - "unsupported operation in recursive branch of recursive WITH clause " ---error 32486 -with cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; -ERROR 5758 (HY000): unsupported operation in recursive branch of recursive WITH clause +with RECURSIVE cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; +ERROR HY000: unsupported operation in recursive branch of recursive WITH clause set @@ob_query_timeout=10000000; ##递归查询只允许有两个入口 ---error 32041 -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 union all select n+1 from cte where n < 2) select * from cte; -ERROR 5743 (HY000): UNION ALL operation in recursive WITH clause must have only two branches +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 union all select n+1 from cte where n < 2) select * from cte; +ERROR HY000: UNION ALL operation in recursive WITH clause must have only two branches ---error 32034 -with cte(n) as (select 1 from dual union all select c1 from t1 union all (with cte(n) as (select c1 from t1) select * from cte)) select * from cte; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query +with RECURSIVE cte(n) as (select 1 from dual union all select c1 from t1 union all (with RECURSIVE cte(n) as (select c1 from t1) select * from cte)) select * from cte; +ERROR HY000: cycle detected while executing recursive WITH query ---error 32042 -with cte(n) as (select n from (select 1 from dual union all select n+1 from cte) tmp) select * from cte; -ERROR 5744 (HY000): recursive WITH clause must reference itself directly in one of the UNION ALL branches +with RECURSIVE cte(n) as (select n from (select 1 from dual union all select n+1 from cte) tmp) select * from cte; +ERROR HY000: recursive WITH clause must reference itself directly in one of the UNION ALL branches ## 不能出现在right join的左边,left join的右边,full join的两边 -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte right join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; -ERROR 5759 (HY000): unsupported join in recursive WITH query -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 left join cte on cte.n < 3 and t2.c1 < 22) select * from cte; -ERROR 5759 (HY000): unsupported join in recursive WITH query -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 full join cte on cte.n < 3 and t2.c1 < 22) select * from cte; -ERROR 5759 (HY000): unsupported join in recursive WITH query -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte full join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; -ERROR 5759 (HY000): unsupported join in recursive WITH query +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte right join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; +ERROR HY000: unsupported join in recursive WITH query +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 left join cte on cte.n < 3 and t2.c1 < 22) select * from cte; +ERROR HY000: unsupported join in recursive WITH query +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 full join cte on cte.n < 3 and t2.c1 < 22) select * from cte; +ERROR HY000: unsupported join in recursive WITH query +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte full join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; +ERROR HY000: unsupported join in recursive WITH query set @@ob_query_timeout=10000000; - ## PART 4.2 左支不停的变化 ## 带有where -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; +------+------+ @@ -1054,7 +1026,7 @@ select c,d from cte2; | 10 | 11 | +------+------+ -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where c1+'1' <= 3 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; +------+------+ @@ -1073,7 +1045,7 @@ select c,d from cte2; +------+------+ ## 带有group -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 group by c1,c2 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; +------+------+ @@ -1107,7 +1079,7 @@ select c,d from cte2; +------+------+ ## 带有having -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where t1.c1 > 5 union all select c+1, d+1 from cte2 where c < 30) select c,d from cte2; +------+------+ @@ -1206,9 +1178,7 @@ select c,d from cte2; +------+------+ ## 带有order ---error 900 ---error 900 -with +with RECURSIVE cte2(c,d) AS ( select c1, c2 + 1 as c3 from t1 order by c2 union all select c+1, d+1 from cte2 where c < 30) select c,d from cte2; +------+------+ @@ -1363,7 +1333,7 @@ select c,d from cte2; | 30 | 32 | +------+------+ -with +with RECURSIVE cte2(c,d) AS (select t1.c1, t2.c2 from t1 left join t2 on t1.c1=t2.c1 order by t1.c1 union all select c+1, d+1 from cte2 where c < 30) select c from cte2; +------+ @@ -1518,9 +1488,8 @@ select c from cte2; | 30 | +------+ - ## PART 4.3 右支不停的变化 -with +with RECURSIVE cte(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte, t2 where t2.c1 = c and t2.c2 > some (select c1 from t44 t99 group by c1)) select * from cte; +------+------+ @@ -1529,7 +1498,7 @@ select * from cte; | 1 | 2 | +------+------+ -with +with RECURSIVE cte(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte, t2 where t2.c1 = c and t2.c2 > some (select c1 from t44 t99 group by c1)) select * from cte; +------+------+ @@ -1538,10 +1507,9 @@ select * from cte; | 1 | 2 | +------+------+ -#递归cte中间表与已有的表重名 create table ex (c1 int, c2 int); -with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +with RECURSIVE ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +------+------+ | c1 | c2 | +------+------+ @@ -1552,7 +1520,7 @@ with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex wh | 5 | 5 | +------+------+ -with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +with RECURSIVE ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +------+------+ | c1 | c2 | +------+------+ @@ -1563,14 +1531,12 @@ with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex wh | 5 | 5 | +------+------+ - ############################## ## section two cte的使用 ############################## - ## PART 0 cte结果正确性验证 ## 基础case -with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select n from cte; +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select n from cte; +------+ | n | +------+ @@ -1599,7 +1565,7 @@ with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) s | 23 | +------+ -with cte (a,b,c) as ( select id, name, leaderid from emp where emp.id = 1 union all select emp.id ,emp.name, emp.leaderid from emp, cte where emp.leaderid = cte.a ) select * from cte; +with RECURSIVE cte (a,b,c) as ( select id, name, leaderid from emp where emp.id = 1 union all select emp.id ,emp.name, emp.leaderid from emp, cte where emp.leaderid = cte.a ) select * from cte; +------+------+------+ | a | b | c | +------+------+------+ @@ -1617,13 +1583,11 @@ with cte (a,b,c) as ( select id, name, leaderid from emp where emp.id = 1 | 8 | AAA | 7 | +------+------+------+ - ## 与MySQL结果进行核对,验证正确性,句式1 - -with cte( id, val, lev) as ( - select id, value , 0 as lev from t4 where parent_id is null - union all - select t4.id, t4.value, cte.lev+1 from cte join t4 on t4.parent_id=cte.id) +with RECURSIVE cte( id, val, lev) as ( + select id, value , 0 as lev from t4 where parent_id is null + union all + select t4.id, t4.value, cte.lev+1 from cte join t4 on t4.parent_id=cte.id) select * from cte; +------+------+------+ | id | val | lev | @@ -1639,22 +1603,21 @@ select * from cte; +------+------+------+ ## 与MySQL结果进行核对,验证正确性,句式3 - -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as ( - select c1,c2,c3 from t1 where t1.c1 < 20 - union all + select c1,c2,c3 from t1 where t1.c1 < 20 + union all select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 ) select * from cte; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query +ERROR HY000: cycle detected while executing recursive WITH query ## 与MySQL结果进行核对,验证正确性,句式4 -with cte (a,b,c) as +with RECURSIVE cte (a,b,c) as ( select id, name, leaderid from emp where emp.id = 1 union all select emp.id ,emp.name, emp.leaderid from emp, cte where emp.leaderid = cte.a -) +) select * from cte; +------+------+------+ | a | b | c | @@ -1674,103 +1637,95 @@ select * from cte; +------+------+------+ ## join hint ---error 32044 -with cte(n) as +with RECURSIVE cte(n) as ( select /*+NO_USE_HASH(t1,t2)*/ t1.c1 from t1, t2 where t1.c1 = t2.c1 union all select t1.c1 from cte, t1 where t1.c1 = cte.n -) +) select * from cte; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query +ERROR HY000: cycle detected while executing recursive WITH query - -## 结果正确 -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as ( - select c1,c2,c3 from t1 where t1.c1 < 20 - union all - select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10) + select c1,c2,c3 from t1 where t1.c1 < 20 + union all + select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10) select count(distinct cte.a), avg(distinct cte.b) from cte where cte.c < 10; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query - +ERROR HY000: cycle detected while executing recursive WITH query ## PART 1 cte出现在normal型查询语句中 ## PART 1.1 最基本用法(单表) ## 最简单的使用方法 - -with cte as (select * from t1) select ( -with cte(col1, col2, col3) as(select * from t2) select count(*) from cte +with RECURSIVE cte as (select * from t1) select ( +with RECURSIVE cte(col1, col2, col3) as(select * from t2) select count(*) from cte ) from t1; -+------------------------------------------------------------------------------+ ++----------------------------------------------------------------------------------------+ | ( -with cte(col1, col2, col3) as(select * from t2) select count(*) from cte +with RECURSIVE cte(col1, col2, col3) as(select * from t2) select count(*) from cte ) | -+------------------------------------------------------------------------------+ -| 5 | -| 5 | -| 5 | -| 5 | -| 5 | -| 5 | -| 5 | -+------------------------------------------------------------------------------+ ++----------------------------------------------------------------------------------------+ +| 5 | +| 5 | +| 5 | +| 5 | +| 5 | +| 5 | +| 5 | ++----------------------------------------------------------------------------------------+ - ---error 32044 -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as ( -select c1,c2,c3 from t1 where t1.c1 < 20 -union all +select c1,c2,c3 from t1 where t1.c1 < 20 +union all select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 ) select a, b, c from cte; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query +ERROR HY000: cycle detected while executing recursive WITH query -## 主句含有order + 对伪列排序序 ---error 32044 -with cte(a,b,c) as +## 主句含有order + 对伪列排序序 +with RECURSIVE cte(a,b,c) as ( -select c1,c2,c3 from t1 where t1.c1 < 20 -union all +select c1,c2,c3 from t1 where t1.c1 < 20 +union all select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 ) select a, b, c from cte order by a; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query +ERROR HY000: cycle detected while executing recursive WITH query ## 对主句中的cte取别名后看看能否继续使用+在in中使用+where -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as ( -select c1,c2,c3 from t1 where t1.c1 < 20 -union all +select c1,c2,c3 from t1 where t1.c1 < 20 +union all select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 ) select z1.a from cte z1, t2 where z1.a in (1,4,7,11) and z1.a = t2.c2; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query +ERROR HY000: cycle detected while executing recursive WITH query ## 重命名的列出现在order+where中 -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as ( -select c1,c2,c3 from t1 where t1.c1 < 20 -union all +select c1,c2,c3 from t1 where t1.c1 < 20 +union all select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 ) select a from cte where a in (1,4,11) order by a; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query +ERROR HY000: cycle detected while executing recursive WITH query ## 别名列和原本列的名字一样 -with cte(c1,c2,c3) as +with RECURSIVE cte(c1,c2,c3) as ( -select c1,c2,c3 from t1 where t1.c1 < 20 -union all +select c1,c2,c3 from t1 where t1.c1 < 20 +union all select c1,c2,c3 from t1, cte where cte.c1 = t1.c1 and cte.c3 < 10 ) select c2 from cte; -ERROR 1052 (23000): Column 'c1' in field list is ambiguous +ERROR 23000: Column 'c1' in field list is ambiguous ## 在field list中写了inline,里面使用了cte -with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte) from cte; +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte) from cte; +----------------------------+ | (select count(*) from cte) | +----------------------------+ @@ -1800,22 +1755,20 @@ with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) s +----------------------------+ ## join+having not+order by -with cte1(a,b,c) as +with RECURSIVE cte1(a,b,c) as ( -select c1,c2,c3 from t1 where t1.c1 < 20 -union all +select c1,c2,c3 from t1 where t1.c1 < 20 +union all select c1,c2,c3 from t1, cte1 cte where cte.a = t1.c1 and cte.c < 10 ) select * from cte1 left join t2 on cte1.a=t2.c1 where t2.c1 != cte1.a order by cte1.a; -ERROR 5746 (HY000): cycle detected while executing recursive WITH query - +ERROR HY000: cycle detected while executing recursive WITH query ## PART 1.2 最基本用法(多表) - ## 第三cte引用第二个,第二个又引用第一个。结果与MySQL一致。 explain basic -with cte1(a,b,c) as +with RECURSIVE cte1(a,b,c) as ( select 1,1,1 from dual union all @@ -1835,9 +1788,76 @@ select cte3.a+1,cte3.b+1,cte3.c+1 from cte3, cte2 where cte2.a < 3 and cte3.a < ) SELECT cte1.a, cte1.b FROM cte1 JOIN cte3 on cte1.a < cte3.c; +Query Plan +==================================== +|ID|OPERATOR |NAME| +------------------------------------ +|0 |NESTED-LOOP JOIN | | +|1 | SUBPLAN SCAN |cte3| +|2 | RECURSIVE UNION ALL | | +|3 | RECURSIVE UNION ALL | | +|4 | RECURSIVE UNION ALL | | +|5 | EXPRESSION | | +|6 | TABLE SCAN |cte1| +|7 | TABLE SCAN |cte2| +|8 | NESTED-LOOP JOIN | | +|9 | TABLE SCAN |cte3| +|10| MATERIAL | | +|11| SUBPLAN SCAN |cte2| +|12| RECURSIVE UNION ALL | | +|13| RECURSIVE UNION ALL| | +|14| EXPRESSION | | +|15| TABLE SCAN |cte1| +|16| TABLE SCAN |cte2| +|17| MATERIAL | | +|18| SUBPLAN SCAN |cte1| +|19| RECURSIVE UNION ALL | | +|20| EXPRESSION | | +|21| TABLE SCAN |cte1| +==================================== + +Outputs & filters: +------------------------------------- + 0 - output([cte1.a], [cte1.b]), filter(nil), + conds([cte1.a < cte3.c]), nl_params_(nil) + 1 - output([cte3.c]), filter(nil), + access([cte3.c]) + 2 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 3 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 4 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 5 - output([1], [1], [1]), filter(nil) + values({1, 1, 1}) + 6 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), + access([cte1.a], [cte1.b], [cte1.c]), partitions(nil) + 7 - output([cte2.a + 1], [cte2.b + 1], [cte2.c + 1]), filter([cte2.a < 10]), + access([cte2.a], [cte2.b], [cte2.c]), partitions(nil) + 8 - output([cte3.a + 1], [cte3.b + 1], [cte3.c + 1]), filter(nil), + conds([cte3.a < cte2.b]), nl_params_(nil) + 9 - output([cte3.a], [cte3.b], [cte3.c]), filter([cte3.a < 10]), + access([cte3.a], [cte3.b], [cte3.c]), partitions(nil) + 10 - output([cte2.b]), filter(nil) + 11 - output([cte2.b]), filter([cte2.a < 3]), + access([cte2.a], [cte2.b]) + 12 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 13 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 14 - output([1], [1], [1]), filter(nil) + values({1, 1, 1}) + 15 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), + access([cte1.a], [cte1.b], [cte1.c]), partitions(nil) + 16 - output([cte2.a + 1], [cte2.b + 1], [cte2.c + 1]), filter([cte2.a < 10]), + access([cte2.a], [cte2.b], [cte2.c]), partitions(nil) + 17 - output([cte1.a], [cte1.b]), filter(nil) + 18 - output([cte1.a], [cte1.b]), filter(nil), + access([cte1.a], [cte1.b]) + 19 - output([UNION([1])], [UNION([2])], [UNION([3])]), filter(nil) + 20 - output([1], [1], [1]), filter(nil) + values({1, 1, 1}) + 21 - output([cte1.a + 1], [cte1.b + 1], [cte1.c + 1]), filter([cte1.a < 10]), + access([cte1.a], [cte1.b], [cte1.c]), partitions(nil) + set ob_query_timeout = 100000000; -with cte1(a,b,c) as +with RECURSIVE cte1(a,b,c) as ( select 1,1,1 from dual union all @@ -1857,7 +1877,6 @@ select cte3.a+1,cte3.b+1,cte3.c+1 from cte3, cte2 where cte2.a < 3 and cte3.a < ) SELECT cte1.a, cte1.b FROM cte1 JOIN cte3 on cte1.a < cte3.c; -set ob_query_timeout = 10000000; +------+------+ | a | b | +------+------+ @@ -2194,11 +2213,11 @@ set ob_query_timeout = 10000000; | 1 | 1 | | 1 | 1 | +------+------+ - +set ob_query_timeout = 10000000; ## 关于数学的复杂case ##about math -WITH fibonacci (n, fib_n, next_fib_n) AS +with RECURSIVE fibonacci (n, fib_n, next_fib_n) AS ( SELECT 1, 0, 1 from dual UNION ALL @@ -2221,7 +2240,7 @@ SELECT * FROM fibonacci; | 10 | 34 | 55 | +------+-------+------------+ -with cte(n) as (select 1 from dual union all select n+1 from cte where n<6), +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n<6), prod(lastnum, lastprod) as (select min(n), min(n) from cte union all select n, n*lastprod from cte, prod where n = prod.lastnum+1) @@ -2237,11 +2256,11 @@ select * from prod; | 6 | 720 | +---------+----------+ -with cte as (select 18 d from dual), +with RECURSIVE cte as (select 18 d from dual), prod (lastnum, lastprod) as ( - select 1, 1 from dual - union all - select lastnum+1, (lastnum+1)*lastprod from prod, cte where lastnum < d) + select 1, 1 from dual + union all + select lastnum+1, (lastnum+1)*lastprod from prod, cte where lastnum < d) select * from prod, cte where lastnum = d; +---------+------------------+----+ | lastnum | lastprod | d | @@ -2250,11 +2269,10 @@ select * from prod, cte where lastnum = d; +---------+------------------+----+ - ############################## ## insert into ############################## -insert into insert_t with cte(a,b,c) as (select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where a < 10) SELECT * FROM cte; +insert into insert_t with RECURSIVE cte(a,b,c) as (select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where a < 10) SELECT * FROM cte; select * from insert_t; +------+------+------+ | c1 | c2 | c3 | @@ -2271,11 +2289,10 @@ select * from insert_t; | 10 | 11 | 12 | +------+------+------+ - ############################## ## select when ############################## -with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; +with RECURSIVE cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; +------+---------+-------------------------------------------------------+ | c1 | max(c2) | CASE max(c2) when 4 then 4 when 43 then 43 else 1 end | +------+---------+-------------------------------------------------------+ @@ -2334,8 +2351,7 @@ with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 ############################## ## delete from ############################## - -delete from t1 where c1 = ( with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1 from cte where c2 = 3); +delete from t1 where c1 = ( with RECURSIVE cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1 from cte where c2 = 3); select * from t1; +------+------+------+ | c1 | c2 | c3 | @@ -2349,4 +2365,4 @@ select * from t1; | 19 | 20 | 21 | +------+------+------+ - +drop database cte_st; diff --git a/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_optimize_mysql.result b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_optimize_mysql.result new file mode 100644 index 000000000..03ffdebbf --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/r/mysql/recursive_optimize_mysql.result @@ -0,0 +1,71 @@ +drop database if exists cte_st; +create database cte_st; +use cte_st; +result_format: 4 +create table EMP ( +EMPno number, +ENAME varchar(30), +JOB varchar(30), +MGR number(4), +HIREDATE date, +SAL number(7,2), +COMM number(7,2), +DEPTNO number(2) +) ; +create table DEPT( +DEPTNO number(2), +DNAME char(45), +LOC varchar(39) +) ; +insert into EMP values (7369,'SMITH','CLERK',7902, str_to_date('17-DEC-80','%d-%b-%Y'),800,NULL, 20) ; +INSERT INTO EMP VALUES (7499, 'ALLEN','SALESMAN',7698,str_to_date('20-FEB-81','%d-%b-%Y'),1600,300,30) ; +INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698, str_to_date('22-FEB-81','%d-%b-%Y'),1250, 500, 30) ; +INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839, str_to_date('02-APR-81','%d-%b-%Y'), 2975, NULL, 20) ; +INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN', 7698, str_to_date('28-SEP-81','%d-%b-%Y'), 1250, 1400, 30) ; +INSERT INTO EMP VALUES (7698, 'BLAKE','MANAGER', 7839, str_to_date('01-MAY-81','%d-%b-%Y'), 2850, NULL, 30) ; +INSERT INTO EMP VALUES (7782, 'CLARK','MANAGER', 7839, str_to_date('09-JUN-81','%d-%b-%Y'), 2450, NULL, 10) ; +insert into EMP values (7788,'SCOTT','ANALYST', 7566, str_to_date('19-APR-87','%d-%b-%Y'), 3000, null, 20) ; +INSERT INTO EMP VALUES (7839, 'KING','PRESIDENT', NULL, str_to_date('17-NOV-81','%d-%b-%Y'), 5000, NULL, 10) ; +INSERT INTO EMP VALUES (7844, 'TURNER','SALESMAN', 7698, str_to_date('08-SEP-81','%d-%b-%Y'), 1500, 0, 30) ; +INSERT INTO EMP VALUES(7876, 'ADAMS','CLERK', 7788, str_to_date('23-MAY-87','%d-%b-%Y'), 1100, NULL, 20) ; +INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('03-DEC-81','%d-%b-%Y'), 950, NULL, 30) ; +INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('03-DEC-81','%d-%b-%Y'), 3000, NULL, 20) ; +INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('23-JAN-82','%d-%b-%Y'), 1300,NULL, 10) ; + +## ======================================================================= +## Test Case 1: +## - recursive WITH Query: Optimization on query with outside filter. +## Predicate pushdown optimization on static value job. +## The plan should reflect optimization or development can provide +## parameter to show that pushdown optimization happened for init branch +## ======================================================================= +explain basic +WITH rw (ename, mgr, empno, job) AS +( + SELECT ename, mgr, empno, job + FROM emp e + UNION ALL + SELECT e.ename, e.mgr, e.empno, e.job + FROM rw r, emp e + WHERE r.empno = e.mgr +) +SELECT ename, empno, mgr, job +FROM rw +WHERE job = 'PRESIDENT' ; +ERROR 42S02: Table doesn't exist + +WITH rw (ename, mgr, empno, job) AS +( + SELECT ename, mgr, empno, job + FROM emp e + UNION ALL + SELECT e.ename, e.mgr, e.empno, e.job + FROM rw r, emp e + WHERE r.empno = e.mgr +) +SELECT /*+ :HINT: */ ename, empno, mgr, job +FROM rw +WHERE job = 'PRESIDENT' ; +ERROR 42S02: Table doesn't exist + +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/t/basic_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/basic_mysql.test similarity index 74% rename from test/mysql_test/test_suite/with_clause/t/basic_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/basic_mysql.test index 9b8dd8ffa..eb688a5ba 100644 --- a/test/mysql_test/test_suite/with_clause/t/basic_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/basic_mysql.test @@ -1,9 +1,13 @@ -drop table t1; -drop table t2; -drop table t3; -drop table t4; -drop table t5; -drop table emp; +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--result_format 4 +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; create table t1(c1 int, c2 int, c3 int); insert into t1 values(1, 2, 3); @@ -62,66 +66,73 @@ insert into emp values(10, 'AAAB', '5'); insert into emp values(11, 'AAAC', '5'); insert into emp values(12, 'AAAA', '5'); -############################## -## section one cte定义 -## PART 1 定义表名的限制 -## PART 2 单个的定义 -## PART 3 多个定义 -## PART 4 subquery的变化 -## section two cte的使用 -## PART 1 cte出现在normal型查询语句中 -## PART 2 cte出现在set型查询语句中 -## PART 3 主查询中含有inline cte -## PART 4 歧义语法 -## PART 5 出现方式 -## PART 6 定义列的使用 -## section three cte能够出现的句式 -## PART 1 select for update -## PART 2 insert into -## PART 3 update select -## PART 4 select when -## PART 5 delete from -############################## +--echo ############################## +--echo ## section one cte定义 +--echo ## PART 1 定义表名的限制 +--echo ## PART 2 单个的定义 +--echo ## PART 3 多个定义 +--echo ## PART 4 subquery的变化 +--echo ## section two cte的使用 +--echo ## PART 1 cte出现在normal型查询语句中 +--echo ## PART 2 cte出现在set型查询语句中 +--echo ## PART 3 主查询中含有inline cte +--echo ## PART 4 歧义语法 +--echo ## PART 5 出现方式 +--echo ## PART 6 定义列的使用 +--echo ## section three cte能够出现的句式 +--echo ## PART 1 select for update +--echo ## PART 2 insert into +--echo ## PART 3 update select +--echo ## PART 4 select when +--echo ## PART 5 delete from +--echo ############################## -############################## -## section one -## PART 1 定义表名的限制 -############################## +--echo ############################## +--echo ## section one +--echo ## PART 1 定义表名的限制 +--echo ############################## -## PART 1.1 表名,列名不能是保留关键字,可以是分保留关键字 +--echo ## PART 1.1 表名,列名不能是保留关键字,可以是分保留关键字 +--error 1064 WITH explain as (select 1 from dual) select * from explain; +--error 1064 WITH cte(explain) as (select 1 from dual) select * from cte; with cte(name) as (select 1 from dual) select * from cte; -## PART 1.2 允许与已有的表重名 +--echo ## PART 1.2 允许与已有的表重名 explain basic WITH t4 as (select 1 from dual) select * from t4; WITH t4 as (select 1 from dual) select * from t4; -############################## -## PART 2 单个的定义 -############################## +--echo ############################## +--echo ## PART 2 单个的定义 +--echo ############################## -## PART 2.1 定义列名重复 +--echo ## PART 2.1 定义列名重复 +--error 5751 with cte(a,a) as (select 1,1 from dual) select * from cte; -## PART 2.2.1 定义列数量与查询产生列一致或不一致 +--echo ## PART 2.2.1 定义列数量与查询产生列一致或不一致 explain basic with cte(a,b) as (select 1,1 from dual) select * from cte; with cte(a,b) as (select 1,1 from dual) select * from cte; +--error 5740 with cte(a,b) as (select 1 from dual) select * from cte; +--error 5740 with cte(a,b,c) as (select 1, 2, 3, 4 from dual) select * from cte; -## PART 2.2.2 不使用定义列使用原来的列 +--echo ## PART 2.2.2 不使用定义列使用原来的列 +--error 1054 with cte(a,b) as (select c1,c2 from t1) select c1 from cte; -############################## -## PART 3 多个的定义 -############################## +--echo ############################## +--echo ## PART 3 多个的定义 +--echo ############################## -## PART 3.1 前面的定义引用后面的,后面的引用前面的 +--echo ## PART 3.1 前面的定义引用后面的,后面的引用前面的 +--error 1146 WITH cte1 (a, b) AS (SELECT c, d FROM cte2), cte2 (c, d) AS (SELECT c21, c22 FROM t2) @@ -138,7 +149,7 @@ with cte2 AS (select c1 from cte1) select * from cte1; -## PART 3.2.1 直接嵌套定义,MySQL支持这样的直接嵌套 +--echo ## PART 3.2.1 直接嵌套定义,MySQL支持这样的直接嵌套 with cte1 AS ( with cte2 AS (select c1 from t1) @@ -160,20 +171,20 @@ with ) select cte1col from cte1; -## PART 3.2.2 在子查询中进行嵌套 +--echo ## PART 3.2.2 在子查询中进行嵌套 with cte(a) as (select * from (with cteb(a) as (select 1 from dual) select * from cteb) bac) select * from cte; -############################## -## PART 4 subquery的变化 -############################## +--echo ############################## +--echo ## PART 4 subquery的变化 +--echo ############################## -## PART 4.1.0 subquery的变化 -## 带有聚合 +--echo ## PART 4.1.0 subquery的变化 +--echo ## 带有聚合 explain basic with cte as (select count(*) from t1) select * from cte; with cte as (select count(*) from t1) select * from cte; -## 带有where +--echo ## 带有where explain basic with cte1 AS ( select c1 as col1 from t1 where c1 > 1) select col1 from cte1; @@ -190,7 +201,7 @@ with cte1 AS ( select * from t1 where c1+'1'<=3) select c1 from cte1; -## 带有group +--echo ## 带有group explain basic with cte1 AS ( select 1 as c1, 2 as c2 from t1 group by c1) select c1 from cte1; @@ -198,7 +209,7 @@ with cte1 AS ( select 1 as c1, 2 as c2 from t1 group by c1) select c1 from cte1; -## 带有having +--echo ## 带有having explain basic with cte1 AS ( select c1, c2 from t1 where t1.c1 > 2) select c1 from cte1; @@ -206,7 +217,7 @@ with cte1 AS ( select c1, c2 from t1 where t1.c1 > 2) select c1 from cte1; -## 带有order +--echo ## 带有order explain basic with cte1 AS ( select c1, c2 + 1 as c3 from t1 order by c2) select c1 from cte1; @@ -221,10 +232,10 @@ with cte2 AS (select * from t1 left join t2 on t1.c1=t2.c21 order by t1.c1) select c1 from cte2; -## PART 4.1.1 normal型+hint -## index -## use_nl/use_merge/leading -## hint在cte定义里面 +--echo ## PART 4.1.1 normal型+hint +--echo ## index +--echo ## use_nl/use_merge/leading +--echo ## hint在cte定义里面 explain basic with cte0 AS (select /*+ use_nl(t1 t2) */ * from t2, t1 where t1.c1 = t2.c21) select * from cte0; @@ -233,12 +244,12 @@ with cte0 AS (select /*+ use_nl(t1 t2) */ * from t2, t1 where t1.c1 = t2.c21) select * from cte0; -## hint对cte定义表进行使用,对比与MySQL的一致 +--echo ## hint对cte定义表进行使用,对比与MySQL的一致 explain basic with cte0 AS (select * from t2) select /*+ leading(t2 cte0) use_nl(cte0)*/ * from cte0, t1 where cte0.c21 = t1.c1; with cte0 AS (select * from t2) select /*+ leading(t2 cte0) use_nl(cte0)*/ * from cte0, t1 where cte0.c21 = t1.c1; -## PART 4.1.2 里面是一个set operator +--echo ## PART 4.1.2 里面是一个set operator explain basic WITH cte AS ( SELECT 1 AS col1, 2 AS col2 from dual @@ -271,7 +282,7 @@ WITH cte AS ) select c1, c2 from cte; -## PART 4.1.3 里面是一个where exist(semi join),顺便测试在cte里面as一个列,在外面使用 +--echo ## PART 4.1.3 里面是一个where exist(semi join),顺便测试在cte里面as一个列,在外面使用 explain basic WITH cte AS ( select 1 as col from t1 where c1 in (select c1 from t1 where exists( (select 1 from dual) union (select 1 from dual))) @@ -284,7 +295,7 @@ WITH cte AS ) select * from cte, t1 where t1.c1 = cte.col; -## PART 4.2 有针对某一个分区的操作 +--echo ## PART 4.2 有针对某一个分区的操作 explain basic with cte0 as (select * from t3 partition(p0)) select cte0.c1 from cte0; with cte0 as (select * from t3 partition(p0)) select cte0.c1 from cte0; @@ -293,12 +304,12 @@ explain basic with cte as (select * from t5 partition(p0)) select * from cte; with cte as (select * from t5 partition(p0)) select * from cte; -############################## -## section two -## PART 1 cte出现在normal型查询语句中 -############################## -## PART 1.1 最基本用法(单表) -## 不定义别名列列表的时候最简单的使用方法 +--echo ############################## +--echo ## section two +--echo ## PART 1 cte出现在normal型查询语句中 +--echo ############################## +--echo ## PART 1.1 最基本用法(单表) +--echo ## 不定义别名列列表的时候最简单的使用方法 explain basic WITH cte1 AS (select * from t1) select c1, c2, c3 from cte1; @@ -307,7 +318,7 @@ WITH cte1 AS (select * from t1) select c1, c2, c3 from cte1; -## subquery里面取了别名列,看看主句中能否继续使用 +--echo ## subquery里面取了别名列,看看主句中能否继续使用 explain basic with cte1 AS ( select c1 + 1 as col1 from t1) select col1 from cte1; @@ -329,7 +340,7 @@ with cte1 AS ( select c1 + 1 as col1 from t1) select col1+3 from cte1; -## 这种cte的列其实可能没法用了 +--echo ## 这种cte的列其实可能没法用了 explain basic with cte AS (select 1 from t1) select * from cte; @@ -337,19 +348,19 @@ with cte AS (select 1 from t1) select * from cte; -## 主句含有order +--echo ## 主句含有order explain basic WITH cte2 AS (select c1 from t1) select c1 from cte2 order by c1; WITH cte2 AS (select c1 from t1) select c1 from cte2 order by c1; -## 对主句中的cte取别名后看看能否继续使用 +--echo ## 对主句中的cte取别名后看看能否继续使用 explain basic WITH cte2 AS (select c1 from t1) select z1.c1 from cte2 z1, t2 where z1.c1 in (1,4,7,11) and z1.c1 = t2.c21; WITH cte2 AS (select c1 from t1) select z1.c1 from cte2 z1, t2 where z1.c1 in (1,4,7,11) and z1.c1 = t2.c21; -## 重命名的列出现在where条件中 +--echo ## 重命名的列出现在where条件中 explain basic WITH cte1 AS (SELECT c1 as abc, c2 FROM t1) select abc from cte1, t2 where abc in (1,4,7) and cte1.abc = t2.c21; @@ -357,7 +368,7 @@ WITH cte1 AS (SELECT c1 as abc, c2 FROM t1) select abc from cte1, t2 where abc in (1,4,7) and cte1.abc = t2.c21; -## 重命名的列出现在order+where中 +--echo ## 重命名的列出现在order+where中 explain basic WITH cte1 (name1, name2) AS (select c1, c2 from t1) select name1 from cte1 where name1 in (1,4,11) order by name2; @@ -365,11 +376,11 @@ WITH cte1 (name1, name2) AS (select c1, c2 from t1) select name1 from cte1 where name1 in (1,4,11) order by name2; -## 在field list中写了inline,里面使用了cte +--echo ## 在field list中写了inline,里面使用了cte explain basic with cte as (select * from t1) select (select count(*) from cte) from t2; with cte as (select * from t1) select (select count(*) from cte) from t2; -## 在cte在外面使用的时候先被取了别名再使用 +--echo ## 在cte在外面使用的时候先被取了别名再使用 explain basic with cte AS (select c1 from t1) select cte.c1 from cte z1, cte where z1.c1 = cte.c1; with cte AS (select c1 from t1) @@ -380,7 +391,7 @@ select /*+no_rewrite()*/ cte.c1 from cte z1, cte where z1.c1 = cte.c1; with cte AS (select c1 from t1) select /*+no_rewrite()*/ cte.c1 from cte z1, cte where z1.c1 = cte.c1; -## join+having not+order by +--echo ## join+having not+order by explain basic with cte1 AS( select * from t1) select * from cte1 left join t2 on cte1.c1=t2.c21 where t2.c21 != cte1.c1 order by cte1.c1; @@ -388,13 +399,13 @@ with cte1 AS( select * from t1) select * from cte1 left join t2 on cte1.c1=t2.c21 where t2.c21 != cte1.c1 order by cte1.c1; -## 对cte使用partition命令 +--echo ## 对cte使用partition命令 explain basic WITH cte2 AS (select * from t3) select * from cte2 partition(p0); WITH cte2 AS (select * from t3) select * from cte2 partition(p0); -## PART 1.2 最基本用法(多表) +--echo ## PART 1.2 最基本用法(多表) explain basic WITH cte1 AS (SELECT c1, c2 FROM t1), cte2 AS (SELECT c21, c22 FROM t2) @@ -424,7 +435,7 @@ WITH SELECT b, d FROM cte1 JOIN cte2 on cte1.a = cte2.c; -## join+order +--echo ## join+order explain basic WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT c21, c22 FROM t2) @@ -434,7 +445,7 @@ WITH cte2 (c, d) AS (SELECT c21, c22 FROM t2) select * from cte1 left join cte2 on cte1.a=cte2.c order by cte1.a; -## 子查询+join +--echo ## 子查询+join explain basic WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT c21, c22 FROM t2) @@ -444,7 +455,7 @@ WITH cte2 (c, d) AS (SELECT c21, c22 FROM t2) select t11.c11 as c111 from (select c1 as c11, c2 from t1) t11 join cte2 on t11.c2=cte2.c; -## 第二个cte的定义引用了第一个cte,主句中两个表做join +--echo ## 第二个cte的定义引用了第一个cte,主句中两个表做join explain basic WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT a, b FROM cte1) @@ -456,7 +467,7 @@ WITH SELECT b, d FROM cte1 JOIN cte2 on cte1.a = cte2.c; -## 第三cte引用第二个,第二个又引用第一个。结果与oracle一致。 +--echo ## 第三cte引用第二个,第二个又引用第一个。结果与MySQL一致。 explain basic WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT a+1, b-1 FROM cte1), @@ -470,7 +481,7 @@ WITH SELECT a, b, e, f FROM cte1 JOIN cte3 on cte1.a < cte3.e; -## 一个cte是对某个特定分区,一个加了hint,主查询做join +--echo ## 一个cte是对某个特定分区,一个加了hint,主查询做join with cte0 AS ( select * from t3 partition(p0) @@ -480,7 +491,7 @@ with ) select cte0.c1, cte1.c1 from cte0, cte1 where cte0.c1 = cte1.c1; -## cte出现在主查询in子句中,还有exists子句中 +--echo ## cte出现在主查询in子句中,还有exists子句中 explain basic WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT c21, c22 FROM t2) @@ -490,7 +501,7 @@ WITH cte2 (c, d) AS (SELECT c21, c22 FROM t2) select 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); -## 在上面的基础上加入no rewrite hint +--echo ## 在上面的基础上加入no rewrite hint explain basic WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT c21, c22 FROM t2) @@ -500,7 +511,7 @@ WITH cte2 (c, d) AS (SELECT c21, c22 FROM t2) select /*+no_rewrite()*/ 1 from cte1 where a in (select d from cte2 where exists( (select b from cte1) union (select a from cte1))); -## 主查询是left join+having not+order +--echo ## 主查询是left join+having not+order explain basic WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT c21, c22 FROM t2) @@ -510,9 +521,9 @@ WITH cte2 (c, d) AS (SELECT c21, c22 FROM t2) select * from cte1 left join cte2 on cte1.a=cte2.c where cte1.b != cte2.d order by cte1.a; -############################## -## PART 2 cte出现在set型查询语句中 -############################## +--echo ############################## +--echo ## PART 2 cte出现在set型查询语句中 +--echo ############################## explain basic WITH cte2 AS (select c1 from t1) select c1 from cte2 @@ -537,32 +548,32 @@ select * from t1 intersect (select * from t2); WITH cte2 AS (select c1 from t1) select * from t1 intersect (select * from t2); -############################## -## PART 3 主查询中含有inline cte -############################## +--echo ############################## +--echo ## PART 3 主查询中含有inline cte +--echo ############################## -## PART 3.1 inline cte与外层同名/不同名 +--echo ## PART 3.1 inline cte与外层同名/不同名 with cte(a) as (select 1 from dual) select * from (with cteb(a) as (select 1 from dual) select * from cteb) abc; -## 同名,这里应该是查询t1 +--echo ## 同名,这里应该是查询t1 explain basic with cte as (select c21 from t2) select * from (with cte as (select c1 from t1) select * from cte) t; with cte as (select c21 from t2) select * from (with cte as (select c1 from t1) select * from cte) t; -## 不同名,这里应该是查询t2 +--echo ## 不同名,这里应该是查询t2 explain basic with cte as (select c21 from t2) select * from (with cte1 as (select c1 from t1) select * from cte) t; with cte as (select c21 from t2) select * from (with cte1 as (select c1 from t1) select * from cte) t; -## 三层,这里应该是查询t3 +--echo ## 三层,这里应该是查询t3 explain basic with cte as (select c21 from t2) select * from (with cte as (select c1 from t1) select * from (with cte as (select c1 from t3) select * from cte) cte) t; with cte as (select c21 from t2) select * from (with cte as (select c1 from t1) select * from (with cte as (select c1 from t3) select * from cte) cte) t; -## PART 3.2 inline cte引用外层cte +--echo ## PART 3.2 inline cte引用外层cte explain basic with cte as (select 1 from dual) select * from (with cte1 as (select * from cte) select * from cte1); with cte as (select 1 from dual) select * from (with cte1 as (select * from cte) select * from cte1); @@ -594,15 +605,15 @@ select t3.*, t4.* from on t4.c21=t3.c1 order by t4.c22; -## PART 3.3 inline cte中定义表名与已有表名重名,这里应该是查询了t1才对 +--echo ## PART 3.3 inline cte中定义表名与已有表名重名,这里应该是查询了t1才对 explain basic select * from (WITH t2 AS (select c1 from t1) select c1 from t2 where t2.c1 > 1000) t; select * from (WITH t2 AS (select c1 from t1) select c1 from t2 where t2.c1 > 1000) t; -## PART 3.4 inline cte出现在field list +--echo ## PART 3.4 inline cte出现在field list explain basic select ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000), t2.* from t2; select ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000), t2.* from t2; -## PART 3.5 inline cte之后看看列能否正常使用 +--echo ## PART 3.5 inline cte之后看看列能否正常使用 explain basic select t3.* from ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 where t3.c1 > 0; select t3.* from ( WITH cte AS (select c1 from t1) select c1 from cte where cte.c1 > 1000) t3 where t3.c1 > 0; @@ -619,78 +630,79 @@ select t3.*, t4.* from on t4.a=t3.c1 order by t4.b; -## PART 3.6 inline cte别名后与外部cte做join +--echo ## PART 3.6 inline cte别名后与外部cte做join explain basic with cte as (select * from t1) select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; with cte as (select * from t1) select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; - +--error 1146 select * from (with cte as (select * from t2) select * from cte) t3, cte where t3.c21 = cte.c1; -#result is correct, last cte is point to t2 +--echo #result is correct, last cte is point to t2 with cte as (select * from t1) select (with cte(col1, col2, col3) as(select * from t2) select count(*) from cte) from t1; +--error 1054 WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT c21, c22 FROM t2) select t11.c11 as c111 from (with cte3 as(select * from t3) select c1 as c11, c2 from cte1) cte1 join cte2 on t11.c2=cte2.c; -#result is correct +--echo #result is correct WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT c21, c22 FROM t2) select * from (with cte3 as(select * from t3) select c1 as c11, c2 from cte3) cte1 join cte2 on cte1.c11=cte2.c; -#result is correct +--echo #result is correct WITH cte1 (a, b) AS (SELECT c1, c2 FROM t1), cte2 (c, d) AS (SELECT c21, c22 FROM t2) select * from (with cte2 as(select * from t3) select c1 as c11, c2 from cte2) cte1 join cte2 on cte1.c11=cte2.c; -############################## -## PART 4 歧义语法 -############################## -## 歧义语法 -## with里面的column和select里面的column重名的情况测试 -## mysql5.6中alias name不能出现在where子句中,但是可以出现在group by、having、order by子句中 -## 如果普通列和alias name重复,那么在group by、having子句中优先使用基础列,并汇报WARNNING -## order by子句中,优先使用alias name -## 这里需要参考mysql8.0中实际使用结果,考虑with clause中定义表中列与基础列重名时的表现 +--echo ############################## +--echo ## PART 4 歧义语法 +--echo ############################## +--echo ## 歧义语法 +--echo ## with里面的column和select里面的column重名的情况测试 +--echo ## mysql5.6中alias name不能出现在where子句中,但是可以出现在group by、having、order by子句中 +--echo ## 如果普通列和alias name重复,那么在group by、having子句中优先使用基础列,并汇报WARNNING +--echo ## order by子句中,优先使用alias name +--echo ## 这里需要参考mysql8.0中实际使用结果,考虑with clause中定义表中列与基础列重名时的表现 -## PART 4.1 cte使用时一列被别名为另外一个同名列并在where clause中使用 +--echo ## PART 4.1 cte使用时一列被别名为另外一个同名列并在where clause中使用 with cte1 (c22, c21) AS (select c1, c2 from t1) select c22 as c21, c21 from cte1 where c21 = 12; -## cte使用时一列被别名为另外一个同名列并在order_by_clause中使用 -##ERROR 1052 (23000): Column 'c21' in order clause is ambiguous +--echo ## cte使用时一列被别名为另外一个同名列并在order_by_clause中使用 +--error 1052 with cte1 (c22, c21) AS (select c1, c2 from t1) select c22 as c21, c21 from cte1 order by c21; -## cte使用时一列被别名为另外一个同名列并在having clause中使用 -#ERROR 1052 (23000): Column 'c21' in having clause is ambiguous +--echo ## cte使用时一列被别名为另外一个同名列并在having clause中使用 +--error 1052 with cte1 (c22, c21) AS (select c1, c2 from t1) select c22 as c21, c21 from cte1 having c21 > 0; -## cte使用时一列被别名为另外一个同名列并在group_by_clause中使用 -#ERROR 1052 (23000): Column 'c21' in group statement is ambiguous +--echo ## cte使用时一列被别名为另外一个同名列并在group_by_clause中使用 +--error 1052 with cte1 (c22, c21) AS (select c1, c2 from t1) select c22 as c21, c21 from cte1 group by c21; - +--error 5740 with cte1 (c22, c21) AS (select * from t1) select c22 as c21, c21 from cte1 group by c21; -## cte的列名已经无法在被使用了,这种用法比较特殊 +--echo ## cte的列名已经无法在被使用了,这种用法比较特殊 explain basic with cte as (select count(*) as k from t1) select * from cte where k = 1; with cte as (select count(*) as k from t1) select * from cte where k = 1; -############################## -## section three -## PART 1 select for update -############################## +--echo ############################## +--echo ## section three +--echo ## PART 1 select for update +--echo ############################## explain basic WITH cte0 AS ( select * from t1) @@ -699,9 +711,9 @@ WITH cte0 AS ( select * from t1) select * from cte0 for update; -############################## -## PART 2 insert into -############################## +--echo ############################## +--echo ## PART 2 insert into +--echo ############################## explain basic insert into t1 with cte as (select * from t1) SELECT * FROM cte; insert into t1 with cte as (select * from t1) SELECT * FROM cte; @@ -710,17 +722,17 @@ explain basic insert into t1 with cte (a,b,c) as (select c21,c22,c23 from t2) se insert into t1 with cte (a,b,c) as (select c21,c22,c23 from t2) select a,b,a from cte; select * from t1; -############################## -## PART 3 update select -############################## +--echo ############################## +--echo ## PART 3 update select +--echo ############################## explain basic update t1 set c1=(with cte as (select count(*)+99 from t2 where c21=1) select * from cte) where c2 = 2; update t1 set c1=(with cte as (select count(*)+99 from t2 where c21=1) select * from cte) where c2 = 2; select * from t1; -############################## -## PART 4 select when -############################## +--echo ############################## +--echo ## PART 4 select when +--echo ############################## explain basic with cte as (select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from t1 group by c1 order by c1) select * from cte; with cte as (select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from t1 group by c1 order by c1) select * from cte; @@ -728,9 +740,9 @@ with cte as (select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else explain basic with cte(c1, c2) as (select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c21) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; with cte(c1, c2) as (select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c21) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; -############################## -## PART 5 delete from -############################## +--echo ############################## +--echo ## PART 5 delete from +--echo ############################## explain basic delete from t1 where c1 = ( with cte as (select max( c1 ) from ( select * from t1 )) select * from cte); delete from t1 where c1 = ( with cte as (select max( c1 ) from ( select * from t1 )) select * from cte); @@ -738,11 +750,10 @@ delete from t1 where c1 = ( with cte as (select max( c1 ) from ( select * from t explain basic delete from t1 where c1 = ( with cte (a) as (select max( c1 ) from t1 ) select * from cte); delete from t1 where c1 = ( with cte (a) as (select max( c1 ) from t1 ) select * from cte); -############################## -## other -############################## +--echo ############################## +--echo ## other +--echo ############################## with cte as (select * from t1) select 1 from dual; - - +drop database cte_st; \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/t/cte_errno_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_errno_mysql.test similarity index 78% rename from test/mysql_test/test_suite/with_clause/t/cte_errno_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_errno_mysql.test index bd66c33a4..4f4fe39ea 100644 --- a/test/mysql_test/test_suite/with_clause/t/cte_errno_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_errno_mysql.test @@ -1,12 +1,28 @@ +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + +--result_format 4 +--error 5740 with cte(a,b) as (select 1 from dual) select * from cte; +--error 1146 with cte(a,b) as (with cte2(a,b) as (select 1,1 from dual) select a,b from cte) select * from cte; +--error 5751 with cte(a,a) as (select 1 from dual) select * from cte; +--error 1146 with cte as (select 1,1 from dual union all select a+1,b+1 from cte where cte.a < 10) select * from cte; -# MySQL不支持search depth关键字 +--echo # MySQL不支持search depth关键字 +--error 1064 with cte(a,b,c) as ( select 1,2,3 from dual @@ -14,9 +30,11 @@ union all select a+1,b+1,c+1 from cte where cte.c < 10 ) search depth first by d set pcol select * from cte; -# MySQL不支持cycle关键字 +--echo # MySQL不支持cycle关键字 +--error 1064 with cte(n, x) as (select /*+ materialize */ 1,2 from dual) cycle n,n set iscyc to 'aaaaay' default 'n' select * from cte; +--error 1146 with cte(a,b,c) as ( select 1,2,3 from dual @@ -24,6 +42,7 @@ union select a+1,b+1,c+1 from cte, cte b where cte.c < 10 and b.c = cte.c ) select * from cte; +--error 1146 with cte(a,b,c) as ( select 1,2,3 from dual @@ -33,23 +52,32 @@ union all select a+1,b+1,c+1 from cte, cte b where cte.c < 10 and b.c = cte.c ) select * from cte; +--error 1146 with t1 as (select c1 from t1) select * from t1; -## success +--echo ## success with cte1(a,b) as (select 'a','b' from dual), cte2 as (select * from cte1 where b > 'c'), cte3 as (select * from cte2 where a > 1 union select * from cte2 where a > 1) select * from cte3; +--error 1146 with cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +--error 1146 with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; +--error 1146 with cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; +--error 1146 with cte(n) AS ( select 1 from dual UNION ALL select (select 1 from dual) from cte where cte.n < 2) select * from cte; +create table t1(c1 int, c2 int, c3 int); +--error 1146 with cte (c1, c2, c3) as ( select * from ( select c1, c2, c3 from t1 union select c1, c2, c3 from t1) where c1 = 1 union all select * from t1 join cte c on t1.c1 = c.c1 where c.c1 < 10 ) select * from cte; +--error 1146 with cte(n) AS ( select 1 from cte) select * from cte; +--error 1146 with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 order by n ) select * from cte; - +drop database cte_st; \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/t/cte_mysql_official.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_mysql_official.test similarity index 98% rename from test/mysql_test/test_suite/with_clause/t/cte_mysql_official.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_mysql_official.test index eb98eeac3..bf51f4609 100644 --- a/test/mysql_test/test_suite/with_clause/t/cte_mysql_official.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_mysql_official.test @@ -1,3 +1,14 @@ +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + +--result_format 4 # cases in MySQL document: https://dev.mysql.com/doc/refman/8.0/en/with.html WITH RECURSIVE cte (n) AS @@ -385,6 +396,7 @@ SELECT * FROM all_destinations; INSERT INTO rockets VALUES ('Saturn', 'Earth', 9); +--error 5746 WITH RECURSIVE all_destinations AS ( SELECT destination AS planet @@ -431,3 +443,4 @@ AND is_cycle=0 ) SELECT * FROM all_destinations; +drop database cte_st; \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/t/cte_without_explain_2_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_without_explain_2_mysql.test similarity index 64% rename from test/mysql_test/test_suite/with_clause/t/cte_without_explain_2_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_without_explain_2_mysql.test index f264e0d1b..24190fe14 100644 --- a/test/mysql_test/test_suite/with_clause/t/cte_without_explain_2_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_without_explain_2_mysql.test @@ -1,4 +1,16 @@ -drop table EMP; +# owner: dachuan.sdc +--echo # owner group: sql2 +--echo # tags: optimizer + +--result_format 4 +--disable_warnings +drop table if exists EMP; +drop table if exists emp1; +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + create table EMP ( EMPno number, ENAME VARCHAR(30), @@ -25,7 +37,6 @@ INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-12-03' INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-12-03','%Y-%m-%d'), 3000, NULL, 20) ; INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-01-23','%Y-%m-%d'), 1300,NULL, 10) ; -drop table emp1; CREATE TABLE emp1 ( empno VARCHAR(4000) NOT NULL, ename VARCHAR(14), @@ -68,13 +79,12 @@ INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01' INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); -result_format: 4 -## ======================================================================= -## Test Case 1: -## - recursive WITH Query: Nested Loop Join -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 1: +--echo ## - recursive with RECURSIVE Query: Nested Loop Join +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -87,12 +97,12 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 2: -## - recursive WITH Query: SORT MERGE Join -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 2: +--echo ## - recursive with RECURSIVE Query: SORT MERGE Join +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -105,12 +115,12 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 3: -## - recursive WITH Query: Hash Join -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 3: +--echo ## - recursive with RECURSIVE Query: Hash Join +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -123,12 +133,12 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch -## ======================================================================= - -WITH rw (ename, mgr, empno) AS +--echo ## ======================================================================= +--echo ## Test Case 4: +--echo ## - recursive with RECURSIVE Query: Join in Initialisation Branch +--echo ## ======================================================================= +--sorted_result +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM emp e, emp d @@ -141,13 +151,13 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 6: -## - recursive WITH Query: Hash Join without using hints -## Static input on build side and fits in memory -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 6: +--echo ## - recursive with RECURSIVE Query: Hash Join without using hints +--echo ## Static input on build side and fits in memory +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -160,13 +170,13 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 7: -## - recursive WITH Query: Hash Join without using hints -## Static input on probe side and fits in memory -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 7: +--echo ## - recursive with RECURSIVE Query: Hash Join without using hints +--echo ## Static input on probe side and fits in memory +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -179,14 +189,14 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## 测试8-15都是在测试join的顺序或者hint的顺序 -## Test Case 8: -## - recursive WITH Query: Join Order tests -## pump >< emp >< emp1 -## ======================================================================= +--echo ## ======================================================================= +--echo ## 测试8-15都是在测试join的顺序或者hint的顺序 +--echo ## Test Case 8: +--echo ## - recursive with RECURSIVE Query: Join Order tests +--echo ## pump >< emp >< emp1 +--echo ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -200,13 +210,13 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -## ======================================================================= -## Test Case 9: -## - recursive WITH Query: Join Order tests -## emp >< pump >< emp1 -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 9: +--echo ## - recursive with RECURSIVE Query: Join Order tests +--echo ## emp >< pump >< emp1 +--echo ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -220,13 +230,13 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -## ======================================================================= -## Test Case 10: -## - recursive WITH Query: Join Order tests -## emp >< emp1 >< pump -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 10: +--echo ## - recursive with RECURSIVE Query: Join Order tests +--echo ## emp >< emp1 >< pump +--echo ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -240,13 +250,13 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -## ======================================================================= -## Test Case 11: -## - recursive WITH Query: Join Order tests -## emp1 >< emp >< pump -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 11: +--echo ## - recursive with RECURSIVE Query: Join Order tests +--echo ## emp1 >< emp >< pump +--echo ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -260,13 +270,13 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -## ======================================================================= -## Test Case 12: -## - recursive WITH Query: Join Order tests -## pump >< emp -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 12: +--echo ## - recursive with RECURSIVE Query: Join Order tests +--echo ## pump >< emp +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -279,13 +289,13 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 13: -## - recursive WITH Query: Join Order tests -## emp >< pump -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 13: +--echo ## - recursive with RECURSIVE Query: Join Order tests +--echo ## emp >< pump +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -298,13 +308,13 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 14: -## - recursive WITH Query: Join Order tests -## emp1 >< pump >< emp -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 14: +--echo ## - recursive with RECURSIVE Query: Join Order tests +--echo ## emp1 >< pump >< emp +--echo ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -318,13 +328,13 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -## ======================================================================= -## Test Case 15: -## - recursive WITH Query: Join Order tests -## pump >< emp1 >< emp -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 15: +--echo ## - recursive with RECURSIVE Query: Join Order tests +--echo ## pump >< emp1 >< emp +--echo ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -338,12 +348,12 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -## ======================================================================= -## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 16: +--echo ## - recursive with RECURSIVE Query: Join Skew handling. No local filter +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -356,12 +366,12 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 17: +--echo ## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -393,11 +403,11 @@ CREATE TABLE tenk1 ( string4 VARCHAR(50) ); -WITH q1(x,y) AS (SELECT 1,2 FROM DUAL) +with RECURSIVE q1(x,y) AS (SELECT 1,2 FROM DUAL) SELECT * FROM q1, q1 q2; SELECT count(*) FROM ( - WITH q1(x) AS (SELECT 1 FROM dual) + with RECURSIVE q1(x) AS (SELECT 1 FROM dual) SELECT * FROM q1 UNION SELECT * FROM q1 @@ -418,7 +428,7 @@ INSERT INTO department VALUES (5, 0, 'E'); INSERT INTO department VALUES (6, 4, 'F'); INSERT INTO department VALUES (7, 5, 'G'); -WITH subdepartment(lev, id, parent_department, name) AS +with RECURSIVE subdepartment(lev, id, parent_department, name) AS ( SELECT 1, a.* FROM department a WHERE name = 'A' UNION ALL @@ -426,7 +436,7 @@ WITH subdepartment(lev, id, parent_department, name) AS ) SELECT * FROM subdepartment ORDER BY name; -WITH subdepartment(lev, id, parent_department, name) AS +with RECURSIVE subdepartment(lev, id, parent_department, name) AS ( SELECT 1, a.* FROM department a WHERE name = 'A' UNION ALL @@ -434,30 +444,30 @@ WITH subdepartment(lev, id, parent_department, name) AS ) SELECT * FROM subdepartment WHERE lev >= 2 ORDER BY name; -WITH subdepartment AS +with RECURSIVE subdepartment AS ( SELECT * FROM department WHERE name = 'A' ) SELECT * FROM subdepartment ORDER BY name; SELECT count(*) FROM ( - WITH t(n) AS ( + with RECURSIVE t(n) AS ( SELECT 1 FROM DUAL UNION ALL SELECT n + 1 FROM t WHERE n < 500 ) SELECT * FROM t) t WHERE n < ( SELECT count(*) FROM ( - WITH t(n) AS ( + with RECURSIVE t(n) AS ( SELECT 1 FROM DUAL UNION ALL SELECT n + 1 FROM t WHERE n < 100 ) SELECT * FROM t WHERE n < 50000 ) t WHERE n < 100); -WITH q1(x,y) AS ( +with RECURSIVE q1(x,y) AS ( SELECT hundred, sum(ten) FROM tenk1 GROUP BY hundred ) SELECT count(*) FROM q1 WHERE y > (SELECT sum(y)/100 FROM q1 qsub); -WITH t(i,j) AS ( +with RECURSIVE t(i,j) AS ( select 1, 1 from dual UNION ALL SELECT t2.i, t.j+1 FROM (SELECT 2 AS i FROM DUAL UNION ALL SELECT 3 AS i FROM DUAL) t2 JOIN t ON (t2.i = t.i+1)) @@ -478,26 +488,26 @@ insert into graph values insert into graph values (5, 1, 'arc 5 -> 1'); -WITH +with RECURSIVE y (id) AS (select 1 from dual), x (id) AS (SELECT * FROM y UNION ALL SELECT id+1 FROM x WHERE id < 5) SELECT * FROM x; -WITH +with RECURSIVE x(id) AS (select 1 from dual UNION ALL SELECT id+1 FROM x WHERE id < 5), y(id) AS (select 1 from dual UNION ALL SELECT id+1 FROM y WHERE id < 10) SELECT y.*, x.* FROM y LEFT JOIN x on y.id = x.id; -WITH +with RECURSIVE x(id) AS (select 1 from dual UNION ALL SELECT id+1 FROM x WHERE id < 5), y(id) AS (select 1 from dual UNION ALL SELECT id+1 FROM x WHERE id < 10) SELECT y.*, x.* FROM y LEFT JOIN x on y.id = x.id; -WITH +with RECURSIVE x(id) AS (SELECT 1 FROM DUAL UNION ALL SELECT id+1 FROM x WHERE id < 3 ), y(id) AS @@ -506,7 +516,7 @@ WITH (SELECT * FROM x UNION ALL SELECT id+1 FROM z WHERE id < 10) SELECT * FROM z; -WITH +with RECURSIVE x(id) AS (SELECT 1 FROM DUAL UNION ALL SELECT id+1 FROM x WHERE id < 3 ), y(id) AS @@ -527,45 +537,50 @@ insert into y values(8); insert into y values(9); insert into y values(10); -WITH x(n) AS (SELECT a FROM y WHERE a = 1 +with RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM x LEFT JOIN y ON x.n = y.a WHERE n < 10) SELECT * FROM x; -WITH x(n) AS (SELECT a FROM y WHERE a = 1 +with RECURSIVE x(n) AS (SELECT a FROM y WHERE a = 1 UNION ALL SELECT x.n+1 FROM y RIGHT JOIN x ON x.n = y.a WHERE n < 10) SELECT * FROM x; -WITH x(n) AS (SELECT 1 from dual UNION ALL SELECT count(*) FROM x) +--error 5758 +with RECURSIVE x(n) AS (SELECT 1 from dual UNION ALL SELECT count(*) FROM x) SELECT * FROM x; -WITH x(n) AS (SELECT 1 from dual UNION ALL SELECT sum(n) FROM x) +--error 5758 +with RECURSIVE x(n) AS (SELECT 1 from dual UNION ALL SELECT sum(n) FROM x) SELECT * FROM x; -WITH x(n) AS (SELECT 1 from dual UNION ALL SELECT n+1 FROM x where n < 10 ORDER BY 1 ) SELECT * FROM x; -WITH x(n) AS (SELECT 1 FROM DUAL UNION ALL SELECT n+1 FROM x where n < 10 FOR UPDATE) +with RECURSIVE x(n) AS (SELECT 1 from dual UNION ALL SELECT n+1 FROM x where n < 10 ORDER BY 1 ) SELECT * FROM x; +with RECURSIVE x(n) AS (SELECT 1 FROM DUAL UNION ALL SELECT n+1 FROM x where n < 10 FOR UPDATE) SELECT * FROM x; CREATE TABLE x (n integer); -with cte(foo) as ( select 42 from dual) select * from ((select foo from cte)) q; +with RECURSIVE cte(foo) as ( select 42 from dual) select * from ((select foo from cte)) q; -select ( with cte(foo) as ( select 1 from dual ) +select ( with RECURSIVE cte(foo) as ( select 1 from dual ) select (select foo from cte) from dual) from tenk1; -WITH outermost(x) AS ( +with RECURSIVE outermost(x) AS ( SELECT 1 FROM DUAL - UNION (WITH innermost as (SELECT 2 FROM DUAL) + UNION (with RECURSIVE innermost as (SELECT 2 FROM DUAL) SELECT * FROM innermost UNION SELECT 3 FROM DUAL) ) SELECT * FROM outermost ORDER BY 1; -WITH outermost(x) AS ( +--error 5741 +with RECURSIVE outermost(x) AS ( SELECT 1 FROM DUAL - UNION (WITH innermost as (SELECT 2 FROM DUAL) + UNION (with RECURSIVE innermost as (SELECT 2 FROM DUAL) SELECT * FROM outermost # fail UNION SELECT * FROM innermost) ) SELECT * FROM outermost ORDER BY 1; + +drop database cte_st; \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/t/cte_without_explain_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_without_explain_mysql.test similarity index 72% rename from test/mysql_test/test_suite/with_clause/t/cte_without_explain_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_without_explain_mysql.test index 808d812e3..d37a6dc47 100644 --- a/test/mysql_test/test_suite/with_clause/t/cte_without_explain_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/cte_without_explain_mysql.test @@ -1,266 +1,287 @@ +# owner: dachuan.sdc +--echo # owner group: sql2 +--echo # tags: optimizer + +--result_format 4 +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + create table t1(a int, b int, c int); insert into t1 values(null,null,null),(2,3,4); -# two query names -# duplicate query names -WITH qn AS (SELECT a FROM t1), qn as (select b from t1) +--echo # two query names +--echo # duplicate query names +--error 1066 +with RECURSIVE qn AS (SELECT a FROM t1), qn as (select b from t1) SELECT 1 FROM qn; -# multiple refs -WITH qn AS (SELECT b as a FROM t1) +--echo # multiple refs +with RECURSIVE qn AS (SELECT b as a FROM t1) SELECT qn.a, qn2.a FROM qn, qn qn2; -WITH qn AS (SELECT b as a FROM t1), +with RECURSIVE qn AS (SELECT b as a FROM t1), qn2 AS (SELECT c FROM t1 WHERE a IS NULL or a>0) SELECT qn.a, qn2.c FROM qn, qn2; -# qn2 ref qn: -WITH qn AS (SELECT 10*a as a FROM t1), +--echo # qn2 ref qn: +with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a FROM qn) SELECT * from qn2; -WITH qn AS (SELECT a FROM t1), qn2 AS (SELECT a FROM qn) +with RECURSIVE qn AS (SELECT a FROM t1), qn2 AS (SELECT a FROM qn) SELECT * from qn2; -WITH qn AS (SELECT b as a FROM t1), +with RECURSIVE qn AS (SELECT b as a FROM t1), qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0) SELECT qn.a, qn2.a FROM qn, qn2; -# forward ref (should error) -WITH qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0), +--error 1146 +with RECURSIVE qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0), qn AS (SELECT b as a FROM t1) SELECT qn2.a FROM qn2; -# This is valid; it is to test moving boundaries. -# When we resolve qn3, resolving qn1 moves the right bound to -# qn0, but the bound is properly restored so that we can later -# resolve qn2. -with qn0 as (select 1 from dual), qn1 as (select * from qn0), qn2 as (select 1 from dual), qn3 as (select 1 from qn1, qn2) select 1 from qn3; +--echo # This is valid; it is to test moving boundaries. +--echo # When we resolve qn3, resolving qn1 moves the right bound to +--echo # qn0, but the bound is properly restored so that we can later +--echo # resolve qn2. +with RECURSIVE qn0 as (select 1 from dual), qn1 as (select * from qn0), qn2 as (select 1 from dual), qn3 as (select 1 from qn1, qn2) select 1 from qn3; -# No ref -with qn as (select 1 from dual) select 2 from dual; +--echo # No ref +with RECURSIVE qn as (select 1 from dual) select 2 from dual; -# circular ref -WITH qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0), +--error 1146 +with RECURSIVE qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0), qn AS (SELECT b as a FROM qn2) SELECT qn.a FROM qn; -# recursive -WITH qn AS (SELECT a FROM qn) +--echo # recursive +--error 5742 +with recursive qn AS (SELECT a FROM qn) SELECT qn.a FROM qn; -WITH qn1 AS (SELECT a FROM qn3), +--error 1146 +with RECURSIVE qn1 AS (SELECT a FROM qn3), qn2 AS (SELECT a FROM qn1), qn3 AS (SELECT a FROM t1), qn4 AS (SELECT a FROM qn2) SELECT a FROM qn4; -# ref from subq -with qn as (select * from t1) select (select max(a) from qn) from dual; +--echo # ref from subq +with RECURSIVE qn as (select * from t1) select (select max(a) from qn) from dual; -# QN defined in subq -SELECT (WITH qn AS (SELECT 10*a as a FROM t1), +--echo # QN defined in subq +SELECT (with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a AS b FROM qn) - SELECT * from qn2 where rownum <= 1) + SELECT * from qn2 limit 1) FROM t1; SELECT * -FROM (WITH qn AS (SELECT 10*a as a FROM t1), +FROM (with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a AS b FROM qn) SELECT * from qn2) dt; -# WITH in WITH -# outer ref to a table, placed in a QN in a subq (later) +--echo # with RECURSIVE in with RECURSIVE +--echo # outer ref to a table, placed in a QN in a subq (later) -# QN defined in view +--echo # QN defined in view CREATE VIEW v AS -WITH qn AS (SELECT 10*a as a FROM t1), +with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a AS b FROM qn) SELECT * from qn2; SELECT * FROM v; DROP VIEW v; -# CREATE INSERT SELECT -drop table t2; +--echo # CREATE INSERT SELECT CREATE TABLE t2 (c1 int); SELECT * FROM t2; INSERT INTO t2 -WITH qn AS (SELECT 10*a as a FROM t1), +with RECURSIVE qn AS (SELECT 10*a as a FROM t1), qn2 AS (SELECT 3*a AS b FROM qn) SELECT * from qn2; SELECT * FROM t2; DROP TABLE t2; -# when QN, when table. +--echo # when QN, when table. create table qn (a varchar(50)); insert into qn values('base'); select * from qn; -with qn as (select 'with' from dual) select * from qn; +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn; -# In a non-recursive WITH, the scope of the QN doesnot extend to its -# subquery, so "qn" inside AS() is the base table. -# View doesnot look out to external QNs +--echo # In a non-recursive with RECURSIVE, the scope of the QN doesnot extend to its +--echo # subquery, so "qn" inside AS() is the base table. +--echo # View doesnot look out to external QNs create view v as select * from qn; select * from v; -with qn as (select 'with' from dual) select * from v; +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from v; -with qn as (select * from v) select * from qn; +with RECURSIVE qn as (select * from v) select * from qn; -# Even if the base table is temporarily dropped -with qn as (select 'with' from dual) select * from v; -with qn as (select * from v) select * from qn; -# Neither does SP -# QN shadows tmp table +--echo # Even if the base table is temporarily dropped +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from v; +with RECURSIVE qn as (select * from v) select * from qn; +--echo # Neither does SP +--echo # QN shadows tmp table drop view v; -# DT shadows QN: -with qn as (select 'with' from dual) select * from (select 'dt' from dual) qn; +--echo # DT shadows QN: +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from (select 'dt' from dual) qn; -# QN of subq shadows outer QN -WITH qn AS (select 'outer' as a from dual) -SELECT (WITH qn AS (SELECT 'inner' as a from dual) SELECT a from qn), +--echo # QN of subq shadows outer QN +with RECURSIVE qn AS (select 'outer' as a from dual) +SELECT (with RECURSIVE qn AS (SELECT 'inner' as a from dual) SELECT a from qn), qn.a FROM qn; -# Qualified name is not allowed after WITH: -with test.qn as (select 'with') select * from test.qn; +--echo # Qualified name is not allowed after with RECURSIVE: +--error 1064 +with RECURSIVE cte_st.qn as (select 'with RECURSIVE') select * from cte_st.qn; -# OTOH, db. prefix in FROM doesnot resolve to QN, which is good -with qn as (select 'with' from dual) select * from qn; -with qn as (select 'with' as a from dual) select a from qn; -with qn as (select 'with' as a from dual) select qn.a from qn; +--echo # OTOH, db. prefix in FROM doesnot resolve to QN, which is good +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select a from qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select qn.a from qn; -with qn as (select 'with' from dual) select * from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from cte_st.qn; -with qn as (select 'with' as a from dual) select a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select a from cte_st.qn; -with qn as (select 'with' as a from dual) select qn.a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select qn.a from cte_st.qn; -with qn as (select 'with' as a from dual) select test.qn.a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select cte_st.qn.a from cte_st.qn; -with qn as (select 'with' as a from dual) select a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select a from cte_st.qn; -with qn as (select 'with' as a from dual) select qn.a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select qn.a from cte_st.qn; -with qn as (select 'with' as a from dual) select test.qn.a from test.qn; +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select cte_st.qn.a from cte_st.qn; drop table qn; -with qn as (select 'with' as a from dual) select a from test.qn; -with qn as (select 'with' as a from dual) select qn.a from test.qn; -with qn as (select 'with' as a from dual) select test.qn.a from test.qn; +--error 1146 +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select a from cte_st.qn; +--error 1146 +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select qn.a from cte_st.qn; +--error 1146 +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) select cte_st.qn.a from cte_st.qn; -# Unions -WITH qn AS (SELECT b as a FROM t1 UNION all SELECT b+5 FROM t1), +--echo # Unions +with RECURSIVE qn AS (SELECT b as a FROM t1 UNION all SELECT b+5 FROM t1), qn2 AS (SELECT a FROM qn WHERE a IS NULL or a>0) SELECT qn.a FROM qn UNION SELECT qn2.a FROM qn2 WHERE qn2.a>3; -# No double WITH -with qn as (select 'with' as a from dual) -with qn2 as (select 'with' as a from dual) -select a from test.qn; -select a from test.qn' at line 2 +--echo # No double with RECURSIVE +--error 1064 +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual) +with RECURSIVE qn2 as (select 'with RECURSIVE' as a from dual) +select a from cte_st.qn; -# with comma -with qn as (select 'with' as a from dual), -with qn2 as (select 'with' as a from dual) -select a from test.qn; -select a from test.qn' at line 2 +--echo # with RECURSIVE comma +--error 1064 +with RECURSIVE qn as (select 'with RECURSIVE' as a from dual), +with RECURSIVE qn2 as (select 'with RECURSIVE' as a from dual) +select a from cte_st.qn; -# ORDER BY removed unless there is LIMIT or single table (check "Using filesort") -with qn as (select a from t1 order by 1) +--echo # ORDER BY removed unless there is LIMIT or single table (check "Using filesort") +with RECURSIVE qn as (select a from t1 order by 1) select a from qn; -with qn as (select a from t1 order by 1) +with RECURSIVE qn as (select a from t1 order by 1) select qn.a from qn, t1 t2; -# Merge hint -with qn as (select a from t1), +--echo # Merge hint +with RECURSIVE qn as (select a from t1), qn2 as (select b from t1) select /*+ merge(qn) no_merge(qn2) */ qn.a,qn2.b from qn, qn2; -with qn as (select a from t1) +with RECURSIVE qn as (select a from t1) select /*+ merge(qn) no_merge(qn2) */ qn2.a from qn, qn qn2; -# FD detection -with qn as (select a, b from t1) +--echo # FD detection +with RECURSIVE qn as (select a, b from t1) select b from qn group by a; -with qn as (select a, b from t1 where a=b) +with RECURSIVE qn as (select a, b from t1 where a=b) select b from qn group by a; -with qn as (select a, sum(b) as s from t1 group by a) +with RECURSIVE qn as (select a, sum(b) as s from t1 group by a) select s from qn group by a; -# CTEs work if used in SET -# CTE works with semijoin +--echo # CTEs work if used in SET +--echo # CTE works with RECURSIVE semijoin -with cte as (select * from t1 t2) +with RECURSIVE cte as (select * from t1 t2) select * from t1 where t1.a in (select a+0 from cte); -# Column names -# empty list -with qn () as (select 1) select * from qn, qn qn1; -# Materialization -with qn (foo, bar) as (select 1 from dual) select * from qn, qn qn1; +--echo # Column names +--echo # empty list +--error 1064 +with RECURSIVE qn () as (select 1) select * from qn, qn qn1; +--echo # Materialization +--error 5740 +with RECURSIVE qn (foo, bar) as (select 1 from dual) select * from qn, qn qn1; -with qn (foo, bar) as (select 1 as col, 2 as coll from dual union all +with RECURSIVE qn (foo, bar) as (select 1 as col, 2 as coll from dual union all select a,b from t1) select qn1.bar from qn qn1; -# Merge -with qn (foo, bar) as (select 1 from t1) select * from qn, qn qn1; -with qn (foo, bar) as (select 1, 2 from t1) select * from qn, qn qn1; +--echo # Merge +--error 5740 +with RECURSIVE qn (foo, bar) as (select 1 from t1) select * from qn, qn qn1; +with RECURSIVE qn (foo, bar) as (select 1, 2 from t1) select * from qn, qn qn1; -with qn (foo, bar) as (select 1 as col, 2 as coll from t1) select * from qn, qn qn1; +with RECURSIVE qn (foo, bar) as (select 1 as col, 2 as coll from t1) select * from qn, qn qn1; -with qn (foo, bar) as (select a, b from t1) select qn1.bar,foo from qn qn1; +with RECURSIVE qn (foo, bar) as (select a, b from t1) select qn1.bar,foo from qn qn1; -# Disambiguates same-name expressions -with qn as (select 1,1 from dual) select * from qn; -with qn (foo, bar) as (select 1,1 from dual) select * from qn; +--echo # Disambiguates same-name expressions +--error 1060 +with RECURSIVE qn as (select 1,1 from dual) select * from qn; +with RECURSIVE qn (foo, bar) as (select 1,1 from dual) select * from qn; +--error 1060 +with RECURSIVE qn as (select 1,1 from t1) select * from qn; +with RECURSIVE qn (foo, bar) as (select 1,1 from t1) select * from qn; +--error 5751 +with RECURSIVE qn (foo, foo) as (select 1,2 from dual) select * from qn; -with qn as (select 1,1 from t1) select * from qn; -with qn (foo, bar) as (select 1,1 from t1) select * from qn; - -with qn (foo, foo) as (select 1,2 from dual) select * from qn; - -# Derived tables support this too -# Column names for QN/DT are printed +--echo # Derived tables support this too +--echo # Column names for QN/DT are printed create view v1 as - with qn (foo, bar) as (select 1,1 from dual) select * from qn; + with RECURSIVE qn (foo, bar) as (select 1,1 from dual) select * from qn; show create view v1; select * from v1; drop view v1; create view v1 as - with qn (foo, bar) as (select 1,1 from t1) select * from qn; + with RECURSIVE qn (foo, bar) as (select 1,1 from t1) select * from qn; show create view v1; select * from v1; drop view v1; -# printing with back-quoting is necessary, when using a -# reserved word as column name. +--echo # printing with RECURSIVE back-quoting is necessary, when using a +--echo # reserved word as column name. drop table t1; -# Prove that a materialized QN is shared among all references: +--echo # Prove that a materialized QN is shared among all references: create table t1(a int); insert into t1 values(1),(2),(3),(4); -with qn as (select 123 as col from dual) +with RECURSIVE qn as (select 123 as col from dual) select * from qn; -with qn as (select 123 as col from dual) +with RECURSIVE qn as (select 123 as col from dual) select * from qn, qn qn1; create view qn as select 123 as col from dual; select * from qn, qn qn1; @@ -268,20 +289,20 @@ drop view qn; drop table t1; -# Printing of WITH to DD for view +--echo # Printing of with RECURSIVE to DD for view create view v as -select (with qn as (select 'with' from dual) select * from qn) scal_subq +select (with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn) scal_subq from dual; show create view v; select * from v; drop view v; -create view v as select * from (with qn as (select 'with' from dual) select * from qn) dt; +create view v as select * from (with RECURSIVE qn as (select 'with RECURSIVE' from dual) select * from qn) dt; show create view v; select * from v; drop view v; -# Automatic index creation if materialized +--echo # Automatic index creation if materialized create table t1 (a int); insert into t1(a) values (1); @@ -295,48 +316,45 @@ insert into t1(a) values (8); insert into t1(a) values (9); insert into t1(a) values (0); -# One merged, one materialized: index creation on the second -# should of course ignore the first -with q as (select * from t1) +--echo # One merged, one materialized: index creation on the second +--echo # should of course ignore the first +with RECURSIVE q as (select * from t1) select /*+ merge(q) no_merge(q1) */ * from q, q q1 where q.a=1 and q1.a=2; drop table t1; -# Must not create more than 64 indexes. -drop table t; - -# Choice between two auto_key: +--echo # Choice between two auto_key: create table t1(a int, b int); insert into t1 values (null, 6); insert into t1 values (null, 10); -# Test the covering key; note that MEMORY doesnot use a -# covering key (always reads the "data file"). But InnoDB does. -with t2 as +--echo # Test the covering key; note that MEMORY doesnot use a +--echo # covering key (always reads the "data file"). But InnoDB does. +with RECURSIVE t2 as (select * from t1) SELECT /*+ no_merge(t2) */ * FROM t2 WHERE (a = a OR b <= 6) AND (a IS NULL); drop table t1; -# QN referencing view of same name isnot a "recursive view", -# shouldnot cause ER_VIEW_RECURSIVE -# QN inside view +--echo # QN referencing view of same name isnot a "recursive view", +--echo # shouldnot cause ER_VIEW_RECURSIVE +--echo # QN inside view create view v1 as -with qn as (select 1 as col from dual) select * from qn; +with RECURSIVE qn as (select 1 as col from dual) select * from qn; select * from v1; drop view v1; create table t1(a int, b int); -# Alas merge hints are ignored in views (filed Bug#23017428) +--echo # Alas merge hints are ignored in views (filed Bug#23017428) create view v1 as -with qn as (select a from t1), +with RECURSIVE qn as (select a from t1), qn2 as (select b from t1) select /*+ merge(qn) no_merge(qn2) */ qn.a,qn2.b from qn, qn2; drop view v1; -# Materializing view doesnot impose materializing query name +--echo # Materializing view doesnot impose materializing query name drop table t1; -# CTE referenced four times, including in subqueries in other CTEs +--echo # CTE referenced four times, including in subqueries in other CTEs create table sales_days(day_of_sale DATE, amount INT); insert into sales_days values ('2015-01-02', 100); insert into sales_days values ('2015-01-05', 200); @@ -345,8 +363,8 @@ insert into sales_days values ('2015-02-10', 100); insert into sales_days values ('2015-03-02', 10); insert into sales_days values ('2015-03-18', 1); -with - -- first CTE: one row per month, with amount sold on all days of month +with RECURSIVE + -- first CTE: one row per month, with RECURSIVE amount sold on all days of month sales_by_month(month,total) as (select substr(date_format(day_of_sale,'%Y-%m-%d'), 6,2), sum(amount) from sales_days where substr(date_format(day_of_sale,'%Y-%m-%d'), 1, 4)='2015' @@ -364,16 +382,17 @@ with drop table sales_days; -# Special parser command not allowed to users. +--echo # Special parser command not allowed to users. +--error 1064 parse_cte ( select 1 ) ; -# the workaround works if the temp table life is necessary -# only for a single statement: -with qn as (select 1 from dual) select * from qn, qn qn1; +--echo # the workaround works if the temp table life is necessary +--echo # only for a single statement: +with RECURSIVE qn as (select 1 from dual) select * from qn, qn qn1; -# If the tmp table is necessary, wrapping it in a query name doesnot -# help: -# Using a query name in UPDATE +--echo # If the tmp table is necessary, wrapping it in a query name doesnot +--echo # help: +--echo # Using a query name in UPDATE create table t1(a int, b int); insert into t1 values(1,2); insert into t1 values(3,4); @@ -382,25 +401,24 @@ insert into t2 values(1,2); insert into t2 values(3,4); set autocommit=0; -# Multi-table syntax +--echo # Multi-table syntax drop table t1; drop table t2; set autocommit=default; -# Syntax which wasnot accepted +--echo # Syntax which wasnot accepted create table t1 (i int); -with cte as (select * from t1) (select * from cte); +with RECURSIVE cte as (select * from t1) (select * from cte); -with cte as (select * from t1) (select * from cte) ORDER BY i; +with RECURSIVE cte as (select * from t1) (select * from cte) ORDER BY i; -with cte as (select * from t1) (select * from cte UNION select * from cte); +with RECURSIVE cte as (select * from t1) (select * from cte UNION select * from cte); -with cte as (select * from t1) (select * from cte UNION select * from cte) ORDER BY i; +with RECURSIVE cte as (select * from t1) (select * from cte UNION select * from cte) ORDER BY i; -drop table EMP; create table EMP ( EMPno number, ENAME varchar(30), @@ -427,13 +445,13 @@ create table t_emp ( create table DEPT( DEPTNO number(2), - DNAME(45), + DNAME char(45), LOC VARCHAR(39) ) ; create table t_dept( DEPTNO number(2), - DNAME(45), + DNAME char(45), LOC VARCHAR(39), primary key (DEPTNO) ) ; @@ -482,9 +500,8 @@ insert into SALGRADE values(3, 1401, 2000) ; insert into SALGRADE values(4, 2001, 3000) ; insert into SALGRADE values(5, 3001, 9999) ; -result_format: 4 -########- -########- +--echo ########- +--echo ########- select count(*) from emp emp1, emp emp2, emp emp3 where emp1.empno in ( @@ -497,7 +514,7 @@ where emp1.empno in ( emp1.mgr = emp2.mgr and emp3.mgr = emp1.mgr; -with wc_dept as +with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from dept ), wc_emp as ( select /*+ MATERIALIZE */ * from emp ), @@ -515,7 +532,7 @@ where emp1.empno in ( emp1.mgr = emp2.mgr and emp3.mgr = emp1.mgr; -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE */ count(*) from emp emp1, emp emp2, emp emp3 where emp1.empno in ( @@ -537,8 +554,8 @@ select wc2.* from wc2 order by 1; -######### -######### +--echo ######### +--echo ######### select dept.dname, dept.loc, v.sum_sal from dept, ( select sum(sal) sum_sal, deptno @@ -550,7 +567,7 @@ where dept.deptno * 2 = 30 * 2 order by 1, 2, 3; -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ) select dept.dname, dept.loc, v.sum_sal from dept, @@ -563,7 +580,7 @@ where dept.deptno * 2 = 30 * 2 order by 1, 2, 3; -with wc1 as +with RECURSIVE wc1 as ( select dept.dname, dept.loc, v.sum_sal from dept, ( select sum(sal) sum_sal, deptno @@ -582,8 +599,8 @@ select wc2.* from wc2 order by 1, 2, 3; -#########- -#########- +--echo #########- +--echo #########- select /*+ push_pred(emp_v) */ emp_v.ename from ( select /*+ no_merge */ ename, deptno - 20 deptno @@ -595,7 +612,7 @@ from where emp_v.deptno = dept.deptno order by 1; -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), wc_dept as ( select /*+ MATERIALIZE */ * from dept ) @@ -610,7 +627,7 @@ from where emp_v.deptno = dept.deptno order by 1; -with wc1 as +with RECURSIVE wc1 as ( select /*+ push_pred(emp_v) */ emp_v.ename from ( select /*+ no_merge */ ename, deptno - 20 deptno @@ -631,8 +648,8 @@ from wc2 order by 1; -######### -######### +--echo ######### +--echo ######### select /*+ PLACE_GROUP_BY((emp)) */ dept.deptno, dept.dname, dept.loc, sum(emp.sal) vw1_col from emp, dept @@ -640,7 +657,7 @@ where emp.deptno = dept.deptno group by dept.dname, dept.deptno, dept.loc order by 1, 2, 3; -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), wc_dept as ( select /*+ MATERIALIZE */ * from dept) @@ -651,7 +668,7 @@ where emp.deptno = dept.deptno group by dept.dname, dept.deptno, dept.loc order by 1, 2, 3; -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE PLACE_GROUP_BY((emp)) */ dept.deptno, dept.dname, dept.loc, sum(emp.sal) vw1_col from emp, dept @@ -668,8 +685,8 @@ select wc2.* from wc2 order by 1, 2, 3; -################- -################- +--echo ################- +--echo ################- select /*+ FACTORIZE_JOIN(#set$1) */ e.empno from emp e, dept d where e.deptno = d.deptno and @@ -682,7 +699,7 @@ where e.deptno = d.deptno and d.deptno > 30 and e.ename = 'WARD'; -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE FACTORIZE_JOIN(#set$1) */ e.empno from emp e, dept d where e.deptno = d.deptno and @@ -703,11 +720,11 @@ union select wc2.* from wc2; -################# -################# -insert into t_emp with cte as (select * from emp) SELECT * FROM cte; -insert into t_dept with cte as (select * from dept) SELECT * FROM cte; -insert into t_bonus with cte as (select * from bonus) SELECT * FROM cte; +--echo ################# +--echo ################# +insert into t_emp with RECURSIVE cte as (select * from emp) SELECT * FROM cte; +insert into t_dept with RECURSIVE cte as (select * from dept) SELECT * FROM cte; +insert into t_bonus with RECURSIVE cte as (select * from bonus) SELECT * FROM cte; insert into t_bonus values ('SMITH', 'text', 1, 2); insert into t_bonus values ('ALLEN', 'text', 1, 2); @@ -736,7 +753,7 @@ where emp.deptno = dept.deptno and group by dept.dname, bonus.job order by 2, 3, 1; -with +with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from t_dept ), wc_bonus as @@ -749,7 +766,7 @@ where emp.deptno = dept.deptno and group by dept.dname, bonus.job order by 2, 3, 1; -with +with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from t_dept ), wc_bonus as @@ -770,11 +787,11 @@ select /*+ STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, dept.dname, bonus.job from t_emp emp, - ( with wc_dept as + ( with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from t_dept ) select * from wc_dept ) dept, - ( with wc_bonus as + ( with RECURSIVE wc_bonus as ( select /*+ MATERIALIZE */ * from t_bonus ) select * from wc_bonus ) bonus @@ -783,7 +800,7 @@ where emp.deptno = dept.deptno and group by dept.dname, bonus.job order by 2, 3, 1; -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE STAR_TRANSFORMATION FACT(emp) */ sum(emp.sal) sum_sal, dept.dname, bonus.job @@ -801,16 +818,16 @@ select wc2.* from wc2 order by 2, 3, 1; -#####################################- -#####################################- -######################################- -######################################- +--echo #####################################- +--echo #####################################- +--echo ######################################- +--echo ######################################- drop table t_emp; drop table t_dept; drop table t_bonus; -############### -############### +--echo ############### +--echo ############### create table t_dept ( deptno int, dname VARCHAR(14), loc varchar(13) ) partition by range (deptno) @@ -829,7 +846,7 @@ select /*+ EXPAND_TABLE(dept) */ deptno, dname from t_dept dept order by 1, 2; -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE EXPAND_TABLE(dept) */ deptno, dname from t_dept dept ), @@ -843,15 +860,15 @@ from wc2 order by 1, 2; -########- -########- +--echo ########- +--echo ########- select /*+ PLACE_DISTINCT(dept) */ distinct emp.empno from emp, dept where emp.deptno = dept.deptno and emp.empno < 7500 order by 1; -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), wc_dept as ( select /*+ MATERIALIZE */ * from dept) @@ -861,7 +878,7 @@ where emp.deptno = dept.deptno and emp.empno < 7500 order by 1; -with wc1 as +with RECURSIVE wc1 as ( select /*+ MATERIALIZE PLACE_DISTINCT(dept) */ distinct emp.empno from emp, dept where emp.deptno = dept.deptno and @@ -876,13 +893,13 @@ select wc2.* from wc2 order by 1; -########- -########- -###############################- -###############################- -################### -################### -with with_vw as +--echo ########- +--echo ########- +--echo ###############################- +--echo ###############################- +--echo ################### +--echo ################### +with RECURSIVE with_vw as ( select /*+ MATERIALIZE */ * from ( select /*+ FACTORIZE_JOIN(emp) */ emp.ename, emp.deptno, bonus.sal @@ -907,9 +924,9 @@ order by 1, 2; drop table t_dept; -##################### -##################### -with wc_emp as +--echo ##################### +--echo ##################### +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), wc_dept as ( select /*+ MATERIALIZE */ * from dept ) @@ -922,21 +939,21 @@ order by 1, 2; select e.ename, d.dname from - ( with wc_emp as + ( with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ) select * from wc_emp ) e FULL OUTER JOIN - ( with wc_dept as + ( with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from dept ) select * from wc_dept ) d ON (e.empno = d.deptno) order by 1, 2; -##########################- -##########################- -##########################- -##########################- -with wc_bonus as +--echo ##########################- +--echo ##########################- +--echo ##########################- +--echo ##########################- +with RECURSIVE wc_bonus as ( select /*+ MATERIALIZE */ * from bonus ) select d.dname, e.ename from dept d, emp e @@ -950,7 +967,7 @@ order by 1, 2; select d.dname, e.ename from - ( with wc_dept as + ( with RECURSIVE wc_dept as ( select /*+ MATERIALIZE */ * from dept ) select * from wc_dept ) d, @@ -959,7 +976,7 @@ where d.deptno = e.deptno and e.job not in ( select job from - ( with wc_bonus as + ( with RECURSIVE wc_bonus as ( select /*+ MATERIALIZE */ * from bonus ) select * from wc_bonus ) b @@ -967,10 +984,10 @@ where d.deptno = e.deptno and e.job is not null order by 1, 2; -#########################- -#########################- -########################### -########################### +--echo #########################- +--echo #########################- +--echo ########################### +--echo ########################### select V.dname, V.subq_col from ( select /*+ merge */ @@ -984,7 +1001,7 @@ where V.subq_col < 5000 and V.subq_col > 0 order by 1, 2; -with wc_emp as +with RECURSIVE wc_emp as ( select /*+ MATERIALIZE */ * from emp ), wc_dept as ( select /*+ MATERIALIZE */ * from dept ) @@ -1001,25 +1018,26 @@ where V.subq_col < 5000 and V.subq_col > 0 order by 1, 2; - -drop table emp,t1,t2,t3,t4; +drop table emp; +drop table t1; create table emp (id int, name varchar(20), leaderid int); create table dsemp (id int, name varchar(20), leaderid int) partition by hash (id) partitions 3; create table t1(c1 int, c2 int, c3 int); create table t2 (c1 int, c2 int, c3 int); create table t44 (c1 int, c2 int, c3 int); create table insert_t (c1 int, c2 int, c3 int); -create table t3(c1 int primary key, c2 int, c3 varchar(32)) partition by hash (c1) partitions 3; -create table troot(c1 int primary key, c2 int, c3 int unique); create table t4(id int, value char(10), parent_id int); -create table z(zc int); -WITH t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) select * from t4; -with cte(a,a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -with cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -with cte(a,b,c) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -with cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -with cte(a,b,c) as +with RECURSIVE t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) select * from t4; +--error 5751 +with RECURSIVE cte(a,a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +with RECURSIVE cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +--error 5740 +with RECURSIVE cte(a,b,c) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +--error 5740 +with RECURSIVE cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +--error 1054 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -1027,22 +1045,22 @@ with cte(a,b,c) as ) select c1,c2,c3 from cte; -with cte as (select * from t1) , +with RECURSIVE cte as (select * from t1) , cte_recursive (n) as (select 1 from dual union all select n+1 from cte_recursive where n < 23) select (select count(*) from cte_recursive) from t1; -with cte(n) as (select c1 from t1) , +with RECURSIVE cte(n) as (select c1 from t1) , cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) select * from cte_recursive; -with cte(n) as (select c1 from t1) , +with RECURSIVE cte(n) as (select c1 from t1) , cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte_recursive) from t1; - -WITH +--error 1146 +with RECURSIVE cte1 (a, b) AS ( SELECT c, d FROM cte2 @@ -1054,15 +1072,16 @@ SELECT 1,2 from dual union all select c+1, d+1 from cte2 where c < 10 SELECT b, d FROM cte1 JOIN cte2 on cte1.a = cte2.c; - -with +--error 1054 +with RECURSIVE cte1 AS ( - with cte2 AS (select c1, c2 from t1 union all select c+1, d+1 from cte2 where c < 100) + with RECURSIVE cte2 AS (select c1, c2 from t1 union all select c+1, d+1 from cte2 where c < 100) select c1 from cte2 ) select c1 from cte1; -with cte(a,b) as (select * from (with cteb(a, b) as (select c1, c2 from t1 union all select c+1, d+1 from cteb where c < 100) select * from cteb) bac) select * from cte; -with cteb(a,b) as +--error 1054 +with RECURSIVE cte(a,b) as (select * from (with RECURSIVE cteb(a, b) as (select c1, c2 from t1 union all select c+1, d+1 from cteb where c < 100) select * from cteb) bac) select * from cte; +with RECURSIVE cteb(a,b) as ( select c1, c2 from t1 union all select a+1, b+1 from cteb where a < 100 ), @@ -1073,85 +1092,97 @@ select * from cteb bac select * from cte; -with cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (select 1 from dual union all select * from cte) select * from cte_1; -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; -with cte(n) AS ( select 1 from cte) select * from cte; +with RECURSIVE cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (select 1 from dual union all select * from cte) select * from cte_1; +--error 5743 +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; +--error 5742 +with RECURSIVE cte(n) AS ( select 1 from cte) select * from cte; set @@ob_query_timeout=1000000; -with cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; +--error 5758 +with RECURSIVE cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; set @@ob_query_timeout=10000000; -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 union all select n+1 from cte where n < 2) select * from cte; -with cte(n) as (select 1 from dual union all select c1 from t1 union all (with cte(n) as (select c1 from t1) select * from cte)) select * from cte; -with cte(n) as (select '1' from dual union all select n+1 from cte where n < 100) select * from cte; +--error 5743 +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 union all select n+1 from cte where n < 2) select * from cte; +--error 5746 +with RECURSIVE cte(n) as (select 1 from dual union all select c1 from t1 union all (with RECURSIVE cte(n) as (select c1 from t1) select * from cte)) select * from cte; +with RECURSIVE cte(n) as (select '1' from dual union all select n+1 from cte where n < 100) select * from cte; -with cte(n) as (select n from (select 1 from dual union all select n+1 from cte) tmp) select * from cte; +--error 5744 +with RECURSIVE cte(n) as (select n from (select 1 from dual union all select n+1 from cte) tmp) select * from cte; set @@ob_query_timeout=1000000; -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte right join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 left join cte on cte.n < 3 and t2.c1 < 22) select * from cte; -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 full join cte on cte.n < 3 and t2.c1 < 22) select * from cte; -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte full join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; +--error 5759 +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte right join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; +--error 5759 +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 left join cte on cte.n < 3 and t2.c1 < 22) select * from cte; +--error 5759 +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 full join cte on cte.n < 3 and t2.c1 < 22) select * from cte; +--error 5759 +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte full join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; set @@ob_query_timeout=10000000; -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 order by n ) select * from cte; -with cte(a,b,c) as ( +--error 1054 +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 order by n ) select * from cte; +--error 1146 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from not_exist where not_exist.c1 < 20 union all select c1,c2,c3 from not_exist, cte where cte.a = not_exist.c1 and cte.c < 10 ) select * from cte; -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where c1+'1' <= 3 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 group by c1,c2 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where t1.c1 > 5 union all select c+1, d+1 from cte2 where c < 30) select c,d from cte2; -with +with RECURSIVE cte2(c,d) AS (select c1, c2 + 1 as c3 from t1 order by c2 union all select c+1, d+1 from cte2 where c < 30) select c,d from cte2; - -explain basic with +--error 5740 +explain basic with RECURSIVE cte2(c,d) AS (select * from t1 left join t2 on t1.c1=t2.c1 order by t1.c1 union all select c+1, d+1 from cte2 where c < 30) select c1 from cte2; -with +with RECURSIVE cte2(c,d) AS (select t1.c1, t2.c2 from t1 left join t2 on t1.c1=t2.c1 order by t1.c1 union all select c+1, d+1 from cte2 where c < 30) select c from cte2; -with +with RECURSIVE cte(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte, t2 where t2.c1 = c and t2.c2 > some (select c1 from t44 t99 group by c1)) select * from cte; -with +with RECURSIVE cte(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte, t2 where t2.c1 = c and t2.c2 > some (select c1 from t44 t99 group by c1)) select * from cte; create table ex (c1 int, c2 int); -with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +with RECURSIVE ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; -with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +with RECURSIVE ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; -with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select n from cte; +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select n from cte; -with cte(a,b,c) as +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -1159,15 +1190,14 @@ with cte(a,b,c) as select count(distinct cte.a), avg(distinct cte.b) from cte where cte.c < 10; -with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte) from cte; +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte) from cte; -drop table cte1; create table cte1 (a int, b int, c int); set ob_query_timeout = 100000000; -with cte1(a,b,c) as +with RECURSIVE cte1(a,b,c) as ( select 1,1,1 from dual union all @@ -1189,7 +1219,7 @@ SELECT cte1.a, cte1.b FROM cte1 JOIN cte3 on cte1.a < cte3.c; -WITH fibonacci (n, fib_n, next_fib_n) AS +with RECURSIVE fibonacci (n, fib_n, next_fib_n) AS ( SELECT 1, 0, 1 from dual UNION ALL @@ -1198,7 +1228,7 @@ WITH fibonacci (n, fib_n, next_fib_n) AS ) SELECT * FROM fibonacci; -with cte as (select 18 d from dual), +with RECURSIVE cte as (select 18 d from dual), prod (lastnum, lastprod) as ( select 1, 1 from dual union all @@ -1206,14 +1236,14 @@ with cte as (select 18 d from dual), select * from prod, cte where lastnum = d; -insert into insert_t with cte(a,b,c) as (select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where a < 10) SELECT * FROM cte; +insert into insert_t with RECURSIVE cte(a,b,c) as (select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where a < 10) SELECT * FROM cte; select * from insert_t; -with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; -delete from t1 where c1 = ( with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1 from cte where c2 = 3); +with RECURSIVE cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; +delete from t1 where c1 = ( with RECURSIVE cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1 from cte where c2 = 3); -drop table emp,dept,emp1,emp2; +drop table emp,dept; create table EMP ( EMPno number, ENAME varchar(30), @@ -1309,13 +1339,13 @@ INSERT INTO emp2 values (4001, 'ADAMS', 'CLERK', 5001, str_to_date('1987-05-23', INSERT INTO emp2 values (5007, 'JAMES', 'CLERK', 6002, str_to_date('1981-12-03', '%Y-%m-%d'), 950, null, 30); INSERT INTO emp2 values (5002, 'FORD', 'ANALYST', 6001, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); -result_format: 4 -## ======================================================================= -## Test Case 1: -## - recursive WITH Query: no cycle clause used in query in acyclic data -## ======================================================================= -WITH rw (ename, mgr, empno) AS +--echo ## ======================================================================= +--echo ## Test Case 1: +--echo ## - recursive with RECURSIVE Query: no cycle clause used in query in acyclic data +--echo ## ======================================================================= + +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -1402,15 +1432,15 @@ INSERT INTO emp2 values (5007, 'JAMES', 'CLERK', 6002, str_to_date('1981-12-03', INSERT INTO emp2 values (5002, 'FORD', 'ANALYST', 6001, str_to_date('1981-12-03', '%Y-%m-%d'), 3000, null, 20); INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23', '%Y-%m-%d'), 1300, null, 10); -## ======================================================================= -## Test Case 2: -## - recursive WITH Query(Negative): cycle clause not used in query with -## cyclic data -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 2: +--echo ## - recursive with RECURSIVE Query(Negative): cycle clause not used in query with RECURSIVE +--echo ## cyclic data +--echo ## ======================================================================= /* add loop from scott back to king in emp */ update emp set mgr = 7788 where ename = 'KING'; - -WITH rw (ename, mgr, empno) AS +--error 5746 +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -1516,13 +1546,13 @@ INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23' -## ======================================================================= -## Test Case 3: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles e.mgr < e.empno -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 3: +--echo ## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +--echo ## Pruning predicate added that results in no cycles e.mgr < e.empno +--echo ## ======================================================================= update emp2 set mgr = 5001 where ename = 'KING'; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -1535,13 +1565,13 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 4: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles e.mgr > e.empno -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 4: +--echo ## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +--echo ## Pruning predicate added that results in no cycles e.mgr > e.empno +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -1554,13 +1584,13 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 5: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles r.empno < e.empno -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 5: +--echo ## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +--echo ## Pruning predicate added that results in no cycles r.empno < e.empno +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -1573,13 +1603,13 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -## ======================================================================= -## Test Case 6: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query -## Pruning predicate added that results in no cycles r.empno > e.empno -## ======================================================================= +--echo ## ======================================================================= +--echo ## Test Case 6: +--echo ## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query +--echo ## Pruning predicate added that results in no cycles r.empno > e.empno +--echo ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -1592,4 +1622,4 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; - +drop database cte_st; \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/t/dis_recursive_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/dis_recursive_mysql.test similarity index 87% rename from test/mysql_test/test_suite/with_clause/t/dis_recursive_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/dis_recursive_mysql.test index eebd4cd4e..789354567 100644 --- a/test/mysql_test/test_suite/with_clause/t/dis_recursive_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/dis_recursive_mysql.test @@ -1,3 +1,14 @@ +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + +--result_format 4 create table disemp ( EMPno number, ENAME varchar(30), @@ -126,11 +137,11 @@ insert into dsemp1 values(12, 'AAAA', '5'); ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: Nested Loop Join +## - recursive with RECURSIVE Query: Nested Loop Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -143,7 +154,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -158,11 +169,11 @@ FROM rw; ## ======================================================================= ## Test Case 2: -## - recursive WITH Query: SORT MERGE Join +## - recursive with RECURSIVE Query: SORT MERGE Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -175,7 +186,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -191,11 +202,11 @@ FROM rw; ## ======================================================================= ## Test Case 3: -## - recursive WITH Query: Hash Join +## - recursive with RECURSIVE Query: Hash Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -208,7 +219,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -223,12 +234,12 @@ FROM rw; ## ======================================================================= ## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch +## - recursive with RECURSIVE Query: Join in Initialisation Branch ## 与oracle的结果顺序不一样 ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM disemp e, disemp d @@ -241,7 +252,8 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +--sorted_result +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM disemp e, disemp d @@ -256,13 +268,13 @@ FROM rw; ## ======================================================================= ## Test Case 6: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on build side and fits in memory ## 与oracle顺序不一致 ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -275,7 +287,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -290,12 +302,12 @@ FROM rw; ## ======================================================================= ## Test Case 7: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on probe side and fits in memory ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -308,7 +320,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -324,12 +336,12 @@ FROM rw; ## ======================================================================= ## 测试8-15都是在测试join的顺序或者hint的顺序 ## Test Case 8: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< disemp >< emp1 ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -343,7 +355,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -359,12 +371,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 9: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< pump >< emp1 ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -378,7 +390,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -394,12 +406,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 10: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< emp1 >< pump ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -413,7 +425,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -430,12 +442,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 11: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< disemp >< pump ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -449,7 +461,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -465,12 +477,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 12: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< disemp ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -483,7 +495,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -498,12 +510,12 @@ FROM rw; ## ======================================================================= ## Test Case 13: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< pump ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -516,7 +528,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -531,12 +543,12 @@ FROM rw; ## ======================================================================= ## Test Case 14: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< pump >< disemp ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -550,7 +562,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -566,12 +578,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 15: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp1 >< disemp ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -585,7 +597,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -601,11 +613,11 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter +## - recursive with RECURSIVE Query: Join Skew handling. No local filter ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -618,7 +630,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -633,11 +645,11 @@ FROM rw; ## ======================================================================= ## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -650,7 +662,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -701,11 +713,11 @@ INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: Nested Loop Join +## - recursive with RECURSIVE Query: Nested Loop Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -718,7 +730,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -733,11 +745,11 @@ FROM rw; ## ======================================================================= ## Test Case 2: -## - recursive WITH Query: SORT MERGE Join +## - recursive with RECURSIVE Query: SORT MERGE Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -750,7 +762,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -766,11 +778,11 @@ FROM rw; ## ======================================================================= ## Test Case 3: -## - recursive WITH Query: Hash Join +## - recursive with RECURSIVE Query: Hash Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -783,7 +795,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -798,12 +810,12 @@ FROM rw; ## ======================================================================= ## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch +## - recursive with RECURSIVE Query: Join in Initialisation Branch ## 与oracle的结果顺序不一样 ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM disemp e, disemp d @@ -816,7 +828,8 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +--sorted_result +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM disemp e, disemp d @@ -831,13 +844,13 @@ FROM rw; ## ======================================================================= ## Test Case 6: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on build side and fits in memory ## 与oracle顺序不一致 ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -850,7 +863,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -865,12 +878,12 @@ FROM rw; ## ======================================================================= ## Test Case 7: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on probe side and fits in memory ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -883,7 +896,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -899,12 +912,12 @@ FROM rw; ## ======================================================================= ## 测试8-15都是在测试join的顺序或者hint的顺序 ## Test Case 8: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< disemp >< emp1 ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -918,7 +931,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -934,12 +947,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 9: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< pump >< emp1 ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -953,7 +966,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -969,12 +982,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 10: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< emp1 >< pump ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -989,7 +1002,7 @@ WITH rw (empno, mgr, iters, sal) AS ORDER BY 1, 3; --error 0,4036 -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1006,12 +1019,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 11: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< disemp >< pump ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1027,7 +1040,7 @@ WITH rw (empno, mgr, iters, sal) AS ##oracle ok --error 0,4036 -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1043,12 +1056,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 12: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< disemp ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1061,7 +1074,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1076,12 +1089,12 @@ FROM rw; ## ======================================================================= ## Test Case 13: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< pump ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1094,7 +1107,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1109,12 +1122,12 @@ FROM rw; ## ======================================================================= ## Test Case 14: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< pump >< disemp ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1129,7 +1142,7 @@ WITH rw (empno, mgr, iters, sal) AS ORDER BY 1, 3; --error 0,4036 -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1145,12 +1158,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 15: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp1 >< disemp ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1165,7 +1178,7 @@ WITH rw (empno, mgr, iters, sal) AS ORDER BY 1, 3; --error 0,4036 -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1181,11 +1194,11 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter +## - recursive with RECURSIVE Query: Join Skew handling. No local filter ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1198,7 +1211,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1213,11 +1226,11 @@ FROM rw; ## ======================================================================= ## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1230,7 +1243,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1282,11 +1295,11 @@ INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: Nested Loop Join +## - recursive with RECURSIVE Query: Nested Loop Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1299,7 +1312,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1314,11 +1327,11 @@ FROM rw; ## ======================================================================= ## Test Case 2: -## - recursive WITH Query: SORT MERGE Join +## - recursive with RECURSIVE Query: SORT MERGE Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1331,7 +1344,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1347,11 +1360,11 @@ FROM rw; ## ======================================================================= ## Test Case 3: -## - recursive WITH Query: Hash Join +## - recursive with RECURSIVE Query: Hash Join ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1364,7 +1377,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1379,12 +1392,12 @@ FROM rw; ## ======================================================================= ## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch +## - recursive with RECURSIVE Query: Join in Initialisation Branch ## 与oracle的结果顺序不一样 ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM disemp e, disemp d @@ -1397,7 +1410,8 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +--sorted_result +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM disemp e, disemp d @@ -1412,13 +1426,13 @@ FROM rw; ## ======================================================================= ## Test Case 6: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on build side and fits in memory ## 与oracle顺序不一致 ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1431,7 +1445,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1446,12 +1460,12 @@ FROM rw; ## ======================================================================= ## Test Case 7: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on probe side and fits in memory ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1464,7 +1478,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1480,12 +1494,12 @@ FROM rw; ## ======================================================================= ## 测试8-15都是在测试join的顺序或者hint的顺序 ## Test Case 8: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< disemp >< emp1 ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1499,7 +1513,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1515,12 +1529,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 9: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< pump >< emp1 ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1534,7 +1548,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1550,12 +1564,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 10: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< emp1 >< pump ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1569,7 +1583,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1586,12 +1600,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 11: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< disemp >< pump ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1605,7 +1619,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1621,12 +1635,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 12: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< disemp ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1639,7 +1653,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1654,12 +1668,12 @@ FROM rw; ## ======================================================================= ## Test Case 13: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## disemp >< pump ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1672,7 +1686,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1687,12 +1701,12 @@ FROM rw; ## ======================================================================= ## Test Case 14: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< pump >< disemp ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1707,7 +1721,7 @@ WITH rw (empno, mgr, iters, sal) AS ORDER BY 1, 3; --error 0,4036 -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1723,12 +1737,12 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 15: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp1 >< disemp ## ======================================================================= explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1743,7 +1757,7 @@ WITH rw (empno, mgr, iters, sal) AS ORDER BY 1, 3; --error 0,4036 -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1759,11 +1773,11 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter +## - recursive with RECURSIVE Query: Join Skew handling. No local filter ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1776,7 +1790,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1791,11 +1805,11 @@ FROM rw; ## ======================================================================= ## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter ## ======================================================================= explain -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1808,7 +1822,7 @@ WITH rw (ename, mgr, empno) AS SELECT ename, empno, mgr FROM rw; -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM disemp e @@ -1864,7 +1878,7 @@ INSERT INTO disemp1 VALUES (7934,'MILLER','CLERK', 7782, str_to_date('1982-0 ## 这个case 测试了subplan filter #SELECT * FROM (SELECT /*+ ORDERED USE_HASH (r e) */ r.empno, e.mgr, r.iters + 1, r.sal + e.sal FROM emp1 n, disemp e, (SELECT e.empno as empno, e.mgr as mgr, 1 as iters, e.sal as sal FROM disemp e, emp1 n1, emp1 n2 WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr)r WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c2) ) rw ORDER BY 1, 3; explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1878,7 +1892,7 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1894,7 +1908,7 @@ WITH rw (empno, mgr, iters, sal) AS explain -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM disemp e, emp1 n1, emp1 n2 @@ -1908,4 +1922,18 @@ WITH rw (empno, mgr, iters, sal) AS FROM rw ORDER BY 1, 3; +with RECURSIVE rw (empno, mgr, iters, sal) AS + ( + SELECT e.empno, e.mgr, 1, e.sal + FROM disemp e, emp1 n1, emp1 n2 + WHERE e.empno = n1.empno and e.mgr = n2.empno and e.empno < e.mgr + UNION ALL + SELECT /*+ ORDERED USE_HASH (r e) */r.empno, e.mgr, r.iters + 1, r.sal + e.sal + FROM emp1 n, disemp e, rw r + WHERE n.empno = e.mgr and e.empno = r.mgr and e.empno = e.mgr and e.empno > some (select c1 from t1 group by c1) and e.empno in (select e.empno from disemp1) + ) + SELECT * + FROM rw + ORDER BY 1, 3; +drop database cte_st; \ No newline at end of file diff --git a/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_bug_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_bug_mysql.test new file mode 100644 index 000000000..1753ff0e1 --- /dev/null +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_bug_mysql.test @@ -0,0 +1,84 @@ +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + +--echo ## bugfix: https://work.aone.alibaba-inc.com/issue/37502128 +--result_format 4 +--error 1146 +with cte1(c1, c2) as + (select 1, '0' from dual + union all select 2, '1' from dual + ), +cte2(c1, c2) as + (select '0', 1 from dual + union all select cte1.c2, cte1.c1 from cte2, cte1 where 10 = cte2.c1) +select * from cte2; + +--error 1146 +WITH my_cte AS (SELECT 1 AS n UNION ALL SELECT 1+n FROM my_cte WHERE n<10 ) SELECT * FROM my_cte; + +WITH recursive my_cte AS (SELECT 1 AS n UNION ALL SELECT 1+n FROM my_cte WHERE n<10 ) SELECT * FROM my_cte; +--error 3574 +WITH recursive my_cte AS (SELECT 1+n FROM my_cte WHERE n<10 UNION ALL SELECT 1 AS n) SELECT * FROM my_cte; +--error 1146 +WITH my_cte AS (SELECT 1+n FROM my_cte WHERE n<10 UNION ALL SELECT 1 AS n) SELECT * FROM my_cte; + + + +--echo ##bugfix: https://work.aone.alibaba-inc.com/issue/37501730 +create table t1(deptno number, loc varchar(100)); +CREATE TABLE t2(EMPNO DECIMAL(4) UNIQUE,ENAME VARCHAR(10) NOT NULL,JOB VARCHAR(9),MGR DECIMAL(4),HIREDATE DATE,SAL DECIMAL(7,2),COMM DECIMAL(7,2),DEPTNO INT); +--error 1066 +WITH +temp AS (SELECT e.deptno,e.loc FROM t1 e WHERE e.loc IN ('New York','ChiCaGo') ORDER BY e.deptno), +temp AS (SELECT p.deptno,p.job FROM t2 p WHERE p.job NOT IN ('CLERK','ANALYST') ORDER BY p.deptno) +SELECT e.deptno,e.loc,p.job FROM temp e,temp p WHERE e.deptno = p.deptno ORDER BY 1,2,3; + + +--echo ##bugfix: https://work.aone.alibaba-inc.com/issue/37715234 +CREATE TABLE employees ( + id INT PRIMARY KEY NOT NULL, + name VARCHAR(100) NOT NULL, + manager_id INT NULL, + INDEX (manager_id) +); +INSERT INTO employees VALUES(333, 'Yasmina', NULL); +INSERT INTO employees VALUES(198, 'John', 333); +INSERT INTO employees VALUES(692, 'Tarek', 333); +INSERT INTO employees VALUES(29, 'Pedro', 198); +INSERT INTO employees VALUES(4610, 'Sarah', 29); +INSERT INTO employees VALUES(72, 'Pierre', 29); +INSERT INTO employees VALUES(123, 'Adil', 692); + +## result not correct. https://aone.alibaba-inc.com/task/35657687 +WITH RECURSIVE employee_paths (id, name, path) AS +( + SELECT id, name, 1 + FROM employees + WHERE manager_id IS NULL + UNION ALL + SELECT e.id, e.name, CONCAT(ep.path, ',', e.id) + FROM employee_paths ep JOIN employees e + ON ep.id = e.manager_id +) +SELECT * FROM employee_paths ORDER BY name; + + +WITH RECURSIVE employee_paths (id, name, path) AS +( + SELECT id, name, CAST(id AS CHAR(200)) + FROM employees + WHERE manager_id IS NULL + UNION ALL + SELECT e.id, e.name, CONCAT(ep.path, ',', e.id) + FROM employee_paths AS ep JOIN employees AS e + ON ep.id = e.manager_id +) +SELECT * FROM employee_paths ORDER BY name; +drop database cte_st; \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/t/recursive_cycle_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_cycle_mysql.test similarity index 95% rename from test/mysql_test/test_suite/with_clause/t/recursive_cycle_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_cycle_mysql.test index ece23ea08..cb1e83e19 100644 --- a/test/mysql_test/test_suite/with_clause/t/recursive_cycle_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_cycle_mysql.test @@ -1,4 +1,14 @@ -drop table EMP,DEPT,emp1,emp2; +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + +--result_format 4 create table EMP ( EMPno number, ENAME varchar(30), @@ -12,7 +22,7 @@ create table EMP ( create table DEPT( DEPTNO number(2), - DNAME(45), + DNAME char(45), LOC varchar(39) ) ; @@ -106,11 +116,11 @@ INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23' ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: no cycle clause used in query in acyclic data +## - recursive with RECURSIVE Query: no cycle clause used in query in acyclic data ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -202,14 +212,14 @@ INSERT INTO emp2 values (5008, 'MILLER', 'CLERK', 6003, str_to_date('1982-01-23' ## ======================================================================= ## Test Case 2: -## - recursive WITH Query(Negative): cycle clause not used in query with +## - recursive with RECURSIVE Query(Negative): cycle clause not used in query with RECURSIVE ## cyclic data ## ======================================================================= /* add loop from scott back to king in emp */ update emp set mgr = 7788 where ename = 'KING'; - -WITH rw (ename, mgr, empno) AS +--error 5746 +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -302,11 +312,11 @@ update emp2 set mgr = 5001 where ename = 'KING'; ## ======================================================================= ## Test Case 3: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query ## Pruning predicate added that results in no cycles e.mgr < e.empno ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -321,11 +331,11 @@ FROM rw; ## ======================================================================= ## Test Case 4: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query ## Pruning predicate added that results in no cycles e.mgr > e.empno ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -340,11 +350,11 @@ FROM rw; ## ======================================================================= ## Test Case 5: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query ## Pruning predicate added that results in no cycles r.empno < e.empno ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -359,11 +369,11 @@ FROM rw; ## ======================================================================= ## Test Case 6: -## - recursive WITH Query: Cycle Pruning with Cycle clause not used in the query +## - recursive with RECURSIVE Query: Cycle Pruning with RECURSIVE Cycle clause not used in the query ## Pruning predicate added that results in no cycles r.empno > e.empno ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp2 e @@ -377,6 +387,7 @@ SELECT ename, empno, mgr FROM rw; +drop database cte_st; diff --git a/test/mysql_test/test_suite/with_clause/t/recursive_join_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_join_mysql.test similarity index 86% rename from test/mysql_test/test_suite/with_clause/t/recursive_join_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_join_mysql.test index 56aae9479..d64abda16 100644 --- a/test/mysql_test/test_suite/with_clause/t/recursive_join_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_join_mysql.test @@ -1,4 +1,14 @@ -drop table EMP; +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + +--result_format 4 create table EMP ( EMPno number, ENAME VARCHAR(30), @@ -25,7 +35,6 @@ INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('1981-12-03' INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('1981-12-03','%Y-%m-%d'), 3000, NULL, 20) ; INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('1982-01-23','%Y-%m-%d'), 1300,NULL, 10) ; -drop table emp1; CREATE TABLE emp1 ( empno VARCHAR(4000) NOT NULL, ename VARCHAR(14), @@ -68,13 +77,12 @@ INSERT INTO emp1 values (8101, 'Eve1', 'MANAGER', 8100, str_to_date('1984-05-01' INSERT INTO emp1 values (8108, 'Eve8', 'CLERK', 8101, str_to_date('1984-05-01', '%Y-%m-%d'), 2850, null, 30); -result_format: 4 ## ======================================================================= ## Test Case 1: -## - recursive WITH Query: Nested Loop Join +## - recursive with RECURSIVE Query: Nested Loop Join ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -89,10 +97,10 @@ FROM rw; ## ======================================================================= ## Test Case 2: -## - recursive WITH Query: SORT MERGE Join +## - recursive with RECURSIVE Query: SORT MERGE Join ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -107,10 +115,10 @@ FROM rw; ## ======================================================================= ## Test Case 3: -## - recursive WITH Query: Hash Join +## - recursive with RECURSIVE Query: Hash Join ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -125,10 +133,10 @@ FROM rw; ## ======================================================================= ## Test Case 4: -## - recursive WITH Query: Join in Initialisation Branch +## - recursive with RECURSIVE Query: Join in Initialisation Branch ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT /*+ USE_NL(e d) */ e.ename, e.mgr, e.empno FROM emp e, emp d @@ -143,11 +151,11 @@ FROM rw; ## ======================================================================= ## Test Case 6: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on build side and fits in memory ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -162,11 +170,11 @@ FROM rw; ## ======================================================================= ## Test Case 7: -## - recursive WITH Query: Hash Join without using hints +## - recursive with RECURSIVE Query: Hash Join without using hints ## Static input on probe side and fits in memory ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -182,11 +190,11 @@ FROM rw; ## ======================================================================= ## 测试8-15都是在测试join的顺序或者hint的顺序 ## Test Case 8: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp >< emp1 ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -202,11 +210,11 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 9: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< pump >< emp1 ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -222,11 +230,11 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 10: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< emp1 >< pump ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -242,11 +250,11 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 11: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< emp >< pump ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -262,11 +270,11 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 12: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -281,11 +289,11 @@ FROM rw; ## ======================================================================= ## Test Case 13: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp >< pump ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -300,11 +308,11 @@ FROM rw; ## ======================================================================= ## Test Case 14: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## emp1 >< pump >< emp ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -320,11 +328,11 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 15: -## - recursive WITH Query: Join Order tests +## - recursive with RECURSIVE Query: Join Order tests ## pump >< emp1 >< emp ## ======================================================================= -WITH rw (empno, mgr, iters, sal) AS +with RECURSIVE rw (empno, mgr, iters, sal) AS ( SELECT e.empno, e.mgr, 1, e.sal FROM emp e, emp1 n1, emp1 n2 @@ -340,10 +348,10 @@ WITH rw (empno, mgr, iters, sal) AS ## ======================================================================= ## Test Case 16: -## - recursive WITH Query: Join Skew handling. No local filter +## - recursive with RECURSIVE Query: Join Skew handling. No local filter ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -358,10 +366,10 @@ FROM rw; ## ======================================================================= ## Test Case 17: -## - recursive WITH Query: Join Skew handling with an additional local filter +## - recursive with RECURSIVE Query: Join Skew handling with RECURSIVE an additional local filter ## ======================================================================= -WITH rw (ename, mgr, empno) AS +with RECURSIVE rw (ename, mgr, empno) AS ( SELECT ename, mgr, empno FROM emp e @@ -372,4 +380,5 @@ WITH rw (ename, mgr, empno) AS WHERE r.empno = e.mgr and e.empno < e.mgr ) SELECT ename, empno, mgr -FROM rw; \ No newline at end of file +FROM rw; +drop database cte_st; \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/t/recursive_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_mysql.test similarity index 68% rename from test/mysql_test/test_suite/with_clause/t/recursive_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_mysql.test index 9254fccc1..dc1352021 100644 --- a/test/mysql_test/test_suite/with_clause/t/recursive_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_mysql.test @@ -1,4 +1,14 @@ -drop table emp; +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + +--result_format 4 create table emp (id int, name varchar(20), leaderid int); insert into emp values(1, 'A', '0'); insert into emp values(2, 'AA', '1'); @@ -13,7 +23,6 @@ insert into emp values(10, 'AAAB', '5'); insert into emp values(11, 'AAAC', '5'); insert into emp values(12, 'AAAA', '5'); -drop table dsemp; create table dsemp (id int, name varchar(20), leaderid int) partition by hash (id) partitions 3; insert into dsemp values(1, 'A', '0'); insert into dsemp values(2, 'AA', '1'); @@ -28,7 +37,6 @@ insert into dsemp values(10, 'AAAB', '5'); insert into dsemp values(11, 'AAAC', '5'); insert into dsemp values(12, 'AAAA', '5'); -drop table t1; create table t1(c1 int, c2 int, c3 int); insert into t1 values(1, 2, 3); insert into t1 values(4, 5, 6); @@ -38,7 +46,6 @@ insert into t1 values(13, 14, 15); insert into t1 values(16, 17, 18); insert into t1 values(19, 20, 21); -drop table t2; create table t2 (c1 int, c2 int, c3 int); insert into t2 values(1,1,3); insert into t2 values(2,2,3); @@ -46,19 +53,15 @@ insert into t2 values(3,3,3); insert into t2 values(4,4,3); insert into t2 values(5,5,3); -drop table t44; create table t44 (c1 int, c2 int, c3 int); insert into t44 values(1,1,3); insert into t44 values(2,2,3); insert into t44 values(3,3,3); -drop table insert_t; create table insert_t (c1 int, c2 int, c3 int); -drop table t3; create table t3(c1 int primary key, c2 int, c3 varchar(32)) partition by hash (c1) partitions 3; -drop table troot; create table troot(c1 int primary key, c2 int, c3 int unique); insert into troot values(1, 0, -1); insert into troot values(2, 1, -2); @@ -74,7 +77,6 @@ insert into troot values(11, 10, -11); insert into troot values(12, 7, -12); insert into troot values(13, 4, -13); -drop table t4; create table t4(id int, value char(10), parent_id int); insert into t4 values(1, 'A', NULL); insert into t4 values(2, 'B', 1); @@ -85,7 +87,6 @@ insert into t4 values(6, 'F', 2); insert into t4 values(7, 'G', 4); insert into t4 values(8, 'H', 6); -drop table z; create table z(zc int); insert into z values(1); insert into z values(2); @@ -120,31 +121,34 @@ insert into z values(9); ############################## ## PART 1.1 表名,列名不能是保留关键字,可以是分保留关键字 -WITH explain(a) as (select 1 from dual union all select a+1 from explain where a+1 < 10) select * from explain; +--error 1064 +with RECURSIVE explain(a) as (select 1 from dual union all select a+1 from explain where a+1 < 10) select * from explain; -WITH cte(explain) as (select 1 from dual union all select explain+1 from cte where explain+1 < 10) select * from cte; +--error 1064 +with RECURSIVE cte(explain) as (select 1 from dual union all select explain+1 from cte where explain+1 < 10) select * from cte; ## PART 1.2 允许与已有的表重名 -WITH t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) select * from t4; +with RECURSIVE t4(a) as (select 1 from dual union all select a+1 from t4 where a+1 < 10) select * from t4; ############################## ## PART 2 单个的定义 ############################## ## PART 2.1 定义列名重复 -## 32049. 00000 - "duplicate name found in column alias list for WITH clause" -with cte(a,a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +--error 5751 +with RECURSIVE cte(a,a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; ## PART 2.2.1 定义列数量与查询产生列一致或不一致 -with cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +with RECURSIVE cte(a,b) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; -## 32038. 00000 - "number of WITH clause column names does not match number of elements in select list" -with cte(a,b,c) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; - -with cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +--error 5740 +with RECURSIVE cte(a,b,c) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; +--error 5740 +with RECURSIVE cte(a) as (select 1,1 from dual union all select a+1, a+1 from cte where a+1 < 10) select * from cte; ## PART 2.2.2 不使用定义列使用原来的列 -with cte(a,b,c) as +--error 1054 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -157,58 +161,59 @@ with cte(a,b,c) as ############################## ## 混合递归和非递归,前面的cte对后面的可见 -with cte as (select * from t1) , +with RECURSIVE cte as (select * from t1) , cte_recursive (n) as (select 1 from dual union all select n+1 from cte_recursive where n < 23) select (select count(*) from cte_recursive) from t1; -with cte(n) as (select c1 from t1) , +with RECURSIVE cte(n) as (select c1 from t1) , cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) select * from cte_recursive; -with cte(n) as (select c1 from t1) , +with RECURSIVE cte(n) as (select c1 from t1) , cte_recursive (n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte_recursive) from t1; -## PART 3.1 前面的定义引用后面的,后面的引用前面的 -WITH +## PART 3.1 +--error 1146 +with RECURSIVE cte1 (a, b) AS (SELECT c, d FROM cte2), cte2 (c, d) AS (SELECT c21, c22 FROM t2) SELECT b, d FROM cte1 JOIN cte2 on cte1.a = cte2.c; -with +with RECURSIVE cte1 AS (select c1 from t1), cte2 AS (select c1 from cte1) select * from cte1; ## PART 3.2.1 直接嵌套定义,MySQL支持这样的直接嵌套 -with +with RECURSIVE cte1 AS ( - with cte2 AS (select c1 from t1) + with RECURSIVE cte2 AS (select c1 from t1) select c1 from cte2 ) select c1 from cte1; -with +with RECURSIVE cte1 (cte1col) AS ( - with cte2 (cte2col) AS (select c1 from t1) + with RECURSIVE cte2 (cte2col) AS (select c1 from t1) select cte2col from cte2 ) select cte1col from cte1; -with +with RECURSIVE cte1 (cte1col) AS ( - with cte2 (cte2col1, cte2col2) AS (select c1, c2 from t1) + with RECURSIVE cte2 (cte2col1, cte2col2) AS (select c1, c2 from t1) select cte2col2 from cte2 ) select cte1col from cte1; ## PART 3.2.2 在子查询中进行嵌套 -## 32034. 00000 - "unsupported use of WITH clause" -with cte(a,b) as (select * from (with cteb(a, b) as (select c1, c2 from t1 union all select c+1, d+1 from cteb where c < 100) select * from cteb) bac) select * from cte; +--error 1054 +with RECURSIVE cte(a,b) as (select * from (with RECURSIVE cteb(a, b) as (select c1, c2 from t1 union all select c+1, d+1 from cteb where c < 100) select * from cteb) bac) select * from cte; -with cteb(a,b) as +with RECURSIVE cteb(a,b) as ( select c1, c2 from t1 union all select a+1, b+1 from cteb where a < 100 ), @@ -219,7 +224,7 @@ select * from cteb bac select * from cte; ## PART 3.2.3 测试能不能正确解析普通的union all -with cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (select 1 from dual union all select * from cte) select * from cte_1; +with RECURSIVE cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (select 1 from dual union all select * from cte) select * from cte_1; ############################## ## PART 4 subquery的变化 @@ -229,77 +234,86 @@ with cte(a) as (select 1 from dual union all select 2 from dual), cte_1(b) as (s ## 递归的句式主要变化在左支可以很负责,右支作join的的表可以是子查询,这个子查询可以写的 ## 非常的复杂 ## 递归cte只能有两个入口 -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; +--error 5743 +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 UNION ALL select 2 from dual) select * from cte; ## 递归必须包含union all -with cte(n) AS ( select 1 from cte) select * from cte; +--error 5742 +with RECURSIVE cte(n) AS ( select 1 from cte) select * from cte; set @@ob_query_timeout=1000000; -##32486. 00000 - "unsupported operation in recursive branch of recursive WITH clause " -with cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; +--error 5758 +with RECURSIVE cte(n) AS ( select 1 from dual UNION ALL select sum(n+1) from cte) select * from cte; set @@ob_query_timeout=10000000; ##递归查询只允许有两个入口 -with cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 union all select n+1 from cte where n < 2) select * from cte; +--error 5743 +with RECURSIVE cte(n) AS (select 1 from dual UNION ALL select n+1 from cte where n < 3 union all select n+1 from cte where n < 2) select * from cte; -with cte(n) as (select 1 from dual union all select c1 from t1 union all (with cte(n) as (select c1 from t1) select * from cte)) select * from cte; +--error 5746 +with RECURSIVE cte(n) as (select 1 from dual union all select c1 from t1 union all (with RECURSIVE cte(n) as (select c1 from t1) select * from cte)) select * from cte; -with cte(n) as (select n from (select 1 from dual union all select n+1 from cte) tmp) select * from cte; +--error 5744 +with RECURSIVE cte(n) as (select n from (select 1 from dual union all select n+1 from cte) tmp) select * from cte; ## 不能出现在right join的左边,left join的右边,full join的两边 -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte right join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 left join cte on cte.n < 3 and t2.c1 < 22) select * from cte; -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 full join cte on cte.n < 3 and t2.c1 < 22) select * from cte; -with cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte full join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; +--error 5759 +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte right join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; +--error 5759 +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 left join cte on cte.n < 3 and t2.c1 < 22) select * from cte; +--error 5759 +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from t2 full join cte on cte.n < 3 and t2.c1 < 22) select * from cte; +--error 5759 +with RECURSIVE cte(n) AS (select c1 from t1 UNION ALL select n+1 from cte full join t2 on cte.n < 3 and t2.c1 < 22) select * from cte; set @@ob_query_timeout=10000000; ## PART 4.2 左支不停的变化 ## 带有where -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where c1+'1' <= 3 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; ## 带有group -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 group by c1,c2 union all select c+1, d+1 from cte2 where c < 10) select c,d from cte2; ## 带有having -with +with RECURSIVE cte2(c,d) AS (SELECT c1,c2 from t1 where t1.c1 > 5 union all select c+1, d+1 from cte2 where c < 30) select c,d from cte2; ## 带有order -with +with RECURSIVE cte2(c,d) AS ( select c1, c2 + 1 as c3 from t1 order by c2 union all select c+1, d+1 from cte2 where c < 30) select c,d from cte2; -with +with RECURSIVE cte2(c,d) AS (select t1.c1, t2.c2 from t1 left join t2 on t1.c1=t2.c1 order by t1.c1 union all select c+1, d+1 from cte2 where c < 30) select c from cte2; ## PART 4.3 右支不停的变化 -with +with RECURSIVE cte(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte, t2 where t2.c1 = c and t2.c2 > some (select c1 from t44 t99 group by c1)) select * from cte; -with +with RECURSIVE cte(c,d) AS (SELECT c1,c2 from t1 where c1 < 3 union all select c+1, d+1 from cte, t2 where t2.c1 = c and t2.c2 > some (select c1 from t44 t99 group by c1)) select * from cte; #递归cte中间表与已有的表重名 create table ex (c1 int, c2 int); -with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +with RECURSIVE ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; -with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; +with RECURSIVE ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex where c1 < 5) select * from ex; ############################## @@ -308,22 +322,22 @@ with ex(c1, c2) as (select 1, 1 from dual union all select c1+1, c2+1 from ex wh ## PART 0 cte结果正确性验证 ## 基础case -with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select n from cte; +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select n from cte; -with cte (a,b,c) as ( select id, name, leaderid from emp where emp.id = 1 union all select emp.id ,emp.name, emp.leaderid from emp, cte where emp.leaderid = cte.a ) select * from cte; +with RECURSIVE cte (a,b,c) as ( select id, name, leaderid from emp where emp.id = 1 union all select emp.id ,emp.name, emp.leaderid from emp, cte where emp.leaderid = cte.a ) select * from cte; ## 与MySQL结果进行核对,验证正确性,句式1 -with cte( id, val, lev) as ( +with RECURSIVE cte( id, val, lev) as ( select id, value , 0 as lev from t4 where parent_id is null union all select t4.id, t4.value, cte.lev+1 from cte join t4 on t4.parent_id=cte.id) select * from cte; ## 与MySQL结果进行核对,验证正确性,句式3 - -with cte(a,b,c) as +--error 5746 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -331,7 +345,7 @@ with cte(a,b,c) as ) select * from cte; ## 与MySQL结果进行核对,验证正确性,句式4 -with cte (a,b,c) as +with RECURSIVE cte (a,b,c) as ( select id, name, leaderid from emp where emp.id = 1 union all @@ -340,7 +354,8 @@ with cte (a,b,c) as select * from cte; ## join hint -with cte(n) as +--error 5746 +with RECURSIVE cte(n) as ( select /*+NO_USE_HASH(t1,t2)*/ t1.c1 from t1, t2 where t1.c1 = t2.c1 union all @@ -349,8 +364,8 @@ with cte(n) as select * from cte; -## 结果正确 -with cte(a,b,c) as +--error 5746 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -363,14 +378,12 @@ select count(distinct cte.a), avg(distinct cte.b) from cte where cte.c < 10; ## PART 1.1 最基本用法(单表) ## 最简单的使用方法 -with cte as (select * from t1) select ( -with cte(col1, col2, col3) as(select * from t2) select count(*) from cte +with RECURSIVE cte as (select * from t1) select ( +with RECURSIVE cte(col1, col2, col3) as(select * from t2) select count(*) from cte ) from t1; -with cte(col1, col2, col3) as(select * from t2) select count(*) from cte -) | - -with cte(a,b,c) as +--error 5746 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -379,7 +392,8 @@ select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 select a, b, c from cte; ## 主句含有order + 对伪列排序序 -with cte(a,b,c) as +--error 5746 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -388,7 +402,8 @@ select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 select a, b, c from cte order by a; ## 对主句中的cte取别名后看看能否继续使用+在in中使用+where -with cte(a,b,c) as +--error 5746 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -397,7 +412,8 @@ select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 select z1.a from cte z1, t2 where z1.a in (1,4,7,11) and z1.a = t2.c2; ## 重命名的列出现在order+where中 -with cte(a,b,c) as +--error 5746 +with RECURSIVE cte(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -406,7 +422,8 @@ select c1,c2,c3 from t1, cte where cte.a = t1.c1 and cte.c < 10 select a from cte where a in (1,4,11) order by a; ## 别名列和原本列的名字一样 -with cte(c1,c2,c3) as +--error 1052 +with RECURSIVE cte(c1,c2,c3) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -415,10 +432,11 @@ select c1,c2,c3 from t1, cte where cte.c1 = t1.c1 and cte.c3 < 10 select c2 from cte; ## 在field list中写了inline,里面使用了cte -with cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte) from cte; +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n < 23) select (select count(*) from cte) from cte; ## join+having not+order by -with cte1(a,b,c) as +--error 5746 +with RECURSIVE cte1(a,b,c) as ( select c1,c2,c3 from t1 where t1.c1 < 20 union all @@ -432,7 +450,7 @@ select * from cte1 left join t2 on cte1.a=t2.c1 where t2.c1 != cte1.a order by c ## 第三cte引用第二个,第二个又引用第一个。结果与MySQL一致。 explain basic -with cte1(a,b,c) as +with RECURSIVE cte1(a,b,c) as ( select 1,1,1 from dual union all @@ -454,7 +472,7 @@ SELECT cte1.a, cte1.b FROM cte1 JOIN cte3 on cte1.a < cte3.c; set ob_query_timeout = 100000000; -with cte1(a,b,c) as +with RECURSIVE cte1(a,b,c) as ( select 1,1,1 from dual union all @@ -479,7 +497,7 @@ set ob_query_timeout = 10000000; ## 关于数学的复杂case ##about math -WITH fibonacci (n, fib_n, next_fib_n) AS +with RECURSIVE fibonacci (n, fib_n, next_fib_n) AS ( SELECT 1, 0, 1 from dual UNION ALL @@ -488,13 +506,13 @@ WITH fibonacci (n, fib_n, next_fib_n) AS ) SELECT * FROM fibonacci; -with cte(n) as (select 1 from dual union all select n+1 from cte where n<6), +with RECURSIVE cte(n) as (select 1 from dual union all select n+1 from cte where n<6), prod(lastnum, lastprod) as (select min(n), min(n) from cte union all select n, n*lastprod from cte, prod where n = prod.lastnum+1) select * from prod; -with cte as (select 18 d from dual), +with RECURSIVE cte as (select 18 d from dual), prod (lastnum, lastprod) as ( select 1, 1 from dual union all @@ -506,19 +524,21 @@ select * from prod, cte where lastnum = d; ############################## ## insert into ############################## -insert into insert_t with cte(a,b,c) as (select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where a < 10) SELECT * FROM cte; +insert into insert_t with RECURSIVE cte(a,b,c) as (select 1,2,3 from dual union all select a+1,b+1,c+1 from cte where a < 10) SELECT * FROM cte; select * from insert_t; ############################## ## select when ############################## -with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; +with RECURSIVE cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1, max(c2), CASE max(c2) when 4 then 4 when 43 then 43 else 1 end from cte group by c1 order by c1; ############################## ## delete from ############################## -delete from t1 where c1 = ( with cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1 from cte where c2 = 3); +delete from t1 where c1 = ( with RECURSIVE cte(c1, c2, c3) as (select 1,1,1 from dual union all select c1+1,c2+1,c3+1 from cte where cte.c1 < 50) select c1 from cte where c2 = 3); select * from t1; + +drop database cte_st; \ No newline at end of file diff --git a/test/mysql_test/test_suite/with_clause/t/recursive_optimize_mysql.test b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_optimize_mysql.test similarity index 92% rename from test/mysql_test/test_suite/with_clause/t/recursive_optimize_mysql.test rename to tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_optimize_mysql.test index 905b1c43b..de4792921 100644 --- a/test/mysql_test/test_suite/with_clause/t/recursive_optimize_mysql.test +++ b/tools/deploy/mysql_test/test_suite/with_clause_mysql/t/recursive_optimize_mysql.test @@ -1,6 +1,14 @@ -drop database if exists ctetest; -create database ctetest; -use ctetest; +# owner: dachuan.sdc +# owner group: sql2 +# tags: optimizer + +--disable_warnings +drop database if exists cte_st; +--enable_warnings +create database cte_st; +use cte_st; + +--result_format 4 create table EMP ( EMPno number, ENAME varchar(30), @@ -30,7 +38,6 @@ INSERT INTO EMP VALUES(7876, 'ADAMS','CLERK', 7788, str_to_date('23-MAY-87', INSERT INTO EMP VALUES(7900, 'JAMES', 'CLEARK', 7698, str_to_date('03-DEC-81','%d-%b-%Y'), 950, NULL, 30) ; INSERT INTO EMP VALUES(7902, 'FORD','ANALYST',7566, str_to_date('03-DEC-81','%d-%b-%Y'), 3000, NULL, 20) ; INSERT INTO EMP VALUES(7934,'MILLER','CLERK', 7782, str_to_date('23-JAN-82','%d-%b-%Y'), 1300,NULL, 10) ; -result_format: 4 ## ======================================================================= ## Test Case 1: @@ -39,6 +46,7 @@ result_format: 4 ## The plan should reflect optimization or development can provide ## parameter to show that pushdown optimization happened for init branch ## ======================================================================= +--error 1146 explain basic WITH rw (ename, mgr, empno, job) AS ( @@ -53,6 +61,7 @@ SELECT ename, empno, mgr, job FROM rw WHERE job = 'PRESIDENT' ; +--error 1146 WITH rw (ename, mgr, empno, job) AS ( SELECT ename, mgr, empno, job @@ -65,3 +74,5 @@ WITH rw (ename, mgr, empno, job) AS SELECT /*+ :HINT: */ ename, empno, mgr, job FROM rw WHERE job = 'PRESIDENT' ; + +drop database cte_st; \ No newline at end of file